一键导入
add-competitor
Add a new competitor to the AI Visibility Tool Directory — researches the tool, generates data, takes a screenshot, and inserts into the codebase
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Add a new competitor to the AI Visibility Tool Directory — researches the tool, generates data, takes a screenshot, and inserts into the codebase
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
| name | add-competitor |
| description | Add a new competitor to the AI Visibility Tool Directory — researches the tool, generates data, takes a screenshot, and inserts into the codebase |
| argument-hint | <url> |
Add a new competitor to the AI visibility tool directory at apps/www/src/lib/competitors/data.ts.
The user will provide a URL. Follow these steps:
Important: Write objective, factual descriptions. Do not use marketing language, exaggerations, or the competitor's own promotional claims at face value. Describe what the tool does and how it works in neutral terms. Avoid superlatives like "industry-leading", "best-in-class", "revolutionary", etc. Stick to verifiable facts — features offered, platforms tracked, pricing tiers. Highlights should be factual differentiators, not praise.
Use WebFetch to read the competitor's website at $ARGUMENTS. Gather:
tracking, content, api-developer, ecommerce, seo-traditional, open-source, or otheractive, shutting-down, acquired, or betaRead the feature definitions in apps/www/src/lib/competitors/types.ts (the FEATURE_CATEGORIES constant). Based on your research, determine which features the competitor supports. Set each to true or omit it (defaults to false). The features are:
multiLlmTracking — tracks across multiple AI platforms (ChatGPT, Claude, Gemini, etc.)visibilityScore — provides an aggregate AI visibility scorecitationAnalytics — tracks citation sources in AI responsescompetitorBenchmarking — compare visibility against competitorsbrandMentionTracking — monitor brand mentions in AI responsespromptVolumeEstimates — estimated search/prompt volumessentimentAnalysis — brand sentiment in AI responsescrawlerAnalytics — track AI bot visits to your sitegeographicTracking — visibility by region/countrysocialMediaTracking — Reddit and social platform monitoringshoppingTracking — product visibility in AI shoppingmultiLanguage — multi-language supportactionRecommendations — prioritized action itemscontentGapAnalysis — detect content gaps vs competitorssiteAudits — AI site readiness auditskeywordResearch — AI keyword/prompt discoveryemailAlerts — automated alertsdataExportApi — CSV export or API accessbiConnectors — Looker Studio, NinjaCat, etc.whiteLabelAgency — white-label or agency featuresopenSource — source code availablecontentGeneration — AI content creationBe conservative — only mark features as true if you can confirm them from the website.
Extract the domain from the URL (e.g. https://www.example.com/foo → example.com). Then run:
cd apps/www && node scripts/fetch-domain-metrics.mjs "<domain>"
This returns JSON with ahrefsDR and ahrefsTraffic. Use these values in the competitor entry.
Create a URL-friendly slug from the product name (lowercase, hyphens, no special chars). For example: "Otterly.ai" → "otterly", "SE Ranking" → "se-ranking".
Run the screenshot script:
cd apps/www && node scripts/screenshot-competitor.mjs "<slug>" "<url>"
This requires SCREENSHOT_ONE_ACCESS_KEY and BLOB_READ_WRITE_TOKEN in apps/www/.env.
If the script fails, inform the user and continue with the data entry — the screenshot can be added later.
Read apps/www/src/lib/competitors/data.ts and insert the new Competitor object into the competitors array (position in this array doesn't matter for display order).
Use the same code style as the existing entries. Example entry:
{
slug: "example-tool",
name: "Example Tool",
domain: "example.com",
url: "https://example.com",
tagline: "Short one-line description of what they do",
description:
"Longer 2-3 sentence description of the tool, its approach, and what makes it notable.",
category: "tracking",
ahrefsDR: 55,
ahrefsTraffic: 1234,
status: "active",
features: {
multiLlmTracking: true,
visibilityScore: true,
citationAnalytics: true,
},
pricing: { hasFree: true, startingPrice: "$49/mo", hasEnterprise: false },
highlights: [
"First highlight",
"Second highlight",
"Third highlight",
],
},
In the same file (data.ts), find the aeoPopularityRanking array. This is a hardcoded list of slugs ordered from most popular to least popular as an AEO tool specifically. It determines both the display order in the directory and the A–F popularity grade.
Insert the new tool's slug at the appropriate position based on these criteria (in priority order):
The tiers in the ranking are:
If the tool is a large platform where AI visibility is NOT the primary product (e.g., a traditional SEO suite, analytics platform, or content tool that added AEO as a secondary feature), do NOT add it to aeoPopularityRanking. Instead, add its slug to the aeoNotApplicable set. These tools get an "N/A" grade and sort to the bottom of the directory.
Look at the tools already in each tier to calibrate where the new tool belongs. Insert the slug with a short comment explaining the placement.
Run TypeScript type checking to make sure the entry compiles:
pnpm exec tsc --noEmit
After completing all steps, tell the user:
/ai-visibility-tools/elmo-vs-<slug>