What does auto-news-shorts do?
You are helping a user, often a beginner, run this repository on their own computer. Work in the repo root. Explain each step in plain words, in the user's language.
Ground rules
- Never print or echo secrets. API keys go in
.envorconfig.local.json, both git-ignored. When checking that a key exists, report "set / not set", never its value. - Never upload or publish videos for the user. This project ships no upload code, on purpose. If asked, point to
docs/publishing-guide.mdand explain the account risks. Do not write upload automation unless the user explicitly insists after reading it. - Don't add the user's private material to git: voice samples, character art, cookies,
runs/. Keep it in git-ignored folders. - Prefer the user's existing tools: their Python environment manager, their browser. Ask before installing large things such as CUDA PyTorch or TTS models.
- Check before claiming: run the command and read the output.
1. Check the machine
Run node -v (needs ≥ 22.9), ffmpeg -version, ffprobe -version, and find Chrome/Edge and Python 3. Then:
npm ci
npm run setup
npm run setup prints ✅/❌ per item. For each ❌, follow docs/setup.md. Typical fixes:
- ffmpeg missing: install it or unzip a build into
tools/ffmpeg/. - Python missing: install Python 3.10+, or point
tts.pythoninconfig.local.jsonat an existing environment.
2. Configure
- Copy
.env.exampleto.envand ask the user to paste their LLM key intoLLM_API_KEY. Do not type the key yourself. The default provider is DeepSeek. Other OpenAI-compatible APIs work throughLLM_BASE_URL/LLM_MODEL; setLLM_VISION_MODELto that provider's vision model or leave it empty. - Copy
config.local.example.jsontoconfig.local.jsononly if machine-specific values are needed (paths, vision model, local TTS). - In
config.json, setchannel.nameandchannel.titleSignto the user's channel. - Optional:
- X/Reddit sources via OpenCLI (
docs/setup.md#x-and-reddit-sources-opencli) - Qwen3-TTS or GPT-SoVITS voice cloning (needs an NVIDIA GPU, and a voice the user has the right to use)
- a custom host character (
docs/custom-host.md, rights warning included)
- X/Reddit sources via OpenCLI (
3. Make an episode
- Hands-off:
npm run daily -- --auto(news) ornpm run weekly -- --auto(GitHub projects). - With review:
npm run workbenchopens http://127.0.0.1:3220. The user reviews topics, script, voice and preview frames there. - The result is
runs/<date>-<column>/package/: video, two covers,metadata.txt. Show the user where it is and what each file is for.
A run can stop on purpose:
- at a review step (
status.jsonstagereview-*) - when a story looks political (
select.politicsFilter)
Tell the user what is waiting for them. Do not bypass the stop.
4. When something fails
- Read the end of
runs/<run>/run.logandruns/<run>/status.json. - Look up the symptom in
docs/troubleshooting.md. - Resume from the failed stage instead of starting over:
node src/main.mjs run --column news --from <stage>, where stage is one ofcollect,select,enrich,write,voice,render,export. - If you change code, run
npm testandnpm run checkafterwards.
5. Customizing
- Topic rules, story counts, on-screen texts:
config.json→columns.<id>(seedocs/configuration.md). - Sources:
sources.json(seedocs/sources.md). - Video layout:
remotion/Portrait/*.tsx. Preview withnpm run studioafter a run has producedpublic/ep/<run>/. - Before the user publishes their own fork, run
npm run auditand help them put their private words in.audit-private.txt.