@olegkoval/agent-skills 1.35.2 → 1.36.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.github/copilot-instructions.md +1 -0
- package/.github/prompts/music-to-plex.prompt.md +251 -0
- package/.kiro/steering/music-to-plex.md +250 -0
- package/.windsurf/rules/music-to-plex.md +249 -0
- package/README.md +3 -2
- package/adapters/claude/olko-creative/skills/music-to-plex/SKILL.md +255 -0
- package/adapters/claude/olko-creative/skills/music-to-plex/references/bandcamp-album-identification.md +29 -0
- package/adapters/claude/olko-creative/skills/music-to-plex/references/batch-import-staging.md +23 -0
- package/adapters/claude/olko-creative/skills/music-to-plex/references/canonical-artist-normalization.md +24 -0
- package/adapters/claude/olko-creative/skills/music-to-plex/references/cover-art-and-plexamp.md +22 -0
- package/adapters/claude/olko-creative/skills/music-to-plex/references/cover-art-repair-session.md +34 -0
- package/adapters/claude/olko-creative/skills/music-to-plex/references/cover-art-sourcing-session.md +23 -0
- package/adapters/claude/olko-creative/skills/music-to-plex/references/dj-tracklist-crate-ingest.md +184 -0
- package/adapters/claude/olko-creative/skills/music-to-plex/references/duplicate-torrent-handling.md +19 -0
- package/adapters/claude/olko-creative/skills/music-to-plex/references/fallback-audio-validation-and-nas-preflight.md +42 -0
- package/adapters/claude/olko-creative/skills/music-to-plex/references/gear-change-image-identification.md +35 -0
- package/adapters/claude/olko-creative/skills/music-to-plex/references/image-driven-identification-and-verification.md +19 -0
- package/adapters/claude/olko-creative/skills/music-to-plex/references/library-repair-folders.md +22 -0
- package/adapters/claude/olko-creative/skills/music-to-plex/references/malformed-flac-fallbacks.md +11 -0
- package/adapters/claude/olko-creative/skills/music-to-plex/references/manual-fallback-transfer-and-plex-verification.md +39 -0
- package/adapters/claude/olko-creative/skills/music-to-plex/references/mtp-bot-bulk-state-safety.md +21 -0
- package/adapters/claude/olko-creative/skills/music-to-plex/references/mtp-subprocess-wrapper.md +13 -0
- package/adapters/claude/olko-creative/skills/music-to-plex/references/music-note-blurb-order.md +38 -0
- package/adapters/claude/olko-creative/skills/music-to-plex/references/nas-import-and-refresh.md +16 -0
- package/adapters/claude/olko-creative/skills/music-to-plex/references/nas-library-layout-and-write-preflight.md +31 -0
- package/adapters/claude/olko-creative/skills/music-to-plex/references/nas-permissions-and-plex-traversal.md +26 -0
- package/adapters/claude/olko-creative/skills/music-to-plex/references/nas-routing-and-refresh.md +22 -0
- package/adapters/claude/olko-creative/skills/music-to-plex/references/no-result-album-fallback.md +28 -0
- package/adapters/claude/olko-creative/skills/music-to-plex/references/per-track-album-art-split.md +12 -0
- package/adapters/claude/olko-creative/skills/music-to-plex/references/plex-playlist-append-and-verify.md +18 -0
- package/adapters/claude/olko-creative/skills/music-to-plex/references/plex-playlist-creation.md +21 -0
- package/adapters/claude/olko-creative/skills/music-to-plex/references/plex-token-source.md +20 -0
- package/adapters/claude/olko-creative/skills/music-to-plex/references/plex-visibility-check.md +28 -0
- package/adapters/claude/olko-creative/skills/music-to-plex/references/practice-crate-playlist.md +18 -0
- package/adapters/claude/olko-creative/skills/music-to-plex/references/session-2026-06-17-synology-probe.md +13 -0
- package/adapters/claude/olko-creative/skills/music-to-plex/references/torrent-stall-fallback.md +62 -0
- package/adapters/claude/olko-creative/skills/music-to-plex/references/verification-and-pitfalls.md +17 -0
- package/adapters/claude/olko-creative/skills/music-to-plex/references/youtube-403-fallbacks.md +17 -0
- package/adapters/claude/olko-creative/skills/music-to-plex/references/youtube-full-album-fallback.md +34 -0
- package/adapters/claude/olko-creative/skills/music-to-plex/references/youtube-lineage-playlist-fallback.md +33 -0
- package/adapters/claude/olko-creative/skills/music-to-plex/references/youtube-playlist-import.md +50 -0
- package/adapters/claude/olko-creative/skills/music-to-plex/references/youtube-track-resolution-heuristics.md +23 -0
- package/adapters/claude/olko-creative/skills/music-to-plex/references/zero-track-playlist-recovery.md +21 -0
- package/adapters/codex/olko-creative/README.md +1 -0
- package/adapters/cursor/olko-creative/skills/music-to-plex/SKILL.md +255 -0
- package/adapters/cursor/olko-creative/skills/music-to-plex/references/bandcamp-album-identification.md +29 -0
- package/adapters/cursor/olko-creative/skills/music-to-plex/references/batch-import-staging.md +23 -0
- package/adapters/cursor/olko-creative/skills/music-to-plex/references/canonical-artist-normalization.md +24 -0
- package/adapters/cursor/olko-creative/skills/music-to-plex/references/cover-art-and-plexamp.md +22 -0
- package/adapters/cursor/olko-creative/skills/music-to-plex/references/cover-art-repair-session.md +34 -0
- package/adapters/cursor/olko-creative/skills/music-to-plex/references/cover-art-sourcing-session.md +23 -0
- package/adapters/cursor/olko-creative/skills/music-to-plex/references/dj-tracklist-crate-ingest.md +184 -0
- package/adapters/cursor/olko-creative/skills/music-to-plex/references/duplicate-torrent-handling.md +19 -0
- package/adapters/cursor/olko-creative/skills/music-to-plex/references/fallback-audio-validation-and-nas-preflight.md +42 -0
- package/adapters/cursor/olko-creative/skills/music-to-plex/references/gear-change-image-identification.md +35 -0
- package/adapters/cursor/olko-creative/skills/music-to-plex/references/image-driven-identification-and-verification.md +19 -0
- package/adapters/cursor/olko-creative/skills/music-to-plex/references/library-repair-folders.md +22 -0
- package/adapters/cursor/olko-creative/skills/music-to-plex/references/malformed-flac-fallbacks.md +11 -0
- package/adapters/cursor/olko-creative/skills/music-to-plex/references/manual-fallback-transfer-and-plex-verification.md +39 -0
- package/adapters/cursor/olko-creative/skills/music-to-plex/references/mtp-bot-bulk-state-safety.md +21 -0
- package/adapters/cursor/olko-creative/skills/music-to-plex/references/mtp-subprocess-wrapper.md +13 -0
- package/adapters/cursor/olko-creative/skills/music-to-plex/references/music-note-blurb-order.md +38 -0
- package/adapters/cursor/olko-creative/skills/music-to-plex/references/nas-import-and-refresh.md +16 -0
- package/adapters/cursor/olko-creative/skills/music-to-plex/references/nas-library-layout-and-write-preflight.md +31 -0
- package/adapters/cursor/olko-creative/skills/music-to-plex/references/nas-permissions-and-plex-traversal.md +26 -0
- package/adapters/cursor/olko-creative/skills/music-to-plex/references/nas-routing-and-refresh.md +22 -0
- package/adapters/cursor/olko-creative/skills/music-to-plex/references/no-result-album-fallback.md +28 -0
- package/adapters/cursor/olko-creative/skills/music-to-plex/references/per-track-album-art-split.md +12 -0
- package/adapters/cursor/olko-creative/skills/music-to-plex/references/plex-playlist-append-and-verify.md +18 -0
- package/adapters/cursor/olko-creative/skills/music-to-plex/references/plex-playlist-creation.md +21 -0
- package/adapters/cursor/olko-creative/skills/music-to-plex/references/plex-token-source.md +20 -0
- package/adapters/cursor/olko-creative/skills/music-to-plex/references/plex-visibility-check.md +28 -0
- package/adapters/cursor/olko-creative/skills/music-to-plex/references/practice-crate-playlist.md +18 -0
- package/adapters/cursor/olko-creative/skills/music-to-plex/references/session-2026-06-17-synology-probe.md +13 -0
- package/adapters/cursor/olko-creative/skills/music-to-plex/references/torrent-stall-fallback.md +62 -0
- package/adapters/cursor/olko-creative/skills/music-to-plex/references/verification-and-pitfalls.md +17 -0
- package/adapters/cursor/olko-creative/skills/music-to-plex/references/youtube-403-fallbacks.md +17 -0
- package/adapters/cursor/olko-creative/skills/music-to-plex/references/youtube-full-album-fallback.md +34 -0
- package/adapters/cursor/olko-creative/skills/music-to-plex/references/youtube-lineage-playlist-fallback.md +33 -0
- package/adapters/cursor/olko-creative/skills/music-to-plex/references/youtube-playlist-import.md +50 -0
- package/adapters/cursor/olko-creative/skills/music-to-plex/references/youtube-track-resolution-heuristics.md +23 -0
- package/adapters/cursor/olko-creative/skills/music-to-plex/references/zero-track-playlist-recovery.md +21 -0
- package/adapters/grok/olko-creative/skills/music-to-plex/SKILL.md +255 -0
- package/adapters/grok/olko-creative/skills/music-to-plex/references/bandcamp-album-identification.md +29 -0
- package/adapters/grok/olko-creative/skills/music-to-plex/references/batch-import-staging.md +23 -0
- package/adapters/grok/olko-creative/skills/music-to-plex/references/canonical-artist-normalization.md +24 -0
- package/adapters/grok/olko-creative/skills/music-to-plex/references/cover-art-and-plexamp.md +22 -0
- package/adapters/grok/olko-creative/skills/music-to-plex/references/cover-art-repair-session.md +34 -0
- package/adapters/grok/olko-creative/skills/music-to-plex/references/cover-art-sourcing-session.md +23 -0
- package/adapters/grok/olko-creative/skills/music-to-plex/references/dj-tracklist-crate-ingest.md +184 -0
- package/adapters/grok/olko-creative/skills/music-to-plex/references/duplicate-torrent-handling.md +19 -0
- package/adapters/grok/olko-creative/skills/music-to-plex/references/fallback-audio-validation-and-nas-preflight.md +42 -0
- package/adapters/grok/olko-creative/skills/music-to-plex/references/gear-change-image-identification.md +35 -0
- package/adapters/grok/olko-creative/skills/music-to-plex/references/image-driven-identification-and-verification.md +19 -0
- package/adapters/grok/olko-creative/skills/music-to-plex/references/library-repair-folders.md +22 -0
- package/adapters/grok/olko-creative/skills/music-to-plex/references/malformed-flac-fallbacks.md +11 -0
- package/adapters/grok/olko-creative/skills/music-to-plex/references/manual-fallback-transfer-and-plex-verification.md +39 -0
- package/adapters/grok/olko-creative/skills/music-to-plex/references/mtp-bot-bulk-state-safety.md +21 -0
- package/adapters/grok/olko-creative/skills/music-to-plex/references/mtp-subprocess-wrapper.md +13 -0
- package/adapters/grok/olko-creative/skills/music-to-plex/references/music-note-blurb-order.md +38 -0
- package/adapters/grok/olko-creative/skills/music-to-plex/references/nas-import-and-refresh.md +16 -0
- package/adapters/grok/olko-creative/skills/music-to-plex/references/nas-library-layout-and-write-preflight.md +31 -0
- package/adapters/grok/olko-creative/skills/music-to-plex/references/nas-permissions-and-plex-traversal.md +26 -0
- package/adapters/grok/olko-creative/skills/music-to-plex/references/nas-routing-and-refresh.md +22 -0
- package/adapters/grok/olko-creative/skills/music-to-plex/references/no-result-album-fallback.md +28 -0
- package/adapters/grok/olko-creative/skills/music-to-plex/references/per-track-album-art-split.md +12 -0
- package/adapters/grok/olko-creative/skills/music-to-plex/references/plex-playlist-append-and-verify.md +18 -0
- package/adapters/grok/olko-creative/skills/music-to-plex/references/plex-playlist-creation.md +21 -0
- package/adapters/grok/olko-creative/skills/music-to-plex/references/plex-token-source.md +20 -0
- package/adapters/grok/olko-creative/skills/music-to-plex/references/plex-visibility-check.md +28 -0
- package/adapters/grok/olko-creative/skills/music-to-plex/references/practice-crate-playlist.md +18 -0
- package/adapters/grok/olko-creative/skills/music-to-plex/references/session-2026-06-17-synology-probe.md +13 -0
- package/adapters/grok/olko-creative/skills/music-to-plex/references/torrent-stall-fallback.md +62 -0
- package/adapters/grok/olko-creative/skills/music-to-plex/references/verification-and-pitfalls.md +17 -0
- package/adapters/grok/olko-creative/skills/music-to-plex/references/youtube-403-fallbacks.md +17 -0
- package/adapters/grok/olko-creative/skills/music-to-plex/references/youtube-full-album-fallback.md +34 -0
- package/adapters/grok/olko-creative/skills/music-to-plex/references/youtube-lineage-playlist-fallback.md +33 -0
- package/adapters/grok/olko-creative/skills/music-to-plex/references/youtube-playlist-import.md +50 -0
- package/adapters/grok/olko-creative/skills/music-to-plex/references/youtube-track-resolution-heuristics.md +23 -0
- package/adapters/grok/olko-creative/skills/music-to-plex/references/zero-track-playlist-recovery.md +21 -0
- package/catalog/skills.json +33 -9
- package/docs/versioning.md +4 -2
- package/package.json +1 -1
- package/plugins/olko-apple-kit/.claude-plugin/plugin.json +1 -1
- package/plugins/olko-creative/.claude-plugin/plugin.json +1 -1
- package/plugins/olko-creative/skills/music-to-plex/SKILL.md +254 -0
- package/plugins/olko-creative/skills/music-to-plex/references/bandcamp-album-identification.md +29 -0
- package/plugins/olko-creative/skills/music-to-plex/references/batch-import-staging.md +23 -0
- package/plugins/olko-creative/skills/music-to-plex/references/canonical-artist-normalization.md +24 -0
- package/plugins/olko-creative/skills/music-to-plex/references/cover-art-and-plexamp.md +22 -0
- package/plugins/olko-creative/skills/music-to-plex/references/cover-art-repair-session.md +34 -0
- package/plugins/olko-creative/skills/music-to-plex/references/cover-art-sourcing-session.md +23 -0
- package/plugins/olko-creative/skills/music-to-plex/references/dj-tracklist-crate-ingest.md +184 -0
- package/plugins/olko-creative/skills/music-to-plex/references/duplicate-torrent-handling.md +19 -0
- package/plugins/olko-creative/skills/music-to-plex/references/fallback-audio-validation-and-nas-preflight.md +42 -0
- package/plugins/olko-creative/skills/music-to-plex/references/gear-change-image-identification.md +35 -0
- package/plugins/olko-creative/skills/music-to-plex/references/image-driven-identification-and-verification.md +19 -0
- package/plugins/olko-creative/skills/music-to-plex/references/library-repair-folders.md +22 -0
- package/plugins/olko-creative/skills/music-to-plex/references/malformed-flac-fallbacks.md +11 -0
- package/plugins/olko-creative/skills/music-to-plex/references/manual-fallback-transfer-and-plex-verification.md +39 -0
- package/plugins/olko-creative/skills/music-to-plex/references/mtp-bot-bulk-state-safety.md +21 -0
- package/plugins/olko-creative/skills/music-to-plex/references/mtp-subprocess-wrapper.md +13 -0
- package/plugins/olko-creative/skills/music-to-plex/references/music-note-blurb-order.md +38 -0
- package/plugins/olko-creative/skills/music-to-plex/references/nas-import-and-refresh.md +16 -0
- package/plugins/olko-creative/skills/music-to-plex/references/nas-library-layout-and-write-preflight.md +31 -0
- package/plugins/olko-creative/skills/music-to-plex/references/nas-permissions-and-plex-traversal.md +26 -0
- package/plugins/olko-creative/skills/music-to-plex/references/nas-routing-and-refresh.md +22 -0
- package/plugins/olko-creative/skills/music-to-plex/references/no-result-album-fallback.md +28 -0
- package/plugins/olko-creative/skills/music-to-plex/references/per-track-album-art-split.md +12 -0
- package/plugins/olko-creative/skills/music-to-plex/references/plex-playlist-append-and-verify.md +18 -0
- package/plugins/olko-creative/skills/music-to-plex/references/plex-playlist-creation.md +21 -0
- package/plugins/olko-creative/skills/music-to-plex/references/plex-token-source.md +20 -0
- package/plugins/olko-creative/skills/music-to-plex/references/plex-visibility-check.md +28 -0
- package/plugins/olko-creative/skills/music-to-plex/references/practice-crate-playlist.md +18 -0
- package/plugins/olko-creative/skills/music-to-plex/references/session-2026-06-17-synology-probe.md +13 -0
- package/plugins/olko-creative/skills/music-to-plex/references/torrent-stall-fallback.md +62 -0
- package/plugins/olko-creative/skills/music-to-plex/references/verification-and-pitfalls.md +17 -0
- package/plugins/olko-creative/skills/music-to-plex/references/youtube-403-fallbacks.md +17 -0
- package/plugins/olko-creative/skills/music-to-plex/references/youtube-full-album-fallback.md +34 -0
- package/plugins/olko-creative/skills/music-to-plex/references/youtube-lineage-playlist-fallback.md +33 -0
- package/plugins/olko-creative/skills/music-to-plex/references/youtube-playlist-import.md +50 -0
- package/plugins/olko-creative/skills/music-to-plex/references/youtube-track-resolution-heuristics.md +23 -0
- package/plugins/olko-creative/skills/music-to-plex/references/zero-track-playlist-recovery.md +21 -0
- package/plugins/olko-garmin-kit/.claude-plugin/plugin.json +1 -1
- package/plugins/olko-git-tools/.claude-plugin/plugin.json +1 -1
- package/plugins/olko-github-pr/.claude-plugin/plugin.json +1 -1
- package/plugins/olko-obsidian/.claude-plugin/plugin.json +1 -1
- package/plugins/olko-product/.claude-plugin/plugin.json +1 -1
- package/plugins/olko-reflection/.claude-plugin/plugin.json +1 -1
- package/plugins/olko-release/.claude-plugin/plugin.json +1 -1
- package/plugins/olko-skill-meta/.claude-plugin/plugin.json +1 -1
- package/plugins/olko-web-ops/.claude-plugin/plugin.json +1 -1
- package/scripts/lib/catalog.mjs +1 -1
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
# YouTube full-album fallback salvage
|
|
2
|
+
|
|
3
|
+
Use this when RuTracker / Download Station fails and the only practical source is a YouTube full-album upload.
|
|
4
|
+
|
|
5
|
+
## Pattern observed
|
|
6
|
+
|
|
7
|
+
- `yt-dlp` can pull a clean album source, but uploader metadata is often garbage.
|
|
8
|
+
- Treat the first download as a source artifact, not Plex-ready media.
|
|
9
|
+
- Validate tags with `ffprobe` or `mutagen` before any organize step.
|
|
10
|
+
|
|
11
|
+
## Repair flow
|
|
12
|
+
|
|
13
|
+
1. Download the upload at highest audio quality.
|
|
14
|
+
2. Inspect embedded metadata immediately.
|
|
15
|
+
3. If the output is one long FLAC, split it into tracks using album track timings.
|
|
16
|
+
4. Retag each track with canonical artist, album, year, tracknumber, and tracktotal.
|
|
17
|
+
5. Embed official cover art, not the YouTube thumbnail.
|
|
18
|
+
6. Move the repaired album into the final NAS music path.
|
|
19
|
+
7. Refresh Plex only after the final path exists.
|
|
20
|
+
8. Verify the album appears in Plex search.
|
|
21
|
+
|
|
22
|
+
## NAS transfer workaround
|
|
23
|
+
|
|
24
|
+
When `rsync` or `scp` fights remote path quoting, use a tar pipe instead:
|
|
25
|
+
|
|
26
|
+
```bash
|
|
27
|
+
cd /local/staging && tar -cf - *.flac | ssh user@nas 'cd "/volume1/music/.../Release" && tar -xf -'
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
If macOS leaves AppleDouble sidecar files on the NAS, remove `._*` before refresh.
|
|
31
|
+
|
|
32
|
+
## Session note
|
|
33
|
+
|
|
34
|
+
For `Ozzy Osbourne - Diary Of A Madman (1981)`, the fallback source was a YouTube full-album upload. The tracks were downloaded to FLAC, retagged, cover art embedded, copied into `/volume1/music/metal/Ozzy Osbourne/Diary Of A Madman (1981)`, AppleDouble files removed, and Plex refreshed with `mtp refresh --path`.
|
package/plugins/olko-creative/skills/music-to-plex/references/youtube-lineage-playlist-fallback.md
ADDED
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
# YouTube-only lineage playlist fallback
|
|
2
|
+
|
|
3
|
+
Use when the user wants a new DJ crate or playlist based on mood/lineage rather than a formal release request, and the intended path is YouTube track finding/downloading only.
|
|
4
|
+
|
|
5
|
+
## Trigger
|
|
6
|
+
|
|
7
|
+
- The user says things like "check this message and create new playlist" and provides lane/feeling language instead of a single album.
|
|
8
|
+
- The brief is built from references, influences, or lineage tags such as "classic deep house DNA", "modern disco/deep house revival", "jazzy/warm cuts", or a left-field closer.
|
|
9
|
+
- The task is explicitly on the YouTube branch, not a tracker or store purchase flow.
|
|
10
|
+
|
|
11
|
+
## Pattern
|
|
12
|
+
|
|
13
|
+
1. Convert the message into a small set of lanes first.
|
|
14
|
+
2. Pick 1-3 anchor artists or canonical tracks per lane.
|
|
15
|
+
3. Search exact titles with `yt-dlp`/YouTube query strings before broadening the search.
|
|
16
|
+
4. Prefer official or Topic uploads, then the cleanest stable upload with the closest duration and metadata match.
|
|
17
|
+
5. Assemble a local crate manifest, tracklist, and playlist file.
|
|
18
|
+
6. Verify the files exist and the playlist content matches the intended lane order.
|
|
19
|
+
|
|
20
|
+
## Curation notes
|
|
21
|
+
|
|
22
|
+
- Keep the middle of the set mix-friendly.
|
|
23
|
+
- Use the final lane for the emotional curveball or taste-flex closer.
|
|
24
|
+
- If the user explicitly says the branch is YouTube-only, do not route through tracker/search paths for acquisition.
|
|
25
|
+
- If Spotify or another catalog route is unavailable, skip it and continue with the YouTube branch instead of stalling.
|
|
26
|
+
|
|
27
|
+
## File outputs
|
|
28
|
+
|
|
29
|
+
- `00_MANIFEST.json`
|
|
30
|
+
- `00_TRACKLIST.md`
|
|
31
|
+
- `00_PLAYLIST.m3u8`
|
|
32
|
+
|
|
33
|
+
This reference is session-derived but the pattern is reusable for future YouTube-only crate builds.
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
# YouTube-first playlist import for MTP
|
|
2
|
+
|
|
3
|
+
Use this flow when the user gives a YouTube playlist URL or a plain track list and wants it landed in Plex.
|
|
4
|
+
|
|
5
|
+
## Input shapes
|
|
6
|
+
- Playlist URL
|
|
7
|
+
- Plain list of `Artist - Title` lines
|
|
8
|
+
|
|
9
|
+
If only a track list is provided, resolve each track on YouTube first, then download in album/sequence order.
|
|
10
|
+
|
|
11
|
+
## Download + staging
|
|
12
|
+
Use max-quality audio extraction and preserve ordering with explicit numbering:
|
|
13
|
+
|
|
14
|
+
```bash
|
|
15
|
+
yt-dlp -x --audio-format flac --audio-quality 0 \
|
|
16
|
+
--write-thumbnail --convert-thumbnails jpg --embed-thumbnail \
|
|
17
|
+
--add-metadata \
|
|
18
|
+
-o "/tmp/mtp_youtube_crates/<crate>/work/raw/%(playlist_index)02d - %(title)s.%(ext)s" \
|
|
19
|
+
"<youtube-url>"
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
Notes:
|
|
23
|
+
- Keep a manifest with index, source URL, resolved artist/title, and final filename.
|
|
24
|
+
- For VA / DJ-style sets, keep track order stable even if metadata is messy.
|
|
25
|
+
- If a title needs cleanup, fix it in tags, not by renaming out of sequence.
|
|
26
|
+
|
|
27
|
+
## Import into Plex
|
|
28
|
+
- Copy the finalized files into the NAS import path that Plex scans for the music section.
|
|
29
|
+
- Trigger a library scan after the copy.
|
|
30
|
+
- Create a normal Plex playlist from the imported track rating keys in the exact source order.
|
|
31
|
+
|
|
32
|
+
## Verification
|
|
33
|
+
Prefer proof over assumptions:
|
|
34
|
+
- Check Plex scanner logs for `Added new metadata item` / `Loaded metadata for ...` on each track.
|
|
35
|
+
- Confirm the imported track by querying Plex search directly and inspecting the returned `ratingKey`, `title`, `originalTitle`, and `parentTitle`.
|
|
36
|
+
- For playlist verification, read the playlist back and enumerate items in order.
|
|
37
|
+
|
|
38
|
+
## Plex metadata quirks
|
|
39
|
+
- For compilation-style sets, Plex often shows `grandparentTitle=Various Artists`.
|
|
40
|
+
- The displayed `title` may be the track title, while `originalTitle` carries the artist.
|
|
41
|
+
- Search by both artist and title when matching imported tracks.
|
|
42
|
+
- If a search query misses a track, try the cleaned title and artist separately.
|
|
43
|
+
|
|
44
|
+
## Session-proven pattern
|
|
45
|
+
The Deep Lineage Set import worked by:
|
|
46
|
+
1. staging 8 FLAC tracks from YouTube,
|
|
47
|
+
2. copying the final files into a Plex-scanned NAS import directory,
|
|
48
|
+
3. refreshing Plex,
|
|
49
|
+
4. creating a playlist in the source order,
|
|
50
|
+
5. verifying all 8 items and their order.
|
package/plugins/olko-creative/skills/music-to-plex/references/youtube-track-resolution-heuristics.md
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
# YouTube track resolution heuristics
|
|
2
|
+
|
|
3
|
+
Use this when a user gives a plain `Artist - Title` list and wants it turned into a Plex playlist.
|
|
4
|
+
|
|
5
|
+
## Search pattern
|
|
6
|
+
- Run `yt-dlp --flat-playlist --dump-json "ytsearch5:<artist> <title>"` for each line.
|
|
7
|
+
- Keep the source order from the user list. Never reorder by search result rank.
|
|
8
|
+
|
|
9
|
+
## Scoring
|
|
10
|
+
Prefer results with:
|
|
11
|
+
1. exact title match,
|
|
12
|
+
2. artist match in the channel/uploader name,
|
|
13
|
+
3. `Topic` channel or official upload,
|
|
14
|
+
4. clean metadata over remix/edit clutter.
|
|
15
|
+
|
|
16
|
+
## Pitfalls
|
|
17
|
+
- The first search hit is often wrong for house/disco catalog cuts.
|
|
18
|
+
- If the user only gives a vibe list and not a playlist name, derive a short title from the theme, then ask once before creating the Plex playlist.
|
|
19
|
+
- For compilation-style uploads, check both title and channel before deciding.
|
|
20
|
+
|
|
21
|
+
## Verification
|
|
22
|
+
- After download, confirm each track title still maps to the intended line.
|
|
23
|
+
- When building the Plex playlist, read it back and verify item order matches the source list.
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
# Zero-track playlist recovery
|
|
2
|
+
|
|
3
|
+
Use this when Plex shows a playlist shell but the track list is empty or `0 tracks`.
|
|
4
|
+
|
|
5
|
+
## What it means
|
|
6
|
+
|
|
7
|
+
- The playlist object exists.
|
|
8
|
+
- The import likely failed to attach playable items, or the items have not been indexed yet.
|
|
9
|
+
- Do not treat the playlist as done until Plex returns leaf items.
|
|
10
|
+
|
|
11
|
+
## Recovery order
|
|
12
|
+
|
|
13
|
+
1. Read back the playlist with `GET /playlists/<id>/items`.
|
|
14
|
+
2. Confirm the returned leaf count matches the source track count.
|
|
15
|
+
3. Compare the returned order with the intended playlist order.
|
|
16
|
+
4. If the playlist is still empty, re-check the source track `ratingKey` list before trying another create.
|
|
17
|
+
5. If the UI says `0 tracks` but the API returns items, trust the API and let PlexAmp refresh.
|
|
18
|
+
|
|
19
|
+
## Rule
|
|
20
|
+
|
|
21
|
+
A playlist is only imported when the API read-back shows the expected number of items and order. The UI tile alone is not proof.
|
package/scripts/lib/catalog.mjs
CHANGED
|
@@ -45,7 +45,7 @@ export const PLUGIN_ASSIGNMENT = {
|
|
|
45
45
|
},
|
|
46
46
|
'olko-creative': {
|
|
47
47
|
description: 'Creative and personal projects: photo galleries, music players, listings, wiki editing.',
|
|
48
|
-
skills: ['gallery', 'fill-music-player', 'vinted-listing', 'wikipedia-uk-editor'],
|
|
48
|
+
skills: ['gallery', 'fill-music-player', 'music-to-plex', 'vinted-listing', 'wikipedia-uk-editor'],
|
|
49
49
|
},
|
|
50
50
|
'olko-web-ops': {
|
|
51
51
|
description: 'Operate a website: WAF rules, search console audits, analytics bootstrap, docs indexes.',
|