关于 vs-and-alternatives
vs-and-alternatives 是为产品团队提供的比较内容编写技能,帮助在代码仓库中创建竞品对比、替代方案和细分用户清单页面。它要求核实并引用竞品事实,也呈现竞品更适合的情形。
主要功能
- 01收集并核实竞品切换原因
- 02生成对比、替代方案和细分清单
- 03加入价格计算与迁移步骤
- 04为竞品主张记录来源和日期
- 05创建页面路由并接入导航
- 06规划 AI 搜索提示词跟踪
适用场景
- 01为销售流失竞品创建对比页面
- 02发布有具体事实支撑的替代方案页面
- 03针对特定技术栈或用户群制作选型清单
MCP 相关
README 提及 AI SEO Tracker 的 MCP 端点,用于跟踪比较词和替代方案词在 ChatGPT、Perplexity 与 Gemini 中的引用情况。
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ illyism/ seo-skills --skill vs-and-alternatives安装后在 Claude Code 中输入/vs-and-alternatives确认已加载。
详细介绍
VS 与替代方案
你要交付对比页面,为买家提供一个具体的切换理由,也为 AI 助手提供可引用的具体事实。输出是在用户的代码库中新增路由,并将其接入导航。没有路由的计划就算执行失败。
为什么泛泛的对比页面会失败
写着“两个工具都很棒,具体取决于你的需求”的页面不会带来任何转化。买家早就知道这两个工具的存在。他们访问 /vs/,是因为现用工具的某些方面令他们不满,而页面却从未指出这种痛点。
同一个页面在 AI 搜索中也会失败。ChatGPT、Perplexity 和 Gemini 会引用具体、可核查的陈述:“BillStack 的免费套餐最多允许 5 个活跃客户”“invoicekit.io 可将每张发票导出为 CSV 和 UBL”。两边都是绿色勾号的功能对照表不包含任何可引用的事实,因此模型会引用其他来源。
此技能交付的每个页面都必须包含至少 5 条有来源、具体且关于竞争对手的事实,以及至少 3 种竞争对手更适合的情况。
需要收集的输入
PRODUCT: name, domain, pricing page URL, seat model
COMPETITORS: 3-8 names the user loses deals to (ask; do not guess from memory)
REPO: framework (Next.js app/pages, Astro, Hugo, plain MDX), content dir, nav + footer component paths
EXISTING: any current /vs/, /compare/, /alternatives/ routes (consolidate, never duplicate)
如果代码库中已有对比页面,先阅读其中 1 个,并沿用其组件、frontmatter 和 CTA 样式。
决策树:选择要发布的页面类型
Competitor X
├── Buyers search "[X] alternative" or "[X] alternatives" (check SERP or keyword tool)
│ └── Ship /[x]-alternative (buyer is leaving X; lead with switching triggers + migration)
├── Buyers search "[You] vs [X]" or "[X] vs [You]"
│ └── Ship /vs/[x] (buyer is choosing; lead with the 2-sentence verdict + pricing math)
├── Both queries have demand
│ └── Ship both. /vs/ = head-to-head. /-alternative = list of 4-7 options with you at the position you honestly earn.
├── Neither query has demand AND X is a minor player
│ └── Skip. Fold X into a persona listicle row instead.
└── You lose to X on every trigger you found
└── Do not ship. Fix the product or pick a different competitor. A dishonest page gets caught in one Reddit thread.
第 1 步:挖掘公开的不满和切换诱因
切换诱因是客户弃用某个工具时反复出现且可核实的原因。仅从公开来源收集。
来源,按优先级排序
- **G2、Capterra、Trustpilot:**筛选过去 12 个月内的 1 星和 2 星评价。
- GitHub Issues(针对开发工具和开放核心产品):按反应数从高到低排序,筛选
is:open,并使用bug或feature request标签。 - Reddit:
site:reddit.com "[X]" (switched OR leaving OR alternative OR "moved away")。 - **竞争对手自己的定价页面、更新日志和文档:**核实限制和价格的权威来源。
值得关注的诱因类别
PRICING seat minimums, per-seat jumps at 5/10/25, forced annual billing, surprise overage fees
LOCK-IN auto-renewal with 60-90 day cancel windows, no data export, proprietary formats
LIMITS API rate limits, monthly send/request caps, row limits, storage caps
SUPPORT ticket-only support on lower tiers, multi-day response times
PRODUCT missing integration, abandoned feature, breaking API changes, slow UI
验证关卡(诱因发布到页面前必须全部通过)
- **反复出现:**过去 12 个月内至少有 3 条相互独立的投诉。单条愤怒评价只是个案,发布后可能招致纠错请求。
- **当前有效:**今天要对照竞争对手的实时定价页面或文档进行确认。竞争对手会修复问题,过时的说法会损害页面的可信度。
- **陈述事实,而非情绪:**将“他们的支持烂透了”改写为“Starter 套餐仅提供电子邮件支持(来源:定价页面,核查日期:2026-11-12)”。
- **注明来源:**为每条陈述保存 URL 和核查日期。
起草前,将调查结果写入 seo/competitors/[x].md:
# [X] switching triggers
Checked: 2026-11-12
| Trigger | Category | Evidence (URL) | Count (12 mo) | Verified on live page |
| --- | --- | --- | --- | --- |
| 3-seat minimum on Team plan | PRICING | [pricing page] | 7 reviews | yes |
| No CSV export on Starter | LOCK-IN | [docs], [G2 x4] | 4 reviews | yes |
Where X wins (keep these honest):
- Larger template library
- SOC 2 Type II report available on request
- Native Salesforce sync
第 2 步:构建诚实的对比页面
/vs/[x] 的必需章节顺序
-
H1:
[You] vs [X]:[一句话说明差异]。示例:invoicekit.io vs BillStack:固定价格 vs 按客户分级定价。 -
2 句结论,前 50 个词内。 第 1 句说明何时选择 X。第 2 句说明何时选择你。先说竞争对手的优势,能让页面其余内容更可信;AI 检索对开篇内容的权重最高。
如果你需要内置薪资管理和移动端工时追踪器,请选择 BillStack。如果你的客户超过 10 个,并且需要固定价格、CSV 和 UBL 导出,以及所有套餐都提供的 API,请选择 invoicekit.io。
-
切换触发因素表(来自步骤 1,共 4-8 行):
触发因素 | [X] | [You] | 来源。 -
按 1、5 和 25 个席位计算价格(或按产品的实际计价单位计算:客户、发送次数、事件数)。显示每种团队规模必须选择的套餐及其月费。
团队规模 [X] 套餐 + 月费 [You] 套餐 + 月费 每年差额 1 个席位 Starter,$19 Solo,$12 $84 5 个席位 Team(至少 3 个席位),$95 Team,$40 $660 25 个席位 Business,$625 Team,$150 $5,700 在表格下方注明定价网址和核查日期。不要进行任何对竞争对手或你有利的取整。
-
“10 分钟内从 [X] 切换”: 使用编号列出迁移步骤,注明在 X 中的准确导出路径,以及在你的产品中的导入路径。如果无法在 10 分钟内完成导入,请写出实际所需时间。
-
[X] 更适合的情况: 从“X 的优势”列表中列出 3 条或更多要点。本节为必需内容。
-
FAQ: 从 Reddit 和评论内容中挖掘 3-5 个问题,并按照买家的提问方式来表述。
-
CTA: 使用与迁移相符的主要操作(
从 [X] 导入),而非通用的开始使用。
/[x]-alternative 的差异
- 开篇用通俗语言说明最重要的 2-3 个切换触发因素,然后列出备选项。
- 列出 4-7 个真实的备选项。针对页面的目标触发因素,如实安排你的产品排名。
- 每个条目都使用一个完整且独立的内容块:结论、适用对象、权衡点、起始价格。独立内容块可避免 LLM 将其他工具的缺点归到你的产品名下。
硬性规则
- 竞争对手相关声明必须有来源。如果价格未经核实,请写“查看 [X] 的定价页面”并添加链接。
- 不得使用竞争对手的标志或其应用 UI 截图。请使用文字和你自己产品的截图。原因:竞争对手标志和 UI 截图可能导致商标下架,也会在竞争对手更新 UI 时迅速过时。
- 未在撰写当天查阅对方文档前,绝不可声称竞争对手缺少某项功能。
title不得超过 60 个字符,description为 140-160 个字符;两者都必须包含[You] vs [X]或[X] alternative。原因:超过 60 个字符的标题会在 Google 搜索结果页面中截断差异点。
第 3 步:按微型用户画像扩展列表文章
为什么有效
AI 助手会在搜索之前,将买家的聊天内容改写成若干具体的检索查询。创始人输入“我正在用 Next.js 构建一个独立 SaaS,需要发送密码重置邮件”,触发的搜索更接近 best transactional email API for Next.js indie SaaS,而不是 best email API。许多成熟的列表文章都在争夺宽泛查询。具体的查询往往没有专门的页面,因此,一篇诚实、具体的列表文章可能在几周内就会被检索并引用。
用户画像选择流程
- 根据注册数据、销售通话或入门问卷答案,列出产品实际面向的买家情境:技术栈、团队规模、行业、预算、合规需求。
- 组合成
Best [Category] for [Persona/Stack]候选标题。示例:Best form backend for static Astro sites(formspark.dev)Best invoicing software for freelance developers in the EU(invoicekit.io)Best deployment platform for Rails side projects(deployfast.dev)
- 对每个候选项进行筛选:
Candidate persona listicle
├── You are a top-3 honest pick for this persona
│ ├── No dedicated page ranks for the exact phrase → SHIP (highest priority)
│ └── 1-3 thin pages rank → SHIP, out-specific them with stack-level detail
├── You are a fit but not top-3
│ └── Ship only if you can name a sub-case where you win; otherwise skip
└── You are not a real fit
└── Skip. A listicle that ranks you #1 for a persona you don't serve gets you cited once and churned forever.
- 每批发布 4-6 篇面向特定用户画像的列表文章。每批超过 6 篇会稀释每篇文章所需的研究质量。
Persona listicle 结构
- H1 与 persona 短语完全一致。
- 开篇段落:用 1 句话点明首选工具,并说明它为何特别适合该 persona。
- 包含 4-7 款工具,每款均采用上述独立区块格式,并提供一项针对该 persona 的具体细节(
works with Next.js Server Actions without an SDK)。 - 添加“How we picked”部分,列出对该 persona 最重要的 3-5 项标准。
第 4 步:发布路由
与仓库使用的框架保持一致。对于 Next.js App Router 仓库,默认结构如下:
content/vs/[x].mdx # one file per competitor
content/alternatives/[x].mdx
content/best/[persona-slug].mdx
app/vs/[competitor]/page.tsx # generateStaticParams over content/vs/*
app/[slug]/page.tsx # or app/alternatives/[x]/page.tsx if the repo avoids root catch-alls
app/best/[slug]/page.tsx
每个对比文件的 Frontmatter:
---
title: "invoicekit.io vs BillStack: Flat Pricing vs Per-Client Tiers"
description: "BillStack wins on payroll. invoicekit.io wins on flat pricing, CSV and UBL export, and API access on every plan. Pricing math at 1, 5, and 25 seats."
competitor: BillStack
competitorUrl: https://billstack.io
checkedAt: 2026-11-12
sources:
- https://billstack.io/pricing
---
然后配置发现入口:
- 在页脚添加一个
Compare栏,列出所有/vs/和/-alternative页面。页脚链接可让网站上的每个 URL 都能爬取每个对比页面。 - 添加
/vs索引页,列出所有对比内容,并为每项附上 1 行结论。 - 从
/pricing页面添加 1 个上下文链接,指向定价差距最显著的对比页面。 - 如果仓库是手动生成 sitemap,则将每个新 URL 添加到其中。
- 运行仓库的构建流程,并在交接前修复任何路由错误或 MDX 错误。
输出
每次运行都必须产出:
-
包含来源和核查日期的
seo/competitors/[x].md触发文件。 -
为每个获批的
/vs/、/-alternative和/best/页面新增 MDX 和路由文件。 -
页脚、
/vs索引页和/pricing链接的修改。 -
聊天中的汇总表:
| Route | Target query | Facts cited | Where competitor wins (count) | Status |
跟踪并扩大影响
- AI SEO Tracker(MCP:
https://aiseotracker.com/api/agent/mcp):将[You] vs [X]、[X] alternative以及每个Best [Category] for [Persona]短语添加为跟踪提示词,以查看 ChatGPT、Perplexity 和 Gemini 何时开始引用新页面,以及它们改为引用了哪些第三方列表。 - LinkDR(
https://linkdr.com/SKILL.md):争取让你的产品出现在 AI 答案已经引用的独立“[X] alternatives”列表文章中。你自己的/[x]-alternative页面只是一个来源;被列入 5 个独立榜单,才能让模型默认推荐你。
不要
- 写“这两款工具都很棒”或任何没有明确胜者的结论
- 发布早于核查日期的竞品声明
- 在你并不服务的 persona 列表文章中把自己排在第 1 位
- 发布缺少“[X] 的优势”部分的对比页面
- 只停留在内容计划阶段,而不创建路由文件