MCPInstall

content-seo

Audits a blog post draft or page copy for content-level SEO: search intent fit, focus keyphrase placement, E-E-A-T signals (experience, expertise, authoritativeness, trustworthiness), helpfulness and originality, content freshness, and internal linking. Use when the user asks "will this rank", "SEO check this post", "content SEO audit", or "optimize this post for search" — or proactively after a readability pass on a post that's meant to rank. For how the prose reads, use the readability-check skill; for titles and meta descriptions, use metadata-check; for site-wide technical SEO (sitemaps, structured data, canonicals), use astro-seo or static-seo.

Installs
82
Last 24h
—
Trending rank
—
Security
Not audited

Install

Works with every agent the skills CLI supports.

npx skills add https://github.com/jdevalk/skills --skill content-seo
  1. 01

    Install

    Run the command in your project. The CLI asks which agents to install for.

  2. 02

    Describe the task

    Ask your agent for something this skill covers. It loads content-seo automatically when relevant.

  3. 03

    Review the result

    The agent follows the SKILL.md steps, scripts and references bundled with the skill.

SKILL.md

The instructions your agent reads when the skill is triggered.

Content SEO audit

Audit a post or page draft for whether it earns a ranking — not how it reads. This skill covers the content-level questions: does the post match a real search intent, does it use the words searchers use, does it demonstrate experience and trustworthiness, and does it give the searcher a reason to stay.

This is the third pass in the writing-quality chain. Run readability-check first (how the prose reads), metadata-check on the title and meta description, and this skill on the question of whether the content deserves the click. Technical SEO — sitemaps, structured data, canonicals, performance — belongs to astro-seo or static-seo.

Before you audit

You need two facts. If the user hasn't supplied them, derive them and state your assumption — a wrong assumption flagged is better than a silent one:

  • The focus keyphrase: the exact query this post should rank for, in the words a searcher would type. If the user can't name one, derive the apparent keyphrase from the title and headings — and report that as the first finding, because a post written without a target query usually serves none.
  • The audience and their problem: who lands on this page and what they were trying to fix when they searched.

The reader decides what quality is, not the writer. Every check below reduces to one question: does this content serve the person who typed the query better than what's already ranking?

What to check

Read the full post, then report on each criterion below. For every issue, quote the specific text, reference its location, explain the problem, and suggest a concrete fix.

1. Search intent fit

Searchers arrive with one of four intents, and the content type must match:

  • Informational ("how does X work") — wants a guide or explainer, not a product pitch.
  • Commercial investigation ("best X for Y", "X vs Z") — wants comparison and honest trade-offs.
  • Transactional ("buy X", "X pricing") — wants a product or category page with a clear path to purchase.
  • Navigational ("X login", brand names) — wants a specific page; don't intercept it with a blog post.

Checks:

  • Name the keyphrase's dominant intent and verify the content type matches. A sales page targeting an informational query loses the visitor before the second paragraph — they wanted an answer, got a pitch.
  • Calls-to-action must match the intent. Informational page → soft CTA (related reading, newsletter); transactional page → direct path to the product. Flag a hard sell on an informational post.
  • The answer to the searcher's question should appear early, not after 800 words of preamble. A searcher who has to scroll for the answer goes back to the results — and that return is the negative signal that costs rankings.

2. Focus keyphrase placement

The keyphrase confirms to the searcher — and to the search engine — that this page answers their query. It should appear naturally in the places both of them weight most:

  • The page title and the first paragraph. A searcher should recognize their query within seconds of landing.
  • At least one or two headings, where it fits without contortion.
  • Several core sentences (the first sentence of a paragraph). In a well-structured post that stays on topic, this happens by itself — if you have to force it, the post has drifted off topic, and that's the real finding.
  • Use the searcher's words, not internal jargon. If the audience searches "site speed" and the post says "performance optimization" throughout, the post is invisible to its own audience.

And the inverse checks:

  • Never force it. If the keyphrase makes a sentence read wrong, the sentence wins. Search engines recognize synonyms and word forms; readers don't forgive stilted prose.
  • Vary it. Mechanical repetition of the exact phrase reads as stuffing to readers and engines alike. Synonyms and related phrases cover more queries and read better.

3. E-E-A-T signals

Search quality raters assess experience, expertise, authoritativeness, and trustworthiness. These aren't abstract virtues — each one is visible (or absent) in the text:

  • Experience: does the post show first-hand involvement — things only someone who actually did this would know? Real numbers, screenshots of real results, what went wrong, what surprised the author. A post assembled from other posts has none of this, and it shows.
  • Expertise: is the author identified, with a reason to trust them on this topic? Are claims sourced — linked to reliable references rather than asserted?
  • Authoritativeness: does the post cite or connect to recognized sources in the field? This is the weakest lever for most sites — if it doesn't apply, say so and weight the other three; don't fake it.
  • Trustworthiness: is it clear who is responsible for this content and how to reach them? Are claims accurate and current? For YMYL topics — health, money, safety, legal — hold every claim to the strictest standard; an unsourced medical or financial claim is a ✗, not a ⚠.

4. Helpfulness and originality

The people-first test: would this post exist if search engines didn't?

  • Does the post add something the current top results don't — first-hand data, a sharper angle, a worked example, an honest limitation? A competent rehash of what already ranks gives the searcher no reason to prefer it and gives the engine no reason to rank it.
  • Is the answer complete? The searcher should not need to return to the results to finish the job. Flag questions the post raises but doesn't answer, and steps it mentions but doesn't explain.
  • Is the reader's problem named explicitly and solved by the end? A post that's about a topic but doesn't resolve anything serves the writer, not the reader.

5. Freshness

  • Flag content that will age: version numbers, prices, screenshots of UIs, "last year" / "recently" phrasing, references to current events. Either make them evergreen or date them explicitly so staleness is visible.
  • Flag content that has already aged: outdated facts, deprecated tools, superseded advice.
  • For time-sensitive topics, recommend a review cadence. A post that's right today and wrong in six months needs a calendar entry, not just a publish button.

6. Internal linking and site fit

A post doesn't rank in isolation — it ranks as part of a site:

  • The post should link to related content on the same site, especially the cornerstone article for its topic, with descriptive anchor text ("our guide to keyword research", never "click here").
  • Related posts should link back. A new post with no inbound internal links is an orphan — flag it and name the existing posts that should link to it, if the user has given you access to the site or its content inventory.
  • Check for cannibalization: does an existing post on the same site already target this keyphrase? Two posts competing for one query split their strength; recommend merging, differentiating, or re-targeting one of them.

Scoring

Per-category status — for each of the 6 checks above, assign one of:

  • ✓ Pass — no meaningful issues.
  • ⚠ Needs work — a few fixable issues; listed below.
  • ✗ Problem — systemic issue across the post.

Overall verdict — one of three:

  • Ready — publishes as-is; minor issues only.
  • Fixable — right content for the query, but the listed issues hold it back.
  • Wrong content for the query — the intent mismatch or originality gap can't be edited away; the post needs a different angle or a different target keyphrase. Say this plainly when it's true — polishing a post that targets the wrong query wastes the writer's time.

Output format

## Content SEO audit: [post title]

### Target
- Focus keyphrase: [phrase] ([stated by user / derived — assumption])
- Intent: [informational / commercial / transactional / navigational]
- Verdict: [Ready / Fixable / Wrong content for the query]
- Per-category: 1. ✓  2. ⚠  3. ✓  4. ✗  5. ✓  6. ⚠

### Summary
[One paragraph: what query this post serves, how well it serves it, and the one or two changes that would move it most.]

### Issues found
[Grouped by category. For each: location, quoted text, why it's a problem, concrete fix.]

### What's working
[Specific elements that earn the ranking — a genuinely first-hand example, a complete answer placed early, a well-linked cornerstone reference. Quote them so the writer can calibrate.]

FAQ

What does the content-seo skill do?

Audits a blog post draft or page copy for content-level SEO: search intent fit, focus keyphrase placement, E-E-A-T signals (experience, expertise, authoritativeness, trustworthiness), helpfulness and originality, content freshness, and internal linking. Use when the user asks "will this rank", "SEO check this post", "content SEO audit", or "optimize this post for search" — or proactively after a readability pass on a post that's meant to rank. For how the prose reads, use the readability-check skill; for titles and meta descriptions, use metadata-check; for site-wide technical SEO (sitemaps, structured data, canonicals), use astro-seo or static-seo.

How do I install content-seo?

Run npx skills add https://github.com/jdevalk/skills --skill content-seo in your project. The skills CLI detects the agents you use and copies the skill into the right folder. For Claude Code you can also place the skill folder at ~/.claude/skills/content-seo/ (personal) or .claude/skills/content-seo/ (project).

Which AI agents can use content-seo?

Any agent that supports the open Agent Skills format (a folder with a SKILL.md file), including Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, Windsurf, Cline, OpenCode and more.

Is content-seo safe to install?

No partner security audit is available yet. Skills can run commands and scripts, so read the SKILL.md and any bundled files before installing.

Who maintains content-seo?

It is published by jdevalk in jdevalk/skills. It has 82 recorded installs.

More from jdevalk/skills

View all →

astro-seo

jdevalk/skills

Audits and improves SEO for Astro sites. Use when the user asks to audit, set up, or improve SEO on an Astro site, or mentions head metadata, structured data, JSON-LD, sitemaps, IndexNow, Open Graph images, schema endpoints, NLWeb, hreflang, or search engine indexing in an Astro project. Produces drop-in code routed through @jdevalk/astro-seo-graph and chains into metadata-check for generated SEO strings.

Marketing & SEO500 installs

metadata-check

jdevalk/skills

Open the skill to read its SKILL.md instructions.

156 installs

readability-check

jdevalk/skills

Runs a readability audit on a blog post draft or other multi-paragraph prose, calibrated for readers who read English as a second language. Checks ten categories — overall structure and topic order, paragraph structure, opening paragraph strength, tiered sentence length, passive voice, difficult words, filler and hedging, transitions, variation, and heading hierarchy — and reports a Flesch Reading Ease score with a per-category status. Use when the user asks to check readability, run a readability pass, or asks "is this readable", or proactively as a second pass after a substantial draft is complete. Also invoked by the github-repo, github-profile, and wp-readme-optimizer skills on their generated prose. For short strings (titles, meta descriptions, taglines, bios), use the metadata-check skill instead — Flesch and paragraph-level checks don't apply to them.

Docs & Writing123 installs

github-profile

jdevalk/skills

Audits and optimizes GitHub profile pages — profile README, metadata fields, pinned repositories, stats widgets, and contribution visibility. Use this skill whenever the user asks to improve, create, review, or optimize their GitHub profile, or mentions "profile README", "GitHub bio", "pinned repos", "GitHub stats", "contribution graph", or "GitHub presence". Also trigger when someone says things like "make my GitHub look good", "I want a better GitHub profile", "help me stand out on GitHub", "set up my GitHub page", or "optimize my developer profile". Works for both personal profiles and organization profile pages.

Docs & Writing102 installs

github-repo

jdevalk/skills

Open the skill to read its SKILL.md instructions.

74 installs

static-seo

jdevalk/skills

Open the skill to read its SKILL.md instructions.

Marketing & SEO67 installs

Popular marketing & seo skills

View category →

reddit-automation

flowkit-labs/skills

Find Reddit threads where people are genuinely asking for what you offer, then draft short, genuinely helpful replies — disclosing your affiliation honestly and naming your product only when it truly answers the question. Two moves: discovery — scan the right subreddits for real needs (recommendation asks, expressed pain, competitor mentions) and rank the few threads where you can actually help; drafting — write from real experience, respect each community's self-promo rules, and keep a human in the loop to review and post. This markets on Reddit the honest way: contribute value, disclose who you are, never astroturf. Distilled from the playbook behind doany.ai's Reddit agent. Triggers on "find reddit opportunities", "reddit marketing", "reddit automation", "reply on reddit for my product", "reddit community engagement", "reddit lead gen", or any ask to turn Reddit threads into genuine, disclosed marketing replies.

Marketing & SEO1.1M installs

twitter-automation

101-skills/superpowers

Automate Twitter/X with posting, engagement, and user management via inference.sh CLI. Apps: x/post-tweet, x/post-create (with media), x/post-like, x/post-retweet, x/dm-send, x/user-follow. Capabilities: post tweets, schedule content, like posts, retweet, send DMs, follow users, get profiles. Use for: social media automation, content scheduling, engagement bots, audience growth, X API. Triggers: twitter api, x api, tweet automation, post to twitter, twitter bot, social media automation, x automation, tweet scheduler, twitter integration, post tweet, twitter post, x post, send tweet

Marketing & SEO880K installs

twitter-automation

magentosh/superpowers

Automate Twitter/X with posting, engagement, and user management via inference.sh CLI. Apps: x/post-tweet, x/post-create (with media), x/post-like, x/post-retweet, x/dm-send, x/user-follow. Capabilities: post tweets, schedule content, like posts, retweet, send DMs, follow users, get profiles. Use for: social media automation, content scheduling, engagement bots, audience growth, X API. Triggers: twitter api, x api, tweet automation, post to twitter, twitter bot, social media automation, x automation, tweet scheduler, twitter integration, post tweet, twitter post, x post, send tweet

Marketing & SEO771.7K installs

twitter-automation

qu-skills/superpowers

Automate Twitter/X with posting, engagement, and user management via inference.sh CLI. Apps: x/post-tweet, x/post-create (with media), x/post-like, x/post-retweet, x/dm-send, x/user-follow. Capabilities: post tweets, schedule content, like posts, retweet, send DMs, follow users, get profiles. Use for: social media automation, content scheduling, engagement bots, audience growth, X API. Triggers: twitter api, x api, tweet automation, post to twitter, twitter bot, social media automation, x automation, tweet scheduler, twitter integration, post tweet, twitter post, x post, send tweet

Marketing & SEO564.3K installs

product-launch-video

heygen-com/hyperframes

Turn a product or marketing URL, pasted script, or brief into a product launch / promo video — SaaS promos, feature reveals, product demos, app and company launches. Use when the user wants to market, launch, promote, or reveal a product; the default for any commercial URL. Site tours / showcases of a website route here too — the brief carries the show-it-as-is intent. Unclear → /hyperframes.

Marketing & SEO538.7K installs

twitter-automation

skills-shell/superpowers

Automate Twitter/X with posting, engagement, and user management via inference.sh CLI. Apps: x/post-tweet, x/post-create (with media), x/post-like, x/post-retweet, x/dm-send, x/user-follow. Capabilities: post tweets, schedule content, like posts, retweet, send DMs, follow users, get profiles. Use for: social media automation, content scheduling, engagement bots, audience growth, X API. Triggers: twitter api, x api, tweet automation, post to twitter, twitter bot, social media automation, x automation, tweet scheduler, twitter integration, post tweet, twitter post, x post, send tweet

Marketing & SEO453.7K installs