agentsclimarketplace

Wp seo pass

Skill AntonySilverhand/wp-agent-skills/skills/wp-seo-pass

Run an SEO optimization pass on one page or the entire site — meta titles, descriptions, Open Graph tags, structured data, and image alt text. Use when the site is ready to launch, when the user asks to "improve SEO", "make the site searchable", "add meta descriptions", or after adding new pages. Also use when missing alt text is reported.From its SKILL.md

Install
npx -y skills add AntonySilverhand/wp-agent-skills --skill wp-seo-pass

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

One thing to look at

  • 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

What its file declares

Copied from the file, not written here

The file declares its own license as MIT. That is the author’s claim about this one file, and it is not the same thing as the license GitHub reports for the repository, which is listed with the other numbers below.

SKILL.md

4.0 KB, as published. Nobody here has run it

wp-seo-pass

SEO optimization for one page or all pages. Updates meta, Open Graph, structured data, alt text.

Arguments

  • TARGET — page title/ID, or all for every published page
  • FOCUS_KEYWORD — (optional) primary keyword to optimize for

Subagent strategy

When TARGET is all, use subagents for speed:

  • Launch one subagent per page to audit and generate meta in parallel
  • Collect all results, then apply updates sequentially (REST API is stateful)
  • For a 10-page site this cuts processing time from ~10 minutes to ~2 minutes

For single-page runs, no subagents needed.

Step 1 — Detect SEO plugin

wp plugin list --status=active --format=json | jq '[.[].name]'
  • Yoast SEO active: update via yoast_wpseo_title and yoast_wpseo_metadesc post meta
  • RankMath active: update via rank_math_title and rank_math_description post meta
  • Neither: inject via wp_head hook in functions.php

Step 2 — Audit each target page

Fetch page content and check:

CheckTarget
Meta titleUnder 60 chars, not the default site title
Meta description120–160 chars, includes focus keyword if set
H1 countExactly 1
Images missing alt0
Internal linksAt least 1 outgoing

Step 3 — Write meta

For each page:

  • Title: <Specific Page Topic> | <Site Owner Name> — under 60 chars
  • Description: 1–2 sentences. What the page contains + why someone would care. Under 160 chars. Include FOCUS_KEYWORD naturally if provided.

Don't use "Welcome to", "Home page of", or the site URL in titles.

Step 4 — Add Person schema (home + about pages only)

Inject JSON-LD structured data:

{
  "@context": "https://schema.org",
  "@type": "Person",
  "name": "<full name>",
  "url": "<WP_SITE_URL>",
  "jobTitle": "<if known>",
  "sameAs": ["<social URLs>"],
  "description": "<one sentence bio>"
}

Add via wp_head hook or Yoast's schema override if available.

Step 5 — Fix missing alt text

For every image block with no alt text, generate alt text from:

  1. The IMAGE: placeholder description (if it was set by wp-new-page)
  2. The filename
  3. The surrounding page context

Update each image block via REST API (full content body required).

Step 6 — Open Graph tags

Ensure these exist on all pages (add to theme <head> if no plugin handles them):

<meta property="og:title" content="<meta title>" />
<meta property="og:description" content="<meta description>" />
<meta property="og:image" content="<featured image URL>" />
<meta property="og:type" content="website" />
<meta name="twitter:card" content="summary_large_image" />

Gotchas

  • Yoast stores meta in _yoast_wpseo_title and _yoast_wpseo_metadesc post meta, not in standard fields. The REST API exposes these under yoast_head_json but writing requires the Yoast REST extension or direct post meta update.
  • The REST API title field updates the page H1, not the meta title. These are separate. Always update meta title through the SEO plugin's fields.
  • JSON-LD sameAs requires full URLs (https://...), not handles (@username).
  • Open Graph og:image must be an absolute URL, not a relative path.

Output

Per-page table:

CheckBeforeAfter
Meta title—"Photography
Meta descriptionmissing138 chars ✓
Images with alt2/55/5 ✓
H1 count01 ✓

Keep looking

Skills are one crate of 626,474. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.