ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

从0到1用Treg搭一条SEO关键词研究流水线:注册、计费、出数全记录

从0到1用Treg搭一条SEO关键词研究流水线:注册、计费、出数全记录

从0到1用Treg搭一条SEO关键词研究流水线:注册、计费、出数全记录

【免费下载链接】tregOpenRouter for agent tools. Join community here: https://discord.gg/6mQYYfFMAn项目地址: https://gitcode.com/GitHub_Trending/treg/treg

做 SEO 的朋友都有过这样的经历:想查一组关键词的搜索量、想拉某个域名的自然排名关键词,第一反应是打开 Semrush($139/月)、Moz($99/月)或者 Ahrefs,充值、开账号、再想办法把数据导出来。为了一个 30 分钟就能做完的分析任务,先付一个月的订阅费,这大概是 SEO 工具生态里最反直觉的成本结构。treg 想解决的就是这件事——它把自己定位成 "OpenRouter for agent tools":一个 token、一个 base URL,就能按次调用数千个外部数据端点,定价从一分钱起,不需要为单次任务注册任何供应商账号。本文不讨论理论,直接带你走一遍真实流水线:注册登录、按能力搜索端点、读价格、发调用、解析 JSON、核对账单,最后把整个过程沉淀成一个可复用脚本。

一、场景选择与端点发现:先找"能做什么",再找"是谁家的"

treg 的目录(catalog)设计逻辑和传统 API 市场完全不同:它按能力(capability)组织端点,而不是按供应商。你要找的不是"Semrush 的 API",而是"某个域名的自然排名关键词"或"某个种子词的相关关键词"。在仓库的 适配器定义 里,能看到这种能力分组的落地形态:

# ---- google.keywords.ideas ---------------------------------------------------------------- dataforseo.google.keywords.ideas: accepts: [[keyword]] in: {keyword: body.keyword} out: {keywords: "tasks[0].result[0].items", count: "tasks[0].result[0].total_count"} seranking.google.keywords.ideas: accepts: [[keyword]] in: {keyword: queryParams.keyword} out: {keywords: keywords, count: total} serpapi.google.keywords.ideas: accepts: [[keyword]] in: {keyword: queryParams.q} out: {keywords: suggestions, count: "len(suggestions)"}

同一个能力google.keywords.ideas(关键词联想/拓展),背后挂了 DataForSEO、SERanking、SerpAPI 三个供应商,各自参数形态、响应结构和计费方式都不一样。这正是 treg 的设计原则:它做忠实中继(faithful relay),不在供应商之间替你悄悄切换,选择权永远在你手里。

在 CLI 里,发现过程是这样三步:

treg catalog search "keyword ideas for a domain" # 按"要做什么"找,而不是按供应商名 treg catalog get semrush.google.keywords.ideas # 参数、价格、示例响应,调用前全部可见 treg catalog get dataforseo.google.serp.organic # 同能力的其他供应商,价格并列展示

treg catalog get的输出里藏着这套系统的关键信息:每个端点的input(必填/可选参数)、cost(计费类型、单价、币种)、docs_url和调用方式。以仓库里的 Semrush 目录 为例,semrush.google.keywords.ideas是这样标注的:

cost: type: per_result value: 40 currency: unit unit: api_unit note: 40 API units per LINE returned. Send display_limit — the default is 10,000 lines = 400,000 units.

注意这个note:默认 display_limit 是 10,000 行,意味着如果你不传这个参数,一次调用就是 400,000 units。文件头部的注释还给出了更残酷的警告:"Most reports charge PER LINE RETURNED, sodisplay_limitis the cost dial"。这就是 treg 把价格和参数并列展示的用意——成本旋钮就在参数表里,读价格的时候必须连参数一起读。

同文件里semrush.web.backlinks.summary是另一个极端:type: per_call, value: 40,按请求计费而不是按行计费。对"批量对比十几个域名权威度"这种任务,它就是最便宜的选择——一个域名一次调用 40 units。目录里这种 per_result 与 per_call 的差异,是控制成本的第一层知识。

二、CLI 调用与 JSON 解析:从装 CLI 到拿到第一行数据

注册和登录在三行命令内完成,这也是 README 的 Quickstart:

curl -fsSL https://treg.to/install.sh | sh # 装 CLI 并指向官方注册表 treg login # GitHub 默认;--email 走邮件验证码;--token 用于 agent/CI treg login --email you@company.com # 纯终端登录

登录后会自动进入当前团队(org)。新验证账号首次创建合格团队时,会拿到$1.00 的一次性赠金(README 与技能文档都明确写了这一点),这正好覆盖下面整个演示的调用成本。

接下来是真刀真枪的调用。先看关键词联想接口怎么出数据:

treg call serpapi.google.keywords.ideas --query q=seo --query gl=us

SerpAPI 的响应是 JSON 数组suggestions,直接可读。但如果选 Semrush 的端点,情况就不同了——它的经典 v3 API 返回的是分号分隔的 CSV 文本(text/plain),目录文件头部注释写得很直白:"Every report answers text/plain with a semicolon-separated header row followed by data rows",而且报错也可能是 HTTP 200 + 纯文本ERROR 50 :: NOTHING FOUND。这意味着"这次调用成功了吗"这个问题,不能看 HTTP 状态码,要看响应体是否以 ERROR 开头。对这种端点,脚本里必须做一层 CSV 解析和错误文本嗅探。

对于 JSON 供应商,treg call的输出是干净的。真正的批量自动化要用全局--json模式,它在 CLI 源码 里有完整实现:表格式命令输出原始 JSON,call命令则输出单行{"result": <provider body>, "_treg": {"http_status", "call_id", "charged_micro"}},stderr 完全静默——脚本可以放心合并两个输出流再逐行解析:

treg --json call dataforseo.google.keywords.ideas \ --data '{"keyword":"seo audit","location_code":2840,"language_code":"en","limit":20}'

输出的_treg.charged_micro和响应头X-Treg-Cost-Micro是同一笔扣费的两种表达(微美元,1e-6 USD),call_id是你在账单和审计日志里对账的凭证。treg calls会列出完整的调用历史(谁、何时、哪个端点、什么状态),它是流水线的天然审计面。

还有两个对流水线至关重要的细节:

  • 失败不收费:上游返回 4xx/5xx 的调用是免费的(treg忠实转发,不替你归一化)。所以"空结果"要自己定义语义——供应商返回空数组往往意味着"没数据"而不是"出错了"。
  • 幂等重试:超时或没看到响应时,用同一个Idempotency-Key重发,treg 直接返回已存储的答案、不再次呼叫上游、不再扣费,响应里带replayed: true。这解决了分布式流水线最头疼的"重复扣费"问题。

三、计费确认与成本控制:把钱花在明处

调用了几次之后,最该做的是查账。treg balance的输出结构在 cmd_balance 实现 里看得很清楚,它分四块:

  • 余额:balance_micro(微美元整数)+ 可读的 USD 金额;
  • credit blocks:按资金来源拆分的剩余额度(比如 $1.00 赠金是一笔独立 block);
  • in-flight holds:还在途的调用预占款——注意它不是已花费,是"尚未结算";
  • recent ledger:最近账目流水,每条带时间、类型、金额和端点 ID。
treg balance # 余额、在途预占、近期流水 treg balance --json # 微美元整数,脚本对账用这个 treg topup # 充值或设置自动充值

真正值得深入理解的是扣费规则。README 的"凭证阶梯"(credential ladder)决定了每次调用到底花谁的钱:

  1. 团队自己注册的工具 → 用自己的 key,不计量;
  2. 团队为该供应商存的密钥 → 注入后调用,不计量;
  3. 都没有,但端点有已验证的公开路由 →免费(前提是你不带自己的供应商凭证);
  4. 否则 → 用 treg 自己的 key,从团队预付余额扣费。

一句话总结:你自己的 key 永远优先于 treg 的,而且永不计量。如果你已经有某个供应商的付费账号,把 key 存进团队(treg secret add/treg upload env),那些调用就从"计费"变成"免费",同时还能享受团队内共享。

余额不足时会触发 HTTP 402,但响应体是机器可读的——计费架构文档 明确了 402 携带balance_micro、estimated_cost_micro和topup_url三个字段,agent 或脚本可以直接据此决策,而不是读一段散文。库存现金耗尽前,X-Treg-Route-Max-Cost头还能给路由端点设单次成本上限,超限直接拒绝且不产生任何扣费。

对关键词研究流水线,成本控制还有三个隐藏杠杆:

  • 每行计费 vs 每次计费:同是"查关键词",有的按行收(40 units/行),有的按请求收(40 units/次)。批量对比场景选 per_call 的,深度挖掘场景才选 per_result 的。
  • 历史数据 5 倍价:Semrush 的display_date传过去日期就是历史数据,单价从 10 涨到 50 units/行。默认查"当前"即可。
  • 归档缓存 10%:同一团队对同一问题重复调用,若命中 treg 的归档缓存,第二次起只收全价的 10%,命中自家 key 的调用免费。Cache-Control: no-cache可强制走实时调用。

四、沉淀为可复用脚本:把流水线变成团队资产

演示跑通只是第一步,这条流水线的价值在"重复执行"。把前三节的动作封装成脚本时,有几个从源码和文档里挖出来的实践要点:

第一,用--json单行输出做循环驱动。treg --json call每行一个 JSON,天然适合while read或 Pythonjson.loads逐行消费。技能文档 SKILL.md 给了一个非常实战的警告:先小批量验证解析逻辑,再循环全量列表——"a parse bug throws away answers that were already billed"。解析 bug 会丢掉你已经付过费的数据,这是流水线里最贵的错误,没有之一。

第二,CSV 供应商要单独处理。Semrush 系的响应是 CSV 文本,export_escape=1会让每个列值被双引号包裹。脚本里要先用treg catalog get <id>确认响应格式,再决定解析器;同时记住"HTTP 200 也可能是ERROR 50文本"这个坑。

第三,记录 call_id 作为对账主键。每次调用的_treg.call_id(或X-Treg-Call-Id响应头)对应treg calls审计日志里的一行。流水线的输出文件里带上 call_id,将来任何"这条数据是谁、什么时候、花了多少钱拿到的"问题都能回溯。

第四,考虑发布为 hub recipe。仓库的 hub-recipes 示例目录 展示了 treg 生态里"可复用流水线"的标准形态:一个 recipe 目录包含README.md(用途说明)、recipe.json(元数据)、check.json(验证断言)、run.js(执行脚本)和可选的data.csv(样例数据)。比如docs/hub-recipes/brand-mentions/就是一个完整的"品牌提及监控"配方。把你的关键词研究流水线整理成同样的结构,团队里的任何人都能一键复用。

第五,把数据源选择做成参数而非硬编码。同能力多供应商是 treg 的常态,价格差可达 200 倍。脚本里把"用哪个供应商、限多少行"做成配置项,每次跑之前先treg catalog get刷新一下价格——供应商价格和可靠性是动态的,上周最便宜的不一定是这周最划算的。

结语:一条流水线的总账

把整条链路串起来看,treg 解决的不只是"省掉月费"这一个问题。它把 SEO 数据获取从"先买订阅、再导数据、再清洗"的沉重流程,压缩成了"搜目录 → 看价格 → 调用 → 解析 → 对账"的五步循环,每一步都有透明的价格和可审计的记录。$1.00 的赠金足以跑完一次完整的演示,之后每次调用按次计费、失败不收费、重复调用有缓存折扣、自己的 key 优先且不计量——成本结构是透明且可控的。

对于把 SEO 关键词研究当日常任务的团队,这条流水线的真正价值不在于省下那 $139/月,而在于:它让"查一组数据"变成了一个可编程、可审计、可共享的原子操作。当你把脚本沉淀进团队、把配方发布进 hub、把 call_id 写进每一行产出数据时,你就拥有了一个随取随用的数据基础设施——而这,正是从 0 到 1 最值得沉淀的东西。

【免费下载链接】tregOpenRouter for agent tools. Join community here: https://discord.gg/6mQYYfFMAn项目地址: https://gitcode.com/GitHub_Trending/treg/treg

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进