1) Solution Overview
This platform automates a faceless tech-news YouTube Shorts channel. It fetches tech sources, generates scripts, creates voice + captions, composes short-form video, validates policy compliance, and uploads on schedule.
2) Architecture
RSS Feeds / APIs
|
v
[Ingest + Dedupe] ---> SQLite(job queue, runs, uploads, metrics)
|
v
[LLM Script Gen]
| \
| \__ Primary: Gemini API
| Fallback: Local Ollama (qwen2.5:1.5b)
v
[TTS Audio] --> [FFmpeg Render + Captions + Safe Zones] --> [Compliance Gate]
|
v
[YouTube Upload + Schedule]
|
v
[Dashboard + Metrics Pull]
3) End-to-End Workflow
- Ingest: Pull RSS feeds and rank by relevance/recency.
- Generate: Produce title, 60-second script, description, hashtags.
- TTS: Convert script to audio.
- Render: Build 1080x1920 MP4 with captions and safe-margin overlays.
- Validate: Block risky/policy-sensitive content and high-similarity scripts.
- Upload: Push validated jobs to YouTube with retries.
- Observe: Monitor statuses/errors in dashboard and logs.
4) Infrastructure & Domains
schulabs.com: primary website endpoint on Nginx + Let's Encrypt.dashboard.schulabs.com: reverse-proxy to internal dashboard service on127.0.0.1:8088.imagemaster.schulabs.com: reserved public app slot.systemdtimers run ingest/generate/render/validate/upload/metrics/cleanup.
# Timer check
systemctl list-timers --all | grep pipeline
# Upload logs
journalctl -u pipeline-upload.service -n 120 --no-pager
5) Security Model
- SSH key-based access for deploy user.
- Firewall (UFW) and fail2ban enabled.
- TLS certificates via Certbot.
- Dashboard auth via
WEB_USERNAME/WEB_PASSWORD. - Secrets stored server-side in
/etc/tech-shorts/pipeline.envand/opt/tech-shorts/secrets/.
6) Operations Runbook
# Manual single-item run
sudo -u techops bash -lc 'cd /opt/tech-shorts && source .venv/bin/activate && pipeline generate && pipeline render && pipeline validate && pipeline upload'
# Dashboard service
systemctl status pipeline-web.service --no-pager -l
# Restart full automation stack
systemctl restart pipeline-generate.timer pipeline-render.timer pipeline-validate.timer pipeline-upload.timer
7) Cost Strategy
Design target is near-zero incremental spend during early validation:
- Gemini free-tier as primary script model.
- Automatic local fallback model when cloud limit is hit.
- Local FFmpeg rendering.
- YouTube API within normal quota envelope for 2/day upload schedule.
8) Is this anonymous and fully hands-off?
Short answer: faceless yes, fully anonymous no.
- Faceless: yes, channel can avoid showing your identity publicly.
- Platform anonymity: no, YouTube/Google account ownership and API credentials are traceable to account owner.
- Hands-off: mostly, but not zero-maintenance; periodic checks are still required for policy, quality, and quota limits.
9) Black Screen Issue: Root Cause & Fix
Earlier videos appeared as black screen + text when no background media was available. The renderer now includes:
- Source-image extraction from article OG/Twitter meta images.
- Pexels fallback (if API key present).
- Safe-zone overlay positioning to avoid Shorts UI overlap.
- Improved text styling and readable caption zone.
Recommendation: keep a branded default visual in /opt/tech-shorts/assets/default_bg.jpg to guarantee non-empty backgrounds.
10) Troubleshooting
| Symptom | Likely Cause | Action |
|---|---|---|
LLM_API_KEY missing | Env not loaded or empty value | Verify /etc/tech-shorts/pipeline.env and service restart. |
Gemini 429 Too Many Requests | Rate/quota exceeded | Use local fallback model (already enabled). |
| Upload says missing client secret/token | Secrets wiped/replaced | Restore files in /opt/tech-shorts/secrets. |
| Dashboard shows no jobs | DB reset or missing | Run pipeline init-db then ingest cycle. |
11) Next Milestones
- Finalize branded visual pack (intro, lower-third, default backgrounds).
- Tune compliance threshold and script diversity prompts to reduce blocks.
- Add weekly auto-report page (views, uploads, failures, top topics).
- Deploy ImageMaster app to
imagemaster.schulabs.com.