npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

create-seo-site

v1.0.0

Published

Scaffold SEO-first static sites for long-tail keyword targeting

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 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

| 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

  1. Add keywords to prompts/keywords.txt:

    how to calculate widget costs | widget-pricing
    widget material types explained | widget-materials
  2. Set your API key:

    export OPENAI_API_KEY=sk-...
    # or
    export ANTHROPIC_API_KEY=sk-...
  3. 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

  1. Push to GitHub
  2. Connect repo to Cloudflare Pages
  3. Build command: npm run build
  4. 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