seo-vertical-detect
seo-vertical-detect
Given the PageSnapshot, classify the site so the orchestrator can route conditional modules. Read references/routing.md for the signal table.
Inputs
Read-only over persisted data — no fetching: the homepage parsed (jsonld[], anchors[], metas[], hreflang[], <html lang>, text_sample) from <run_dir>/pages/<slug>.json, <run_dir>/crawl.json (route patterns, templates), <run_dir>/site/discovery.json (llms.txt presence), and the vertical_hints[] emitted by detect-platform.mjs in <run_dir>/profile.json (e.g. WooCommerce/Shopify → ecommerce; a docs generator → docs). Hints are signals, not verdicts — cite them in signals like any other evidence.
Method
Score each vertical from observable signals (not guesses):
- ecommerce —
Product/OfferJSON-LD, cart/checkout/add-to-cart routes or buttons, price + currency elements,og:type=product. - local-business —
LocalBusinessJSON-LD, NAP block (name/address/phone), maps embed, opening hours, store-locator. - blog-publisher —
Article/BlogPostingJSON-LD, author bylines/author pages, RSS/Atom<link>, dated post archives. - saas — pricing/signup/login routes,
SoftwareApplicationschema, feature/integration/docs pages. - docs — docs/reference routes, sidebar/version nav, dense code blocks, present
llms.txt. - generic — none dominates.
A site can match several; return all that clear the threshold, ranked, plus a primary.
Locales: detect hreflang tags, <html lang>, and locale-prefixed routes (/es/, /fr/). If >1 locale, flag multilingual so M20 (hreflang) activates.