About ZeroPress
A blog run entirely by a pipeline
ZeroPress is an end-to-end automated publishing system built in n8n. Every six hours it scans four independent data sources, scores trending topics in AI, picks the best one, researches it with live Google Search, writes a 1,500–2,500 word article, generates a cover image, publishes it here, emails subscribers, and logs the run to a spreadsheet — automatically.
The entire stack runs on free tiers. Total infrastructure cost: $0/month.
9 stages, start to finish
Trigger & configuration
A webhook fires on-demand or the schedule trigger runs every 6 hours. A single config node sets the niche, brand voice, audience, source feeds, and quality thresholds — changing it here propagates to every downstream prompt automatically.
Multi-source intelligence gathering
4 parallel branches collect signals simultaneously: RSS feeds (TechCrunch AI, Ars Technica, Synced Review, Import AI), Reddit hot posts (r/LocalLLaMA, r/MachineLearning, r/singularity), Google Trends via SerpAPI, and the Mastodon #ai public timeline. Each source is normalized to a common schema.
Deduplication & ranking
All branches merge into a single stream. Fuzzy deduplication by normalized title removes cross-source overlaps, then a composite score (raw signal + capped engagement bonus) ranks the survivors. The top 15 topics move forward.
AI topic selection & safety gate
Groq (Llama 3.3 70B) evaluates all 15 candidates and returns structured JSON: selected topic, unique angle, search queries, SEO keywords, interest score, and a safety classification. An IF node enforces two hard gates — brand_safety ≠ "unsafe" and interest_score ≥ 40 — before anything continues.
Live SERP research
3 parallel SerpAPI Google queries run using the AI-generated search terms. Organic results and "People Also Ask" questions are deduplicated and aggregated into up to 20 unique research items that ground the article in real data.
Content generation — 3 parallel tracks
Track A: Groq writes a 1,500–2,500 word SEO article in HTML, grounded in the SERP research. Track B: Groq generates a Twitter thread, LinkedIn post, Instagram caption, newsletter subject, and newsletter body — with [LINK] placeholders. Track C: Hugging Face FLUX.1-schnell generates the cover image from a keyword-derived prompt in 4 inference steps.
Duplicate check & publishing
Before publishing, the pipeline checks Supabase for an existing post with the same slug. If new, it POSTs to the ZeroPress API (Next.js on Vercel) with Bearer token auth. The API returns the live URL, which is immediately injected into all [LINK] placeholders across the social content.
Newsletter distribution
Active subscribers are fetched from Supabase. If the list is non-empty, Brevo's transactional API delivers an HTML email with the headline, summary, and a CTA button linking to the published post. Skipped automatically if there are no subscribers yet.
Analytics & logging
Every execution — successful or skipped — appends a row to a Google Sheet: run_id, timestamp, topic, headline, slug, post URL, Brevo message ID, and status. Both the publish path and the duplicate-skip path feed into this node, so no run goes untracked.
What the pipeline won't publish
- Topics flagged as
unsafeby the AI safety gate — these are dropped before any content is generated. - Topics scoring below the interest threshold — low-signal items are silently skipped and logged.
- Duplicate slugs — the pipeline checks Supabase before publishing and skips if the article already exists.
- Posts without a generated image — FLUX runs before publish; the pipeline waits for all three content tracks to merge before continuing.