darkzOGx /youtube-automation-agent
🎬 Open-source, self-hosted AI agent that runs a YouTube channel end to end: researches topics, writes scripts, generates narration, visuals and video, optimizes SEO, and publishes after your approval, then learns from analytics. Works with Gemini, OpenAI, OpenRouter, DeepSeek and more.
★ 5,143⑂ 1,644👁 76⑃ 43● 33▤ 5◈ 14
5,143
stars
1,644
forks
76
watchers
43
prs
33
issues
5
releases
14
discussions
README
YouTube Automation Agent The open-source AI agent that runs a YouTube channel end to end, with you approving every video before it goes out. It researches topics, writes scripts, generates narration and visuals, assembles real MP4s, writes titles, descriptions and tags, schedules approved videos, and learns from analytics and from what your audience says. It runs on your own machine with your own API keys. !The operator console: videos waiting for your decision, a generation job in progress, and the publishing calendar | !Content review: quality checks, metadata, and the approve, save, reject, and regenerate actions for one video | !Autonomous operator: the channel mandate, the current run, and the editorial plan the agent decided to make | | :--: | :--: | | Content review: quality checks and approval for one video | Autonomous operator: your mandate and the agent's plan | Screenshots use sample data so every panel is populated. Regenerate them with npm run docs:screenshots. Why it's different - You approve before anything is published. Finished videos wait for fact review, media-rights confirmation, and your approval. Turning on autonomy doesn't skip those checks. - Real output only. Simulated or placeholder media is clearly marked and can never be approved or uploaded. - Self-hosted. Your keys, media, and channel data stay on your machine. - Learns from evidence, with your sign-off. Lessons from analytics, retention curves, and comments shape future videos only after you approve them. - Your choice of providers. Eight text providers or OpenRouter, five AI video providers, or free local slideshow rendering. Quick start You need: - Node.js 18.17 or newer - A Google account and YouTube Data API credentials (setup steps) - An API key for at least one text provider. Gemini has free tiers for text and narration. bash git clone https://github.com/darkzOGx/youtube-automation-agent.git cd youtube-automation-agent npm install npx playwright install chromium renders slideshow videos; on Linux add --with-deps npm run walkthrough npm start Then open http://localhost:3456. 1. npm run walkthrough explains each provider choice, tests your keys, and connects your YouTube channel. For a shorter flow, use npm run setup. Every setting is documented in .env.example. 2. Check readiness. In the dashboard, open Production readiness and choose Run verified check. It makes small live text and narration requests, checks access to your channel, and builds and decodes a test MP4, without uploading anything. 3. Make videos. Open Autonomous operator, describe the channel you want, and choose Activate & run now, or create a single video from the dashboard. Finished videos wait in Pipeline for your review and approval. FFmpeg is installed with npm install through ffmpeg-static. YouTube credentials 1. Create a project in Google Cloud Console. 2. Enable YouTube Data API v3, and YouTube Analytics API for retention and outcome data. 3. Create an OAuth 2
Top issues
Discussions
#94Question / Feature Request: How to completely disable automatic local caption generation and burn-in?1 comments · 2026-11-09#93Slideshow video is always simulated: chromium_headless_shell never finishes unpacking on Windows1 comments · 2026-11-09#89How to Solve "npx Playwrite install" problem0 comments · 2026-10-31#87Would multi-channel support fit the project direction?0 comments · 2026-10-27#83100% free youtube automation no API is paid version.2 comments · 2026-10-25#75Cheap video models0 comments · 2026-10-17#74Error loading sharp module on Android2 comments · 2026-10-16#73Light Blue Screen Layer on VDO1 comments · 2026-10-15
Latest release
v2.11.0 — Whole-channel analytics, clearer failures, safer defaults v2.11.0 2026-10-14📈 New: whole-channel stats in Analytics Analytics used to show only videos that AgentTube had analyzed itself, so an established channel could read as 0. A new Channel snapshot panel now reads straight from YouTube: - Lifetime: subscribers, views and videos, including videos published outside AgentTube - Last 28 days: views, watch hours, subscribers gained and lost, and net change (YouTube Analytics lags about two days) - No fake zeroes: if the YouTube Analytics API isn't enabled for your Google Cloud project, the panel says so and links straight to the page that turns it on. Hidden subscrib