Reading the repo
Reading the repo
How to install on Linux
🎬 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.
Saved setup from 54 min ago
Will it work on my device?
CONTRIBUTING.mdThanks for contributing! This project moves fast and PRs are reviewed regularly — a few ground rules keep that possible.
package-lock.json unless your PR is specifically about dependencies. Lockfile churn hides real changes and is a supply-chain review burden.npm run lint and npm test on every PR. If you fix a bug, add a regression test in test.js (see the existing SystemTest methods for the pattern).master before opening or updating a PR.npm start, generated a video with Gemini-only credentials, verified a real .mp4 appeared in data/videos/" beats any amount of code description.git clone <your-fork>
cd youtube-automation-agent
npm install # also fetches the bundled FFmpeg binary
npm test # 12 system tests, no credentials needed
npm run lint
You don't need API keys to work on most of the codebase — the test suite and the simulation fallbacks run without them. For end-to-end runs, npm run setup walks you through credentials (any one AI provider is enough).
youtube-automation-agent/
├── agents/ # one file per pipeline agent (strategy, script, thumbnail, SEO, production, publishing, analytics)
├── dashboard/ # web dashboard served by index.js
├── database/ # SQLite schema and access layer
├── schedules/ # cron-based automation
├── scripts/ # maintenance scripts (growth snapshot, README screenshots)
├── utils/ # AI text, media, and video providers; operator, readiness, engagement, and other services
├── config/ # credential files (examples are committed)
├── data/ # generated content and the local database
├── docs/ # feature guide, API reference, providers, troubleshooting, design notes
├── examples/ # verified real output from the community
├── index.js # Express server and agent startup
├── walkthrough.js # guided setup (npm run walkthrough)
├── setup.js # classic setup (npm run setup)
└── test.js # system test suite (npm test)
Any provider with an OpenAI-compatible chat completions API can be added as a preset in utils/ai-text-service.js:
deepseek: {
name: 'DeepSeek',
baseURL: 'https://api.deepseek.com',
defaultModel: 'deepseek-flash',
models: ['deepseek-flash', 'deepseek-v4-pro'],
envKey: 'DEEPSEEK_API_KEY',
},
Then add a matching entry to AI_PROVIDER_GUIDE in walkthrough.js and a setup option in utils/credential-manager.js, add the provider to docs/providers.md, and run npm test. The walkthrough test fails if any provider is missing a complete guide.
Video providers live in utils/video-providers.js. Each one extends VideoProvider, implements isAvailable, createTask, getTask, and downloadResult, and is registered in VideoProviderRegistry.
The screenshots in the README are captured by npm run docs:screenshots, which starts the dashboard from your checkout and saves PNGs to assets/screenshots/. Re-run it after a visible dashboard change. Capture from a database with at least one real production: the project never presents mock or simulated output as real.
Check the open issues and the roadmap in the latest release notes. Current priorities: Gemini image/TTS parity, slideshow rendering performance, and template-content quality.
Use the bug report template — it asks for the startup capability check (🔎 Capability check: block), which diagnoses most issues instantly.
Then run bash setup.sh. It stops at the first error and is safe to run again. Servers and tests aren't started; it lists them at the end. Read it first.
git clone https://github.com/darkzOGx/youtube-automation-agent.git cd youtube-automation-agent
Node.js >=18.17.0
# needs nvm: https://github.com/nvm-sh/nvm nvm install --lts
Optional, add them when you need them: API_KEY
cp .env.example .env
npm ci
npm run start
npm test
You need:
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.
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.FFmpeg is installed with npm install through ffmpeg-static.
config/credentials.json.Error 403: access_denied. While the app is in Testing mode, Google expires the sign-in after 7 days.No reports for Linux yet.
Opens a chat with this manual already filled in, for Linux. It uses your own account; gitmanual sends nothing.