GrowSail未建档
中
← GrowSail

API & MCP

把 GrowSail 的竞品情报接进 Claude、ChatGPT、Cursor、n8n。60 个工具,同一套能力既能在网页点,也能让 AI 直接调。

快速开始

  1. 拿 key —— 下面「API key」里点一下创建(明文只显示一次)。
  2. 连客户端 —— 服务地址 https://growsail.ai/api/mcp,认证方式是请求头 x-api-key。
  3. 直接说人话 —— 「帮我拆一下 drsquatch.com 在投的广告角度」,AI 会自己依次调用 get_brand_ads → tag_brand_ads → brand_tags_summary。
不需要 key 的用法:在 growsail.ai 网页里用 竞品情报,登录即可,走的是同一批工具。API key 只给 外部 AI 客户端用。

API key

我的 API key

读取中…

接入各客户端

Claude(网页/桌面版 · 自定义连接器)

设置 → Connectors → Add custom connector

名称GrowSail
MCP Server URLhttps://growsail.ai/api/mcp
请求头x-api-key: gsk_你的key

Claude Code / Claude Desktop

Claude Code 一条命令:

claude mcp add growsail "https://growsail.ai/api/mcp" -t http -H "x-api-key: gsk_你的key"

编辑 claude_desktop_config.json:

{
  "mcpServers": {
    "growsail": {
      "command": "npx",
      "args": ["-y", "mcp-remote", "https://growsail.ai/api/mcp",
               "--header", "x-api-key:${GROWSAIL_KEY}"],
      "env": { "GROWSAIL_KEY": "gsk_你的key" }
    }
  }
}

Cursor / VS Code / Windsurf

~/.cursor/mcp.json(或工作区 .cursor/mcp.json):

{
  "mcpServers": {
    "growsail": {
      "url": "https://growsail.ai/api/mcp",
      "headers": { "x-api-key": "gsk_你的key" }
    }
  }
}

ChatGPT

设置 → Apps → 开发者模式 → Create app:URL 填 https://growsail.ai/api/mcp,认证选 Custom header,填 x-api-key。

n8n

用 MCP Client节点:Transport 选 HTTP Streamable,Endpoint 填 https://growsail.ai/api/mcp,Header 加 x-api-key。适合做定时竞品监控 → 变动推 Slack/飞书。

自建 / 本地 stdio

克隆仓库后本地跑(不计费,用本机 .env):

npx tsx mcp/server.ts        # stdio
npm run intel -- list         # CLI 列出全部工具
npm run intel -- get_brand_ads domain=craftdlondon.com limit=40

工具清单 · 60

这张表由 mcp/tools.ts 的注册表自动生成,和线上完全一致。 只读标记的工具不扣 credits。

库浏览

拆解沉淀下来的店铺库 / 广告库 / 品牌卡片墙 / 上次拆解,只读不花钱

工具名作用credits
get_teardown免费无限读上次拆解(只读库,免费)
给域名,一次取回库里已沉淀的画像 / 在投广告与指标 / AI 标签汇总 / 落地页 / 增长快照,外加三样纯计算的:timeline(近 180 天在投广告日曲线,从每条广告的起止日期反推,缺开始日期的条数单列)、countries(投放国家,不是流量来源;source=dsa 是欧盟披露的实测,store / tld 是推断,confidenceCn 里写明)、revenue(预估月营收 = 月访问量 × 转化 2–10% × 客单价,客单价优先取店铺免运费门槛,basisCn 是完整算式;缺访问量或缺客单价时不给数,原因在 revenueNoteCn)。不打标、不扣 credits;唯一的外网请求是给最多 4 个还没解析过的落地页读一次 Shopify 公开 JSON(免费),没拆过返回 ok:false。品牌页再次打开同一家时用它,只有点「重新拆解」才跑 get_brand_ads 等真抓取工具。
0
browse_stores免费无限店铺库浏览
店铺库多维筛选浏览:关键词 / 流量桶 / 建站平台 / 价格带 / 商品数 / 币种 / 归属国 / 语言 / 主题 / 安装的 App(可含可排)。返回值带 facets 分面计数。不发外网请求,免费。每家店可接 profile_store 深拆。
0
browse_ads免费无限全局广告库
所有拆解过的品牌沉淀的广告汇成一个库,跨品牌浏览。久投优先(久投=大概率赚钱),可按媒体类型/最少投放天数/关键词(含 AI 标签)筛。免费。
0
analyzed_brands免费无限拆解历史
拆解过的品牌列表(24h 内重拆读缓存,免费)。做「我拆过的品牌」和对比页的数据源。
0
brand_cards免费无限已入库品牌卡片墙
拆解过的品牌一次拼成卡片:名字 / 在投广告数 / FB 粉丝 / 商品数 / 价格中位 / 品类 / 建站年份(带方法)/ 上次月访问量估算 / 品牌热度 5 年曲线 / 预估月营收(= 访问量 × 转化 2–10% × 客单价,客单价优先取店铺免运费门槛,算式在 revenue.basisCn;缺输入的卡没有这个字段)/ 投放国家(卡片墙只到「按店铺或域名后缀推断」这一档)。全部读库,免费;Trustpilot 不抓取。做品牌拆解首屏卡片墙的数据源。
0

① Meta 广告

按品牌/关键词拉在投广告;花费与触达仅欧盟广告可得

工具名作用credits
find_meta_page免费无限找品牌的 Facebook Page
输入店铺域名,找到它的 Facebook Page(先看店铺页脚链接,再用 Ad Library 关键词反查)。
0
search_meta_ads搜 Meta 广告库
按关键词 / 品牌域名 / Page URL 搜 Meta(Facebook+Instagram)在投广告。返回文案、素材、起投日/持续天数、落地页、同款数。花费/触达仅对触达过欧盟的广告可得(AU/US/SEA 广告没有)。每次调用消耗 5 credits。
5
get_brand_ads拉某品牌全部在投广告 + 指标 + 汇总
给域名,拉该品牌 Facebook Page 的在投广告(24h 缓存),附页内 Ad rank / scaling / momentum 指标与品牌级汇总(媒体占比、每日上新曲线、主力落地页、最长投放)。
5

② 广告指标

页内排名、放量判定、动量、品牌级汇总(纯计算,不花钱)

工具名作用credits
rank_brand_ads免费无限品牌广告页内排名 / 放量 / 动量
基于已入库广告计算每条广告的页内 rank、Top%、scaling(同款≥阈值或近 7 天新同款≥3)、momentum(rising/stable/dropping)。注意:是 page 内排名,不是全网。
0
brand_ads_summary免费无限品牌广告汇总面板
媒体占比、近 90 天每日上新、主力落地页 Top10、投放国家、最长投放 Top10、近 7/30 天新上数。
0

③ TikTok 广告

Creative Center 头部广告(需配备用 actor)

工具名作用credits
tiktok_top_adsTikTok Creative Center 头部广告
按国家/行业/周期看 TikTok 官方 Creative Center 的 Top Ads(只有头部,不是全量;延迟 2–4 天)。SEA 市场(SG/MY/TH/VN/PH/ID)覆盖。
2

④ 店铺与竞品

技术栈画像、按品类发现、找同品类竞品

工具名作用credits
profile_store免费无限店铺画像(主题/Pixels/Apps/商品/价格带/上线年份/Trustpilot/社媒)
对任意 Shopify 店做技术与经营画像:主题与是否 headless、追踪像素(Meta/TikTok/GA4/GTM/Pinterest/Snap/Klaviyo…)、第三方 App、商品数与价格带、最新上架、collection 数、上线年份(Wayback)、Trustpilot(可能被拦截)、社媒链接与 Facebook Page。
0
discover_stores按品类发现 Shopify 店铺
来源:本地 atlas(5.8K 店 + CrUX 流量档)、Meta 广告落地页反查(投广告的店=活跃店)、crt.sh(常不可用)。不追求全网,追求“我这个品类值得看的 200 家”。
3
find_similar_stores找竞品
找同品类竞品。两条路径:本地已画像店 + atlas 按品类打分(品类是硬门槛,不同品类一律不返回);本地池不够时,用该店的品类关键词去 Meta 广告库反查「在投同类产品的广告主」——那才是真竞品。deep=true 强制走广告反查(消耗 4 credits)。
4

⑤ 增长信号

可复查的增长指标,替代不可验证的营收估算

工具名作用credits
store_growth_signals增长信号仪表盘(可复查,替代营收估算)
商品数/上新/畅销更替/collection/Trustpilot/上线年份/像素与 App 数 + 广告侧(若已入库:在投数、30 天上新、最长投放),每项带证据 URL 与 30 天变化。includeEstimate=true 才附带低置信营收量级(明确 caveat:可被 Sales Shield 类插件污染)。
1

⑥ 落地页

页面类型、offer 结构、与规则库对照

工具名作用credits
analyze_lander拆一个落地页
页面类型(listicle/advertorial/VSL/quiz/PDP/collection/bundle/presell…)、标题公式、社证位置、offer 结构、CTA 数、倒计时、保证、与 GrowSail 规则库对照(缺失的 offer.* / review.* / conversion.* 规则)。可选截图(需本机 playwright)。
2
list_brand_landers某品牌的主力落地页(从广告反推)
把该品牌已入库广告的落地 URL 归一化聚合,按指向广告数排序,并拆解前 N 个(类型分布 typeCounts)。
4

⑦ 邮件逆向

竞品邮件 flow 与发送节奏(需配收件域名)

工具名作用credits
register_trap_inbox给品牌建一个陷阱邮箱并订阅
分配 brand@<INTEL_INBOX_DOMAIN> 地址,尝试订阅 newsletter /(可选)注册账号与弃购,之后通过 /api/intel/inbound-email 收信。数据从 Track 当天开始积累,通常 2–4 周才有 flow 全貌。
1
get_email_insights免费无限品牌邮件 Flows / Campaigns / 发送日历
已捕获邮件的自动化 flow(welcome / abandoned-cart / winback…按 dayOffset 对齐)、90 天 campaign 数、周均、周几分布、最近主题。
0

⑧ AI 拆解

角度/钩子/情绪打标签、中英认知差解释、为你的产品复刻

工具名作用credits
tag_brand_ads给品牌广告打标签(Persona/Angle/Hook/Emotion/Desire/USP/Offer/Concept/Awareness)
用 Claude 批量给已入库广告打结构化标签并给出中文一句话解读。已打过的复用。
3
brand_tags_summary免费无限品牌标签汇总(Top Personas / Angles / Hooks / Emotions / Desires / USPs / Concepts / Awareness / Offers)
WH 的 Top Personas 面板;每个桶带数量、占比、广告 id 和来自 angles 词典的中文解释。
0
explain_angle免费无限解释一个角度/钩子/情绪(中英认知差)
查 rules/intel/angles.yaml:这是什么、为什么对美国/澳洲消费者有效、亚洲卖家常见误区、英文模板。找不到就说找不到。
0
adapt_ad_for_my_product借竞品角度为我的产品生成创意包(不代投)
选竞品广告(默认该品牌跑最久的几条)+ 我的产品描述 + 目标市场 → 英文 primary text×3、标题×5、15–30s 口播脚本、中文拍摄清单、落地页检查清单(引用规则 id)、中文 rationale。
5
get_ad_tags免费无限读取已打标签
按广告 id 读取已存标签(不触发模型)。
0

广告收藏与相似

Saved Ads、同款变体、页内排名历史

工具名作用credits
save_ad收藏一条广告
把广告存进 Saved Ads(含快照,原广告下线也还能看)。可加备注与文件夹。
1
unsave_ad取消收藏
从 Saved Ads 移除。
1
list_saved_ads免费无限我收藏的广告
列出收藏的广告(可按品牌域名/文件夹过滤)。
0
similar_ads只读相似广告(同款/变体)
同一 Page 内与该广告同组(同文案前 120 字或同落地页)的其它广告——即它的同款变体,用来判断放量深度。
1
ad_rank_history免费无限广告页内排名历史
该广告在页内排名的历史轨迹(每次 refresh_brand 记一个点,从加入跟踪当天开始积累)+ 当前排名。
0

⑨⑩ TikTok Shop 与趋势

商品现场调研、关键词搜索趋势

工具名作用credits
tiktok_shop_researchTikTok Shop 商品/店铺现场调研
粘贴 TikTok Shop 商品或店铺 URL,抓公开页面解析标题/价格/已售文案/评分/店铺。不建销量库;页面有验证墙时提示改用备用数据源或 Kalodata/EchoTik。
2
keyword_trend关键词搜索趋势
Google Trends(非官方接口,常限流;可配 SERPAPI_KEY 备用):近 12 个月/5 年曲线、增长%、形态(exponential/rising/flat/declining/spike/seasonal)、相关查询。
1

⑪ 竞品跟踪

每日快照 diff → 变动 + 任务建议

工具名作用credits
track_brand开始跟踪一个竞品
加入跟踪列表并建立首次基线快照(店铺画像 + 广告汇总;可选落地页)。以后 refresh_brand / cron 会产出变动与任务建议。
1
untrack_brand停止跟踪
从跟踪列表移除(历史快照保留)。
1
list_tracked_brands免费无限跟踪列表
当前跟踪的竞品(可按 folder 过滤)。
0
refresh_brand刷新一个竞品并产出变动
重新拉画像 + 广告(+落地页/邮件),与上次快照 diff:新广告/放量/收缩/新落地页类型/换主题/新像素/新 App/改价/上新/Trustpilot 跃升/邮件频率;每条变动附任务建议。
6
brand_digest免费无限变动摘要 + 任务建议
近 N 天所有(或某个)跟踪品牌的变动列表,以及去重后的任务建议(可直接挂到 12 周计划)。
0

体检与账务

店铺体检、状态自检、credits 余额

工具名作用credits
intel_status免费无限Intel 状态自检
查看数据源配置(广告库 / Claude / Supabase / 邮箱域名等)、存储后端与本 key 的 credits 余额。排错先调这个。
0
credits_balance免费无限credits 余额
本 key 的套餐、余额、已用与各工具单价。
0
scan_store免费无限GrowSail 店铺体检(代码规则层)
跑 GrowSail 检测引擎的代码规则(信任/文案/转化/报价/一致性 20 条),返回 findings 与分数;AI 规则层与矛盾扫描请走网页 /api/scan。
0

其它

google_ads_summary免费无限店铺的 Google 广告概况(透明度中心)
Google Ads Transparency Center 公开数据(**只含在欧盟 / 土耳其投放的广告**,只在美国投的不在内):这家店的广告主在欧盟的 Google(搜索 / YouTube / 展示网络)上有多少条素材、近 30 天还在展示的有多少、视频 / 图片 / 文字各几条、首末投放日期、投放地区。按品牌名对上广告主(数据里没有落地页域名,抽查约九成对),返回广告主全称与透明度中心链接供核对;没有素材内容。每月刷新,只读、免费。
0
google_ads_top免费无限Google 广告主榜(透明度中心)
我们店铺库里在欧盟投 Google 广告最多的店(公开数据只含欧盟 / 土耳其,只在美国投的不在内):按近 30 天在投素材数 / 累计素材 / 视频素材排,可按投放地区(US、GB、EEA…)、Google 行业分类(Apparel、Home & Garden…)、关键词筛。每行给广告主全称、格式占比、投放地区、首末投放日期、透明度中心链接。只有统计、没有素材内容;按品牌名对上,约九成准。每月刷新,只读、免费。
0
store_bestsellers免费无限店铺爆款榜与商品变化(每日追踪)
店铺自己「按销量排序」页的前 48 名,和 1 天前 / 7 天内最早一天比的名次变化(往上冲的就是在爆),以及近 30 天的新上架 / 改价 / 断货 / 补货 / 下架。东京服务器每天记一次;目前追发现页前排约 2,000 家 Shopify 店和拆过的店。Shopify 不公开销量,只给名次和变化,不推算件数。只读、免费。
0
workbench_summary免费无限我的工作台摘要(只读,免费)
读当前 API key 所属账号的工作台:我的店与分数曲线、任务卡完成情况、角度测试(在测 / 放大 / 关停 / 最佳 CPP)、追踪的品牌、套餐与本月用量。给 Claude 的 performance-report / campaign-plan 等写周报、排计划用;key 没有绑定账号时返回 ok:false。
0
ad_collections免费无限精选合集清单(免费)
列出「可以直接抄的」精选合集:口播钩子可直接抄 / 差评里的机会 / 正在加预算的 / 用集合页打价位带 / 久投常青每角度一条 / 测款期新面孔。每个带「为什么值得看」和「抄的时候要注意什么」。
0
collection_ads免费无限某个精选合集的内容(免费)
取合集里的广告,**每条附针对这一条的中文理由**(不是整个合集共用一句)。合集和「预设筛选」的区别是它有选取规则(例如每个角度只取一条)并且用得上只有我们有的派生数据(口播钩子、评论挖出的对手软肋、集合页价位带)。纯计算,零成本。
0
ad_transcript免费无限某条视频广告的口播稿(只读库,免费)
读已转录的口播稿:全文、语言、时长,以及开头一句(前 3 秒的钩子,复刻时最该看的)。口播稿只在**抓取当下**转 —— Meta 的视频链接带签名,实测不到一周就 403,所以库里没有就只能重抓那个品牌。
0
store_reviews免费无限抓一家店的买家评论(只读公开数据,免费)
读 Judge.me / Yotpo 印在公开页面上的评论,或商品页 JSON-LD 里的 review。返回评分、原文、商品名、日期与全店总数。零成本、不经供应商;只有装了这两个评价 App(或页面带 JSON-LD review)的店读得到,读不到如实返回 ok:false。
0
mine_reviews从买家评论里挖广告角度
把评论归纳成四样东西:①**买家自己用的英文词**(中国卖家常写成别的同义词,这是中英认知差最具体的一面)②他们为什么买(对应角度词典的 key)③他们抱怨什么(= 对手软肋,附「你可以怎么打」)④能直接进广告的原话。采样时差评全取、好评抽样。所有引用的原话都经逐字校验,模型改写过的会被丢掉。
3
propose_avatars复刻前置:提 6 个 Avatar 让人挑 3 个
根据竞品广告的 persona / desire 标签与我的产品,提 6 个可投放人群画像(至少 2 个竞品已验证、2 个空白人群)。人挑,AI 不挑。
1
compare_conclusion对比结论:一句话说谁角度最广、谁落地页最弱、谁最像你
输入 2–4 个品牌的对比数据(profile / summary / traffic / tags,前端对比页已有),输出中文一句话结论 + 每个品牌强弱项 + 先抄谁。
1
brand_partnership_ads免费无限对手在用谁:从在投广告里挖达人合作
扫该品牌入库广告的文案,挖 @handle / 平台主页链接 / 合作标记(paid partnership、#ad、collab…),按达人聚合并给出投放天数。纯文本挖掘,免费。
0
update_saved_ad免费无限给收藏的广告换板 / 改标签
换收藏板、改标签或备注。boardId 传空字符串 = 从板里移出但保留收藏。纯读写本地库,免费。
0
list_boards免费无限我的收藏板(多级)
列出收藏板,已铺平成「父在前、紧跟自己的子板」的顺序,每个带 depth 与板内广告数,前端不用再建树。
0
create_board免费无限新建收藏板
新建一个收藏板;给 parentId 就建成子板,最多 3 级。同一层不允许同名。
0
delete_board免费无限删收藏板
删板。子板上提一级,板里的广告只解除归属、不跟着删 —— 收藏是用户自己的资产。
0
browse_store_events免费无限店铺变更流
店铺库最近发生了什么:换平台 / 经营状态变化 / 新装或卸载 App / 价格带移动 ≥20% / 90 天没上新(疑似关店)/ 恢复上新,外加近 24 小时新发现的店(按流量排)。返回各类型计数 + 最新事件列表。事件来自爬虫复检,只读、免费。
0
traffic_overview流量走势与量级
诚实版的 Semrush 流量面板:品牌搜索热度曲线(Google Trends,0-100 相对值)+ CrUX 官方数据(是否收录、设备占比)+ atlas 排名桶。不给「10.1K 访问」这种估算数字——那类数字全是模型猜的,误差 2-5 倍。
1
benchmark_store和我的店对标(两边体检 + 每维最大差距)
给对手域名,同时体检对手和「我的店」(当前选中的店;或用 myDomain 直接填自己的域名),两边并排,每个维度只给一处最大差距:behind = 我命中、对手明确通过的规则(取扣分最大的一条);ahead = 反过来;even = 没有一边独有的问题;insufficient = 有一边这一维规则跑得太少,数据不足不比。「对手通过」只认规则判为通过的,没跑到的规则不算。体检结果按域名缓存 7 天,refresh:true 强制重跑。之后用 benchmark_action_cards 出行动卡。key 没绑定账号时返回 ok:false。
6
get_benchmark免费无限读已存的对标结论(只读,免费)
读上一次 benchmark_store 的结果:两边分数、差距区块、已生成的行动卡(任务卡当前状态)与「别抄」清单。不体检、不调用 AI;没对标过返回 ok:false。
0
benchmark_action_cards对标 → 行动卡(事实 / 影响 / 动作 / 验证)
基于已存的对标结论(先跑 benchmark_store)+ 库里已有的对手拆解(广告 / AI 标签 / 落地页 / 增长信号,没拆过就只用体检事实),生成最多 5 张行动卡并直接写进任务卡(source=benchmark,从 12 周计划的当前周排起),另给一个「别抄」清单(只存在对标记录里)。每张卡的 factRefs 都指回证据 id(rule: / gap: / ad: / tag: / url: / signal: / est: / profile:),引用不到证据的卡会被丢掉;可信度按引用证据里最弱的一档:实测 measured / 推算 inferred / 猜测 guessed。同一份对标结论重复调用直接返回上次的卡,regenerate:true 才重出。
5

REST API

不想接 MCP 的话,同一批工具也能用普通 HTTP 调,请求体是 { tool, args }。

curl -X POST https://growsail.ai/api/intel/run \
  -H "x-api-key: gsk_你的key" \
  -H "content-type: application/json" \
  -d '{"tool":"get_brand_ads","args":{"domain":"craftdlondon.com","limit":40}}'

返回统一是这个壳,失败也不例外:

{
  "ok": true,
  "data": { ... },
  "meta": {
    "source": "meta_ad_library",
    "fetchedAt": "2026-08-25T...",
    "confidence": "high",
    "note": "本次 40 条 + 库内历史 0 条;花费/触达仅欧盟广告可得"
  }
}
端点用途
POST /api/intel/run调用任意工具(key 或登录会话)
GET /api/intel/run列出全部工具与单价
POST /api/mcpMCP Streamable HTTP 端点
GET /api/intel/store?domain=店铺画像 + 广告概况(Chrome 扩展在用)
GET /api/intel/brand?domain=品牌情报聚合页
POST /api/intel/keys创建 API key(登录会话)

MCP 原始协议探测(列工具):

curl -X POST https://growsail.ai/api/mcp \
  -H "x-api-key: gsk_你的key" \
  -H "content-type: application/json" \
  -H "accept: application/json, text/event-stream" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}'

计费

每次调用扣 credits,单价见上面工具表。纯计算与读库的工具标了 只读,免费无限。credits 余额可随时用 intel_status 查看。

只读 / 纯计算工具免费无限(上表标「免费无限」)。其余工具按上表扣 credits。

套餐月费初始 credits追踪品牌完整拆解 / 月达人平台补齐 / 月
免费¥010011—
增长工作台¥26810,000103030
团队版¥58850,00030∞∞
品牌 / 代运营版¥1688200,000100∞∞

完整套餐对比 → · Skills(按任务打包的工作流)→

Chrome 扩展 · 广告采集器 在 Meta 广告库刷到值得抄的,右上角一点就存进你的收藏板,同时进公共广告库。把仓库里的 extension/ 文件夹用 chrome://extensions → 开发者模式 → 加载已解压的扩展程序装上,再在它的选项页填一把 API key。每个人存的都让公共库变大 —— 这是我们唯一追得上别家规模的办法。
省钱提示:同一品牌 24 小时内重复拉取走缓存, 不扣 credits。默认抓 40 条已足够看出角度与落地页分布; find_similar_stores不传 deep时只查本地池,完全免费。

数据边界(先说清楚,免得你误判)

  • 花费与触达只有欧盟广告有。 Meta 依 DSA 只公开触达过欧盟的广告的触达/国家/付款方;美国、澳洲、东南亚的广告一个数字都没有——这是平台限制,不是我们抓不到。
  • 我们不做营收估算。 竞品「月流水多少」无法验证,且能被 Sales Shield 一类插件投喂假数据。我们给的是 store_growth_signals:在投广告数、上新节奏、评论增速等每一项都能点开看原始证据的信号。
  • 页内排名不是全网排名。 rank_brand_ads的 #3/100 指该广告主页面内部的相对强度。
  • AI 标签是判断不是事实。 角度/钩子/情绪由模型给出, confidence恒为 medium,请人工复核。
  • 数据源不可用时诚实报错。 TikTok Creative Center 需签名、TikTok Shop 有验证墙、Trustpilot 对脚本 403——这些情况返回 ok:false并给出可执行的 hint,绝不编造。
  • 跟踪从当天开始积累。 排名历史与变动 diff 需要至少两次快照,第一次 Track 只有基线。