Skip to content

pages-seo v1.0.0

Choose a tag to compare

@Benjamin-Bloch Benjamin-Bloch released this 21 May 19:15

pages-seo v1.0.0

First stable release. Self-hosted programmatic SEO toolkit running on Cloudflare Pages — daily AI blog, programmatic landing pages, sitemap, IndexNow, embedded widget, admin dashboard. Free tier of Cloudflare covers most usage.

Install

Browser (recommended, ~3 min):

https://seo.benjaminb.xyz/install

Terminal (one-liner, ~2 min):

curl -fsSL https://seo.benjaminb.xyz/install/run.sh | bash
# or run.py / run.js

Not technical? Hand the install to an LLM — copy the prompt from https://seo.benjaminb.xyz/ai-setup and paste into ChatGPT/Claude/Gemini. The AI walks you through every step.

What's new in 1.0.0

One-click + one-line install

  • Browser installer at /install provisions D1 + R2 + Pages + schema + admin user in ~3 minutes.
  • Terminal installer (curl … | bash) is idempotent — re-running upgrades in place.
  • Both default to the latest stable tag (PAGES_SEO_REF=v1.0.0); set PAGES_SEO_REF=main for bleeding edge.

AI bootstrap + diagnose-then-fix

  • /ai-setup generates a self-contained LLM prompt with your site's URLs baked in.
  • Admin → System → "✦ Get an AI to fix it" scans your live install (homepage, /api/health, /api/setup, /api/admin/whoami, /sitemap.xml, /robots.txt, /cover/.svg, /blog) in parallel and emits a prompt that names the specific failures.

Update + Repair in the admin

  • System → Status runs 12 health checks across D1/R2/Workers AI/secrets/GitHub source/deploy state, with per-check one-click fixes.
  • System → Updates compares your installed SHA against upstream main, shows the commit log, offers a one-click rebuild for browser installs.
  • Public /repair page works even if /admin won't load — paste a Cloudflare API token, auto-detects your project, diagnose + auto-fix.

Daily AI blog + programmatic pages

  • 9 LLM providers (Workers AI default; OpenAI, Anthropic, Gemini, Groq, DeepSeek, Mistral, Together, Cerebras as fallbacks).
  • Cover-image renderer that produces hero images live from a saved template + the post title, with R2-backed background images.
  • IndexNow pings on every publish; Article + FAQ + Breadcrumb schema baked into every post.

Self-healing bindings

  • Self-repair secrets (CF_API_TOKEN/CF_ACCOUNT_ID/CF_PROJECT/CF_D1_ID/CF_R2_NAME) let the site re-attach its own D1/R2 bindings if the Pages project loses them.
  • /api/health liveness endpoint for external monitors.

Fixed in 1.0.0 (since 0.2.0)

  • curl … | bash|python|node installers read from /dev/tty so prompts work when piped from curl.
  • Pages-create silently dropping D1/R2 bindings — installer now PATCHes the project config after creation.
  • Admin Updates tab classifies transient GitHub 502/403/429 as warnings ("try again in 30s") instead of red broken-system errors.
  • Cover SVG live renderer inlines R2 backgrounds as base64 so CORS oddities never blank out hero images.
  • Client-side WebP compression on cover-editor uploads (10–15× smaller).
  • Multiple CodeQL findings (workflow permissions, error-stack leakage, double-escape in scrape, command-injection in CLI).

Compatibility

  • Cloudflare Pages with Functions (Workers).
  • D1 (free tier covers ~10GB storage).
  • R2 (free tier covers 10GB stored + 1M Class-A ops/month).
  • Workers AI (free tier covers ~10k reqs/day on Llama 3.3 70B + Flux 1 schnell).
  • Node 18+ (CLI installer only).

Full changelog

See CHANGELOG.md.