惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

aimingoo的专栏
aimingoo的专栏
博客园 - 三生石上(FineUI控件)
GbyAI
GbyAI
大猫的无限游戏
大猫的无限游戏
M
MIT News - Artificial intelligence
Microsoft Azure Blog
Microsoft Azure Blog
月光博客
月光博客
Engineering at Meta
Engineering at Meta
I
InfoQ
T
Tailwind CSS Blog
N
Netflix TechBlog - Medium
S
SegmentFault 最新的问题
H
Help Net Security
博客园 - 【当耐特】
WordPress大学
WordPress大学
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
美团技术团队
博客园 - 叶小钗
T
The Blog of Author Tim Ferriss
腾讯CDC
雷峰网
雷峰网
Martin Fowler
Martin Fowler
The GitHub Blog
The GitHub Blog
D
Docker

DEV Community

Authentication Security Deep Dive: From Brute Force to Salted Hashing (With Java Examples) Why AI Systems Don’t Fail — They Drift Spilling beans for how i learn for exam😁"Reinforcement Learning Cheat Sheet" I Replaced Chrome with Safari for AI Browser Automation. Here's What Broke (and What Finally Worked) How Python Borrows Other People's Work The $40 Architecture: Processing 1 Billion API Requests with 99.99% Uptime Vibe Coding: A Workflow Guide (From Zero to SaaS) Most webhook security guides protect the wrong side. The scary part is delivery. Headless CMS for TanStack Start: Build a Blog with Cosmic EU Age Verification App "Hacked in 2 Minutes" — What Actually Happened Comfy Cloud’s delete function does not actually remove files Running AI Models on GPU Cloud Servers: A Beginner Guide Event-driven media intelligence with AWS Step Functions and Bedrock I scored 500 AI prompts across 8 quality dimensions — here's what broke How to Call Google Gemini API from Next.js (Free Tier, No Backend Needed) The Portal Protocol: Reclaiming Human Connection in the Age of AI How to Fix Your Team's Scattered Knowledge Problem With a Self-Hosted Forum Intro to tc Cloud Functors: A Graph-First Mental Model for the Modern Cloud Designing Multi-Tenant Backends With Both Ownership and Team Access I Built a Neumorphic CSS Library with 77+ Components — Here's What I Learned PostgreSQL Performance Optimization: Why Connection Pooling Is Critical at Scale Cómo construí un SaaS multi-rubro para gestionar expensas en Argentina con FastAPI + Vue 3 🚀 I Built an Ethical Hacking Scanner Tool – Open Source Project I Replaced /usage and /context in Claude Code With a Single Statusline A Pythonic Way to Handle Emails (IMAP/SMTP) with Auto-Discovery and AI-Ready Design I Collected 8.9 Million Polymarket Price Points — Here's What I Found About How Markets Really Move EcoTrack AI — Carbon Footprint Tracker & Dashboard Everyone's Using AI. No One Agrees How. 5 self-hosted ebook managers worth trying in 2026 Building Your First AI Agent with LangChain: From Chatbot to Autonomous Assistant
How I Built a Fully Automated SEO Blog for $0/Month (Clou...
Nextrader · 2026-05-01 · via DEV Community
Cover image for How I Built a Fully Automated SEO Blog for $0/Month (Cloudflare + Gemini API)

Nextrader

I run Nextrader — an AI-Powered Trading Bot Platform for Deriv trading. To drive organic traffic, I built a fully automated blog that publishes fresh, SEO-optimized articles twice a day without me touching a thing.

Here's exactly how it works — the tech stack, architecture decisions, and lessons learned.

The Goal

  • Publish two trading-focused blog posts per day, fully automated.
  • Each post includes a unique topic, SEO title, meta description, full article content, and an AI-generated cover image.
  • Zero recurring cost — free tier everything.
  • No CMS, no WordPress, no maintenance.

deriv bot

The Stack

Layer Tool Cost
Runtime Cloudflare Workers (Hono.js) Free
Database Cloudflare D1 (SQLite) Free
Image Storage Cloudflare R2 Free
AI Text Gemini 2.5 Flash Free
AI Images Gemini 2.5 Flash (Image Mode) Free
Deploy GitHub Actions + Wrangler Free
Total $0/month

The "Two-Call" Gemini Trick

The biggest challenge with Gemini 2.5 Flash is thinking tokens. When you ask for JSON and a full article in one prompt, the thinking tokens corrupt the JSON output.

The fix: split it into two calls.

  1. Call 1 — Metadata only (small JSON): Returns the title, slug, meta description, tags, and an image prompt.
  2. Call 2 — Article content (plain text): Writes the full 600–800 word article as plain text. No JSON wrapping.

This gave me 100% reliable JSON parsing with zero corruption.

Unique Topics Forever

The early version used getDayOfYear() — meaning topics would reset every January 1st and eventually repeat. I fixed this by switching to days since the Unix epoch. Today is day 20,546. Unique topics until the heat death of the universe.

AI Image Generation

Each post gets a unique cover image from Gemini's image API, with:

  • 8 rotating color themes — deep blue, emerald, crimson, purple, teal, cyan, amber, rose.
  • Topic-specific scene composition described by the metadata call.
  • Varied layouts — close-ups, overhead desk shots, phone screens, laptops.
  • WASM compression using @jsquash/jpeg — reduces 1.1 MB PNGs down to ~50 KB JPEGs.

SEO Built In

Every post automatically gets:

  • Article JSON-LD structured data.
  • Open Graph tags.
  • Auto-generated sitemap.xml and robots.txt.
  • Clean slug URLs with no /post/ prefix.

Lessons Learned

  • Two-call LLM pattern: Never mix structured JSON and long-form text in a single prompt with thinking models.
  • WASM in Cloudflare Workers: Pass the .wasm binary manually via init(), or it fails silently at runtime.
  • Wrangler deploys wipe dashboard secrets: Keep all variables in wrangler.toml if the repo is private.
  • Route order matters in Hono: /:slug catches everything, so always register it last.
  • PNG vs. JPEG from Gemini: Detect magic bytes (0x89 0x50 = PNG, 0xFF 0xD8 = JPEG) to handle both formats.

The live blog auto-publishes at 08:00 and 20:00 UTC every day. No servers. No bills. Just Cloudflare Workers and Gemini doing the work.

Check out the live blog: blog.nextrader.live