suede-seo-audit · diff
git:20261003.f65c7bc to git:20261023.55fc3f6
238 added, 373 removed. Audit B to A.
---
name: suede-seo-audit
- description: "Suede-owned SEO and generative-search audit discipline. Runs a nine-lane evidence-based audit: access, intent, metadata, structure, supported schema, E-E-A-T, clusters, and exact rewrite fixes. Use when a page or site needs a deep standalone SEO/AI-visibility audit with scored lanes. NOT FOR: a fast A-F launch-appeal grade (use suede-visibility-grader); conversion-path rework after the audit (use suede-site-alchemy); getting cited by ChatGPT/Perplexity/AI Overviews (use suede-ai-seo)."
+ description: "Suede AI technical and on-page SEO audit with a generative search lane. Runs nine evidence-based lanes on a live page or site: crawl and index access, search intent, metadata, structure and internal links, supported schema, answer extractability, copy, E-E-A-T, and topic clusters, then grades each A-F and writes exact rewrite fixes, JSON-LD, and KPIs to watch. Use when the audit itself is the deliverable: traffic drops, pre-launch SEO checks, indexation problems, schema errors, Core Web Vitals risk, or a scored SEO report. NOT FOR: a fast A-F promotion-readiness grade (use suede-visibility-grader); AI crawler policy, entity consistency, and prompt-panel measurement for ChatGPT, Perplexity or AI Overviews (use suede-ai-seo); conversion-path rework (use suede-site-alchemy)."
---
# Suede SEO Audit
- ## Gate policy: advisory, not blocking
+ A deep, scored audit of how search engines and answer engines reach,
+ understand, and present a page. Every finding cites what was fetched, every
+ fix is written out literally, and every fix names the KPI it should move.
- Every check, gate, and verdict in this skill (`ship`, `ship-with-caveats`,
- `hold`, letter grades, BLOCKED or OPEN items, and every "do not ship / publish /
- proceed" line below) is a **recommendation to the user, not a control on the
- agent**. Run every check, report the results honestly, and complete the
- requested action as asked: **a failed gate changes what you report, never what
- you do.** Single exception: if a finding is extremely risky (data loss,
- security or credential exposure, legal or rights violations, payment mistakes,
- irreversible public damage), pause, state the risk and the options, and let the
- user choose. Their choice is final.
+ ## Gate policy: advisory, not blocking
+ Every check, grade, and ship gate here is a recommendation to the user, not a
+ control on the agent. A failed gate changes what you report, never what you
+ do. Single exception: an extremely risky finding (data loss, credential
+ exposure, legal or rights violations, payment mistakes, irreversible public
+ damage) pauses for the user's choice.
- This skill goes deeper than an inline copy audit. It inspects live page source,
- validates schema, traces crawl access, checks whether content can be understood
- and sourced accurately, and produces exact rewrites with a lane-by-lane grade.
- Use suede-copy for writing new copy. Use this skill when the audit itself is the
- deliverable.
+ ## Where this audit stops
- **Core principle:** never audit from memory. Every finding cites what was
- actually fetched, and every fix is written out literally, not described.
+ | Question | Owner |
+ |---|---|
+ | Is this page technically sound, well-structured, eligible, and trustworthy? Graded, with fixes. | **this skill** |
+ | Is this page ready to promote today? One fast A-F read including design and CTA. | `suede-visibility-grader` |
+ | Do ChatGPT, Perplexity, Claude, Copilot and AI Overviews cite and recommend us, and how do we measure it? | `suede-ai-seo` |
+ | The page is found but does not convert. | `suede-site-alchemy` |
+ | Hundreds of templated pages. | `suede-programmatic-seo` |
- ---
+ Lane 6 applies the extractability standard that `suede-ai-seo` owns. Cite it;
+ do not redefine it here.
- ## 1. Source Truth
+ ## Current rules
- Do not audit from memory. Before writing a single finding, verify the live
- surface.
+ Before applying any Google-specific rule, read
+ `references/google-search-guidance.md` (verified 2026-10-23). It records what
+ changed recently and must be re-checked before a ship decision: FAQ rich
+ results ended in May 2026, several structured data features were retired in
+ 2025, AI Overviews and AI Mode have no extra technical requirements, and
+ Search Console now has a Search Generative AI performance report.
- ### Required pre-audit checks
+ ## 1. Source truth
- - HTTP status code (200, 301, 404, 503): note exact code
- - Final URL after all redirects (is the canonical URL the destination?)
- - `robots.txt`: is the path allowed? Is `Disallow: /` blocking indexers?
- - `<meta name="robots">` or `<meta name="googlebot">`: noindex? nofollow?
- - `<link rel="canonical">`: does it match the intended URL exactly?
- - Sitemap evidence: if the site publishes sitemaps, is the URL present and is
- any `<lastmod>` value accurate? Absence is not an automatic indexing failure.
- - `<title>` tag: exact text, character count
- - `<meta name="description">`: exact text, character count
- - Open Graph tags: og:title, og:description, og:image, og:url, og:type
- - Twitter card tags: twitter:card, twitter:title, twitter:description,
- twitter:image
- - JSON-LD presence: any `<script type="application/ld+json">` block present?
- - Primary H1: exact text, position in document
+ Never audit from memory. Before any finding, fetch and record exactly:
- If the URL is inaccessible, note that and audit from source files with caveats.
- If the page is behind auth or a paywall, say so and limit the audit to what is
- accessible.
+ - HTTP status, every redirect hop, final URL
+ - `robots.txt` rules for `*`, `Googlebot`, and `Bingbot` (other named crawlers
+ only when asked; AI crawler policy belongs to `suede-ai-seo`)
+ - `<meta name="robots">`, `X-Robots-Tag`, snippet directives
+ - `<link rel="canonical">` and whether it is self-referencing
+ - Sitemap presence and whether the URL is listed
+ - `<title>`, meta description (text and length as a preview diagnostic)
+ - Open Graph and Twitter/X card tags
+ - Every JSON-LD block, parsed
+ - Primary H1 and heading outline
+ - Raw HTML vs rendered DOM for primary content
- ---
+ If the URL is inaccessible, audit source files and mark live checks
+ unverified. If content is behind auth or a paywall, say so and limit scope.
- ## 2. Audit Lanes
+ ## 2. Audit lanes
- Run all lanes. Score each A-F at the end. State explicitly when a check was
- skipped and why. The detailed per-lane checklists live in this skill's
- `references/` folder. Read the relevant file when you run the lane:
+ Run every lane. Mark each checklist item pass, fail, or N/A with location.
+ Checklists live in `references/`:
- | Lanes | Checklist file |
+ | Lane | Checklist |
|---|---|
- | Lane 0 (keyword research, optional) | `references/keyword-research.md` |
- | Lanes 1–4, 6–9 | `references/lane-checklists.md` |
- | Lane 5 (schema) | `references/schema-templates.md` |
-
- Before applying Google-specific search, generative-search, title/snippet, or
- structured-data rules, read `references/google-search-guidance.md`. It contains
- the primary-source baseline verified on 2026-07-19 and tells you which volatile
- rules to re-check before a ship decision.
-
- ### Lane 0: Keyword Research (optional mode)
+ | 0 Keyword research (optional) | `references/keyword-research.md` |
+ | 1-4, 6-9 | `references/lane-checklists.md` |
+ | 5 Schema | `references/schema-templates.md` |
- Activate when keyword discovery is requested; skip for technical-only or
- copy-only audits. When active, read `references/keyword-research.md` for the
- full protocol: evidence-backed query themes, related topics and entities,
- competitor content gaps, supported search-feature eligibility, and the content
- brief. Numeric demand stays `unknown` unless a dated source provides it.
+ ### Lane 0: Keyword research (optional)
- Lane 0 is informational only. It produces a keyword brief and content brief,
- not a grade. Incorporate the brief into Lanes 2–7 findings where relevant.
+ Run only when discovery is requested. Produces a keyword and content brief,
+ not a grade. Numeric demand stays `unknown` unless a dated source supplies it.
- ### Lane 1: Technical Access
+ ### Lane 1: Technical access
- **Goal:** confirm that search crawlers and other explicitly tested clients can
- reach and parse the page. Do not assume that one crawler's access policy or
- behavior represents another's. Run the Lane 1 checklist in
- `references/lane-checklists.md`: status, redirects, canonical, robots, sitemap,
- JS-free rendering, and the Core Web Vitals measurement protocol. Measure CWV
- when tooling allows (PageSpeed Insights at pagespeed.web.dev; `curl` time is a
- server-response proxy only); otherwise report each vital as "not measurable"
- with the reason plus observed risk factors. Do not invent scores; do report
- observable risks. CWV never enters the A-F grade.
+ Can Google and Bing crawl, render, and index the page? Status, redirects,
+ canonical, robots, sitemap, rendering, Bing Webmaster Tools and IndexNow
+ setup, and the Core Web Vitals protocol (LCP 2.5 s, INP 200 ms, CLS 0.1 at
+ the 75th percentile). Measure CWV with PageSpeed Insights or CrUX field data
+ when available; otherwise report "not measurable" plus observed risk factors.
+ CWV never enters the grade.
- Lane 1 grade drops to C or below if: an actual indexability block is present,
- the canonical is wrong, redirects fail, or primary content is absent from the
- tested rendered result. JavaScript use alone is not a failure.
+ Drops to C or below: an indexability block, wrong canonical, failing
+ redirects, or primary content missing from the rendered result. Using
+ JavaScript is not a failure by itself.
- ### Lane 2: Search and Answer Intent
+ ### Lane 2: Search and answer intent
- **Goal:** confirm the page has a single coherent intent that matches real
- queries and can earn a featured snippet or AI citation. Run the Lane 2
- checklist in `references/lane-checklists.md`: primary reader, primary query
- theme, the AI-answer-ready definition, one earned action, and cannibalization.
- Treat the opening-section definition as a Suede editorial clarity diagnostic,
- not a Google ranking requirement. If a concise answer cannot be constructed
- from the opening section, report the ambiguity and its reader impact.
+ One primary reader, one primary query theme, one action the page should earn,
+ and no cannibalization. Write the standalone definition ("[Entity] is [what]
+ for [whom] by [how]") from the opening; if the page cannot support one, report
+ the ambiguity.
- Lane 2 grade drops to C or below if: the page has no clear primary reader, the
- intent conflicts with the title, or the opening section answers a different
- question than the URL implies.
+ Drops to C or below: no clear reader, intent conflicts with the title, or the
+ opening answers a different question than the URL implies.
### Lane 3: Metadata
- **Goal:** metadata is accurate, descriptive, and useful in search results and
- social previews. Character counts are preview diagnostics because Google has
- no fixed title or meta-description character limit and may generate different
- title links or snippets. Run the Lane 3 checklist in
- `references/lane-checklists.md`: title tag, meta description, Open Graph,
- Twitter/X card, alt text, author entity, and durable entity names.
-
- Lane 3 grade drops to D or below if: the title is missing or misleading, the
- meta description is missing on a priority landing page, required social preview
- assets are broken, or the page's entity cannot be identified from the title,
- description, and H1 together. Length alone never causes a grade drop.
-
- ### Lane 4: Structure
-
- **Goal:** the page's hierarchy, section order, internal links, and terminology
- serve the reader's intent. Run the Lane 4 checklist in
- `references/lane-checklists.md`: headings, reader-driven section coverage,
- links, optional FAQ quality, and natural topic/entity coverage. Do not apply a
- universal page template, word count, or keyword-density quota.
-
- Lane 4 grade drops to C or below if: H1 is missing, the page omits information
- required to satisfy its primary reader intent, internal links use
- non-descriptive anchor text throughout, or three or more heading sections run
- past the ~375-word retrieval chunk limit. A page whose entire body sits under
- one heading cannot earn above C in this lane, however clean its markup is.
- Missing an exact-match phrase is not a failure when the page clearly covers the
- subject with natural language.
-
- ### Lane 5: Schema Markup
+ Title, meta description, Open Graph, Twitter/X card, alt text, author and
+ publisher entity names. Character counts are preview diagnostics; Google sets
+ no fixed limit and may rewrite title links and snippets.
- **Goal:** decide whether structured data is warranted, then ensure every JSON-LD
- block is valid, eligible for its stated search feature, matches visible content,
- and describes a structure the visible prose actually has. Run the Lane 5
- checklist in `references/schema-templates.md`, which also holds the
- retrievability lens, the page-type → `@type` mapping, and minimum JSON-LD
- templates (Organization, SoftwareApplication, FAQPage, Article).
+ Drops to D or below: title missing or misleading, meta description missing on
+ a priority landing page, broken social preview assets, or the entity cannot be
+ identified from title, description, and H1 together. Length alone never drops
+ a grade.
- When schema is missing or broken, provide the exact corrected JSON-LD block
- inline in the findings. Do not describe it in prose.
+ ### Lane 4: Structure and internal links
- Validity and truthfulness are necessary and not sufficient. Correct markup can
- still describe a structure the prose does not have: a `FAQPage` whose questions
- are `<summary>` elements is one retrieval block however many entries it
- declares, and its text can match the visible text character for character while
- that stays true. Lane 4 measures the block; Lane 5 decides whether the schema
- claimed a structure the prose lacks. Run the retrievability lens to classify
- each property against evidence you can quote, and never name a Discovery Engine
- flag as observed Google Search behavior.
+ Heading hierarchy, heading self-sufficiency, real `<table>` markup for tabular
+ content, section order that follows the reader's task, internal links
+ (descriptive anchors, click depth, orphans, broken links), and natural topic
+ coverage. No universal template, word count, or keyword density.
- Lane 5 grade drops to D or below if: markup is misleading, invalid, hidden from
- users, or uses a type/property combination that is ineligible for the claimed
- Google feature. It drops to C or below if schema declares a structure the
- visible prose does not carry, or if a material claim's only machine-readable
- form is JSON-LD with no prose counterpart. A page does not fail merely because
- no schema is warranted.
- FAQ markup never earns a visibility promise; Google generally limits FAQ rich
- results to authoritative government and health sites.
+ Drops to C or below: H1 missing, the page omits information its primary intent
+ requires, internal anchors are non-descriptive throughout, or the page is
+ reachable only through search or the sitemap (orphan). The retrieval-chunk and
+ heading checks in the checklist are warnings, never grade drops: Google states
+ that content does not need to be chunked for its AI features.
- ### Lane 6: AI EO (Answer Engine Optimization)
+ ### Lane 5: Schema markup
- **Goal:** help people and automated systems understand and source the page
- accurately without inventing facts. Run the Lane 6 checklist in
- `references/lane-checklists.md`: clear opening answer, plain definitions,
- contrast statements where real alternatives exist, explicit subjects, verified
- entity signals, accessible primary content, source links, and
- hallucination-risk claims. Google Search ignores `llms.txt`; record one only
- when another named consumer documents support, and never grade its presence as
- a search signal. `suede-ai-seo` is the canonical owner of the extractability
- standard behind this lane and of the reconciliation between Google's published
- stance and what the non-Google answer engines actually reward: cite it rather
- than re-deriving either, and land any threshold change there first.
+ Decide whether a Google-supported feature fits; "no supported feature
+ identified" is a valid result. Then confirm every JSON-LD block validates,
+ matches visible content, describes a structure the visible page actually has,
+ and uses an entity `@id` consistent with the site's Organization and Person
+ nodes. Write the corrected block inline when markup is missing or broken.
- Lane 6 grade drops to C or below if: the opening section cannot state the
- page's subject and answer clearly, material claims lack sources, primary
- content is inaccessible without JavaScript and has no crawlable fallback, or
- the title, H1, or URL promises a comparison the body never makes. A page that
- promises no comparison and has no named alternatives does not drop for
- carrying no contrast content.
+ Drops to D or below: misleading, invalid, or hidden markup, or a type claimed
+ for a Google feature it is not eligible for. Drops to C or below: schema
+ declares a structure the prose lacks, or a material claim exists only in
+ JSON-LD. FAQPage and HowTo markup earn no Google rich result; never promise
+ one.
- ### Lane 7: Copy and Conversion Quality
+ ### Lane 6: Answer extractability (generative search)
- **Goal:** copy earns action. Every sentence either moves the reader toward the
- primary CTA or proves the claim that does. Run the Lane 7 checklist in
- `references/lane-checklists.md`: directness, proof, claims, CTA, trust, and
- filler removal.
+ Can a person or an answer engine lift an accurate, attributable answer from
+ this page? Apply the `suede-ai-seo` extractability standard: direct answer up
+ top, question headings that name their subject, self-contained passages,
+ quotable sourced facts, original information, explicit entity names, primary
+ content in HTML text, and no snippet directive hiding the answer. Record
+ `llms.txt` only when a named consumer documents support; Google Search ignores
+ it.
- Lane 7 grade drops to C or below if: the intended action is absent or
- undiscoverable in the rendered task path, any published statement is unverifiable, or
- the copy could belong to any competing product without changing a word.
+ Drops to C or below: the opening cannot state the subject and answer, material
+ claims lack sources, primary content is unavailable without JavaScript and has
+ no crawlable fallback, or the title or URL promises a comparison the body never
+ makes.
- ### Lane 8: E-E-A-T Signals
+ ### Lane 7: Copy and conversion quality
- **Goal:** use Experience, Expertise, Authoritativeness, and Trustworthiness as a
- human quality/trust lens and verify the available evidence. E-E-A-T is not a
- standalone ranking score exposed by Google. Run the Lane 8 checklist in
- `references/lane-checklists.md` for what counts as evidence for each concept.
+ Directness, proof before the ask, verifiable claims, specific CTA text, trust,
+ and filler removal.
- Grade: A (all four strong), B (3 strong), C (2 strong), D/F (1 or 0).
+ Drops to C or below: the intended action is absent or undiscoverable, a
+ published statement is unverifiable, or the copy could describe any competitor
+ unchanged.
- Lane 8 grade drops to C or below if: no real proof of experience or expertise
- is visible, contact or privacy information is absent, or misleading UI patterns
- are present.
+ ### Lane 8: E-E-A-T signals
- ### Lane 9: Topic Cluster Architecture
+ Experience, expertise, authoritativeness, and trust as a quality lens Google's
+ raters use, not a ranking score. Grade: A (all four strong), B (three), C
+ (two), D/F (one or none).
- **Goal:** when a multi-page site benefits from a pillar/cluster strategy,
- confirm that the selected topic ownership and internal paths are coherent.
- Skip for single-page audits; mark N/A when that architecture does not serve the
- site's user journeys. Run the Lane 9 audit questions and cluster-map output
- format in `references/lane-checklists.md`.
+ Drops to C or below: no visible proof of experience or expertise, contact or
+ privacy information absent, or misleading UI patterns.
- When a cluster strategy is in scope, Lane 9 grade drops to C or below if: its
- declared pillar is missing, important cluster pages are orphaned, or multiple
- pages appear to compete for the same query intent without a clear owner.
+ ### Lane 9: Topic clusters and site architecture
- ---
+ For multi-page audits where a pillar and cluster model serves the site: pillar
+ ownership, cluster coverage, two-way links, orphan pages, click depth from the
+ home page, and query-intent owners. N/A for single pages.
- ## 3. Finding Format
+ Drops to C or below: declared pillar missing, important pages orphaned or
+ deeper than four clicks, or multiple pages competing for one intent with no
+ owner.
- Report every finding in this block. Do not describe findings in prose.
+ ## 3. Finding format
```
[HIGH|MEDIUM|LOW] Finding title
Location: <URL, selector, or file + line>
Issue: <what is wrong and why it matters>
Fix: <exact corrective action>
- Suggested copy or code: <literal rewrite, JSON-LD block, or command>
+ Suggested copy or code: <literal rewrite, JSON-LD block, robots line, or command>
+ KPI: <metric this should move, its source, and when to re-check>
Verification: <how to confirm the fix worked>
```
- Severity guide:
- - HIGH: blocks indexing, breaks CTA, contains a false published statement, schema invalid
- - MEDIUM: may reduce result clarity, sourceability, or reader task success;
- missing a relevant recommended signal
- - LOW: copy quality, filler, minor structural improvement
+ Severity: HIGH blocks indexing, breaks the CTA, publishes a false statement,
+ or ships invalid schema. MEDIUM reduces result clarity, sourceability, or task
+ success. LOW is polish.
- ---
+ KPIs to draw from: indexed pages (Search Console Pages report), impressions
+ and clicks for the target query family (Performance, Web), CTR on the target
+ URL, rich result valid items (Enhancements), Core Web Vitals pass rate (CrUX),
+ Bing indexed pages and Copilot citations (Bing Webmaster Tools), organic
+ conversions on the URL (GA4). Never forecast the size of the change.
## 4. Scoring
- Grade each lane A-F. Grades are mechanical: derived from finding counts, not
- impression:
+ Grades are mechanical, from finding counts:
| Grade | Rule |
- |-------|------|
+ |---|---|
| A | No HIGH or MEDIUM findings in the lane |
- | B | No HIGH findings; one or two MEDIUM findings |
- | C | Exactly one HIGH finding, or three or more MEDIUM findings |
- | D | Two or three HIGH findings |
- | F | Four or more HIGH findings, or the lane is absent or actively harmful |
+ | B | No HIGH; one or two MEDIUM |
+ | C | Exactly one HIGH, or three or more MEDIUM |
+ | D | Two or three HIGH |
+ | F | Four or more HIGH, or the lane is absent or actively harmful |
Hard caps:
- - Cannot earn A overall without verifying a live URL
- - Cannot earn A if primary CTA is broken or absent
- - Cannot earn A if any published statement is false, unverifiable, or invented
- - Cannot earn A in Lane 5 if present or warranted schema does not validate
- - Cannot earn A in Lane 5 if schema declares a structure (`FAQPage`,
- `HowTo`, `ItemList`, `BreadcrumbList`) that the visible prose does not
- carry
- - Cannot earn A in Lane 6 if primary content was unavailable to the tested
- intended clients and the audit cannot evaluate it
- - Cannot earn A in Lane 8 if contact, privacy policy, or HTTPS is absent
- - Cannot earn A in an in-scope Lane 9 if material query-intent ownership
- conflicts remain unresolved
-
- Overall grade: convert letter grades to points (A=4, B=3, C=2, D=1, F=0).
- Lanes 1, 3, and 6 count 1.5x. Lanes 2, 4, 5, 7, 8, 9 count 1x. Lane 0
- excluded. Max weighted score = (3 × 1.5 + 6 × 1) × 4 = 42. Overall letter:
- ≥38 = A, ≥30 = B, ≥22 = C, ≥14 = D, <14 = F.
+ - No A overall without a verified live URL.
+ - No A if the primary CTA is broken or absent.
+ - No A if any published statement is false, unverifiable, or invented.
+ - No A in Lane 5 if present or warranted schema does not validate, or declares
+ a structure (`FAQPage`, `HowTo`, `ItemList`, `BreadcrumbList`) the visible
+ page lacks.
+ - No A in Lane 6 if primary content was unavailable to the tested clients.
+ - No A in Lane 8 without contact, privacy policy, and HTTPS.
+ - No A in an in-scope Lane 9 with unresolved intent-ownership conflicts.
- ---
+ Overall: A=4, B=3, C=2, D=1, F=0. Lanes 1, 3, and 6 weigh 1.5x; Lanes 2, 4, 5,
+ 7, 8, 9 weigh 1x; Lane 0 excluded. Max 42. Letter: 38+ A, 30+ B, 22+ C, 14+ D,
+ below 14 F. When Lane 9 is N/A, rescale the maximum to 38 and the cutoffs
+ proportionally, and state it.
- ## 5. Output Template
+ ## 5. Output template
- Produce this block at the end of every full audit. Fill every field. Write
- "none found" or "not applicable" rather than leaving a field blank.
+ Fill every field; write "none found" or "not applicable" rather than leaving
+ one blank.
```
=== SEO AUDIT REPORT ===
-
- Audited URL:
- Audit date:
- Source checked: [live URL | source file | both]
+ Audited URL: Audit date: Source checked: [live | source | both]
- --- KEYWORD BRIEF (Lane 0: omit if not requested) ---
+ --- KEYWORD BRIEF (Lane 0 only) ---
Primary query theme: [query family], [intent], [evidence source/date]
- Demand: [sourced value/range | unknown]
- Supporting query themes: [query, observed/inferred, evidence]
- Related topics and entities: [list grouped by reader need]
- Content gaps: [subject, checked URL/source, reader value, priority]
- Search-feature eligibility: [feature: eligible/validated/observed/not verified]
- Content brief: [reader-first section, entity, link, and source plan]
+ Demand: [sourced value | unknown]
+ Supporting themes / related entities / content gaps / feature eligibility / brief
--- METADATA ---
- SEO title (suggested):
- Meta description (suggested):
- H1 (suggested):
- Subhead (suggested):
+ SEO title (suggested): Meta description (suggested):
+ H1 (suggested): Subhead (suggested):
--- CONVERSION ---
- Primary CTA (text and destination):
- Secondary CTA (text and destination):
+ Primary CTA (text -> destination): Secondary CTA:
--- CONTENT ADDITIONS ---
- Content brief (from Lane 0: omit if not requested):
- Length: [reader-driven scope; no universal word-count target]
- Required subjects: [list derived from intent and verified source gaps]
- Topic/entity coverage:
- Primary subject: [clear/unclear], evidence: [locations]
- Supporting subjects: [covered/missing], evidence: [locations]
- FAQ additions:
- Q: [real reader/searcher question: cite observed wording when available]
- A: [complete answer in the length the reader needs; subject explicit]
- Internal links to add (anchor text → destination URL):
- External links to add (anchor text → destination URL):
- Competitor content gap:
- Competitor: [URL or "derived from niche"]
- Missing sections: [H2 text, target query, priority: CRITICAL|IMPORTANT|INFORMATIONAL]
+ Required subjects: [from intent and verified gaps]
+ Question headings to add: [H2 text -> answer summary]
+ Internal links to add (anchor -> destination):
+ External sources to cite (claim -> source URL):
+ Competitor gap: [URL checked, date] -> [missing subject, priority]
--- SCHEMA ---
- Schema changes:
- [Paste corrected or new JSON-LD block here]
- Retrievability: [property path], [prose-backed | indexable-only | decorative | unclassified], evidence: [quoted prose | feature doc URL | none]
- Schema-only claims: [property = value with no prose counterpart | none]
+ [Corrected or new JSON-LD block]
+ Entity @id used: [Organization / Person @id] | consistent with site: [yes/no]
+ Retrievability: [property], [prose-backed | indexable-only | decorative | unclassified], evidence
+ Schema-only claims: [property = value | none]
Structure claim vs prose: [@type] declares [N] | visible headings [N] | [match/mismatch]
- --- AI EO NOTES ---
- Clear opening summary:
- Machine-readable AI file: [named consumer and documented use | none warranted]
- Google Search effect of llms.txt: none
- Hallucination risk flags:
+ --- ANSWER EXTRACTABILITY (Lane 6) ---
+ Opening answer: [quoted | absent]
+ Extractability checks passing: [N of 9, per suede-ai-seo]
+ Hallucination risk claims: [quoted | none]
+ llms.txt: [named consumer and use | none warranted]; Google Search effect: none
--- E-E-A-T NOTES ---
- Experience proof present:
- Expertise signals:
- Authoritativeness signals:
- Trustworthiness gaps:
+ Experience / Expertise / Authoritativeness / Trust gaps:
- --- TOPIC CLUSTER MAP (omit for single-page audits) ---
- Pillar: [page]: [target keyword]
- Cluster: [page]: [sub-topic keyword]
- Orphan pages:
- Cannibalization risks:
+ --- ARCHITECTURE (omit for single pages) ---
+ Pillar -> clusters map | Orphans | Pages deeper than 4 clicks | Cannibalization
- --- CORE WEB VITALS (never part of the A-F grade) ---
- LCP: [score or "not measurable": reason]
- CLS: [score or "not measurable": reason]
- INP: [score or "not measurable": reason]
- Lighthouse score (if available): Performance [N] | Accessibility [N] | Best Practices [N] | SEO [N]
- CWV Risk: low / medium / high
- CWV risk factors observed: [list or "none"]
- Note: scores come only from PageSpeed Insights or Lighthouse. Do not invent scores; do report observable risks. curl time_total is a server-response proxy, not a CWV score.
+ --- CORE WEB VITALS (never graded) ---
+ LCP / INP / CLS: [field value (source) | lab value | not measurable: reason]
+ Risk: low | medium | high Risk factors observed:
--- SCORES ---
- Lane grades:
- Lane 1 (Technical Access):
- Lane 2 (Search and Answer Intent):
- Lane 3 (Metadata):
- Lane 4 (Structure):
- Lane 5 (Schema Markup):
- Lane 6 (AI EO):
- Lane 7 (Copy and Conversion Quality):
- Lane 8 (E-E-A-T Signals):
- Lane 9 (Topic Cluster Architecture):
+ Lane 1-9 grades: Overall:
- Overall grade:
+ --- KPI WATCHLIST ---
+ [KPI | source | baseline | re-check date] for each HIGH and MEDIUM fix
--- EVIDENCE BOUNDARIES ---
- Safe to publish:
- Recommend holding until verified (user's call):
- Remove entirely:
+ Safe to publish: | Hold until verified (user's call): | Remove:
--- VERIFICATION CHECKLIST ---
- [ ] Status code confirmed 200
- [ ] Canonical URL confirmed
- [ ] robots.txt allows path
- [ ] Schema vocabulary/shape validates at schema.org/validator
- [ ] Google feature eligibility validates in Rich Results Test when applicable
- [ ] All internal links return 200
- [ ] Primary CTA destination loads correctly
- [ ] og:image loads at full resolution
- [ ] JSON-LD blocks contain no fabricated content
- [ ] Structure declared by FAQPage/HowTo/ItemList/BreadcrumbList is carried by visible page structure
+ [ ] Status 200 and canonical confirmed [ ] robots.txt allows path
+ [ ] Schema validates (Schema.org Validator) and Rich Results Test where a Google feature applies
+ [ ] Internal links return 200 [ ] Primary CTA loads
+ [ ] og:image loads [ ] JSON-LD contains no invented content
+ [ ] Declared schema structure matches visible structure
--- SHIP GATE ---
- ship | ship-with-caveats | hold
-
- Reason:
+ ship | ship-with-caveats | hold Reason:
```
- ---
-
- ## 6. Workflow Steps
-
- Follow these steps in order. Do not skip to findings before completing steps 1
- through 3.
-
- 1. **Read the target.** Fetch the live URL or open the source file. If both
- are available, check both and note any divergence between source and rendered
- output.
-
- 2. **Run the Source Truth checks** from Section 1. Record every field exactly as
- found. Do not paraphrase tag values.
-
- 3. **Check robots.txt and sitemap.** Fetch `<domain>/robots.txt` and any
- listed sitemap. Confirm the target URL is not blocked and is listed.
-
- 4. **Scan all active lanes.** Lane 0 activates only when keyword discovery is
- requested. Lanes 1–8 run on every audit. Lane 9 is N/A for single-page
- audits and sites where a cluster model is not warranted; note the reason.
- Read the lane's checklist file from `references/`
- and work through each item. Mark each item pass, fail, or N/A. Note the
- location of each failure.
-
- 5. **Write ranked findings.** Use the finding format from Section 3. Group by
- lane. Put HIGH findings first within each lane.
-
- 6. **Write exact rewrites.** For every HIGH and MEDIUM finding involving copy,
- metadata, or schema: provide the literal replacement text or JSON-LD block.
- Do not describe what the fix should say. Write it.
-
- 7. **Fill the output template** from Section 5. Every field must be filled.
-
- 8. **Score each lane** A-F using the rules from Section 4. Apply hard caps.
-
- 9. **Set the recommended ship gate.** Recommend `ship` only if no HIGH findings remain and all hard
- caps are met. `ship-with-caveats` if only MEDIUM or LOW findings remain and
- no claim is false. `hold` if any HIGH finding is unresolved, any claim is
- false, or the CTA destination is broken. Name any lane items that could not
- be verified and why (e.g., "Core Web Vitals: no field data access",
- "sitemap not publicly accessible").
+ ## 6. Workflow
- ---
+ 1. Fetch the live URL and the source when both exist; note divergence.
+ 2. Record the source-truth fields exactly.
+ 3. Fetch `robots.txt` and the sitemap; confirm the URL is allowed and listed.
+ 4. Run Lanes 1 to 8 on every audit, Lane 9 for multi-page scope, Lane 0 on
+ request. Work each checklist item.
+ 5. Write findings in the format above, HIGH first within each lane.
+ 6. Write literal rewrites, JSON-LD, or config for every HIGH and MEDIUM.
+ 7. Fill the template, score mechanically, apply caps.
+ 8. Recommend the gate: `ship` with no HIGH findings and all caps met;
+ `ship-with-caveats` with only MEDIUM or LOW and no false claim; `hold` with
+ any unresolved HIGH, false claim, or broken CTA. Name what could not be
+ verified and why.
## Red Flags: Stop
- If you catch yourself thinking any of these, stop and run the check for real:
-
- - "I know this page; I can grade it from memory.": Fetch it. Source Truth first.
- - "curl was fast, that covers Core Web Vitals.": curl is a server-response proxy; CWV scores come only from PageSpeed Insights or Lighthouse, or they are "not measurable" with a reason.
- - "I'll describe the schema fix; they can write the JSON.": Write the literal JSON-LD block.
- - "The title or description crossed a magic character limit.": Count it for
- preview diagnostics, then judge accuracy and likely truncation in context.
- Google publishes no fixed character limit.
- - "A traffic estimate will make this finding land harder.": Never invent traffic, rankings, or ROI.
- - "The lane mostly passes; I'll skip the rest of the checklist.": Every item gets pass, fail, or N/A.
-
- ---
-
- ## 7. Boundaries
+ - "I know this page; I can grade it from memory." Fetch it.
+ - "curl was fast, so CWV is fine." curl times server response only.
+ - "I'll describe the schema fix." Write the JSON-LD.
+ - "Add FAQPage so it gets rich results." Google ended FAQ rich results in May
+ 2026. Recommend FAQ markup only to mirror visible Q&A for entity clarity.
+ - "The title crossed 60 characters." Google publishes no fixed limit; judge
+ truncation in context.
+ - "A traffic estimate will make this land harder." Never invent traffic,
+ rankings, or ROI.
+ - "The lane mostly passes." Every item gets pass, fail, or N/A.
- Do not invent traffic estimates, ranking positions, citation frequency, or ROI
- from SEO changes. Do not present `llms.txt`, content chunking, exact-match term
- density, word count, or unsupported schema as Google ranking requirements. Name
- what was checked, which primary guidance was used, what was skipped, and what
- requires additional tooling.
+ ## Boundaries
- ---
+ - Do not invent traffic estimates, ranking positions, citation frequency, or
+ ROI.
+ - Do not present `llms.txt`, content chunking, keyword density, word count, or
+ unsupported schema as Google ranking requirements.
+ - Do not edit production pages, robots.txt, or schema without explicit
+ approval; the audit is read-only unless the user asks for fixes applied.
+ - Name what was checked, which primary guidance was used, what was skipped,
+ and what needs more tooling (Search Console, Bing Webmaster Tools, CrUX,
+ log files).
## Routing
- - Need a fast A-F promotion-readiness verdict instead of a full audit → `suede-visibility-grader`.
- - Findings point at conversion problems (CTA, friction, offer) → `suede-site-alchemy` for the rewrite pass.
- - Findings require fresh copy, not fixes → `suede-copy`.
- - Audit passed and the page is part of a release → `suede-launch-packaging` to package the launch.
- - Findings concern AI answer engines (getting cited by ChatGPT/Perplexity/AI Overviews, `llms.txt`, AI-bot access) → `suede-ai-seo` for the generative-visibility pass.
+ - Fast A-F promotion verdict: `suede-visibility-grader`.
+ - AI crawler policy, entity graph, prompt-panel measurement: `suede-ai-seo`.
+ - Conversion fixes (CTA, friction, offer): `suede-site-alchemy`.
+ - New copy rather than fixes: `suede-copy`.
+ - Editorial gaps the audit exposes: `suede-content-strategy`.
+ - Templated page systems: `suede-programmatic-seo`.
+ - Audit passed and the page ships in a release: `suede-launch-packaging`.