Skip to main content

Site Page Analyze

Extract page SEO and DOM signals into a report.

Skill metadata​

SourceBundled (installed by default)
Pathskills/web-development/site-page-analyze
Version1.0.0
AuthorVibeOS
LicenseMIT
Platformslinux, macos, windows
Tagsbrowser, seo, accessibility, dom, audit, web
Related skillsbrowser-e2e, browser-network-assert, dogfood, site-map-crawl, cinematic-web

Reference: full SKILL.md​

info

The following is the complete skill definition that VibeOS loads when this skill is triggered. This is what the agent sees as instructions when the skill is active.

Site Page Analyze

Recipe for inspecting a live page (or offline HTML/DOM dump) and producing a structured SEO/DOM report. No new core tools — navigate with the browser toolset, extract via script or browser_console, then merge into page-report.json + page-report.md.

When to Use​

  • Audit title, meta, headings, canonical, and link mix on a URL
  • Capture landmarks / image alt gaps before a content or a11y pass
  • Offline review of saved HTML or a prior DOM dump JSON
  • Alongside browser-e2e / dogfood when a page-level inventory is needed
  • For multi-page architecture maps, use site-map-crawl first, then analyze a shortlist of URLs here

Prerequisites​

  • Browser toolset available for live mode (browser_navigate, browser_snapshot, browser_console; optional browser_vision)
  • Or offline: HTML file and/or DOM dump JSON for the Python extract script
  • Write access for report outputs in the working directory

How to Run​

Live (preferred):

  1. browser_navigate → target URL; wait for settle on heavy SPAs.
  2. browser_snapshot — confirm the page rendered (title/H1 visible).
  3. Extract DOM signals — either:
    • Save page HTML (or paste the console dump) and run scripts/extract_page_structure.py --html … / --json …, or
    • browser_console with expression = contents of references/dom-extract-snippet.js (IIFE returns a plain object), then pipe JSON into the same script via --stdin.
  4. Optional: browser_vision for above-the-fold sanity; note console errors.
  5. Optional content body: web_extract on the same URL if you need article text beyond structure signals.
  6. Merge extract + notes into page-report.json, then fill templates/page-report.md → page-report.md.

Offline:

  1. Feed a local HTML file and/or DOM dump JSON into the Python extract script (same schema as the JS snippet).
  2. Skip browser tools; still write page-report.json + page-report.md.

If paths are unknown: search_files for site-page-analyze/.

Quick Reference​

ArtifactRole
references/dom-extract-snippet.jsConsole-safe DOM extract object
scripts/ extract (Python)Live HTML or offline HTML/JSON → JSON
templates/page-report.mdHuman report placeholders
page-report.jsonMachine-readable merge result
page-report.mdFilled human summary
Field groupSource
url, title, meta, canonical, langextract
headings / h1, links, images, landmarksextract
console_errors, notes, analyzed_atagent merge

Procedure​

  1. Choose live vs offline; record analyzed_at (ISO UTC).
  2. Live: navigate → snapshot → extract (script or browser_console snippet).
  3. Offline: pass HTML file and/or DOM dump JSON into the Python extract script; do not invent fields the dump lacks.
  4. Cap-aware: trust extract truncations (text ≤200 chars, arrays ≤200 items).
  5. Count internal vs external links from extract (internal = same origin).
  6. Merge into page-report.json (extract + console_errors + notes).
  7. Render templates/page-report.md placeholders → page-report.md.
  8. Report paths and any blockers (auth wall, empty DOM, extract failure).

Pitfalls​

  • Zero new core tools — do not ask for a dedicated page-audit tool.
  • Prefer browser_navigate / snapshot / console / web_extract; do not shell grep/cat page HTML as the primary path.
  • Auth walls and CAPTCHAs: stop and ask; do not brute-force.
  • SPAs: snapshot too early → empty headings; wait, then re-extract.
  • Offline mode only knows what is in the HTML/JSON dump — no live console.

Verification​

  • page-report.json exists and includes url, title, headings, link counts.
  • page-report.md has filled {{…}} placeholders (no raw braces left for known fields).
  • Live run: snapshot showed content before extract; optional vision matches H1.
  • Offline run: extract exits 0 on the provided HTML/JSON without browser calls.

Live smoke​

Hermetic check (no external network): serve a local fixture with python3 -m http.server PORT --bind 127.0.0.1 from skills/web-development/site-map-crawl/fixtures/site, then:

vibeos web analyze http://127.0.0.1:PORT/index.html --out page-report.json

Automated: scripts/run_tests.sh tests/skills/test_web_live_smoke.py -q.