· 1 observation
Technical updates · 1
Package or technical metadata updated
View technical comparison →Ruslan Saifullin v0.3.0
AI SEO audit and fix
From the developer
Not specified in the available declarations: limitations, pricing & account requirements.
Audit this site for AI search visibility.
Developer declarations; not independently tested. Listing last checked Nov 7, 2026. Package observed Nov 6, 2026.
From the marketplace listing
Checks whether AI search engines can find, read and cite your website. Scores a site on 26 checks for AI search visibility (AEO and GEO), from the site's code in your repository or from a live URL. Then fixes what it can in your code: JSON-LD schema markup, llms.txt, robots.txt rules for AI crawlers, and title, description and Open Graph tags. Every change is shown as a diff before it is written, and nothing is committed for you. It runs local Node scripts, so it needs an environment that can run Node 18 or newer, such as Codex. URL mode sends GET requests only to the site you name.
Language: English · Automatically detected from descriptions.
Exact text from the indicated source. A mention alone does not establish support for your task.
Checks whether AI search engines can find, read and cite your website. Scores a site on 26 checks for AI search visibility (AEO and GEO), from the site's code in your repository or from a live URL. Then fixes what it can in your code: JSON-LD schema markup, llms.txt, robots.txt rules for AI crawlers, and title, description and Open Graph tags. Every change is shown as a diff before it is written, and nothing is committed for you. It runs local Node scripts, so it needs an environment that can run Node 18 or newer, such as Codex. URL mode sends GET requests only to the site you name.
· 1 observation
Package or technical metadata updated
View technical comparison →Find competitors to follow as you develop your plugin.
Audits one public web page for on-page SEO problems and checks whether search engines and AI assistants can read it. Read-only: it never ...
Shared terms: audit, seo, crawler, description
SEO audits, Google Search Console and GA4 insights, keyword and backlink data from DidYouSEO.
Shared terms: audit, seo, fix, graph
Writrex SEO audits public webpages in ChatGPT and turns technical SEO signals into clear, prioritised actions. Analyse page titles, meta...
Shared terms: audit, seo, description, meta
Site SEO and AI Crawler Audit checks public web pages and reports what they publish right now: SEO tags, redirects, AI crawler rules, AI ...
Shared terms: seo, audit, crawler, description
Audit how your own website performs in search, on Semrush, Ahrefs, DataForSEO and Serpstat data. Name a domain and it checks technical an...
Shared terms: audit, seo, cite, fixe
---
name: audit
description: AI SEO audit of a website - the AEOTester checklist for answer engine optimization (AEO) and generative engine optimization (GEO), 26 checks and 133 points - with a scored report in aeotester-report.md. Audits the site code in the current repo, or a live site when given a URL. Use when the user asks to audit a site or URL for AI search visibility, AI SEO, AEO, GEO, llms.txt, schema markup, AI crawler access or agent readiness.
argument-hint: "[site-folder | https://site.com[/page]] [--pages N] [--all]"
allowed-tools: Read, Glob, Grep, Bash(node --version), Bash(node ${CLAUDE_PLUGIN_ROOT}/skills/audit/scripts/audit.mjs:*)
---
# AEOTester audit
Audits a site against the AEOTester rubric and writes `aeotester-report.md` in the current directory (for a folder: in that folder).
Two ways to run it:
- **Repo mode** (no argument, or a folder): reads the site's files in this repo. No network requests.
- **URL mode** (an `http://` or `https://` URL): fetches the live site, the way an AI crawler sees it.
- A page URL (`https://site.com/blog/post`) audits that one page, plus the site-wide files (robots.txt, llms.txt, sitemap, `/.well-known/`).
- The homepage (`https://site.com`) audits a sample: the homepage, the pages linked from the header, nav and footer, and a listing page plus one item from each section (blog, docs, products...), about 25 pages at most. One page per template finds nearly every issue without crawling the whole site.
- `--pages N` changes the sample size. `--all` audits every page found (up to 500, or `--pages N`).
- Requests go to that site only, are polite (a few at a time, with timeouts) and skip pages that robots.txt disallows. The README lists exactly what is fetched.
## Other hosts (Codex, ChatGPT)
The commands below start with Claude Code's plugin-root variable. A host that does not substitute it (Codex, ChatGPT) leaves it as literal text: replace that prefix with the absolute path of the plugin root, which is the folder two levels above the folder that contains this SKILL.md (it holds `skills/`). Do the same for the skill-folder variable, which is the folder that contains this SKILL.md. Write the resolved path into the command; never run it with the variable unexpanded. Slash commands such as `/aeotester:audit` are Claude Code syntax: elsewhere the user asks for this skill by name or mention, and `$ARGUMENTS` means whatever folder, URL or flags their request names (leave it out if there are none). The scripts need Node 18+ and a shell, so the skill only works in a host that can run them.
## Rules
- Read-only. The only file written is the report, and the script writes it. Never edit site files here; fixes belong to `/aeotester:fix`.
- Repo mode stays inside the current repo and makes no network requests.
- URL mode only fetches the site the user named. Use it only when the user gave a URL or asked for the live site.
## Steps
1. **Check Node.** Run `node --version`. The scripts need Node 18 or newer. If Node is missing, tell the user the audit needs Node 18+ and stop.
2. **Run the audit.** Pass the user's arguments through (`$ARGUMENTS`, default `.`):
```bash
node ${CLAUDE_PLUGIN_ROOT}/skills/audit/scripts/audit.mjs $ARGUMENTS
```
It prints a short summary and writes `aeotester-report.md`.
3. **Handle the mode the summary reports:**
- **"No build output found"** (Astro, Next.js, Hugo, Eleventy, Vite): the audit reads built HTML because that is what crawlers and agents receive. Ask the user whether to run the build command it names. Only run it if they say yes, then run the audit again. If they say no, offer URL mode on the deployed site instead.
- **Report-only** (WordPress or another database-backed CMS): page content lives in the database, so the repo cannot be scored. Say so plainly and offer to audit the live site with `/aeotester:audit https://their-site.com`. Do not try to edit anything.
- **No pages found**: in repo mode, ask where thePreview of the first 4,000 characters. Read full instructions →
Referenced files: 41 — file references are metadata, not package contents.
---
name: fix
description: Apply AEOTester AI SEO fixes in the current repo - JSON-LD schema markup, llms.txt, robots.txt AI crawler rules, Content Signals, meta and social tags, heading hierarchy, language and viewport tags. Shows a diff and asks before writing anything, then re-audits to show the score change.
argument-hint: "[check-id ...] [--yes]"
disable-model-invocation: true
allowed-tools: Read, Glob, Grep, AskUserQuestion, Bash(node --version), Bash(node ${CLAUDE_PLUGIN_ROOT}/skills/audit/scripts/audit.mjs:*), Bash(node ${CLAUDE_PLUGIN_ROOT}/skills/fix/scripts/page-facts.mjs:*), Bash(node ${CLAUDE_PLUGIN_ROOT}/skills/fix/scripts/generate-llms-txt.mjs:*)
---
# AEOTester fix
Fixes the problems `/aeotester:audit` found, in the site's source files.
## Other hosts (Codex, ChatGPT)
The commands below start with Claude Code's plugin-root variable. A host that does not substitute it (Codex, ChatGPT) leaves it as literal text: replace that prefix with the absolute path of the plugin root, which is the folder two levels above the folder that contains this SKILL.md (it holds `skills/`). Do the same for the skill-folder variable, which is the folder that contains this SKILL.md. Write the resolved path into the command; never run it with the variable unexpanded. Slash commands such as `/aeotester:audit` are Claude Code syntax: elsewhere the user asks for this skill by name or mention, and `$ARGUMENTS` means whatever folder, URL or flags their request names (leave it out if there are none). The scripts need Node 18+ and a shell, so the skill only works in a host that can run them.
## Non-negotiable rules
1. **Diff first, then ask.** Before the first Edit or Write, print every planned change as a unified diff in your reply and get the user's approval. `--yes` in the arguments means the user approved in advance: you skip the question, never the diffs. Print them first, then apply.
2. **Never commit, push, stash or change git state.** Never delete files.
3. **Only touch files inside the current repo.** Never edit build output (`dist/`, `_site/`, `out/`, `.next/`, Hugo's `public/`). Fix the source that produces it.
4. **Never invent facts.** Names, people, job titles, credentials, prices, ratings, dates, addresses and social profiles come from the repo (`page-facts.mjs`) or from the user. If a fix needs a fact you do not have, ask, or skip that fix and say why.
5. **Policy choices belong to the user:** which AI bots to allow, and the Content-Signal values (search, ai-input, ai-train). Propose a default and ask.
6. **No network calls.**
7. **Reference only assets that exist.** An `og:image`, logo or icon URL must point at a file in the repo (check with Glob) or one the page already uses.
8. **Tools:** read files (recipes included) with Read, find them with Glob and Grep. Use Bash only for the `node` commands below, written exactly as shown (in Claude Code, an unquoted plugin path) so they match the pre-approved commands. Other shell commands may be denied, and a denied command does not mean `node` is unavailable.
## Steps
### 1. Audit
Check `node --version` (Node 18+ needed). Then run:
```bash
node ${CLAUDE_PLUGIN_ROOT}/skills/audit/scripts/audit.mjs . --no-report --json -
```
Note the score as `total / available` (for example 71/127): `available` already leaves out checks that do not apply. Read `site.mode` and `site.stack.id`:
- `report-only` (WordPress and other CMSs): stop. Content lives in the database; point the user to the fix list in `aeotester-report.md` (run `/aeotester:audit` first if it is missing). Do not edit files.
- `needs-build`: ask whether to run the build command from `site.notes`. Only build if they agree, then audit again.
- `nextjs`: every fix is assisted. Show the diffs as proposals and apply only the ones the user explicitly approves. Never use `--yes` shortcuts for Next.js.
- `full`: continue.
### 2. Choose what to fix
- With check ids in the arguments: fix exactly those, auto or assisted.
- WithouPreview of the first 4,000 characters. Read full instructions →
Referenced files: 29 — file references are metadata, not package contents.
Publisher declarations from the archived package. These are separate from our research and the live service's terms.
Package observed Nov 6, 2026.
plugins_6ac860d3ec748191a09c8ec8f87e8cca
Download plugin data (JSON)Plugin details: freshly prepared. Prepared . Refreshed when plugin data changes or after 6 hours. Your account and Follow status are live.