{"slug":"yt-transcript-pipeline","title":"YouTube Transcript Vault — Automated Daily Pipeline","tags":["youtube","transcript","automation","vault","cron"],"agent_summary":"Automated daily pipeline that transcribes 59 YouTube channels, stores results in D:/Ecosystem/youtube-transcripts/, mirrors to VPS3, and posts to Discord. Schedule: VPS3 cron 07:00 UTC + GitHub Actions backup at 12:00 UTC.","trigger_phrases":["youtube transcript vault","yt pipeline","yt daily pipeline","bulk channel transcripts","youtube transcript automation","channel transcript cron","transcript vault"],"runnable":true,"markdown":"\n# YouTube Transcript Vault — Automated Daily Pipeline\n\nAutomated system that transcribes 59 monitored YouTube channels daily, stores results locally, mirrors to VPS3, and posts new transcripts to Discord.\n\n## Infrastructure\n\n| Component | Location |\n|-----------|----------|\n| Pipeline script | `D:\\Ecosystem\\ops\\scripts\\yt-daily-pipeline.py` |\n| VPS3 mirror | `/root/scripts/yt-daily-pipeline.py` |\n| GitHub Actions backup | `github.com/mmerlino23/yt-living-pipeline` |\n| Transcript vault | `D:\\Ecosystem\\youtube-transcripts\\` |\n| Channel registry | `D:\\Ecosystem\\youtube-transcripts\\_channels.json` |\n\n## Schedule\n\n| Run | Schedule | Host |\n|-----|----------|------|\n| Primary | 07:00 UTC daily | VPS3 cron |\n| Backup | 12:00 UTC daily | GitHub Actions |\n| Local mirror | 22:00 local | Windows Task Scheduler `YTVaultSync` |\n\n## Required Env Vars\n\nLoad from `D:\\Ecosystem\\secrets\\MASTER_API_KEYS.env`:\n\n- `YOUTUBE_API_KEY` — YouTube Data API v3\n- `DISCORD_BOT_TOKEN_OLIVER` — Discord posting\n- `DISCORD_CHANNEL_YT_TRANSCRIPTS` — `1484579049933115447`\n- `VAULT_PATH` — `D:\\Ecosystem\\youtube-transcripts` (Windows) or `/root/yt-transcripts` (VPS3)\n\n## Manual Invocation\n\n```bash\n# Dry run — no writes, no Discord post\npython D:\\Ecosystem\\ops\\scripts\\yt-daily-pipeline.py --dry-run\n\n# Single channel\npython D:\\Ecosystem\\ops\\scripts\\yt-daily-pipeline.py --channel indydevdan\n\n# Full run (requires env vars)\npython D:\\Ecosystem\\ops\\scripts\\yt-daily-pipeline.py\n```\n\n## Channel Registry\n\n59 channels tracked in `_channels.json`. Each entry has: YouTube handle, `youtube_channel_id` (resolved via YouTube Data API on first run), and SOP site mapping.\n\n| Channel Slug | Repo | Site |\n|---|---|---|\n| indydevdan | mmerlino23/tac-sop | https://tac-sop.vercel.app |\n| corbin | mmerlino23/anthropic-academy-sops | VitePress |\n| creatify | mmerlino23/creatify-ai-docs | VitePress |\n\n## Tool: yt\n\nLocal transcript tool at `D:\\ClaudeDev\\00_GITHUB\\Tools\\youtube-social\\yt`.\n\n```bash\n# Single video\nyt <video-url>\n\n# Whole channel\nyt --channel <handle>\n```\n\nRegistry: `D:\\Ecosystem\\youtube-transcripts\\_REGISTRY.json`\n\n## Transcript Storage Format\n\n```\nD:\\Ecosystem\\youtube-transcripts\\\n  _REGISTRY.json\n  _channels.json\n  <channel-handle>\\\n    <video-id>_<date>.txt\n    <video-id>_<date>.txt\n```\n\n## Use in Video Production\n\nTranscripts from this vault feed:\n\n- Script research — pull transcripts from reference channels before writing\n- Hook analysis — study first 30 seconds of top-performing videos\n- Keyword extraction — find natural language patterns for YouTube SEO\n\n## Related Topics\n\n- [[ytdlp-agent]] — on-demand YouTube download and transcript CLI\n- [[youtube-fetch]] — lightweight YouTube metadata sub-skill\n- [[social-transcript-extractor]] — transcripts from non-YouTube platforms\n- [[long-form-video-seo-2026]] — how to use transcripts for SEO\n\n#video-sop #youtube #transcript #automation #vault #cron\n","html":"<h1>YouTube Transcript Vault — Automated Daily Pipeline</h1>\n<p>Automated system that transcribes 59 monitored YouTube channels daily, stores results locally, mirrors to VPS3, and posts new transcripts to Discord.</p>\n<h2>Infrastructure</h2>\n<p>| Component | Location |\n|-----------|----------|\n| Pipeline script | <code>D:\\Ecosystem\\ops\\scripts\\yt-daily-pipeline.py</code> |\n| VPS3 mirror | <code>/root/scripts/yt-daily-pipeline.py</code> |\n| GitHub Actions backup | <code>github.com/mmerlino23/yt-living-pipeline</code> |\n| Transcript vault | <code>D:\\Ecosystem\\youtube-transcripts\\</code> |\n| Channel registry | <code>D:\\Ecosystem\\youtube-transcripts\\_channels.json</code> |</p>\n<h2>Schedule</h2>\n<p>| Run | Schedule | Host |\n|-----|----------|------|\n| Primary | 07:00 UTC daily | VPS3 cron |\n| Backup | 12:00 UTC daily | GitHub Actions |\n| Local mirror | 22:00 local | Windows Task Scheduler <code>YTVaultSync</code> |</p>\n<h2>Required Env Vars</h2>\n<p>Load from <code>D:\\Ecosystem\\secrets\\MASTER_API_KEYS.env</code>:</p>\n<ul>\n<li><code>YOUTUBE_API_KEY</code> — YouTube Data API v3</li>\n<li><code>DISCORD_BOT_TOKEN_OLIVER</code> — Discord posting</li>\n<li><code>DISCORD_CHANNEL_YT_TRANSCRIPTS</code> — <code>1484579049933115447</code></li>\n<li><code>VAULT_PATH</code> — <code>D:\\Ecosystem\\youtube-transcripts</code> (Windows) or <code>/root/yt-transcripts</code> (VPS3)</li>\n</ul>\n<h2>Manual Invocation</h2>\n<pre><code class=\"language-bash\"># Dry run — no writes, no Discord post\npython D:\\Ecosystem\\ops\\scripts\\yt-daily-pipeline.py --dry-run\n\n# Single channel\npython D:\\Ecosystem\\ops\\scripts\\yt-daily-pipeline.py --channel indydevdan\n\n# Full run (requires env vars)\npython D:\\Ecosystem\\ops\\scripts\\yt-daily-pipeline.py\n</code></pre>\n<h2>Channel Registry</h2>\n<p>59 channels tracked in <code>_channels.json</code>. Each entry has: YouTube handle, <code>youtube_channel_id</code> (resolved via YouTube Data API on first run), and SOP site mapping.</p>\n<p>| Channel Slug | Repo | Site |\n|---|---|---|\n| indydevdan | mmerlino23/tac-sop | https://tac-sop.vercel.app |\n| corbin | mmerlino23/anthropic-academy-sops | VitePress |\n| creatify | mmerlino23/creatify-ai-docs | VitePress |</p>\n<h2>Tool: yt</h2>\n<p>Local transcript tool at <code>D:\\ClaudeDev\\00_GITHUB\\Tools\\youtube-social\\yt</code>.</p>\n<pre><code class=\"language-bash\"># Single video\nyt &#x3C;video-url>\n\n# Whole channel\nyt --channel &#x3C;handle>\n</code></pre>\n<p>Registry: <code>D:\\Ecosystem\\youtube-transcripts\\_REGISTRY.json</code></p>\n<h2>Transcript Storage Format</h2>\n<pre><code>D:\\Ecosystem\\youtube-transcripts\\\n  _REGISTRY.json\n  _channels.json\n  &#x3C;channel-handle>\\\n    &#x3C;video-id>_&#x3C;date>.txt\n    &#x3C;video-id>_&#x3C;date>.txt\n</code></pre>\n<h2>Use in Video Production</h2>\n<p>Transcripts from this vault feed:</p>\n<ul>\n<li>Script research — pull transcripts from reference channels before writing</li>\n<li>Hook analysis — study first 30 seconds of top-performing videos</li>\n<li>Keyword extraction — find natural language patterns for YouTube SEO</li>\n</ul>\n<h2>Related Topics</h2>\n<ul>\n<li>[[ytdlp-agent]] — on-demand YouTube download and transcript CLI</li>\n<li>[[youtube-fetch]] — lightweight YouTube metadata sub-skill</li>\n<li>[[social-transcript-extractor]] — transcripts from non-YouTube platforms</li>\n<li>[[long-form-video-seo-2026]] — how to use transcripts for SEO</li>\n</ul>\n<p>#video-sop #youtube #transcript #automation #vault #cron</p>\n"}