Goal: Build and monetise a self‑hosted n8n + OpenAI micro‑SaaS that automatically discovers trending topics, generates YouTube Shorts & matching blog posts, publishes them and sends performance digests — all running on a single DigitalOcean droplet.
$29/mo
self‑host licence or $199 setup + $79/mo
hosted plan.Component | Details / Rationale |
---|---|
DigitalOcean Droplet | Ubuntu 22.04, 2 vCPU, 4 GB RAM (≈ $18/mo). |
Docker + docker‑compose | Single‑file deployment of n8n, Caddy & Postgres. |
Domain e.g. trendforge.ai | Points to droplet; Caddy auto‑issues Let’s Encrypt cert. |
n8n (latest) | Automation engine, password‑protected. |
PostgreSQL 15 | Stores workflow + analytics data. |
OpenAI API Key | GPT‑4o for text, DALL·E 3 for thumbnails. |
Google Cloud project | Enable YouTube Data API v3 for uploads. |
SerpApi (or pytrends) | Google Trends scraping without TOS headache. |
WordPress blog | Author account + Application Password for REST calls. |
Pictory / Runway API | Turns script → auto‑edited Short video. |
Twilio WhatsApp | Daily performance digest. |
Stripe | Recurring billing (Starter, Pro, Agency tiers). |
# ./docker-compose.yml
version: "3.8"
services:
n8n:
image: n8nio/n8n:latest
restart: always
environment:
- N8N_BASIC_AUTH_ACTIVE=true
- N8N_BASIC_AUTH_USER=${N8N_USER}
- N8N_BASIC_AUTH_PASSWORD=${N8N_PASS}
- DB_TYPE=postgresdb
- DB_POSTGRESDB_HOST=postgres
- DB_POSTGRESDB_DATABASE=n8n
- DB_POSTGRESDB_USER=n8n
- DB_POSTGRESDB_PASSWORD=${PG_PASS}
- N8N_ENCRYPTION_KEY=${N8N_KEY}
- WEBHOOK_URL=https://trendforge.ai/
depends_on:
- postgres
volumes:
- n8n_data:/home/node/.n8n
postgres:
image: postgres:15
restart: always
environment:
- POSTGRES_PASSWORD=${PG_PASS}
volumes:
- pg_data:/var/lib/postgresql/data
caddy:
image: caddy:latest
restart: always
ports:
- "80:80"
- "443:443"
volumes:
- caddy_data:/data
- ./Caddyfile:/etc/caddy/Caddyfile
depends_on:
- n8n
volumes: { n8n_data: {}, pg_data: {}, caddy_data: {} }
geo=PAK&date=today 1-d
.score = trending_score / resultCount
.POST /render
with script./tmp
.Important: For manual tests, pair Webhook (Respond → “Using Respond to Webhook node”) with a downstream Respond to Webhook node to avoid configuration errors.
quotaRemaining < 2000
.trendforge.json
.README.md
(env vars, docker‑compose, 1‑click import).Day | Action |
---|---|
0 – 3 | Finish MVP (script → draft blog). |
4 – 6 | Add Pictory render & YouTube upload. |
7 | WhatsApp digest + error handling polish. |
8 | Deploy docs + landing page (Framer). |
9 | Release free community edition in n8n forum. |
10 – 14 | Onboard 3 beta YouTubers via Discord. |
15 | Publish case study blog. |
16 | Launch on Product Hunt + X thread. |
20 | TikTok ads: $10/day → “beginner youtuber”. |
25 | Hit 20 paid seats → ~$580 MRR. |
30 | User survey → plan A/B title test (v1.1). |
Metric | Starter Tier |
---|---|
Price | $29 / month |
Hosting cost (self‑host) | $0 |
Your support time | ≈ 1 h onboarding |
Gross margin | ≈ 100 % |
Break‑even | 34 seats → $1 000 MRR (covers your own infra & API bills) |
docker pull n8n:latest
).Copy–paste after launch:
Founder & Engineer — TrendForge AI (05/2025 – Present)
• Designed and commercialised a self‑hosted n8n + OpenAI automation that scrapes live trends, auto‑generates Shorts, blog posts and social teasers, boosting content output 4× for >40 micro‑creators.
• Implemented quota‑aware YouTube upload pipeline and WhatsApp analytics bot; achieved $X 000 MRR within 2 months.