Product AI Visibility & Ranking — evaluate how AI search engines (ChatGPT, Claude, Gemini, DeepSeek) recommend your product when shoppers ask buying questions. Triggers: AI visibility, product AI ranking, AI recommend, AI search, does AI mention my product.
npx skills add https://github.com/nexscope-ai/nexscope-ecommerce-skills --skill ecommerce.product-ai-visibility
Evaluate how AI search engines recommend your product to shoppers.
ALL messages, prompts, and responses in this skill MUST be output EXACTLY as written below. You are NOT allowed to:
You MUST follow this skill document as a strict script. Every user-facing message has been carefully designed. Copy them verbatim.
If the user's language is not English, translate the messages naturally but preserve the exact structure, formatting, bullet points, and bold markers.
When this skill is triggered — whether by defaultPrompt, user message, or any matching trigger phrase — you MUST immediately output the Opening message below. No exceptions.
Do NOT:
Your FIRST response after skill activation MUST be the Opening message verbatim. Nothing else.
When triggered, output the following message EXACTLY as written. Do NOT rephrase, summarize, shorten, or rewrite in your own words. Copy it verbatim:
I will evaluate how AI search engines rank and recommend your product.
Please provide your product identifier (any one):
I will auto-research your product details and set up the evaluation.
IMPORTANT: The message above MUST be sent word-for-word. Do NOT add greetings like "I'd be happy to help". Do NOT remove or merge any bullet options. Do NOT change the wording. Output it exactly then wait.
Do NOT ask multiple questions upfront. Wait for user to provide ONE identifier.
Agent actions (no user interaction needed):
Step A: Detect URL type
/dp/BXXXXXXXXX or /gp/product/BXXXXXXXXX), then go to Step B.Step B: Amazon URL handling (ASIN-based)
Amazon blocks WebFetch. Do NOT call WebFetch on Amazon URLs. Instead:
Step C: Non-Amazon URL handling
→ Call WebFetch with the URL.
→ If WebFetch returns product content (name, price visible): extract and proceed to step 2.
→ If WebFetch fails or returns incomplete content (no price, partial HTML):
→ If WebFetch completely fails AND no product name can be determined:
"Please provide the product name/listing title and brand — this platform doesn't allow direct page access, so I'll research your product via search instead."
CRITICAL: Price accuracy
CRITICAL: Product Identity Precision
Here is what I found for your product:
Product: [name]
Brand: [brand]
ASIN: [asin if available]
Category: [category]
Price: [price by channel, e.g. "$999 (official) / $1,099 (Amazon)" — list each channel separately so user can verify]
USPs:
Competitors:
Channels: [channel1, channel2, ...]
Target Customer: [target users]
Use Scenarios: [core scenario]
AskUserQuestion to show a selection card:Question: "Is this product information correct?"
Options:
If user selects "Yes, proceed" → go directly to Auto-Generate Profile + Run
If user selects "No, needs changes" → ask: "Please tell me which specific fields need to be corrected (e.g. price, competitors, USPs). I cannot proceed without accurate product information."
After user provides corrections → update fields, show updated card, ask again with the same selection card.
After user confirms (selects "Yes, proceed"):
Default engines: ALL (ChatGPT + Claude + Gemini + DeepSeek). Do NOT ask user which platforms to test.
python3 scripts/profile_builder.py with the structured product info to generate:profiles/<slug>/product.mdprofiles/<slug>/queries.csv (auto-filled from template)profiles/<slug>/query_rules.md> "Starting the AI visibility evaluation now. This will take approximately 15-20 minutes as I query multiple LLMs and analyze their responses. I will send you the full report when it is ready."
run_in_background: true with timeout: 600000 (10 min) for capture and eval steps to avoid prompt timeout. Do NOT run these as foreground commands. # Step 1: Capture (MUST use run_in_background, timeout: 600000)
cd <workdir> && python3 -m scripts.cli --base-dir . capture --profile <slug> --engines chatgpt,claude,gemini,deepseek
Wait for background task to complete. Check output: if success rate < 50%, retry failed engines.
# Step 2: Normalize (fast, can run foreground)
cd <workdir> && python3 -m scripts.cli --base-dir . normalize --profile <slug> --run <run_id>
# Step 3: Eval (MUST use run_in_background, timeout: 600000)
cd <workdir> && python3 -m scripts.cli --base-dir . eval --profile <slug> --run <run_id>
Wait for background task to complete. If eval has failures, run eval again (it auto-resumes).
# Step 4: Analyze (fast, can run foreground)
cd <workdir> && python3 -m scripts.cli --base-dir . analyze --profile <slug> --run <run_id>
# Step 5: Report (fast, can run foreground)
cd <workdir> && python3 -m scripts.cli --base-dir . report --profile <slug> --run <run_id>
CRITICAL TIMEOUT RULES:
run_in_background: true and timeout: 600000.mcp__nexscope_upload__nexscope_upload_file. Save the returned URL. cd <workdir> && python3 scripts/send_report_email.py "<product_name>" "<workdir>/data/runs/<slug>/<run_id>" "<report_url>"
Replace <product_name> with the actual product name, <workdir>/data/runs/<slug>/<run_id> with the actual run directory path, and <report_url> with the uploaded report URL.
When presenting the completed report to the user, you MUST:
preaggregate.json## [Product Name] — AI Visibility Report
### Key Metrics
| Metric | Result |
|--------|--------|
| AI Mention Rate | XX% (mentioned in X of Y responses) |
| Average Position | #X.X (when mentioned) |
| Primary Recommendation Rate | XX% (named as top pick) |
| LLMs Tested | ChatGPT, Claude, Gemini, DeepSeek |
| Questions Tested | X buyer queries across 6 intent types |
### Highlights
- [1-2 sentence verdict: is the product visible? is it being recommended as #1?]
- **Strongest LLM**: [LLM] (XX% mention rate)
- **Weakest LLM**: [LLM] (XX% mention rate)
- **Top competitor**: [name] (appears in XX% of responses)
### Top Priority Actions
1. **P0**: [most important action from Next Steps]
2. **P1**: [second priority]
3. **P2**: [third priority]
### Full Report
View online: [AI Visibility Report](upload_url)
Download: [attached file above]
preaggregate.json (mention_rate, avg_position, engine_stats, top_competitors)"If you would like to add custom queries, adjust the test questions, or re-run with different settings, just let me know."
Each profile has 3 files in profiles/<name>/:
product.md — product info, competitors, target usersqueries.csv — shopping queries covering 6 intent typesquery_rules.md — query distribution rules| Category | Description | Example |
|----------|-------------|---------|
| discovery | Broad product search | "best [category] 2026" |
| comparison | Product vs product | "[product] vs [competitor]" |
| purchase_advice | What should I buy | "what should I buy for [need]" |
| alternatives | Looking for alternatives | "alternatives to [competitor]" |
| platform_specific | Platform-specific | "best [category] for Amazon sellers" |
| trust_validation | Is it worth it | "is [product] worth it 2026" |
| Command | Purpose |
|---------|---------|
| capture | API collection from AI engines |
| normalize | Standardize response format |
| eval | Evaluate recommendation quality |
| report | Generate HTML report |
| run | capture + normalize + eval pipeline |
/root/.claude/skills/geo-eval-ecommerce/
/root/.claude/nexscope/workspace/geo-eval-ecommerce/
Take nexscope-ai/ecommerce.product-ai-visibility from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.