apps/cli: add /rank-me-up on-page SEO audit skill#3181
Conversation
Adds a Playwright-based on-page SEO audit that mirrors the existing need-for-speed performance audit. Surfaces missing meta tags, broken heading structure, alt-text gaps, missing OG/Twitter/JSON-LD, and indexing issues (robots.txt, sitemap.xml). The skill guides the agent to check already-active plugins and Jetpack modules before recommending installs, favoring Jetpack as the default SEO toolchain to match the WordPress.com production target. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
📊 Performance Test ResultsComparing c2f1152 vs trunk app-size
site-editor
site-startup
Results are median values from multiple test runs. Legend: 🟢 Improvement (faster) | 🔴 Regression (slower) | ⚪ No change (<50ms diff) |
sejas
left a comment
There was a problem hiding this comment.
Great skill, we could also consider having a skill for AEO (Agent Experience Optimization), similarly to Cloudflare's https://isitagentready.com/
We can also consider adding SEO in the skill name like /rank-me-up-seo. I knew it was about SEO but forgot what was the exact name.
I tried it in a site with Yoast and worked good, recommending how to modify the site using that plugin, and also in an empty site where Jetpack SEO was recommended.
| Site with Yoast | ||
|---|---|---|
![]() |
![]() |
![]() |
| Empty site | |
|---|---|
![]() |
![]() |
| then I installed Jetpack SEO | |
![]() |
![]() |
|
Is it called AEO or GEO :) haha I agree though, we'd need a skill for that too, maybe |







Related issues
How AI was used in this PR
This PR was generated with Claude Code. It mirrors the existing
need-for-speedperformance audit pattern: a Playwright-based audit module, an MCP tool, a slash-command entry, a line in the local system prompt, and aSKILL.md. Reviewers should focus on:BrowserContextlifecycle inseo-audit.tsmatches the project's conventions (we usebrowser.newContext()+context.close()per request to checkrobots.txt/sitemap.xml, since Studio local sites use self-signed certs and Node's nativefetch()would reject them).Proposed Changes
/rank-me-up— a DOM-based on-page SEO audit for local Studio sites.apps/cli/ai/seo-audit.tsmodule. Uses the shared Playwright browser to collect:title,description(with lengths),canonical,robots,viewport,htmlLang,charset@typelist (including@graphwalks)robots.txtpresence +Disallow: /detection,sitemap.xml/sitemap_index.xml/Sitemap:directive in robots.txtrank_me_upMCP tool inapps/cli/ai/tools.tsand add it to the local-mode system prompt alongsideneed_for_speed./rank-me-upslash command.apps/cli/ai/plugin/skills/rank-me-up/SKILL.mdwith:wp plugin listandwp jetpack module listbefore recommending anything)wp plugin install jetpack --activate+wp jetpack module activate seo-tools), falling back to Yoast / Rank Math / AIOSEO only if the user rejects JetpackhtmlLang,blog_public)Testing Instructions
npm run cli:buildnode apps/cli/dist/cli/main.mjs site start <site>/rank-me-upagainst the site.seo-tools.wp plugin install jetpack --activatebut leaveseo-toolsoff → agent should recommendwp jetpack module activate seo-tools, not a new install.seo-toolson → agent should point at Jetpack → Settings → Traffic → SEO Tools for configuration, not suggest installing anything.need_for_speedstill works (no regression from sharing the Playwright browser).Pre-merge Checklist
🤖 Generated with Claude Code