Skip to content

feat(seo): structural fixes to stop crawl noise permanently#72

Merged
temalo merged 2 commits into
mainfrom
seo-structural-fixes
Jul 16, 2026
Merged

feat(seo): structural fixes to stop crawl noise permanently#72
temalo merged 2 commits into
mainfrom
seo-structural-fixes

Conversation

@temalo

@temalo temalo commented Jul 16, 2026

Copy link
Copy Markdown
Contributor

Structural SEO cleanup (85 files): removes crawl-noise catalog/marketplace pages, prunes dead build hooks (absolute_asset_urls, truncate_meta_description), and updates mkdocs.yml + auto_link_children. Ben's SEO pass. Powered by CorpusIQ

media-ctrl and others added 2 commits July 15, 2026 14:55
- Asset path 404s: vercel.json redirects for /assets/, /javascripts/,
  /stylesheets/ → /docs/* equivalents
- Pre-deploy SEO validator (scripts/validate_seo.py): blocks deploy on
  broken external links and missing meta descriptions
- Auto-linking MkDocs hook (scripts/hooks/auto_link_children.py):
  every section index.md auto-links its children at build time
- Weekly audit script (scripts/weekly_seo_audit.py): crawls live site
  from sitemap, checks links, descriptions, and asset paths

Note: .github/workflows/pages.yml change requires a PAT with 'workflow'
scope. Will submit separately.
# Conflicts:
#	scripts/hooks/auto_link_children.py
@temalo
temalo merged commit 238f381 into main Jul 16, 2026
1 check passed
@temalo
temalo deleted the seo-structural-fixes branch July 16, 2026 03:32
temalo added a commit that referenced this pull request Jul 16, 2026
…laceholder URLs (#74)

Three fixes to the pre-deploy SEO validator shipped in #72:

1. Crash: the orphan-page check unpacked find_internal_links() (which
   returns a set of path strings) as 'text, link' -> ValueError: too many
   values to unpack. It now iterates single link values, so all 4 checks
   run to completion.

2. Placeholder URLs: API-doc example links (Shopify /store/.../orders/12345,
   QuickBooks {REALM_ID}) were counted as broken links and blocked deploy.
   Added _is_placeholder_url() to skip illustrative URLs.

3. Auth-walled statuses: 401/403/429 mean 'exists but gated / rate-limited',
   not 'broken' — no longer treated as failures.

The 52 missing-meta-description findings are real and left as-is (that's the
validator doing its job); this only fixes the crash + false positives. Note:
the Pages workflow (pages.yml) does NOT run this as a gate today, so this was
not blocking live deploys — but it will be safe to wire in as one now.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants