用途:针对单个 App,在其自身核心关键词的搜索结果中找出排名高于自己的竞品,产出可研究的竞品清单与对比报告。触发方式为用户要求竞品调研,如“找竞品”“找对手”“跑竞争对手分析”。
主要能力:采用纯搜索结果(SERP)方式,不使用 RAG 或语义检索。脚本负责数据层逻辑,Claude 负责关键词分词与一次批量相关性判断。流程分三阶段:先运行 python3 scripts/competitor_research.py analyze "<app>" 生成 phase_a(原始元数据与 primary_genre_id);再由 Claude 对标题、副标题、关键词分词,并运行 python3 scripts/competitor_research.py rank "Sticky Note Pro" --tokens "便签,桌面便签,sticky note,memo" 生成 phase_b(最多 25 个候选);最后由 Claude 对候选做批量相关性过滤,生成最终 JSON 与 Markdown 报告。
使用方式:运行前需先执行 python3 scripts/appmate_config.py check,退出码非 0 则停止并提示配置 AppMate 凭据。输入为 data/apps_full.json 与 data/sales_cache.json,输出 data/phase_a_competitors_<slug>.json、data/phase_b_competitors_<slug>.json、data/competitors_<slug>.json、data/competitors_<slug>.md,并将完整 Markdown 粘贴回对话。可用 show-a、show-b 查看中间结果。
适用场景:ASO 日常报告发现应用掉出关键词前 20 名时,查看谁取代了位置;也可用结果竞品为后续 aso-optimize 关键词调整提供种子。
限制:LLM 分词无法无人值守运行,不兼容 cron;搜索结果每小时变化,7 天排名缓存对边缘竞品可能过时;应用若只有不超过 2 个不同关键词,无法达到 MIN_OUTRANK_COUNT=3,结果为空;边缘案例的丢弃原因在不同运行间可能变化。关键参数包括 SERP_LIMIT=200、MIN_OUTRANK_COUNT=3、MAX_CANDIDATES_BEFORE_LLM=25、TOP_N_RIVALS=10、MIN_RIVALS_FOR_REPORT=3。目前尚无下游技能消费 competitors_<slug>.json。