seo-fix-apply

seo-fix-apply is a skill for Claude Code from Hainrixz/claude-seo-ai. It costs 91 tokens per session (1,843 once invoked), scanned A, original, MIT.

A controlled procedure for applying confirmed search-engine and AI-search fixes to a website or other target. It includes checks before editing, backups, previews, verification, and optional publishing or rollback.

In plain words
What is it for?
Use it in an SEO fix workflow to apply approved changes to local or remote targets, verify the result, and publish only after a separate confirmation.
Why use it?
It reduces the risk of applying an incorrect SEO change or publishing it too soon. The procedure also keeps a record of what changed and supports restoring earlier content.

Skill for Claude Code

Written for Claude Code: allowed-tools in frontmatter. Also seen: mentions Claude Code.

Part of the claude-seo-ai plugin — 34 skills, 5 agents, 1 hook shipped together

Good fit Use it in an SEO fix workflow to apply approved changes to local or remote targets, verify the result, and publish only after a separate confirmation.

Compare 6 skills from other repositories ↓
Install with agentmods
npx agentmods add skills/hainrixz/claude-seo-ai/seo-fix-apply
Install

Getting it into your agent

One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.

Any agent
npx skills add Hainrixz/claude-seo-ai --skill seo-fix-apply
Clone the repo
git clone --depth 1 https://github.com/Hainrixz/claude-seo-ai

Made for: Claude Code.

Or install claude-seo-ai, the plugin that ships this one along with the rest of its 34 skills, 5 agents, 1 hook.

Wrote this? Show the measurements

A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.

agentmods badge for seo-fix-apply

README.md
[![agentmods](https://agentmods.dev/badge/skills/hainrixz/claude-seo-ai/seo-fix-apply/github.svg)](https://agentmods.dev/skills/hainrixz/claude-seo-ai/seo-fix-apply)
Your own site
<a href="https://agentmods.dev/skills/hainrixz/claude-seo-ai/seo-fix-apply"><img src="https://agentmods.dev/badge/skills/hainrixz/claude-seo-ai/seo-fix-apply/github.svg" alt="Measured on agentmods" height="20"></a>

Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.

agentmods 80×15 button for seo-fix-apply

Your own site · 80×15
<a href="https://agentmods.dev/skills/hainrixz/claude-seo-ai/seo-fix-apply"><img src="https://agentmods.dev/badge/skills/hainrixz/claude-seo-ai/seo-fix-apply.svg" alt="Reviewed on agentmods" width="80" height="20"></a>
Per session 91 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 1,843 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 1 finding. A grade says what 26 rules found in the file — not that it is safe. Third-party audits
  • NVIDIA SkillSpector warn 7 Sept 2026
SkillSpector: 1 finding, up to high

These are SkillSpector’s own severities. On a checked sample its high-severity flags on skills were ~96% false positives — a documented command, a public API, a “never do X” rule — so we show them as a caution to read, not a verdict. Why →

  • high Prompt Injection · line 13
    Hidden instructions were detected in comments or invisible text. These could contain malicious directives. Manual review is recommended.
    Fix: Audit all comments and invisible characters. Remove any instructions that direct the agent to perform unauthorized actions. Use plain, reviewable content.
How audits are shown
Origin original No closer match found in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5.1 $0.00091 $0.01843
Opus 5 $0.00046 $0.00922
Sonnet 5 $0.00018 $0.00369
Haiku 4.5 $0.00009 $0.00184

Measured 4d ago against content hash 48823e709af3, method: parsed. Prices are Anthropic first-party input rates as of 2026-09-11, from the pricing page.

Security

Grade A, and why

seo-fix-apply scanned grade A with 1 finding against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 4d ago.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Makes network callslowCapability

Not a fault in itself. Listed so you know the mod talks to something, and to what.

route around. **Never** emulate an adapter with ad-hoc `curl`, `wp`, or `shopify` commands — the
skills/seo-fix-apply/SKILL.md · 96 lines

How it starts

The opening of the file, as written. The whole thing — 96 lines — stays where its author put it; the contents beside it link to each section on GitHub.

seo-fix-apply (writer protocol)

This file is the authoritative protocol; agents/seo-fixer-writer.md carries the in-context summary — keep the two in sync. Edit, Write and Bash are deliberately not pre-approved here: Claude Code's native diff and command prompts must reach the user for every write, and the guard-write / guard-bash hooks run on top of them.

You apply what was already confirmed. You do not decide what to fix, you do not improve a diff you were given, and you never widen the change set.

Inputs

The fix command dispatches you with a JSON envelope:

key meaning
RUN_DIR <DATA>/fix/runs/<id>/plan.json, manifest.json (with confirmed[]), preview/, before/, after/, log.ndjson
SCRIPTS_DIR absolute <plugin_root>/scripts/. Run scripts as node "<SCRIPTS_DIR>/<x>.mjs" … with the literal path — never a ${...} token, never a relative scripts/ path
DATA plugin data root. Backups live here, never in the user's project
PROJECT_ROOT the user's project (local targets only)
confirmed_change_ids[] the ONLY change ids you may apply
tickets { <change_id>: <ticket id or the exact command> } — one-shot, 15-minute, issued after the user confirmed
publish false by default; true only after a second confirmation, and it carries its own ticket
force allows writing into a dirty git tree
return "JSON array of findings only"

Read plan.json for the Change records. A change you were not given an id for does not get applied, previewed again, or "helpfully" included.

Protocol (per confirmed change, in order)

  1. Git pre-flight. git status --porcelain in PROJECT_ROOT. Dirty tree and no force: true ⇒ do not write: return the finding with its pre-fix status and skipped_dirty_tree in evidence.observed. Never stash, checkout or reset — the user's uncommitted work is theirs.
  2. Backup before the first write. Local files: copy to <DATA>/backups/<run-id>/<relative path> (the adapter's apply does this itself; when you write with Edit/Write, do it yourself with mkdir -p + cp before the first edit of that file). Remote resources: the adapter writes before/<change_id>.json. Record nothing in the project.
  3. Local diffs — Edit/Write, not the adapter. For target.kind: file changes whose strategy is AUTO (html-head, front-matter, config-file, liquid), apply the previewed diff with Edit (or Write for a new file) so the native diff prompt and guard-write engage. Apply exactly the preview: same insertion point, same text, no reformatting, no extra content, TODO:<field> placeholders preserved verbatim. A JSX/TSX or other non-AUTO strategy arrives as skipped_unready from the adapter and is yours to apply by hand — still exactly as previewed.
  4. Remote targets — the adapter CLI, with its ticket. Anything whose target.kind is not file goes through node "<SCRIPTS_DIR>/adapters/<adapter>.mjs" apply --run "<RUN_DIR>" --change <id> --ticket <ticket> --data "<DATA>" --json. The ticket is required and one-shot; a missing or expired one is a real failure, not something to route around. Never emulate an adapter with ad-hoc curl, wp, or shopify commands — the guard-bash hook blocks them and it is right to. If no adapter exists for that target, keep the finding's pre-fix status with skipped_unready plus the manual path from preview/.
  5. Idempotent. If the change is already present (the JSON-LD block, the marker comment, the field's value), make no edit: report status: pass with skipped_idempotent in evidence.observed. Re-running must never duplicate or corrupt content.
  6. Re-verify. Run verify --run "<RUN_DIR>" --change <id> and the finding's verification.reproduce verbatim. Record the assertion's pass/fail. A stale CDN or page cache is pending_cache in evidence.observed with status: warnnever a claimed pass. A local framework target with no dev server is a source-level pass: say "source verified, re-audit after deploy" rather than claiming the live page changed.
  7. Publish — only with publish: true and its own ticket. Publishing is what makes staged work public (shopify theme publish, a Webflow site publish, a HubSpot draft push-live). It is a separate op with a separate confirmation and a separate ticket: node "<SCRIPTS_DIR>/adapters/<adapter>.mjs" publish --run "<RUN_DIR>" --ticket <publish ticket> --data "<DATA>". Without both, leave the change staged and say so in the finding. Never pass --allow-live, --live or -a to the Shopify CLI: that path is blocked and publishing has its own op.
  8. Log. One NDJSON line per change in <RUN_DIR>/log.ndjson (change id, files or resource, result). Redact anything credential-shaped; the adapters' own logging already does.
  9. On failure, stop widening. A failed change is reported as fail with the error text; do not retry with a different method, a different file, or a broader edit. Rollback is rollback --run "<RUN_DIR>" --change <id> and it needs its own ticket.

Read the full file on GitHub · 96 lines

Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. 4d ago Changed · +64 lines · +4 tokens per session 48823e709af3
  2. 5d ago First seen · 32 lines · 87 tokens per session scan A f266b1f36faa

Subscribe to this mod's changes

seo-fix-apply is a skill published in the GitHub repository Hainrixz/claude-seo-ai (59 stars, last pushed 4d ago), licensed MIT. It adds 91 tokens to every session and 1,843 once invoked, about $0.0005 per session on Opus 5. A static security scan graded it A with 1 finding (makes network calls). No closer match exists in the catalogue, so it is treated as the original; first seen 2026-09-06.

Related

Other skills, from other repositories

linkedin-post

Draft a daily LinkedIn post for S M Moshiur Rahman about business development, grounded in a real problem he hit that day and real numbers from OmniRank. Use when he says "linkedin post", "today's post", "draft a post", or describes friction he wants written up.

bemoshiur/OmniRank · 63 tokens

audit

Use when asked to audit a site's SEO, check AEO or answer-engine readiness, diagnose why a page is not ranking or not being cited by AI, verify structured data, or run pre-deploy discoverability checks on built HTML.

bemoshiur/OmniRank · 49 tokens

geo-artifacts

Use when asked to generate or fix llms.txt, llms-full.txt or facts.json, make a site citable or ingestible by ChatGPT, Claude, Perplexity or Gemini, or publish machine-readable ground truth for AI crawlers.

bemoshiur/OmniRank · 54 tokens

web-optimization

Audit or generate web content optimized for traditional search (SEO), AI generative answer engines like ChatGPT/Perplexity/Google AI Overviews (GEO), and answer engines / featured snippets / voice (AEO). Use when the user asks to improve a page's ranking or AI-citability, run an SEO/GEO/AEO audit of a URL or file, add…

staksoft/geo-seo-aeo-skill · 105 tokens

fire-your-seo-agency

A procedure for improving how a website appears in search engines and how AI answer systems find and cite it. It covers search, answer-engine, generative-AI, and Naver visibility.

leopard627/fire-your-seo-agency · 162 tokens

ansvisor-aeo-coach-standalone

Standalone (no-MCP) version of the Ansvisor AEO Coach. Use this only when the user's Claude client cannot connect to the Ansvisor MCP server (e.g. claude.ai web without a Connector configured). Fetches live data from the Ansvisor REST API directly with the user's API key via code execution. For clients that support…

ansvisor/ansvisor · 124 tokens