SEO
Search engines can only rank a page they can reach, read and index, and Google chooses among pages by what they say and how other pages link to them, not by character counts or a "dofollow" flag. Most SEO advice in tools and skill packs mixes Google's documented rules with the tool's own heuristics; this skill keeps them apart and quotes Google Search Central wherever a rule is Google's. Sources: every-app/open-seo (seo-audit, local-seo, link-prospecting skills and the audit engine, MIT) and openseo.so; coreyhaines31/marketingskills (programmatic-seo, directory-submissions, copy-editing, MIT); freescan.app's check library (no licence, paraphrased). The source skills read .agents/product-marketing.md; here the shared context file is .agents/product-context.md, defined in anti-slop-copy CONTEXT.md. The owner's own head tags, structured data and discovery files are in landing-page-ui DISCOVERY.md: audit them, don't redesign them.
Apply only the routes and checks for the selected job. Read a linked skill's named file from its installed folder when available, or from the linked source. Report an unavailable required reference instead of inventing it. [skill-authoring, DISTRIBUTION.md#composing-skills]
| The job | Read |
|---|---|
| Crawl validity, the audit order (reachability, control, canonical, interpretation, discovery), tool thresholds vs Google, the 30-type issue catalogue with fixes, check logic, triage into a work order, index bloat, choosing the one to three changes worth making, title proposals and click-through, sizing, ranking evidence, OpenSEO as the tool | TECHNICAL-AUDIT.md |
| Localized pages: reciprocal alternates, valid codes, optional fallback, canonical intent and generated sitemap output | INTERNATIONAL-SEO.md |
Programmatic pages: assessment, principles, Google's doorway, scaled-content and thin-affiliation policies, the 12 playbooks, linking, sitemap limits and lastmod, crawl budget and noindex, platform requirements, subpath vs subdomain, checklists |
PAGES-AT-SCALE.md |
| Maps and the local pack: eligibility, private addresses, profile facts, citations, useful location pages, outcome baselines, rank grids, chains, review and business-name rules, the report | LOCAL.md |
rel values and link spam, page-level diagnosis, reclamation, editorial prospects, lawful outreach state, vendor/disavow gates and actual backlink verification |
LINKS-AND-OUTREACH.md |
| Directory assets, tiers kept and dropped, MCP registry, positioning, approval, submission and the tracker | DIRECTORY-SUBMISSIONS.md |
The directory submission tracker with Observed rel and Checked at |
submission-tracker.csv |
| Refreshing a decaying page: when, refresh vs rewrite, the gap grid, six passes, what to keep, dates, redirects, cadence | CONTENT-REFRESH.md |
| Structured data: Google's required and recommended properties per feature, retired features, validators, JavaScript and escaping | STRUCTURED-DATA.md |
| JSON-LD examples per type, corrected | STRUCTURED-DATA-EXAMPLES.md |
| Open Graph, platform link previews, crawlers and caches | LINK-PREVIEWS.md |
| Shared SEO project interview, minimum inline setup, key pages and research log | PROJECT-SETUP.md |
| Shared SEO report writing, evidence, HTML constraints and private delivery | SEO-REPORTS.md |
| Self-contained HTML starter for an SEO report | REPORT-TEMPLATE.html |
Related skills: keyword demand, clustering and SEO competitors in keyword-research SKILL.md; Search Console data, API limits, URL Inspection and opportunity heuristics in search-console SKILL.md; AI answers and citations in ai-search-visibility SKILL.md; a scored whole-site audit and fix briefs in site-audit SKILL.md; URL hierarchy and navigation in site-architecture SKILL.md; polite crawling in web-scraping CRAWLING.md.
The rules
- Check the crawl before the findings. A blocked, rate-limited or JavaScript-shell page reports no title and zero words; record it as a coverage gap, never as thin content, and ask the owner to allowlist the crawler instead of evading the block (TECHNICAL-AUDIT.md).
- A tool's threshold is not Google's rule. Google sets no limit on title or meta description length, no word count, no heading count or order for ranking; state such numbers as the tool's heuristic, and use web.dev's TTFB bands for speed (TECHNICAL-AUDIT.md).
- Recommend selectively. Lead with one to three changes that capture more qualified demand or stop a real loss; never rewrite a page that already ranks near the top; size benefits by mechanism and cluster, label any position-one figure hypothetical, and never invent a conversion rate or revenue [open-seo, seo-audit].
- Every live SERP ranking claim has a dated observation written "#N (page P)" with query, country and listings returned from a licensed data source; keep Search Console average positions separate (TECHNICAL-AUDIT.md). Scraping Google for rank checks is against its spam policies.
- Canonical is a hint;
noindexis removal. Consolidate duplicates withrel=canonicalin one place, keepnoindexfor pages that should not be in Search, and never usenoindexor robots.txt as crawl control on a site below Google's crawl-budget sizes (PAGES-AT-SCALE.md). - Each page at scale earns its place with data no sibling has. Pages that only swap a city or keyword into identical content are the source's "thin content" mistake and match Google's doorway examples; launch the strongest 20 to 50 first and scale only once they index (PAGES-AT-SCALE.md).
- Earn links, don't manufacture them. No bought, swapped, badge-required or automated links unless qualified
sponsoredornofollow; no low-quality directories, bookmarks, forum signatures or optimized-anchor press-release links; DR is a third-party metric, not a Google signal (LINKS-AND-OUTREACH.md). - Outreach stays lawful and personal. Contact details only from public business-role sources with their URL, never invented or scraped into lists; every email meets email-practices COMPLIANCE.md; a human approves every account, form and send.
- Verify a backlink from the anchor itself: the
<a href>, itsreltokens (spaces and commas), page-levelnofollowandX-Robots-Tag, recorded with a timestamp;sponsoredis the correct value on a paid tier (LINKS-AND-OUTREACH.md). - Local: category and claim problems outrank posting, businesses are matched by
cidorplace_id, and no plan gates, buys or filters reviews or stuffs the business name (LOCAL.md). - Refresh for readers, not for a fresh date. Keep the URL and ranking anchors, redirect with 301 or 308 for at least a year when a URL must change, and move the visible date and
dateModifiedonly after a substantial change (CONTENT-REFRESH.md). - Severity is P0 to P3 as in code-review REVIEWER.md; a tool's critical, warning and info map to P1, P2 and P3, and anything keeping a page that should rank out of Search is P0.
Prove it
The crawl's blocked and shell pages are reported as gaps; no length or word-count number is presented as Google's; the audit leads with at most three sized, evidenced recommendations and a reason for every rejected candidate; each ranking has its query, country, date and "#N (page P)" form and none came from scraping Google; duplicates use one canonical method; every page in a scaled set differs from its siblings by more than the variable; no link in the plan is bought, swapped, badge-required or unqualified when paid; every live listing has an Observed rel and Checked at; every outreach contact has a public source URL; refreshed pages keep their URL or a lasting permanent redirect; and every file's own Prove it checks pass for the parts you touched.