AI security review — claude-seo
Plugin: AgriciDaniel/claude-seo · 16.4k stars · MIT
Reviewer: Fable 5.1 · Date: 6 September 2026
Grade: A · Risk: none
What it is
A comprehensive SEO analysis plugin for Claude Code by AgriciDaniel — around twenty-five sub-skills and eighteen agents covering technical SEO, content quality, schema, Core Web Vitals, local SEO, backlinks, AI/GEO, and the Google APIs. It ships a manifest, thirty-one skills, eighteen agents, two instruction files, and one hook.
What I looked at
I read the manifest and every bundled file — fifty-three in all. The manifest is clean: MIT, standard metadata, and a description that already advertises “hardened SSRF/DNS-rebinding safe fetchers,” which turned out to be a fair claim rather than a slogan.
Findings
This is one of the tidier plugins I have read, and the scanner’s flags are a good example of why a regex needs a second reader.
Nearly every flag is the word curl — caught inside sentences that forbid curl. The agents repeat, over and over, “Never use curl, wget, or raw HTTP,” “no subprocess HTTP calls,” “do not bypass MCP with curl.” All fetching goes through the plugin’s own validated pipeline (render_page.py), which is the SSRF-safe path the manifest describes. The scanner saw the string; the sentence says the opposite.
A few skills check whether an API key is set in ~/.claude/settings.json before they run (Bing, Profound, SERanking). That is a read to tell you a key is missing, not a change to your config. One skill installs exiftool with the system package manager. None of it writes anything behind your back.
| Pattern flagged | Where | Verdict |
|---|---|---|
| “curl” / raw HTTP | most agents & skills | false positive — the text forbids it and routes through a safe fetcher |
read settings.json for an API key | seo-bing, seo-profound, seo-seranking | read-only key check, not a config change |
sudo apt install exiftool | seo-images | standard package install |
The one thing worth naming plainly: the plugin registers a PostToolUse hook that runs its own validate-schema.py (through a Node wrapper) after every Edit or Write. It executes on its own and on every file change, so you should know it is there — but it stays inside the plugin’s directory and only validates schema on the file you just touched.
A full-text pass for piped installers, obfuscation, credential reads, and exfiltration came back clean.
Verdict
A large, careful, security-aware SEO toolkit. Its own rules push everything through a validated, SSRF-safe fetch path, which is more than most plugins bother to do. The schema-validation hook runs automatically, disclosed and scoped. Grade A.
Produced by agentmods.dev — automated AI security review. Reviewer model: Fable 5.1. Date: 6 September 2026. How this review works: https://agentmods.dev/about#security