create-seo-site
Scaffold SEO-first static sites designed to rank for long-tail keywords and funnel traffic to a SaaS product.
Quick Start
npx create-seo-site my-site
cd my-site
npm install
npm run dev
What You Get
- Astro static site optimized for SEO
- Markdown content with frontmatter (no CMS server needed)
- AI generation scripts for bulk article creation
- Cloudflare Pages deployment config
Project Structure
my-site/
├── src/
│ ├── content/
│ │ └── articles/ # Markdown articles by category
│ ├── layouts/
│ │ └── Base.astro # Base HTML layout
│ ├── pages/
│ │ ├── index.astro # Homepage
│ │ └── [category]/ # Dynamic routes
│ └── components/
│ └── CTA.astro # SaaS call-to-action block
├── prompts/
│ ├── article-generator.md # AI prompt templates
│ └── keywords.txt # Your keyword list
├── scripts/
│ └── generate.js # Bulk content generator
├── site.config.json # Site configuration
├── astro.config.mjs
└── wrangler.toml # Cloudflare config
Commands
npm run dev | Start local dev server |
npm run build | Build static site to dist/ |
npm run preview | Preview built site locally |
npm run generate | Generate articles from keywords.txt |
npm run deploy | Deploy to Cloudflare Pages |
Content Generation
-
Add keywords to prompts/keywords.txt:
how to calculate widget costs | widget-pricing
widget material types explained | widget-materials
-
Set your API key:
export OPENAI_API_KEY=sk-...
export ANTHROPIC_API_KEY=sk-...
-
Generate articles:
npm run generate
npm run generate -- --limit 5
npm run generate -- --dry-run
Configuration
Edit site.config.json:
{
"domain": "example.com",
"siteName": "My SEO Site",
"topic": "widgets",
"audience": "manufacturers",
"saas": {
"name": "WidgetPro",
"url": "https://widgetpro.com",
"ctaText": "Try it free"
},
"categories": ["pricing", "materials", "assembly"]
}
Deployment
Cloudflare Pages
- Push to GitHub
- Connect repo to Cloudflare Pages
- Build command:
npm run build
- Output directory:
dist
Or deploy manually:
npm run deploy
Article Format
Articles are markdown with YAML frontmatter:
---
title: "How to Calculate Widget Costs"
slug: "how-to-calculate-widget-costs"
targetKeyword: "calculate widget costs"
category: "pricing"
metaTitle: "How to Calculate Widget Costs | MySite"
metaDescription: "Learn the standard method for calculating widget costs."
publishedAt: "2024-01-15T00:00:00Z"
readTime: 5
---
# How to Calculate Widget Costs
Article content here...
Design Principles
This scaffolder follows strict rules for SEO-first, disposable content sites:
- No blog voice - Neutral, instructional tone only
- No brand storytelling - Facts, not narrative
- No external links - Keep link equity internal
- One keyword per article - Focused targeting
- Flat structure - Homepage → Category → Article
- Minimal UI - Content-first, fast loading
License
MIT