← BrightSiteCONTENT HISTORYWHAT CHANGED · RULE-BASED ANALYSIS
Update to BrightSite
Snapshot Sep 30, 2026 · 22:57 UTC · version 1.1.0
Collection source: not recorded for this historical snapshot.
First saved snapshot
No earlier snapshot is available to establish a change.
Compare saved observations
Download comparison JSONFull technical diff · 0 changed fields
Full snapshot data
{
"name": "bulk-seo-audit",
"description": "Audit every page and post on a BrightSite site for on-page SEO issues. Checks title length, meta description length and presence, H1 presence and uniqueness, canonical URLs, og:image, robots directives, and slug quality. Outputs a prioritized fix list grouped by severity. Use when the user mentions \"SEO audit,\" \"on-page SEO,\" \"check my pages for SEO,\" \"find SEO issues,\" \"before launch SEO check,\" or wants a pre-handoff QA pass on a client site.",
"included_files": [],
"skill_md_contents": "---\nname: bulk-seo-audit\ndescription: Audit every page and post on a BrightSite site for on-page SEO issues. Checks title length, meta description length and presence, H1 presence and uniqueness, canonical URLs, og:image, robots directives, and slug quality. Outputs a prioritized fix list grouped by severity. Use when the user mentions \"SEO audit,\" \"on-page SEO,\" \"check my pages for SEO,\" \"find SEO issues,\" \"before launch SEO check,\" or wants a pre-handoff QA pass on a client site.\n---\n\n# Bulk SEO Audit\n\nWalk every page and post on a BrightSite site, evaluate on-page SEO basics, and produce a triaged report. This is for catching common issues at scale — it does NOT replace a real SEO audit that includes backlinks, Core Web Vitals, or rank tracking.\n\n## When to use this\n\n- Agency is about to hand off a client site and wants a final QA pass.\n- Client's traffic has dropped and you want to rule out on-page issues.\n- After a migration (e.g. after running the `migrate-wordpress-blog` skill).\n- Periodic check on a live site every 30-90 days.\n\n## Inputs you need from the user\n\n1. **Account ID** — the BrightSite account to audit.\n2. **Scope** — pages only, posts only, or both? Default: both.\n3. **Severity threshold** — show all issues, or only critical + warnings? Default: all.\n\n## Workflow\n\n### Step 1: Pull the inventory\n\n- `mcp__brightsite__list_pages` for all pages\n- `mcp__brightsite__list_posts` for all posts\n\nNote the counts and tell the user how many entities you're about to audit. If it's >200, ask for confirmation to proceed.\n\n### Step 2: Fetch and evaluate each entity\n\nFor each page or post, call `mcp__brightsite__get_page` or `mcp__brightsite__get_post`. Pages return both `heex` (live) and `heex_staged` (latest unpublished); posts return `content` and `content_staged`. **Audit both** — issues in `*_staged` will go live the next time the user publishes. Group findings by which version is affected so the user knows whether to publish a fix or just edit the live entity.\n\nEvaluate against these checks:\n\n**Critical** (must fix — actively hurts SEO)\n- `meta_title` empty or > 60 chars → truncated in SERPs\n- `meta_description` empty → Google generates one, often badly\n- `slug` contains spaces, capital letters, or special chars\n- Two or more entities share the same slug\n- HEEx/content body is empty or under 300 chars (check both live and staged)\n\n**Warning** (should fix)\n- `meta_title` < 30 chars (too short, missing keywords)\n- `meta_description` < 70 chars or > 155 chars\n- No H1 in the HEEx/content (check both live and staged)\n- More than one H1 in the HEEx/content (check both live and staged)\n- `canonical_url` set but points off-domain (suspicious — usually means duplicate content)\n- `og_image_id` missing → poor social sharing previews. Note: most BrightSite templates fall back to the post's `feature_image_id` (or the site identity logo) when `og_image_id` is null, so only flag this if neither fallback exists. For pages, flag any page where `og_image_id` is null AND the site has no logo.\n- Title and meta_title are identical (missed opportunity to differentiate for search vs. display)\n- `meta_robots` contains `noindex` — could be intentional (a thank-you page, an internal tool page). Surface each match and ask the user to confirm whether it's deliberate.\n\n**Info** (nice to fix)\n- Slug is very long (> 60 chars)\n- Slug contains stop words (`the`, `a`, `and`, `of`)\n- `meta_description` doesn't mention any word from the title\n- Post missing both `feature_image_url` and `feature_image_id`\n\n### Step 3: Output the report\n\nFormat as a markdown table grouped by severity, then by entity type. For each issue, include:\n\n- Severity marker (use `[!]` for critical, `[~]` for warning, `[i]` for info — no emojis unless user asked)\n- Entity type and title\n- The specific issue\n- Suggested fix\n- Page/post ID (so the user can jump to it in the editor)\n\nEnd with a summary block:\n\n```\nAudit summary\n-------------\nPages audited: 42\nPosts audited: 118\nCritical issues: 4\nWarnings: 23\nInfo: 31\n\nTop 3 fixes by impact:\n1. 4 pages missing meta_description — generate descriptions for: [list]\n2. 7 posts have meta_title > 60 chars — shorten: [list]\n3. 2 pages share the slug \"/services\" — rename one\n```\n\n### Step 4: Offer to fix\n\nAfter the report, ask the user:\n\n> Want me to auto-fix the critical issues? I can generate meta descriptions and trim long titles. I'll show you each change before saving.\n\nIf they say yes, use `mcp__brightsite__update_page` / `mcp__brightsite__update_post` to apply fixes. Show each proposed change as a diff (`old → new`) and confirm before calling the update. Important: SEO metadata fields are not staged by the MCP; updating `meta_title`, `meta_description`, `meta_robots`, `canonical_url`, or `og_image_id` can affect live metadata immediately. Get explicit approval before each metadata update.\n\n## Anti-patterns to avoid\n\n- **Don't auto-fix without explicit approval per change for critical issues.** Auto-generating a meta description that's wrong about the page's content is worse than no description.\n- **Don't flag stylistic preferences as issues.** \"Title doesn't use power words\" isn't an SEO issue, it's a copywriting opinion. Keep the audit objective.\n- **Don't fetch all entities in parallel without throttling** on accounts with hundreds of pages. Sequential with a small batch size (e.g. 5 concurrent) is safer.\n- **Don't trust `has_unpublished_changes: false` as proof of correctness.** Even published pages can have stale meta.\n\n## Example invocation\n\n> Run a full SEO audit on account `YOUR_ACCOUNT_ID`. Both pages and posts. Show me everything.\n\n## Tools used\n\n- `mcp__brightsite__list_pages`\n- `mcp__brightsite__list_posts`\n- `mcp__brightsite__get_page`\n- `mcp__brightsite__get_post`\n- `mcp__brightsite__update_page` / `mcp__brightsite__update_post` (only with explicit approval)\n"
}SHA-256: 95da5017c3ea2f63b9185db1f4232d14f60502d8dfae0171a4671800e9c661ed