Presentation Documentation

AI-Automated Tech Shorts Platform

Production stack deployed on Ubuntu VPS with automated ingest, script generation, TTS, rendering, compliance gating, and YouTube publishing.

Host Spec

2 vCPU, 4 GB RAM, 60 GB NVMe

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.

Automation cadenceTarget: 2 shorts/day
Delivery modeTimer-driven + dashboard controls
Monetization pathAds + affiliate links
Fallback strategyGemini primary, local Qwen fallback

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

  1. Ingest: Pull RSS feeds and rank by relevance/recency.
  2. Generate: Produce title, 60-second script, description, hashtags.
  3. TTS: Convert script to audio.
  4. Render: Build 1080x1920 MP4 with captions and safe-margin overlays.
  5. Validate: Block risky/policy-sensitive content and high-similarity scripts.
  6. Upload: Push validated jobs to YouTube with retries.
  7. 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 on 127.0.0.1:8088.
  • imagemaster.schulabs.com: reserved public app slot.
  • systemd timers 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.env and /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

SymptomLikely CauseAction
LLM_API_KEY missingEnv not loaded or empty valueVerify /etc/tech-shorts/pipeline.env and service restart.
Gemini 429 Too Many RequestsRate/quota exceededUse local fallback model (already enabled).
Upload says missing client secret/tokenSecrets wiped/replacedRestore files in /opt/tech-shorts/secrets.
Dashboard shows no jobsDB reset or missingRun pipeline init-db then ingest cycle.

11) Next Milestones

  1. Finalize branded visual pack (intro, lower-third, default backgrounds).
  2. Tune compliance threshold and script diversity prompts to reduce blocks.
  3. Add weekly auto-report page (views, uploads, failures, top topics).
  4. Deploy ImageMaster app to imagemaster.schulabs.com.