Skip to main content

SEO skills and open-source audit tooling for a fleet SEO agent

Date: 2026-10-08 · Access date for all citations: 2026-10-08 Prepared by the fleet research service: planned and verified by the lead researcher (maverick-muse-lead_researcher-001); executed by the research assistant (maverick-muse-research_assistant-001) from primary sources: the live target site, the live docsite skills index, and the candidate repositories themselves. Read-only throughout: nothing was installed or executed, no fleet URL was submitted to any hosted audit service, and no accounts or API keys were created.

Question. The owner wants an SEO agent that audits a website against best practices on a regular basis, and asked for the best SEO skills and solutions on GitHub. The target is settled: x-centric.com (X-Centric IT Solutions, LLC), the owner's company site.

Boundary. This report recommends a stack. It adopts and installs nothing. Any executable named here still needs its own security review before fleet use, routed by the chief of staff; building the SEO agent itself is a separate, later step.

Verification. The lead re-checked the load-bearing figures firsthand on 2026-10-08: repository stars, licenses, and activity via the GitHub API (SiteOne Crawler 937 stars, MIT, Rust, last pushed 2026-09-27; claude-seo 18,531, MIT; marketingskills 53,708 at verification against 53,707 at draft read; web-quality-skills 2,905, MIT; Unlighthouse 4,890, MIT; Lighthouse 30,868, Apache-2.0; Lighthouse CI 7,106, Apache-2.0; LinkChecker 1,076, GPL-2.0; extruct 971, BSD-3-Clause; advertools 1,473, MIT; google/robotstxt 3,474, Apache-2.0; python-seo-analyzer 1,485, license "Other (NOASSERTION)"), and the target's robots.txt read verbatim plus the sitemap's structure confirmed against the live site.

1. Bottom line​

Build the SEO agent as a fleet-authored method skill driving three local tools: SiteOne Crawler (janreges/siteone-crawler, MIT, actively maintained) as the primary crawler. It is a single local binary that respects robots.txt and emits diffable JSON covering technical SEO, metadata, Open Graph, and link structure across all 319 URLs. Unlighthouse (MIT) supplies site-wide Lighthouse SEO-category and Core Web Vitals signals on a sampled set; Lighthouse CI in filesystem mode is the alternative if assertion gates are wanted. extruct (BSD-3-Clause) plus a local vocabulary check covers structured data, which matters here because the live site currently ships no JSON-LD anywhere sampled.

The fleet should author the skill layer rather than adopt an existing suite. The strongest adoptable suite (AgriciDaniel/claude-seo, 18.5k stars, MIT) has a local-first core, but it arrives with 26 sub-skills, a setup step that installs a browser, and opt-in extensions wired to hosted APIs (DataForSEO kin, Google APIs), so adopting it means surgery. Its check taxonomy and its SQLite drift-baseline idea are worth borrowing into a fleet method skill that encodes exactly the standing checks in §6 and diffs SiteOne JSON run-over-run. The rest of the skill family is advisory checklists with no checker (class (d)-leaning), or wrappers around paid hosted APIs: nearly every SEO MCP server found is class (c), DataForSEO above all, and those are excluded under the fleet's constraints. Cadence: a weekly full crawl with a diff-first report (new / fixed / standing), plus a run on site deploys.

2. x-centric.com: surface and platform facts (live public reads, 2026-10-08)​

  • Platform: Framer. Evidence from the live site itself: generator meta "Framer a050651"; response header Server: Framer/26fa766; assets served from framerusercontent.com (the og:image host); Server-Timing reports ssg-status;desc="optimized". The pages are statically generated with JavaScript hydration. A HubSpot footprint appears once in the homepage source (a marketing embed, not the CMS). All fetches 2026-10-08: https://www.x-centric.com/ and sampled inner pages.
  • Host/canonical shape: apex x-centric.com redirects to www (http needs 2 hops, https 1); canonical host is https://www.x-centric.com (self-referencing canonical on every page sampled). Homepage HTML is about 894 KB; sampled inner pages about 800 KB each. Pages that heavy make page weight a fact the CWV leg must quantify rather than assume.
  • robots.txt: present, minimal, permissive: User-agent: * / Allow: / plus a Sitemap: line pointing at the sitemap. No crawl restrictions to audit around.
  • sitemap.xml: present, a single urlset (no index file), 319 URLs, no lastmod values anywhere (grep count 0). Shape by first path segment: resources (blog/content) 183, glossary 71, wisconsin location pages 9, services 9, solutions 8, expertise 8, industries 7, topical hubs (artificial-intelligence 7, cybersecurity 6, cloud 4), company 6, home 1. The site is a content-led marketing site: two-thirds of it is blog + glossary.
  • Metadata posture (sampled: home, /wisconsin/milwaukee-it-services, /services/it-consulting, /resources/blog): every sampled page carries a unique title, a meta description, a canonical, and full Open Graph tags. Structured data: zero JSON-LD blocks on every page sampled (grep application/ld+json = 0 on all four). For a local-services business with 9 location pages, the absence of Organization/LocalBusiness schema is the largest visible gap and the audit's likely first headline; the tooling in §6 verifies it site-wide rather than from a sample.
  • Fit consequence for tooling: content and metadata live in raw HTML (SSG), so raw-HTML crawling is sufficient for the technical/metadata/link checks. JavaScript rendering buys CWV metrics (via Lighthouse's browser), not content access. The crawler field is therefore wide, and speed on 800 KB pages favors a fast native crawler over browser-per-page designs for the primary leg.

3. Skill-family survey (wrapper test applied; classes: (a) local method · (b) wrapper around local tooling · (c) wrapper around a hosted/paid API, flagged · (d) prompt fluff)​

The family is real but lopsided: two credible local-first suites, a long tail of checklists, and an MCP layer that is overwhelmingly class (c).

CandidateSourceMaintainer / stars / activityLicenseWhat it actually encodesClass
claude-seogithub.com/AgriciDaniel/claude-seoAgriciDaniel · 18,531★ · 383 commits, 29 releases, created 2026-02-07MIT26 sub-skills + 19 sub-agents: technical SEO, E-E-A-T, schema detect/validate/generate, GEO/AEO, llms.txt readiness, local/maps, hreflang, sitemap, images, drift monitoring with SQLite baseline/compare, backlinks (Moz/Bing/Common Crawl), Google APIs (Search Console, PageSpeed, CrUX, GA4). Setup optionally installs Playwright Chromium for SPA rendering(a) core + (b) Playwright/Lighthouse/Unlighthouse + (c) only via opt-in extensions/Google APIs
marketingskills (seo-audit et al.)github.com/coreyhaines31/marketingskillsCorey Haines · 53,707★ · 732 commits, 65 releasesMITseo-audit, ai-seo, schema, site-architecture, programmatic-seo skills. The seo-audit SKILL.md is an audit framework; it warns that curl/web_fetch cannot reliably detect JS-injected schema and points at browser rendering / Rich Results Test / Screaming Frog instead(a), partly (d): sound framework, no bundled deterministic checker
web-quality-skills (seo)github.com/addyosmani/web-quality-skillsAddy Osmani · 2,905★ · 34 commits, 0 releasesMITseo skill: crawlability, indexability, meta/headings, JSON-LD, mobile, performance signals; CWV thresholds (LCP 2.5s / INP 200ms / CLS 0.1); optional Chrome DevTools MCP lighthouse_audit, fallbacks Lighthouse CLI / PageSpeed / static inspection(a) + (b) around local Lighthouse
seo-geo-claude-skillsgithub.com/aaron-he-zhu/seo-geo-claude-skillsaaron-he-zhu · 215★ · now a signpost repo (skills moved to aaron-marketing-skills; standalone line frozen at v9.9.12)Apache-2.0technical-seo-checker checklist: robots/sitemaps, indexability, CWV, mobile, HTTPS headers, structured data, redirects, hreflang. Content-only, no executable code(a)/(d) checkable checklist, no local tool
seo-skills (SE Ranking)github.com/seranking/seo-skillsSE Ranking · 160★ · 96 commitsMIT26 skills (technical audit, schema, sitemap, drift, backlink-gap, keyword clusters, AI share-of-voice). README positions the suite as powered by the SE Ranking remote MCP (OAuth, paid account); API calls documented so the provider can be swapped(c) SE Ranking API, primarily
Mehmoodqureshi/seo-mcpgithub.com/Mehmoodqureshi/seo-mcpMehmoodqureshi · 6★ · 21 commitsMITThe one genuinely local MCP: keyless tools audit_page (title/meta/canonical/robots/viewport/OG/headings/alt/link counts/structured-data presence, issues + score), check_robots, check_sitemap, extract_schema, find_broken_links, keyword_ideas (Google Suggest). Only its pagespeed tool calls out(a)/(b) local; (c) PageSpeed Insights for that one tool only
DataForSEO MCPgithub.com/dataforseo/mcp-server-typescriptDataForSEO · 252★Apache-2.0Authenticated requests to the paid DataForSEO API; no local mode. (Plori-ai/seo-mcp and the Skobyn community server are the same shape.)(c) DataForSEO, FLAGGED
Official vendor MCPsgithub.com/ahrefs and Semrush's hosted endpointvendor officialhosted servicesAhrefs' local repo is archived/deprecated in favor of its remote hosted endpoint; Semrush has no official GitHub server at all (official endpoint is remote-hosted; GitHub results are community wrappers). Frase's MCP fronts its hosted paid service; on-page-ai and seomcp are hosted endpoints; egebese/dataseo-mcp wraps Ahrefs(c) hosted, FLAGGED
Minor/derivativefreeautomation-tech/claude-seo-kit (local Python tool wrapper, (b), index-only verification); seoskillsai/seo-skills-ai (mixed (a)/(b)/(c), index-only); trementdv/seo-intelligence-skill ((a)/(d), index-only); wishfy-ai/google-seo-geo-aeo-audit-skill ((a) + (c) PageSpeed/CrUX, index-only)various, smallmostly MIT as reportedDerivatives of claude-seo / seranking patternsas noted

Negative results, documented: a direct site:skills.sh seo search returned no skills.sh-domain pages (listings confirmed only via badges/metadata inside repos); the curated collections from the skills-gap mission (ComposioHQ/awesome-claude-skills, VoltAgent/awesome-agent-skills) contain no native SEO audit skill; they index external ones, including an "Ahrefs MCP-powered" suite (class (c) by construction). Full search list is in the working report.

4. Tooling-family survey (verified at each repo; stars/activity as read 2026-10-08)​

  • SiteOne Crawler, github.com/janreges/siteone-crawler (owner is janreges; the packet's guessed names were wrong). 937★, 776 commits, 17 releases, commits in Sep 2026: alive and actively developed. MIT. Local single binary (Rust rewrite). Full-site crawl scoring Performance/SEO/Security/Accessibility/Best-Practices; SEO + Open Graph analyser; respects robots.txt; output HTML + JSON + text (no CSV); --ci quality gate (exit 10); optional browser-rendering mode. No built-in baseline/diff. Diffing is DIY on the JSON, which is structured well enough for exactly that.
  • Lighthouse, github.com/GoogleChrome/lighthouse. 30,868★, Apache-2.0, Google, alive. Local (runs in Chrome). SEO category (from its docs/default config): title present, meta description, viewport, successful HTTP status, crawlable + descriptive anchors, not blocked from indexing, robots.txt validity, hreflang validity, canonical validity, legible font sizes, tap targets, no plugins. CWV via the performance category (LCP, CLS, TBT as lab proxy for INP). Single-URL; JSON/HTML/CSV output; no cross-run diff of its own.
  • Unlighthouse, github.com/harlan-zw/unlighthouse. 4,890★, 149 releases, MIT, alive (Node >= 22.18). Site-wide Lighthouse: crawl/sitemap discovery with sampling, Chrome rendering, reports to a local output directory. The practical way to get Lighthouse SEO + CWV across 319 URLs locally.
  • Lighthouse CI, github.com/GoogleChrome/lighthouse-ci. 7,106★, Apache-2.0, alive. autorun = collect → assert → upload; assertions/budgets fail builds; baseline/diff via the LHCI server. Upload-target warning: temporary-public-storage puts reports on third-party Google Cloud with public URLs (deleted after 7 days), never for this fleet; filesystem (no upload) or a self-hosted LHCI server only.
  • advertools, github.com/eliasdabbas/advertools. 1,473★, MIT, alive. Scrapy-based crawler (titles, headings, body, status, headers, custom extraction) → pandas DataFrames; robots downloader → DataFrame (tracks robots.txt changes); sitemap parser; a real logs module (logs_to_df → parquet) if logs ever exist. Output diffable via pandas; no JS rendering (irrelevant for this SSG target).
  • LinkChecker, github.com/linkchecker/linkchecker. 1,076★, GPL-2.0, alive. Recursive link checking, honours robots.txt, output text/HTML/CSV/XML/SQL: genuinely diffable. Link-integrity supplement.
  • broken-link-checker, github.com/stevenvachon/broken-link-checker. 2,082★, MIT, alive. Local; robot exclusions only when honorRobotExclusions is enabled; no built-in JSON/CSV export (API/events only), so diffing is DIY. Weaker than LinkChecker for this use.
  • Greenflare, canonical repo github.com/beb7/gflare-tk (the zukucker repo is a 2026 fork). GPL-3.0; stale, last updated about 2023 (index-level; canonical repo not opened, gap §8). Checks titles/meta-robots/canonicals/headers/status; SQLite store; any view exportable to CSV (genuinely diff-friendly). Workable second choice, dormant project.
  • SEO Macroscope, github.com/nazuke/SEOMacroscope (owner nazuke, not the packet's guess). 266★, GPL-3.0. Formally unarchived but effectively dead since about 2018; Windows-only C# GUI; Excel/CSV reports. Rejected: dead, GUI-only, no automation story.
  • python-seo-analyzer, github.com/sethblack/python-seo-analyzer. 1,485★, alive, JSON by default. License flag: GitHub reports "Other (NOASSERTION)"; its LICENSE file is not recognized. Recorded here; per the owner's stance it is not a gate, but it is the shakiest paperwork in the set. No JS rendering; the author notes Python crawling is slow, acceptable at 319 URLs.
  • "seolyzer", documented negative: no open-source log analyser by the name the packet guessed exists (exact searches in the working report). seolyzer.io is a commercial hosted SaaS; the GitHub namesake (foppa21/seolyzer) is an unrelated URL-check CLI with CSV output. Screaming Frog's Log File Analyser is commercial/closed desktop software (free up to 1,000 events; licence beyond).
  • Structured data: extruct, github.com/scrapinghub/extruct, 971★, BSD-3-Clause, alive. It extracts JSON-LD/microdata/RDFa/OpenGraph; it does not validate. Presence/extraction + JSON-syntax + schema.org vocabulary/required-property checks are local (rdflib/SHACL-style validation is DIY). Google's Rich Results Test and validator.schema.org are hosted-only, with no public validator API; under constraint 1 the fleet does not submit URLs to them, and local validation is what the method skill encodes.
  • Sitemap/robots plumbing: GateNLP/ultimate-sitemap-parser (all sitemap formats, follows robots.txt sitemap links, local); google/robotstxt (3,474★, Apache-2.0), Googlebot's production RFC 9309 parser, with JS/Python ports (protego, robots-parser). Note that Python's stdlib robotparser uses first-match where RFC 9309 uses longest-match: a real discrepancy to encode in the method, not discover later.
  • Log-file analysis data source, answer for this target. x-centric.com is Framer-hosted; Framer provides no raw server-log export to site owners, so crawl-log analysis has no data source at all for this site. (The Cloudflare route would not save it either: Cloudflare's own docs make Logpull Enterprise-only and the GraphQL Analytics API aggregated/sampled with 31-day retention below Enterprise, and no Cloudflare zone is in evidence in front of this Framer site.) Log analysis is a data-blocked item (§6), not a tooling gap.

5. Evaluation against the four fleet constraints​

  1. Local execution. The recommended stack is local end-to-end: SiteOne (local binary), Unlighthouse (local Chrome), extruct (local library), all reading public pages from this VM. Every class-(c) candidate (DataForSEO/Ahrefs/Semrush/Frase/SE Ranking MCPs, seolyzer SaaS, LHCI temporary-public-storage, Google's hosted validators) is excluded or fenced to an explicitly-named opt-in the recommendation does not take. The one borderline: claude-seo's Google-API features (Search Console/PageSpeed/CrUX) call Google with the site owner's own credentials, a different species from third-party audit APIs, but still off by default in this recommendation; Search Console data is listed data-blocked in §6 precisely because it needs the owner's account decision, not a tool.
  2. Wrapper test. Skills split cleanly: real method (claude-seo core (a), marketingskills (a)/(d), web-quality-skills (a)+(b), aaron-he-zhu (a)/(d), Mehmoodqureshi/seo-mcp (a)/(b)) vs hosted-API costumes (seranking suite (c), essentially the entire MCP shelf (c)). The recommendation adopts no class-(c) component and no class-(d)-only skill as the method layer.
  3. License recorded, executables need security review. SiteOne MIT, single Rust binary: smallest review of the credible crawlers (no runtime deps, no browser download; network behavior = fetching the target site). Unlighthouse MIT, Node dependency tree + Chrome via Puppeteer: medium review, same shape as the fleet's accepted Playwright pattern (pin the browser, skip downloads where possible). extruct BSD-3-Clause, small Python tree: small review. LHCI (if chosen) Apache-2.0, larger Node tree + server component: medium-large, and only in filesystem/self-hosted mode. python-seo-analyzer's NOASSERTION license is recorded; it is not in the recommended stack, so no review is spent on it.
  4. Cadence fit. SiteOne has no native baseline, but its JSON is the diff substrate (stable per-URL records). The method skill stores run JSON and diffs new/fixed/standing, the same pattern as claude-seo's SQLite drift idea, implemented on files the fleet controls. Unlighthouse/LHCI give repeatable sampled CWV/SEO scores; LHCI assertions are the only native gate, available if wanted via filesystem mode. Nothing recommended produces only a human report; every leg emits machine-readable output a diff can be built on.

6. Recommendation (for x-centric.com)​

Stack. Skill layer: fleet-authored method skill (working name: an SEO audit method skill for the docsite library, which today holds zero SEO skills, verified against the live index, 433 entries, blob 42b9500e85: "seo" 0, "lighthouse" 0, "sitemap" 0, "schema.org" 0, "structured data" 0; nearest held skill is performance-optimization, which mentions Core Web Vitals). The method skill encodes the standing checks below, the run procedure, the diff discipline, and the evidence grades; it borrows its check taxonomy openly from claude-seo and marketingskills' seo-audit framework rather than importing either wholesale (claude-seo's extension surface and setup-time browser install are the reasons; if the chief prefers adoption speed over purity, claude-seo adapted, core only, extensions disabled, is the named fallback). Tooling layer: SiteOne Crawler (primary crawl, raw-HTML mode, JSON out) + Unlighthouse (Lighthouse SEO + CWV on a fixed sample: home, one location page, one service page, blog index, top glossary entries; full 319 monthly) + extruct in a small local script (structured-data extraction) + ultimate-sitemap-parser/robotstxt-port checks for sitemap/robots hygiene. LinkChecker is the named supplement if SiteOne's link reporting proves thin in the first runs. Cadence. Weekly full SiteOne crawl (319 URLs is minutes of work) with the diff report; Unlighthouse sample weekly, full-site monthly; an extra run triggered by any x-centric.com deploy or content restructure (the fleet learns of deploys from the owner/chief; Framer deploys are outside fleet CI, so the trigger is a standing instruction, not a webhook). Baselines roll: each run diffs against the previous run and against a pinned monthly baseline. Report shape. Diff-first, per standing practice: new issues / fixed since last run / standing issues, each finding carrying the check name, the URL, and the evidence (the SiteOne JSON record, the Lighthouse audit id, or the extracted snippet), never a bare score. A one-line health summary (counts by severity) heads the report; scores (Lighthouse SEO category, SiteOne quality scores) appear as context, never as the verdict. Standing checks, mapped:

  • Technical SEO (status codes, redirect chains, incl. the http→www 2-hop chain, canonicals, crawl traps, indexability): SiteOne crawl + Lighthouse's indexability/robots/canonical audits on the sample.
  • Metadata/OG completeness (title, description, canonical, OG/Twitter on every URL): SiteOne's SEO/OpenGraph analysers over the full crawl.
  • Structured data: extruct extraction on the full URL set (today's expected result: none found; the check fires until Organization/LocalBusiness + BlogPosting schema exists), then local JSON-syntax + schema.org required-property validation per the method skill. Google's hosted validators are not used (constraint 1).
  • Sitemap/robots hygiene: sitemap parses (ultimate-sitemap-parser), all sitemap URLs return 200 and match canonicals, sitemap↔crawl set difference (orphans in either direction), robots.txt parsed with RFC 9309 semantics (not stdlib first-match). The missing lastmod values are recorded as a standing hygiene note.
  • Internal linking (broken links, orphans, click depth): SiteOne crawl graph; LinkChecker supplement if needed.
  • Core Web Vitals / performance: Unlighthouse performance + SEO categories on the sample (lab data; field data via CrUX is a Google API, off by default, owner's call, §6 data-blocked list). Page weight (the ~800 KB HTML) tracked as a named metric.
  • Mobile rendering: Lighthouse mobile emulation on the sample (tap targets, font sizes, viewport audits are in its SEO category).
  • Accessibility overlap: not re-solved here. The fleet's AccessLint method + axe-core/Playwright pairing (2026-10-07 evaluation) owns it; the SEO report cross-references its findings where they intersect (e.g. descriptive anchor text) and SiteOne's accessibility category is treated as a smoke signal only. What no candidate covers (method-only or data-blocked):
  • Content quality and search intent (does the glossary/blog actually answer queries well; E-E-A-T judgment): method-only. An agent judges it under the method skill's framework (marketingskills/claude-seo supply the framework language); no tool decides it.
  • Backlink profile: every tool that knows backlinks knows them from a hosted index (Moz/Bing/Common Crawl APIs, Ahrefs, DataForSEO), class (c) by construction. Data-blocked under constraint 1 unless the owner approves a named source.
  • Search Console / GA4 data (real queries, impressions, index coverage): exists only behind the owner's Google account. This is an owner decision plus a credential step rather than a tooling gap, listed here so the SEO agent is never blamed for its absence.
  • Log-file analysis: no data source exists for a Framer-hosted site (§4), so this is data-blocked outright.
  • Rank tracking / SERP monitoring: inherently a hosted-data business (and the class-(c) MCP shelf's whole reason to exist). Out of scope unless the owner directs otherwise.
  • Field CWV (CrUX): Google-hosted data; lab data from Unlighthouse is the local substitute. One line, as permitted: the same stack generalizes to any other fleet surface unchanged; only the target configuration differs.

7. Sources (primary; all accessed 2026-10-08)​

Live surface reads (this desk): https://www.x-centric.com/ (headers, source), /robots.txt, /sitemap.xml (319 URLs), /wisconsin/milwaukee-it-services, /services/it-consulting, /resources/blog (platform, robots, sitemap, metadata, JSON-LD absence). Docsite live skills index, jknash/docsite main, blob 42b9500e85 (433 entries), which establishes the zero-SEO baseline. Repos: github.com/AgriciDaniel/claude-seo; github.com/coreyhaines31/marketingskills; github.com/addyosmani/web-quality-skills; github.com/aaron-he-zhu/seo-geo-claude-skills; github.com/seranking/seo-skills; github.com/Mehmoodqureshi/seo-mcp; github.com/dataforseo/mcp-server-typescript; github.com/janreges/siteone-crawler; github.com/GoogleChrome/lighthouse; github.com/GoogleChrome/lighthouse-ci (upload-target docs); github.com/harlan-zw/unlighthouse; github.com/eliasdabbas/advertools; github.com/linkchecker/linkchecker; github.com/stevenvachon/broken-link-checker; github.com/beb7/gflare-tk (index-level); github.com/nazuke/SEOMacroscope; github.com/sethblack/python-seo-analyzer; github.com/scrapinghub/extruct; github.com/GateNLP/ultimate-sitemap-parser; github.com/google/robotstxt. Cloudflare log availability: developers.cloudflare.com/logs/logpull (Enterprise-only table) + GraphQL Analytics API docs. Full search log, incl. the seolyzer and skills.sh negatives: research_notes/seo-skills-tooling-survey-20261008-1626/report.md.

8. Open gaps​

  1. Greenflare's canonical repo (beb7/gflare-tk) was not opened directly, so its staleness and CSV claims are index-level. It is a second-choice tool; a repo-open settles it if the chief wants it kept warm.
  2. Four minor skill repos (claude-seo-kit, seo-skills-ai, seo-intelligence-skill, wishfy-ai) are classified from search-surfaced skill text, not full repo reads; none is in the recommended stack.
  3. Lighthouse's SEO audit list is from its docs/default-config descriptions, not pinned line-by-line to default-config.js; an implementation-time read settles the exact audit ids for the method skill.
  4. Whether x-centric.com sits behind any Cloudflare zone was judged from response headers alone (no evidence found; Server is Framer). DNS-level confirmation is an implementation-time check. It does not change the log conclusion (Framer origin = no raw logs either way).
  5. Framer's own platform constraints on fixes (e.g. how much of the sitemap/head output the owner can control in Framer's editor, whether JSON-LD can be injected per page) were NOT researched. The audit can find issues from day one, but remediation paths inside Framer are a follow-up question for the implementation plan, flagged now so the first report's recommendations are written as findings, not assumed fixes.
  6. advertools' robots handling is asserted at the Scrapy-framework level; the exact setting name/default in advertools' own docs was not pinned. It is not in the recommended stack.

What changed in the no-ai-slop edit​

The draft was edited under the fleet's no-ai-slop skill (fetched fresh from the docsite, blob 0ceaba969b) before publication. Changes: all 74 em dashes removed and the sentences rebuilt with periods, commas, or parentheses (several comma splices the mechanical pass created were rewritten as separate sentences); one banned empty phrase ("at its core") rewritten; two colon-reveal constructions ("The honest local line:", "honest answer for this target:") rewritten as plain sentences; a small number of binary-contrast and fragment constructions restated directly. Mechanical re-check after the edit: 0 em dashes, 0 hits on the skill's banned-word list, and no empty-phrase hits outside this note's own quotations of what was removed. The skill's workflow step 4 references a companion eval.md the docsite import never carried (held in jknash/hermes-shared-skills); the self-check therefore ran against the page's own rules and word lists, the same known limit recorded for the 2026-10-07 skills-gap report. No source quotations appear in this report beyond short factual strings from the target site itself (robots.txt directives, header values), which are reproduced exactly.

Published by Muse · 2026-10-08.