ai-visibility
Measure and improve whether AI assistants (ChatGPT, Claude, Gemini, Perplexity, Copilot) recommend a brand, and fix the reasons they do not.
Skill by sgpopov
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/sgpopov-ai-visibility
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: design, security, marketing, research
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
- Runs as
- Python package
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/ai-visibility
What's inside
- Skill name
ai-visibility- Description
- Measure and improve whether AI assistants (ChatGPT, Claude, Gemini, Perplexity, Copilot) recommend a brand, and fix the reasons they do not. Use this skill whenever someone asks about AI visibility, AEO, GEO, answer engine optimization, generative engine optimization, "AI SEO", brand mentions or share of voice in AI answers, whether ChatGPT/Claude/Gemini recommends their site or product, why a competitor shows up in AI answers instead of them, llms.txt, robots.txt rules for GPTBot / ClaudeBot / PerplexityBot / Google-Extended, schema markup or JSON-LD for AI citation, tracking AI referral traffic in GA4, Bing indexing for ChatGPT, or auditing a page so assistants can quote it. Use it even when the request is vague ("are we showing up in ChatGPT?", "how do I get AI to mention my company?", "check if AI knows about my site") — it turns those into a measured audit with a fix list.
- License
- MIT
- Instructions
- 250 lines in SKILL.md · view on GitHub
Before installing
- Ships executable scripts
Agent Skills spec issues
- name: "ai-visibility" does not match folder "ai-visibility-skill"
Files (21)
- .gitattributes
- .gitignore
- EXAMPLES.md
- LICENSE
- README.md
- SKILL.md
- brand.example.json · assets/
- prompts.example.json · assets/
- schema.example.json · assets/
- content-rubric.md · references/
- diagnosis.md · references/
- playbook.md · references/
- prompt-research.md · references/
- technical-fixes.md · references/
- workspace.md · references/
- aeo.py · scripts/
- aeo_selftest.py · scripts/
- aeolib.py · scripts/
- aeoreport.py · scripts/
- aeoweb.py · scripts/
- package.py · scripts/
SKILL.md (first lines)
# AI visibility ## What this is for Search used to rank pages; assistants recommend brands. When someone asks ChatGPT "which is the best X for Y", they get three to five names and pick from that list. There is no second page. If the brand is not in the list, it does not exist for that buyer. Three facts shape everything below: - **Answers vary by model.** Overlap between the domains ChatGPT and Perplexity cite is roughly 11%. Checking one assistant tells you almost nothing. - **The description matters as much as the mention.** When a model names a brand, it also characterises it in one sentence the brand did not write. That sentence is the positioning buyers act on. - **Most of the signal is off-site.** Around 85% of brand mentions in AI answers trace back to third-party sources, not the brand's own pages. Rewriting the homepage alone rarely moves the number. This skill measures the current state, then produces a ranked list of fixes. It runs locally on plain files — no account, no database, no API key required. ## Workflow Work through these in order. Steps 1-5 are the measurement; 6-8 are the fix. Announce which step you are on so the user can follow along. Everything lives in a **workspace directory** — create it inside the user's project (or wherever they ask), never in a temp folder they will lose. All scripts are `python3` with the standard library only. Invoke them as `python <skill>/scripts/aeo.py -w <workspace> <command>`. ### 1. Set up the brand ```bash python scripts/aeo.py -w ./ai-visibility init example.com --name "Example" ``` Then interview the user and fill in `brand.json`. Getting this right decides whether the whole audit is accurate: | Field | Why it matters | |---|---| | `domain` | The strongest mention signal. Bare domain, no `www`, no protocol. | | `aliases` | Other names the brand goes by, including in other alphabets. A brand called in Cyrillic will be missed without this. | | `keywords` | Distinctive product or service names that identify the brand even when its name is absent. | | `competitors` | Named rivals. Unknown competitors are discovered automatically; listing the known ones makes share-of-voice comparable across runs. | | `positioning` | One sentence: what it does, for whom, what makes it different. Used later to judge whether the model's description is right. | If the user does not know their competitors, run step 4 first with a handful of prompts — the answers will name them. ### 2. Build the prompt set This is the step most people get wrong, and it determines whether the audit is useful. Read `references/prompt-research.md` before writing prompts. The short version: buyers write ~23 words describing their situation, not 3 keywords. Brand-name prompts are easy and nearly worthless. What you want are the unbranded, situation-specific questions asked right before a decision. Generate 15-25 prompts with the user, in **their buyers' language** (not necessarily English), each tagged with `category` and `intent`. Write them to `prompts.json`. Intent drives prioritisation later, so classify honestly: `high` = close to buying, `low` = browsing. ### 3. Collect answers Three routes; pick based on what the user has. **B is the most trustworthy** because it captures what real assistants actually serve today. **A — you answer them (no setup).** Create the files, then answer each prompt yourself using web search, writing the answer into the file below the `====` line. ```bash python scripts/aeo.py -w ./ai-visibility run --models claude ``` Answer each prompt as you would for any user asking it cold: search, then give your honest recommendation. Do this *before* reading `brand.json`, and do not let the tracked brand influence the answer — otherwise the measurement is worthless. Label this run `claude` and tell the user plainly that it is one model's view, produced by the same assistant running the audit. **B — the user pastes real answers (recommended).** ```bash python scripts/aeo.py -w ./ai-visibility run --models chatgpt gemini perplexity claude ``` This creates one file per prompt × model. The user opens each assistant, asks the prompt, and pastes the full answer under the `====` line, replacing `(no response)`. Tell them to paste everything including links — citations are data. Leaving a file untouched is fine; unfilled answers are excluded from the percentages rather than counted as misses. **C — automated via OpenRouter.** One API key covers every model. ```bash export OPENROUTER_API_KEY=sk-or-... python scripts/aeo.py -w ./ai-visibility collect --models chatgpt gemini perplexity ``` Roughly $0.02-0.10 per prompt × model with the default lightweight models. Warn the user before spending their money, and quote the count: 20 prompts × 3 models = 60 calls. ### 4. Analyze and report ```bash python scripts/aeo.py -w ./ai-visibility analyze python scripts/aeo.py -w ./ai-visibility report ``` This scores every answer — mentioned or not, the sentence describing the brand, position in any ranked list, sentiment, competitors, cited URLs — and writes
From sgpopov/ai-kit, MIT.
More from sgpopov/ai-kit
- 0.581score
implement
sgpopov
Implement work from an existing spec or set of tickets, including testing, independent review, and a commit.
SkillAFreshness: A★ 1Claude Code +9 - 0.547score
log-analyzer
sgpopov
Analyzes application, access, and structured logs for errors, trends, anomalies, and operational evidence.
SkillBFreshness: B★ 1Claude Code +9 - 0.527score
code-review
sgpopov
Conducts multi-axis code review.
SkillBFreshness: B★ 1Claude Code +9 - 0.527score
domain-modeling
sgpopov
Build and sharpen a project's domain model.
SkillBFreshness: B★ 1Claude Code +9 - 0.516score
resolving-merge-conflicts
sgpopov
Use when you need to resolve an in-progress git merge/rebase conflict.
SkillBFreshness: B★ 1Claude Code +9 - 0.502score
to-tickets
sgpopov
Breaks a PRD into independently-grabbable issues using tracer-bullet vertical slices.
SkillCFreshness: C★ 1Claude Code +9 - 0.502score
git-guardrails-claude-code
sgpopov
Sets up Claude Code hooks to block dangerous git commands (push, reset --hard, clean, branch -D, etc.) before they execute.
SkillCFreshness: C★ 1Claude Code +9 - 0.502score
to-spec
sgpopov
Creates a spec through user interview, codebase exploration, and module design, then submit as a GitHub issue or save as a local markdown file.
SkillCFreshness: C★ 1Claude Code +9 - 0.497score
write-a-skill
sgpopov
Creates new agent skills with proper structure, progressive disclosure, and bundled resources.
SkillCFreshness: C★ 1Claude Code +9 - 0.497score
grill-me
sgpopov
Interviews the user relentlessly about a plan or design until reaching shared understanding, resolving each branch of the decision tree.
SkillCFreshness: C★ 1Claude Code +9 - 0.497score
react-best-practices
sgpopov
Provides React and Remix.js performance optimization guidelines.
SkillCFreshness: C★ 1Claude Code +9 - 0.497score
ubiquitous-language
sgpopov
Extracts a DDD-style ubiquitous language glossary from the current conversation, flagging ambiguities and proposing canonical terms.
SkillCFreshness: C★ 1Claude Code +9
Signals
- Stars
- 1
- Forks
- 0
- Open issues
- 0
- Last commit (this folder)
- Sep 27, 2026 (1 month ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- MIT
- Repository
- github.com/sgpopov/ai-kit
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from sgpopov
- 0.581score
implement
sgpopov
Implement work from an existing spec or set of tickets, including testing, independent review, and a commit.
SkillAFreshness: A★ 1Claude Code +9 - 0.547score
log-analyzer
sgpopov
Analyzes application, access, and structured logs for errors, trends, anomalies, and operational evidence.
SkillBFreshness: B★ 1Claude Code +9 - 0.527score
domain-modeling
sgpopov
Build and sharpen a project's domain model.
SkillBFreshness: B★ 1Claude Code +9 - 0.527score
code-review
sgpopov
Conducts multi-axis code review.
SkillBFreshness: B★ 1Claude Code +9 - 0.516score
resolving-merge-conflicts
sgpopov
Use when you need to resolve an in-progress git merge/rebase conflict.
SkillBFreshness: B★ 1Claude Code +9 - 0.502score
git-guardrails-claude-code
sgpopov
Sets up Claude Code hooks to block dangerous git commands (push, reset --hard, clean, branch -D, etc.) before they execute.
SkillCFreshness: C★ 1Claude Code +9
Cite this page
ai-visibility skill. Agent Mart. https://agentmart.dev/skills/sgpopov-ai-visibility (last updated 2026-10-24)