create-seo-site
v1.0.0
Published
Scaffold SEO-first static sites for long-tail keyword targeting
Maintainers
Readme
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 devWhat 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 configCommands
| Command | Description |
|---------|-------------|
| 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-materialsSet your API key:
export OPENAI_API_KEY=sk-... # or export ANTHROPIC_API_KEY=sk-...Generate articles:
npm run generate # Generate all npm run generate -- --limit 5 # Generate 5 articles npm run generate -- --dry-run # Preview only
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 deployArticle 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
