⚡ The Problem
As a solo developer building two systems, I had zero time for content creation. But today's world demands online presence — LinkedIn, Instagram, YouTube, all need consistent, quality content. Doing it manually across multiple platforms in two languages was impossible. Every hour spent on content was an hour not spent building.
✅ The Solution
Automate everything from research to publishing. The system scans for trending topics, scores opportunities, generates content briefs, produces carousels + videos + captions, and publishes to 10 channels — all I do is approve the scripts. One approval click, and the rest is fully automated end-to-end.
I CAN build fully autonomous publishing. I CHOOSE to approve scripts because my brand carries my name. After approval, everything is automated. This is a product maturity decision, not a technical limitation.
Each layer operates independently with its own workflows, data models, and error handling. If one layer fails, the others continue. Data flows down; each layer enriches the previous output.
7 scheduled workflows · runs weekly
Automated scanners continuously gather raw data from multiple sources across the internet.
Workflows
YouTube Scanner
Scans channels for trending videos, extracts metadata, view counts, engagement rates
Blog Supply Scanner
Crawls industry blogs, filters spam domains (39% pollution removed via blocklist)
AI News Monitor
Tracks AI/tech news sources for breaking stories and emerging trends
Question Demand Collector
Scrapes forums and Q&A sites for what people are actually asking
Community Signal Scanner
Monitors Reddit, X, LinkedIn for engagement spikes and viral patterns
YouTube Comment Analyzer
Extracts comments for sentiment analysis and content gap detection
Live Data
1,087 YouTube videos
1,449 blog articles
1,816 news articles
3,937 community signals
4,738 YouTube comments
440 forum questions
3 workflows · multi-signal AI algorithm
Raw data becomes actionable opportunities. A multi-signal scoring algorithm evaluates every topic across 10+ dimensions to find what's worth creating content about.
Workflows
Topic Scorer
10+ signals: demand volume, supply scarcity, outlier detection, momentum, buzz factor, convergence
Tier Classifier
Confidence-weighted classification: GOLD (create now), SILVER (watch), WATCH (monitor)
Trend Analyzer
Cross-references multiple data sources to detect emerging trends before they peak
Live Data
158 tracked topics (30 EN + 30 ES + extras)
525 calendar entries generated
101 content briefs produced
💡 Why demand-supply gap, not just search volume?
Search volume tells you what people want. Supply tells you what already exists. The gap between them is where opportunity lives. A topic with 100K searches and 500 articles is saturated. A topic with 10K searches and 5 articles is gold. This scoring approach surfaces topics that competitors miss.
Interactive · human-in-the-loop
AI generates complete content calendars and briefs. I review and approve scripts — this is where human judgment matters most.
Workflows
Calendar Generator
28 video + 28 post entries per week, bilingual, balanced across topics and formats
Brief Writer
Full briefs with hooks, angles, talking points, visual direction, and platform-specific notes
Script Generator
Claude API writes scripts matched to brand voice DNA — tone, vocabulary, sentence structure
Live Data
525 content calendar entries
101 content briefs
Brand voice DNA matching
💡 Why keep script approval manual?
My brand carries my name. Authenticity matters more than velocity. I know this means fewer posts than a fully autonomous system — and I'm okay with that. The approval step takes 2 minutes per script. The alternative is publishing something I wouldn't say, which damages trust permanently. This is a product maturity decision.
Carousels · captions · short-form reels
The original production layer — turning approved briefs into finished social media content. Carousels with CSS/HTML text rendering, platform-optimized captions, and short-form video reels ready for Instagram, LinkedIn, Facebook, and Threads.
Workflows
Carousel Renderer
Custom Remotion compositions → text on image with CSS/HTML → R2 storage. This method was later brought to PhotoAI Advantage.
Caption Generator
Platform-specific captions with hashtag strategies, CTAs, and bilingual variants
Short-Form Reel Renderer
60-second reels via pure FFmpeg pipeline — bypasses Remotion for speed (~60s render time)
Thumbnail Creator
FLUX 1.1 Pro AI generation + custom text overlay for each platform
Live Data
459 media assets produced
452 media library items catalogued
Bilingual EN/ES output
💡 The discovery that changed everything
While building carousel rendering, I discovered that CSS/HTML text-on-image produces better results than burning text into AI images. This method went back to PhotoAI Advantage and became the core of its ad generation engine. But there was a bigger discovery: if I can render a 60-second reel from a script, I can render a 23-minute video. That realization created Layer 04B.
Full episodes · script to publish · custom renderer
A complete video production pipeline that takes an approved script and produces a finished YouTube episode — with AI voices, generated music, B-roll, scene transitions, subtitles, and broadcast-standard audio mastering. No manual editing needed.
Workflows
Scene Breakdown
Script → individual scenes with visual direction, mood, pacing notes
Voice Synthesis
OpenAI TTS per scene + ElevenLabs voice cloning (via Cloudflare Worker proxy). Multi-voice character support.
Music Generator
Stability AI Stable Audio 2.5 → mood-matched to content tone, per-scene or full-episode
B-Roll Matcher
Searches self-growing media library + Pexels/Pixabay for scene-appropriate footage
Video Composer
Custom Remotion renderer: 6 compositions, 31 visual element types, parallelized rendering (73min → 36min)
Audio Mastering
7-stage: narration → voice processing → music bed → sidechain ducking → two-pass loudnorm → dual export. From -58 LUFS to broadcast -15.3 LUFS
Thumbnail Generator
FLUX 1.1 Pro + custom overlay. Designed for YouTube click-through optimization.
Live Data
690 episode clips produced
70 episode scenes rendered
6 AI characters with wardrobes
First full 23-min episode: 16 scenes, 589MB
Selective re-rendering: update 1 scene without re-rendering all
💡 The self-growing media library
Every production adds to the media library. B-roll footage, scene packs, character renders, and audio clips accumulate. By month 5, the system has enough library assets that new productions cost ~70% less in AI generation. Building now makes future content cheaper. This is compounding infrastructure, not just a pipeline.
Self-hosted Postiz · 10 channels
Finished content is scheduled and published across all platforms simultaneously. One approval → 10 channels × 2 languages = 20 potential publishing events.
Workflows
Postiz Scheduler
Self-hosted Postiz v2.18.0 → API-driven scheduling and publishing
Platform Optimizer
Format adaptation per platform: aspect ratios, character limits, hashtag strategies
Google Drive Sync
All produced assets backed up to organized Drive library for manual access
Telegram Alerts
Telegram Bot API → real-time notifications for approvals, errors, completions
Live Data
10 social channels connected
5 platforms: Instagram, LinkedIn, Facebook, Threads, YouTube
2 languages: English + Spanish
Not a template tool — a complete production pipeline from script to finished video. Custom Remotion renderer with 20+ API endpoints, 6 video compositions, and 31 visual element types.
🎙️
AI Voice Synthesis
🎵
7-Stage Audio Mastering
🎬
Video Composition
🎬 First Full Production
First complete 23-minute episode produced end-to-end: 16 scenes, 589MB. Script → voice → music → B-roll → composition → mastering → thumbnail → ready to publish. Short-form videos (reels/shorts) render in ~60 seconds via pure FFmpeg pipeline — bypassing Remotion for speed.
Two Hetzner servers running Docker containers. Self-hosted everything — no vendor lock-in, full control, fraction of the cost of cloud equivalents. This data is live from the actual servers.
Connecting to live servers...
Why self-hosted instead of cloud services?
💰 Cost
n8n cloud: $50/mo. Self-hosted: $0. Postiz cloud: limited. Self-hosted: unlimited channels. Total cloud equivalent: $200+/mo vs our $43/mo.
🔧 Control
Custom Docker configurations, direct server access for debugging, no API rate limits, full database access. When something breaks at 2am, I SSH in and fix it — no support tickets.
🔒 Data Ownership
All data stays on our servers. Content strategies, AI prompts, brand voice DNA, audience insights — nothing leaves our infrastructure. Full GDPR compliance by default.
Building one system always improves the other. Here's what crossed over:
🎨
Text-on-Image Method
While building carousel rendering for this pipeline, I discovered that CSS/HTML text rendering produces better results than burning text into AI images. I brought this method to PhotoAI Advantage — it became the core of the ad generation engine. One discovery → two products improved.
📚
Media Library Concept
The self-growing media library pattern (assets accumulate, costs drop over time) is being designed into PhotoAI's template system. User-generated designs feed back into the template pool. Same compounding infrastructure principle, different application.
🔄
Multi-Provider Resilience
Running 7+ AI providers in this pipeline taught me that providers fail randomly. That experience directly shaped PhotoAI's triple fallback chain (Gemini → OpenAI → static). Production resilience isn't theoretical — I learned it by operating this system daily.
Real screenshots from production dashboards. URL bars visible. Timestamps verifiable.
27 workflows — 0% failure rate — 60.58s avg run time

Execution log — all green, running every 5 minutes

WF10 — Production Pipeline (12 nodes)

WF-ShortVideo — Reel Production

WF7 — YouTube Comments Collector

WF-VOICE-GEN — Voice Generation

WF-VIDEO-COMPOSE — Video Compositor

WF-MEDIA-INGEST — Media Library

Cloudflare R2 — content-media bucket (25.58 GB)

R2 Storage Metrics — steady growth

Hetzner — 2 production servers (EU)

Verify It Yourself
These endpoints are public — open them in your browser. Response times change on every refresh.
n8n · Remotion · FFmpeg · Supabase · Cloudflare R2 · Docker · Traefik · Coolify · Postiz · Claude API · OpenAI · ElevenLabs · Stability AI · FLUX · Kling · Pexels · Hetzner