> features

Every feature, built for quality.

Niche taxonomy, schema validation, quality gates, editorial review, analytics — everything you need to run programmatic SEO that earns its place on your domain.

niches

Niche Taxonomy Library

150+ niches across 8 categories, each with rich context that drives better AI output. Not just keywords — full audience profiles, pain points, monetization strategies, and subtopic trees.

  • 150+ niches across 8 categories
  • Rich context: audience, pain points, monetization, subtopics
  • Fork and customize any niche
  • Subtopic expansion for long-tail coverage
niche.json
{
  "name": "Remote Work",
  "category": "Professional Services",
  "audience": "Remote workers, freelancers, distributed teams",
  "painPoints": [
    "isolation", "time zones",
    "productivity tracking", "async communication"
  ],
  "monetization": [
    "SaaS affiliate", "course sales",
    "consulting"
  ],
  "subtopics": [
    "home office setup",
    "async communication tools",
    "remote team management",
    "digital nomad lifestyle",
    // ... 12 more
  ]
}
schema-validation.json
// Schema definition (checklist type)
{
  "type": "checklist",
  "fields": {
    "title": { "pattern": "The Ultimate {subtopic} Checklist" },
    "items": { "min": 15, "max": 30 },
    "item.text": { "minLength": 40, "maxLength": 200 },
    "item.category": { "enum": ["setup", "daily", "weekly"] }
  }
}

// Validated output
{
  "title": "The Ultimate Home Office Checklist",
  "items": [
    { "text": "Invest in an ergonomic chair...",
      "category": "setup",
      "checked": false },
    // ... 19 more items (validated)
  ],
  "_validation": "passed"
}
schemas

Content Schema Engine

AI fills structured JSON schemas, not blank pages. Every field has constraints — item counts, string lengths, enum values. Content that fails validation is rejected and retried.

  • 10 built-in content types with strict JSON schemas
  • AI fills schemas, not blank pages
  • Field-level validation: exact item counts, string lengths, enum values
  • Deterministic titles (never AI-generated)
generation

Generation Pipeline

Concurrent AI workers generate pages in parallel. Each worker receives the niche context and content schema, builds a prompt, and validates the output before storage.

  • Concurrent AI workers
  • Prompt builder: schema + niche context injection
  • Deterministic titles (never AI-generated)
  • Real-time progress streaming in the terminal
terminal
$ contento collections create \
    --project proj_8f3a... \
    --schema "idea-list" \
    --niches "niche_01...,niche_02...,niche_03..."

$ contento collections generate col_9d2f...

[00:02] 48 pages queued across 3 niches
[00:04] ██▁▁▁▁▁▁▁▁▁▁▁▁▁▁  6/48  (12%)
[00:12] ███████▁▁▁▁▁▁▁▁▁ 22/48  (46%)
[00:20] ████████████▁▁▁▁ 36/48  (75%)
[00:26] ████████████████ 48/48 (100%)

Validation: 46 passed, 2 retried, 0 failed
Avg generation time: 3.2s per page
terminal
$ contento build proj_8f3a... \
    --output ./dist/resources

Building 48 pages to ./dist/resources/...
  ✓ Internal linking pass: 142 cross-links added
  ✓ Sitemap fragment: 48 URLs
  ✓ Schema markup injected (Article + BreadcrumbList)
  ✓ Canonical URLs set
  ✓ OG meta tags generated

Output: ./dist/resources/remote-work-ideas/index.html
        ./dist/resources/home-office-checklist/index.html
        ... 46 more files

# Drop into your existing deploy pipeline (Vercel, Netlify, S3, etc.)
build

Static Build Pipeline

Builds static HTML files locally and drops them into your existing deploy pipeline. Every build triggers an internal linking pass and sitemap fragment generation. You deploy on your terms — Vercel, Netlify, S3, or plain rsync.

  • Static HTML output to any directory
  • On-domain paths: /resources/topic/, not subdomains
  • Internal linking pass (cross-links related pages)
  • Sitemap fragment generation (merge into your existing sitemap)
  • Schema markup and OG tags on every page
chrome

Custom Chrome System

Your generated pages look native to your domain. Upload header HTML, footer HTML, and CSS — every page wraps in your chrome. Add a back-link component for link equity flow back to your main site.

  • Upload header/footer/CSS from your existing site
  • Back-link component on every page (equity flow)
  • Custom CTA injection per content type
  • Pages look native to your domain
chrome-config.json
{
  "headerHtml": "<nav class='site-nav'>...</nav>",
  "footerHtml": "<footer class='site-footer'>...</footer>",
  "cssUrl": "https://yourdomain.com/styles.css",
  "backLink": {
    "enabled": true,
    "text": "More on yourdomain.com",
    "url": "https://yourdomain.com",
    "position": "above-footer"
  },
  "cta": {
    "html": "<div class='cta-box'>...</div>",
    "position": "after-content"
  }
}

// Rendered page structure:
// [Your Header]
// [Generated Content]
// [Your CTA]
// [Back-link]
// [Your Footer]
terminal
# Get top performing pages
$ contento analytics top-pages --days 30

── Top Pages ─────────────────────────────
 1. /100-remote-work-ideas     2,340 clicks  4.2% CTR
 2. /home-office-checklist      1,892 clicks  3.8% CTR
 3. /async-tools-comparison     1,104 clicks  5.1% CTR
 4. /freelancing-faq               987 clicks  6.3% CTR
 5. /digital-nomad-guide           856 clicks  2.9% CTR

# Detect zero-traffic pages
$ contento analytics zero-traffic

 ⚠ 3 pages with zero traffic (30d)
 ⚠ 1 page dropped >10 positions

# Export analytics data
$ contento analytics export --format csv
analytics

Analytics (GSC Integration)

Connect Google Search Console via OAuth. Contento syncs daily data — clicks, impressions, CTR, average position — and surfaces actionable insights per niche and per page.

  • Google Search Console OAuth integration
  • Daily data sync: clicks, impressions, CTR, position
  • Top pages leaderboard
  • Niche performance ranking
  • Zero-traffic page detection
  • CSV export
cli

CLI + Agent Interface

Every operation is available through the contento CLI. Add --json to any command for machine-readable output, enabling AI agents to drive the entire pSEO pipeline programmatically.

  • 30 commands across 10 resource types
  • --json flag for machine-readable output
  • NDJSON streaming for generation progress
  • Non-interactive login via API key
  • Works with Claude Code, Codex, OpenClaw, Co-Work
terminal
# Human-friendly output
$ contento projects list

  Name               Status   Pages
  ─────────────────────────────────
  DevTools Resources active   48
  Travel Blog        active   120

# Machine-readable output (for agents)
$ contento projects list --json

[
  {"name":"DevTools Resources","status":"active","pages":48},
  {"name":"Travel Blog","status":"active","pages":120}
]

# NDJSON streaming for generation
$ contento collections generate col_9d2f... --json

{"type":"progress","current":6,"total":48,"done":false}
{"type":"progress","current":22,"total":48,"done":false}
{"type":"progress","current":48,"total":48,"done":true}
agents

Built for AI Agents

The --json flag on every command means AI agents can drive the entire pSEO workflow. No scraping, no browser automation — just structured output.

structured output

JSON Everywhere

Every command supports --json for machine-readable output. Tables become arrays, status messages become objects.

streaming

NDJSON Progress

Generation streams progress as newline-delimited JSON. Agents can monitor completion without polling.

authentication

Non-Interactive Login

Set your AI provider key (OPENAI_API_KEY, ANTHROPIC_API_KEY, etc.) as an environment variable. No login, no interactive prompts in CI or agent environments.

architecture

Safe pSEO Architecture

On-domain paths instead of subdomain farms (site reputation abuse is on Google's spam list as of March 2024). Schema validation per page so output isn't token-swapped templates (scaled content abuse is the next entry on the same list). Batched publishing instead of spam bursts. GSC zero-traffic detection so dead pages get pruned. Architecture is what we own; content quality is what you own — see Google Policies for the full mapping.

  • On-domain paths: lives at yourdomain.com/resources/
  • Static HTML output to your deploy pipeline
  • Schema validation on every generated page
  • Zero-traffic page detection via GSC analytics
  • No CNAME, no subdomains, no third-party hosting
terminal
# Build static HTML into your site's directory
$ contento build proj_8f3a... --output ./public/resources

  worktale.com/resources/remote-work-ideas/
  worktale.com/resources/home-office-checklist/
  worktale.com/resources/async-tools-comparison/
  ... 45 more pages

  Validation:
     Schema validation: 48/48 passed

# Detect underperformers after launch
$ contento analytics zero-traffic

  ⚠ 3 pages with zero traffic (30d)
  ⚠ 1 page dropped >10 positions

Build pages worth keeping.

Install the CLI, pick a niche, choose a schema, and build static HTML that lives on your domain.