> local cli · on-domain · safe pSEO
Generate schema-validated, AI-powered pages that deserve to rank — injected directly into your site with on-domain paths. Quality-first by design, driven by the contento CLI.
# Install & configure your AI provider (BYO key)
$ npm install -g contento-cli
$ contento config set --provider openai --api-key "sk-..."
> ✓ AI configuration saved
# Create a project
$ contento init --name "DevTools Resources"
> ✓ Project created: proj_8f3a
# Browse niches & pick a content schema
$ contento niches list --category "Software / SaaS"
> 20 niches found: Web Dev, DevOps, AI/ML, ...
# Create a collection (niches × schema = pages)
$ contento collections create \
--schema idea-list --niches web-dev,devops,ai-ml
> ✓ Collection created (48 pages queued)
# Generate with AI & build to your site
$ contento collections generate coll_a1b2c3
> [████████████████] 48/48 (100%)
> ✓ 48 pages generated, schema validated
$ contento build proj_8f3a --output ./dist/articles
> ✓ 48 pages built to ./dist/articles/
150+
Niches
10
Content Types
✓
Schema Validation
On-Domain
Direct Paths
From install to indexed pages in six steps. Every step runs through the contento CLI — or fully automated by an AI agent with --json.
Install the CLI globally via npm, then configure any AI provider with your own API key — OpenAI, Anthropic, Groq, OpenRouter, or any OpenAI-compatible endpoint (including local models via Ollama). Your key is stored locally at ~/.contento/config.json. No Contento account required.
npx contento-cli (zero install)$ npm install -g contento-cli
added 1 package in 3s
$ contento config set
? AI Provider: OpenAI
? Model: gpt-4o-mini
? API Key: ********************************
✓ AI configuration saved to ~/.contento/config.json
$ contento projects chrome proj_8f3a \
--header ./templates/header.html \
--footer ./templates/footer.html \
--css ./styles/main.css
✓ Chrome uploaded for proj_8f3a
Header: 1.2 KB
Footer: 0.8 KB
CSS: 4.1 KB
Point Contento at your existing site's header, footer, and CSS. Generated pages adopt your chrome — they look native to your site, not like a third-party tool. Pages build to your output directory with direct on-domain paths like /articles/react-patterns.
Recommended host: Astro. Drop Contento's dist/articles/ output into Astro's public/, point chrome at your Astro layout's compiled header/footer, and Astro handles the rest of the site. Works with any static framework — Astro is just the cleanest fit.
Contento ships with 150+ niches across 8 categories, each with rich context: target audience, pain points, monetization strategies, and 10–20 subtopics. The subtopics are what become your pages. Browse interactively or filter by category.
contento niches list --category "..." and niches view <id>$ contento niches list --category "Software / SaaS"
ID Name Subtopics
────────────────────────────────────────
niche_01 Web Development 16
niche_02 DevOps & CI/CD 14
niche_03 AI & Machine Learning 18
niche_04 Cybersecurity 12
niche_05 Mobile Development 15
... 15 more
$ contento niches view niche_01
Web Development (web-development)
Audience: full-stack devs, frontend engineers
Pain Points: framework fatigue, performance, SEO
Subtopics: React patterns, CSS architecture,
API design, testing strategies, ...
$ contento schemas list
Slug Title Pattern
──────────────────────────────────────
idea-list "100 {subtopic} Ideas..."
checklist "The Ultimate {subtopic}..."
how-to "How to {subtopic}: A..."
comparison "{A} vs {B}: Which Is..."
faq "{subtopic} FAQ: {n}..."
... 5 more
$ contento collections create \
--project proj_8f3a \
--schema idea-list \
--niches niche_01,niche_02,niche_03 \
--url-pattern "/{slug}" \
--title-template "{subtopic} Ideas for Developers"
✓ Collection coll_a1b2c3 created
48 pages queued (3 niches × 16 subtopics avg)
A collection combines a content schema with one or more niches. The schema defines the page structure (idea list, checklist, FAQ, etc.) and the niches provide the subtopics. Contento cross-products them: 3 niches × 16 subtopics = 48 pages.
Titles are deterministic — built from patterns like "100 {subtopic} Ideas for {niche}", never AI-generated. This ensures predictable, SERP-optimized titles at scale.
Contento sends each page to an AI model with three inputs: the content schema (exact JSON structure to fill), the niche context (audience, pain points, expertise level), and the subtopic. The AI fills the schema — it doesn't write blank pages.
Each result is validated against the schema: item counts, string lengths, enum values, required fields. Progress streams live to your terminal as the workers complete pages, or use --json for newline-delimited JSON events that an agent can consume.
--json for agent integrations$ contento collections generate coll_a1b2c3
Generating 48 pages across 3 niches...
[██▁▁▁▁▁▁▁▁▁▁▁▁▁▁] 6/48 (12%)
[███████▁▁▁▁▁▁▁▁▁] 22/48 (46%)
[████████████▁▁▁▁] 36/48 (75%)
[████████████████] 48/48 (100%)
✓ Generation complete
Validated: 48 passed
Failed: 0
$ contento build proj_8f3a --output ./dist/articles
Building 48 published pages...
✓ HTML rendered with your chrome
✓ Internal linking: 68 cross-links
✓ Schema markup: Article + BreadcrumbList
✓ Sitemap generated: 48 URLs
✓ 48 pages built to ./dist/articles/
Deploy with your existing workflow (git push, CI, rsync)
$ contento analytics top-pages --days 30
/react-patterns-ideas 2,340 clicks 4.2%
/api-design-checklist 1,892 clicks 3.8%
/css-architecture-faq 1,104 clicks 5.1%
Build all published pages to static HTML in your output directory. Deploy them with your existing workflow — git push, CI pipeline, or rsync. Every build triggers an internal linking pass and generates a sitemap.
Each page gets your custom chrome (header/footer/CSS), canonical URLs, JSON-LD structured data (Article + BreadcrumbList + FAQPage), and Open Graph tags. Start with a small batch (25–50 pages), monitor indexing, then expand. Connect Google Search Console for analytics — track clicks, impressions, CTR, and position per page.
Claude Code, Codex, OpenClaw, and Co-Work can automate the entire pSEO workflow through the CLI.
# An AI agent can run the full workflow non-interactively:
# 1. List available niches (JSON output for parsing)
$ contento niches list --category "Software / SaaS" --json
# 2. Create a collection
$ contento collections create \
--project proj_8f3a \
--schema idea-list \
--niches niche_01,niche_02,niche_03 \
--json
# 3. Generate pages (streams NDJSON progress)
$ contento collections generate coll_a1b2c3 --json
{"completed":12,"total":48,"status":"generating"}
{"completed":48,"total":48,"status":"done","passed":46}
# 4. Build to static HTML
$ contento build proj_8f3a --output ./dist/articles --json
{"built":48,"crossLinks":142,"sitemap":"./dist/articles/sitemap.xml"}
# 5. Check analytics
$ contento analytics top-pages proj_8f3a --days 30 --json
Each type has a strict JSON schema, deterministic title pattern, and purpose-built UI rendering.
"100 {subtopic} Ideas for {niche} in 2026"
Numbered list with descriptions. Highest traffic potential for long-tail keywords.
"The Ultimate {subtopic} Checklist for {niche}"
Interactive checkboxes with progress indicator. Users bookmark and return.
"How to {subtopic}: A Step-by-Step Guide"
Step progress bar, time estimates, and prerequisite lists.
"{A} vs {B}: Which Is Better for {niche}?"
Structured feature tables with verdict summaries and scoring.
"Best {subtopic} Alternatives for {niche}"
Ranked list with pros/cons, pricing, and feature highlights.
"Top {subtopic} Resources for {niche}"
Category filters with link tracking. Curated list format.
"{subtopic} FAQ: {n} Questions Answered"
Accordion layout with FAQPage schema markup for rich snippets.
"{niche} Glossary: {n} Terms Defined"
Alphabetical navigation with anchor links and cross-references.
"Free {subtopic} Templates for {niche}"
Download and copy actions. High engagement and link potential.
"{subtopic} Calculator / Generator"
Embedded interactive tools. Highest engagement and backlink potential.
Upload your header HTML, footer HTML, and CSS. Every generated page wraps in your chrome — visitors see your navigation, your colors, your CTAs. Pages look native to your domain, not like a third-party tool.
before — generic page
after — your chrome applied
Every page ships with production-grade SEO. No plugins, no manual setup.
<link rel="canonical">
Unique canonical on every page. No duplicate content issues.
<script type="application/ld+json">
Article, FAQPage, and BreadcrumbList structured data on every page.
<meta property="og:...">
Social preview metadata for sharing.
/sitemap.xml
Generated on every build.
/robots.txt
Generated per project. Crawl-friendly defaults out of the box.
<a href="...">
Automatic related-page links within the same niche. Link equity distribution.
schema-validation
Every page is validated against its content schema: structure, types, required fields, item counts, string lengths, and enum constraints. Pages that fail validation are rejected, not published.
Google's March 2024 scaled content abuse policy and Helpful Content guidance target a specific failure mode: many pages, low value per page, written primarily for search engines. Contento is built around the structural side of that — schema discipline, on-domain paths, real per-niche context, batched publishing, and zero-traffic pruning. The other half — original synthesis, expertise, accuracy — is yours. The CLI gives you tools to enforce it; it does not absolve you from doing it.
Read the full mapping in Google Policies.
Every generated page is validated against its content schema before it can be published:
CLI-First
npm package
AI Agents
--json mode
On-Domain
Direct paths
Static Output
Your deploy pipeline
150+ Niches
Rich context
10 Schemas
Content types
GSC Analytics
Feedback loop
Schema Validation
Strict JSON checks
Install the CLI, pick a niche, generate quality content, review it, and deploy to your site. On-domain paths, no subdomain tricks.