🧪 Skills
YouTube Archiver
Archive YouTube playlists into markdown notes with metadata, transcripts, AI summaries, and tags. Use when a user asks to import/sync YouTube playlists, arch...
v1.0.0
Description
name: youtube-archiver description: Archive YouTube playlists into markdown notes with metadata, transcripts, AI summaries, and tags. Use when a user asks to import/sync YouTube playlists, archive Watch Later or Liked videos, enrich YouTube notes, batch process video notes, or automate recurring YouTube-to-markdown sync jobs with cron.
YouTube Archiver
Use this skill to import YouTube playlists into markdown files and optionally enrich notes with transcript, summary, and tagging.
Requirements
- Python 3.7+
yt-dlp(pip install yt-dlporbrew install yt-dlp)- A browser signed into YouTube (for private playlists like Liked/Watch Later)
- macOS: terminal needs Full Disk Access to read browser cookies
- Windows: browser cookie extraction can be flaky;
cookies_fileexport is the safer path - Linux: works on desktop installs; headless servers need
cookies_file
First-run setup flow (interactive)
If no config exists at <output>/.config.json, ask these questions before running scripts.
Required questions
- Where should archived notes be stored?
- Default:
./YouTube-Archive
- Default:
- Which playlists should be archived?
- Accept playlist IDs or URLs
- Default:
LL(Liked Videos),WL(Watch Later)
- Which browser is signed into YouTube for cookie auth?
- Default:
chrome
- Default:
Optional enrichment questions
Ask only if the user wants summaries/tags.
- Generate AI summaries? (yes/no)
- Summary provider? (
openai,gemini,anthropic,openrouter,ollama,none) - Summary model name?
- API key env var name?
- Enable auto-tagging? (yes/no)
- Tagging provider/model/env var?
- Keep default tags or define custom vocabulary?
First-run execution sequence
- Run init:
python3 <skill>/scripts/yt-import.py --output <output-dir> --init
- Edit
<output-dir>/.config.jsonfrom the user’s answers. - Verify auth with dry run:
python3 <skill>/scripts/yt-import.py --output <output-dir> --dry-run
- Run real import.
- Run enrichment (optional):
python3 <skill>/scripts/yt-enrich.py --output <output-dir> --limit 10
One-shot quick start
Use this for immediate manual sync:
python3 <skill>/scripts/yt-import.py --output <output-dir>
python3 <skill>/scripts/yt-enrich.py --output <output-dir> --limit 10
Useful import flags:
--dry-run--playlist <ID>(repeatable)--no-summary--no-tags--cookies <path/to/cookies.txt>--browser <name>
Useful enrich flags:
--dry-run--limit <N>--strict-config
Idempotency and safety behavior
- Import skips already archived videos by
video_id. - Filenames include video ID:
Title [video_id].md. - Enrichment skips notes where frontmatter has
enriched: true. - Lockfile prevents concurrent runs:
<output-dir>/.yt-archiver.lock.
Automation with cron (single-agent default)
Offer cron only after one successful manual run.
Example schedule (daily 11:00):
- Import new videos
- Enrich a bounded batch
Example task text:
Run yt-import.py for <output-dir>, then run yt-enrich.py --limit 10 for the same output.
Keep it single-agent by default. Do not assume multi-agent routing.
Troubleshooting and provider details
Read these references when needed:
- Provider setup, model suggestions, cost:
references/providers.md - Common failures and fixes:
references/troubleshooting.md - Default summary prompt template:
references/default-summary-prompt.md
Reviews (0)
Sign in to write a review.
No reviews yet. Be the first to review!
Comments (0)
No comments yet. Be the first to share your thoughts!