Programmatic Template Auditor
Samples pages from one programmatic template, computes a 64-bit SimHash over word-shingles for each page, clusters near…
Updated
About this skill
Programmatic Template Auditor is a Programmatic SEO skill for AI agents, published in the seoskills.sh catalog. Reach for it when your work involves large-scale page generation and ecommerce SEO built for consistent quality. Install it with one command and it runs inside your own agent, so the work happens in your workflow, not a separate SEO tool.
SKILL.md
Programmatic Template Auditor
AGENT ROLE: Autonomous template-quality agent. Sample a template's output, fingerprint each page with SimHash, cluster near-duplicates, separate boilerplate from unique content, and emit the JSON in references/output.schema.json. Judge the template, not one page.
OBJECTIVE
Answer, with numbers: does this template produce pages that are meaningfully unique, or thin and near-duplicate? Return per-page uniqueness ratios and unique-token budgets, the near-duplicate clusters, and a single template verdict (healthy / duplicate_heavy / boilerplate_dominant / thin / doorway).
INPUTS
urls(REQUIRED unless--sitemapvia--urls): JSON array of template URLs to sample.sitemap+url_pattern(ALTERNATIVE via--sitemap/--url-pattern): fetch a sitemap and keep only URLs matching the template pattern.k(OPTIONAL, default 4): shingle size in words.hamming_threshold(OPTIONAL, default 3): max 64-bit Hamming distance to call two pages near-duplicates.min_tokens(OPTIONAL, default 150): below this main-content token count a page isthin.uniqueness_floor(OPTIONAL, default 0.20): below this unique-shingle ratio a non-thin page is adoorway.boilerplate_df(OPTIONAL, default 0.80): a shingle present in this fraction of sampled pages is boilerplate.sample_size(OPTIONAL, default 50) andmax_sample(OPTIONAL, default 300): cost guard; pairwise clustering is O(sample^2).site(OPTIONAL via--site): GSC property to attach clicks per page for triage.
AUTHENTICATION (crawler keyless + GSC)
- Page fetches are keyless HTTP with a descriptive User-Agent; no credentials required.
- IF
--siteis passed THEN REQUIRE envGSC_ACCESS_TOKEN(OAuth bearer,webmasters.readonly). IF unset THEN STOPerror.code="AUTH_MISSING_GSC". IF the token is rejected THEN STOPerror.code="AUTH_GSC_FORBIDDEN".
EXPECTED TOOL CALLS
- Run
scripts/template_auditor.py --urls urls.json [--sitemap https://x.com/sitemap.xml --url-pattern "/product/"] [--k 4] [--hamming-threshold 3] [--site sc-domain:x.com]. - One HTTP GET per sampled page (thread-pooled, capped); at most one GSC query.
PROCEDURE (deterministic)
STEP 1 — RESOLVE the sample: read --urls, or fetch --sitemap and filter by --url-pattern; dedupe; cap at min(sample_size, max_sample).
STEP 2 — FETCH each page; strip script/style/nav/header/footer/form blocks and tags to isolate main text; tokenize to [a-z0-9]+.
STEP 3 — SHINGLE each page into k-word shingles; hash every shingle to 64 bits with blake2b; build a Charikar SimHash by weighted bit-vote (frequency-weighted). Record the fingerprint.
STEP 4 — CLUSTER near-duplicates: compute pairwise Hamming distance and union pages with distance <= hamming_threshold (union-find); clusters of size >= 2 are near-duplicate groups.
STEP 5 — BOILERPLATE: a shingle whose document frequency across the sample >= boilerplate_df is boilerplate; per page content_uniqueness_ratio = unique shingles / total shingles, and unique_token_budget = distinct tokens appearing only in non-boilerplate shingles.
STEP 6 — FLAG: thin (token_count < min_tokens), near_duplicate (in a cluster), doorway (uniqueness < floor, not thin, boilerplate exists).
STEP 7 — VERDICT: aggregate shares -> thin, doorway, duplicate_heavy, boilerplate_dominant, or healthy. EMIT pages sorted least-unique first.
RATE LIMITS & ERROR HANDLING
- Page fetches are thread-pooled with
--workers(default 5, hard cap 8) as the concurrency cap; a non-200 or non-HTML response is recorded inunreachable, not retried indefinitely. - GSC
429/5xx-> backoff2^attempt(max 5) then proceed WITHOUT clicks (non-fatal);401/403STOPAUTH_GSC_FORBIDDEN. - IF the sitemap cannot be fetched THEN STOP
error.code="SITEMAP_UNREACHABLE". - Sampling is capped by
max_sampleto bound O(n^2) clustering cost.
MISSING / INSUFFICIENT DATA
- IF every sampled page is unreachable THEN STOP
error.code="ALL_UNREACHABLE"(never emit uniqueness for pages that were not fetched). - With a sample of 1 the boilerplate set is empty and no near-duplicate cluster can form; the verdict then rests on thinness alone and this is disclosed by
pages_analyzed. - Uniqueness and token budgets are computed only over successfully fetched pages;
pages_sampledvspages_analyzedexpose any shortfall. - Clicks are
nullwithout--site; they inform triage only and never change a flag.
OUTPUT
One JSON object per references/output.schema.json.
FILES
scripts/template_auditor.py— sampling, main-text extraction, SimHash fingerprinting, Hamming clustering, boilerplate/uniqueness math, template verdict.references/output.schema.json— output contract.
Not using the CLI? Copy the SKILL.md and paste it straight into ChatGPT, Claude, or any agent.
Embed a badge
Install into your agent
More in Programmatic SEO
programmatic-seo
When the user wants to create SEO-driven pages at scale using templates and data. Also use when the user mentions "programmatic SEO," "template pages," "pages at scale," "directory pages," "location pages," "[keyword] + [city] pages," "comparison pages," "integration pages," "building many pages for SEO," "pSEO," "generate 100 pages," "data-driven pages," or "templated landing pages." Use this whenever someone wants to create many similar pages targeting different keywords or locations. For auditing existing SEO issues, see seo-audit. For content strategy planning, see content-strategy.
seo-programmatic
Programmatic SEO planning and analysis for pages generated at scale from data sources. Covers template engines, URL patterns, internal linking automation, thin content safeguards, and index bloat prevention. Use when user says "programmatic SEO", "pages at scale", "dynamic pages", "template pages", "generated pages", or "data-driven SEO".
seo-ecommerce
E-commerce SEO analysis: Google Shopping visibility, Amazon marketplace intelligence, product schema validation, competitor pricing analysis, and marketplace keyword gaps. Combines on-page product SEO with marketplace data from DataForSEO Merchant API. Use when user says "ecommerce SEO", "product SEO", "Google Shopping", "marketplace SEO", "product schema", "Amazon SEO", "product listings", "shopping ads", or "merchant SEO".
product-page-seo
Optimize e-commerce product pages for search engine visibility. On-page SEO, structured data, page speed, mobile optimization, and content strategy for Google, Bing, and platform-specific search.
ecommerce-seo-audit
Comprehensive ecommerce SEO audit for product pages, collection pages, technical SEO, log file analysis, and competitor research. Use when the user asks for SEO audit, ecommerce SEO review, collection page optimization, product page SEO, crawl analysis, or wants to improve organic rankings.
Product Feed SEO Optimizer
Audits a Google Merchant product feed for title quality, attribute completeness, and GTIN/identifier validity using the…