ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Open SEO v0.0.22 版本解读:分页反链 Profile MCP 工具与月度排名监控调度

Open SEO v0.0.22 版本解读:分页反链 Profile MCP 工具与月度排名监控调度 Open SEO v0.0.22 版本解读分页反链 Profile MCP 工具与月度排名监控调度【免费下载链接】open-seoOpen source alternative to Semrush and Ahrefs项目地址: https://gitcode.com/GitHub_Trending/op/open-seo本篇文章基于 Open SEO开源版 Semrush/Ahrefs 替代品仓库的 release-notes/v0.0.22.md围绕该版本的三项核心能力展开新增的get_backlinks_profileMCP 工具让 AI Agent 能拉取域名的完整反链明细而非仅汇总、排名追踪新增“每月末”调度与显式语言选择、Tracked Domains 列表与国家选择器获得可搜索能力。读完本文你将掌握这些功能的参数语义、底层调度算法与数据校验逻辑并能在自己的部署中直接使用。一、get_backlinks_profile让 Agent 读取完整反链明细的 MCP 工具此前 MCP 工具只能返回反链的汇总统计v0.0.22 新增get_backlinks_profile后AI Agent 可以像网页端「Backlinks」列表一样逐行获取某个域名或页面的反链数据。1.1 工具定位与适用场景从 get-backlinks-profile.ts 的工具描述可以看出其设计意图一次调用返回“一个受边界限制的分页反链行集合”包含来源 URL、目标 URL、锚文本、dofollow/nofollow、权威度/垃圾评分、lost/broken 状态同时支持筛选、排序、one_per_domain/as_is分组模式与分页。它适用于Agent 需要批量分析某域名的反链构成如锚文本分布、来源域质量需要按lost/broken状态排查失效反链需要按权威度或垃圾评分区间筛选高价值链接。该工具通过withMcpProjectAuth做项目级鉴权调用时需传入有效的projectId属于典型的项目内资源访问工具。1.2 输入参数全解析工具的inputSchema由 Zod 定义get-backlinks-profile.ts核心参数如下参数类型默认值说明projectIdstring必填项目 UUID用于项目鉴权与计费上下文targetstring必填待分析的域名或 URL如example.com或https://example.com/blog长度 1–2048scopeenum—反链分析范围见下文 scope 说明pageint11 起始的分页页码必须为正整数pageSizeint100每页行数仅允许 50 / 100 / 200见 backlinks.ts 的BACKLINKS_PAGE_SIZESsortFieldenumfirstSeen排序字段rank、domainRank、spamScore、firstSeensortOrderenumdescasc或descfiltersobject{}行级筛选条件见下文modeenumone_per_domainDataForSEO 分组模式hideSpambooleantrue是否过滤垃圾反链scope 说明backlinksScopeWithLegacySchema支持page/exact_url/subfolder/root_domain等取值其中page是exact_url的废弃别名subfolder的排名、趋势与来源域拆分不可用详见 backlinks.ts。filters 结构backlinks.ts支持include/exclude来源 URL 关键词的包含/排除匹配minDomainRank/maxDomainRank来源域权威度区间minLinkAuthority/maxLinkAuthority链接权威度区间minSpamScore/maxSpamScore垃圾评分区间linkTypedofollow或nofollowhideLost/hideBroken隐藏已失效/已损坏链接domainFrom来源域的精确匹配用于展开某个域的全部链接最长 255 字符。mode 语义one_per_domain返回每个来源域最强的一条链接默认的“去噪”视图as_is返回每一条独立反链。1.3 输出结构与展示格式调用成功后工具以mcpResponse返回文本 结构化内容get-backlinks-profile.ts文本部分首行给出规范化后的目标与 scopenormalizeBacklinksTarget解析随后输出当前页、页大小、本页行数、总反链数、是否还有下一页以及一个 Markdown 表格表格列source来源 URL 或域名、target目标 URL、anchor锚文本、typedofollow/nofollow/unknown、rank链接权威、domainRank域名权威、spam垃圾评分、statuslive/lost/broken——状态由isLost/isBroken字段组合得出见 formatStatusstructuredContent包含target、scope与分页信封backlinks含page、pageSize、rows、totalCount、hasMore方便 Agent 程序化解析meta通过buildProjectMeta附带/p/{projectId}/backlinks的跳转链接Agent 可以把结果引导回网页端查看。1.4 底层实现计费、缓存与 DataForSEO 调用链该工具并不直接访问 DataForSEO而是复用网页端同一套服务层参数经withMcpProjectAuth鉴权后透传给BacklinksService.profileBacklinksPageBacklinksService.ts服务层先基于organizationId、规范化后的 target/scope、路径与includeSubdomains构建缓存键命中 R2 缓存则直接返回缓存前缀backlinks:rows-page避免重复计费未命中时调用 DataForSEO 拉取数据并按hideSpam传入spamThreshold过滤参数。计费提示工具描述明确标注“约每页 30 credits”约合一次分页查询的费用并且自托管部署必须在 DataForSEO 账户上启用 Backlinks API否则该工具不可用。这是自托管用户使用前必须确认的前提条件。二、排名追踪新增月度调度每月末自动执行v0.0.22 为排名追踪新增了monthly调度间隔——每月末运行一次检查适合低频但需要月度快照的场景如月度报告。2.1 调度间隔的数据模型数据库层面scheduleInterval字段被建模为枚举[daily, weekly, monthly, manual]pg/app.schema.tsAPI 层通过 rank-tracking.ts 的scheduleEnum直接复用该枚举保证前后端取值一致。2.2 月末时间锚定的调度算法月度调度的核心实现在 computeNextCheckAt配合endOfMonthWithTimerank-tracking.ts完成首次创建从当前时刻算起随机选择 UTC 04:00–09:00 之间的小时与随机分钟作为执行时刻锚定到当月最后一天若该时刻已过例如 1 月 31 日创建的配置则顺延到下月最后一天后续推进以上一次nextCheckAt为锚点逐月加 1 推进到各月最后一天直到结果晚于当前时刻。这个“循环推进”机制保证了即使某月因停机等原因错过执行也不会产生调度漂移——例如 1 月 31 日未运行2 月 28 日仍会按锚点时间触发短月份自适应endOfMonthWithTime利用Date.UTC(year, month1, 0)自动归一化到当月最后一天因此 2 月、4 月等短月份天然正确测试用例覆盖了 2026-01-31 到 2026-02-28 的跨月推进见 rank-tracking.test.ts。该算法对 daily/weekly 同样适用daily 每次 1 天、weekly 每次 7 天且都从“锚点”而非“当前时间”推进从而避免重试导致的日期漂移。2.3 月度调度的成本预估estimateScheduledRankCheckCreditsrank-tracking.ts针对不同调度间隔计算每月检查次数daily 按 30 次、weekly 按 4 次、monthly 按 1 次。因此月度调度是三个周期里单月成本最低的选择。成本模型基于 DataForSEO 队列 APIqueued方法用于定时任务比 Live API 便宜首 10 条结果每页 $0.0006后续每页 $0.00045见 rank-tracking.ts 的常量定义每次task_post最多打包 100 个任务MAX_TASKS_PER_POST。计费按“每次调用单独向上取整”累加最终换算为 credits并在工具侧通过estimate_rank_tracker_cost提示用户批准预算上限。三、显式语言选择覆盖国家默认语言排名追踪此前默认跟随国家/地区的默认语言v0.0.22 允许显式指定语言且选择器只列出 DataForSEO 为该国家支持的语言从源头避免无效代码导致的计费失败。3.1 校验层把错误拦截在“零成本”阶段创建/更新配置的 schemarank-tracking.ts对languageCode做了双重约束最大长度 10必须通过isSupportedLanguageCode校验keyword-locations.ts该函数以SERP_LANGUAGE_OPTIONS主表为基准。schema 注释点明了设计动机排名追踪走的是 DataForSEO SERP API它理论上支持任何语言与任何国家的组合——但未知的语言代码会触发一次“已计费”的 DataForSEO 失败。因此必须在客户端/服务端入口处以零成本拒绝而不是把错误抛给上游 API 烧钱。3.2 语言主表与按国家过滤SERP_LANGUAGE_OPTIONSkeyword-locations.ts是全量语言主表与GET https://api.dataforseo.com/v3/serp/google/languages返回的language_code/language_name一一对应源码注释中已注明该 endpoint 与刷新方式。其中两个特例废弃的希伯来语别名iw与冗余的no被移除挪威统一用nb。选择器前端通过getLanguageOptionskeyword-locations.ts把主表过滤为该国家 DataForSEO 实际支持的语言子集基于 Labs 的locations_and_languages数据这样用户永远选不到无效组合。需要注意SERP API 的“国家-语言”支持范围比 Labs 更宽——主表语言对任意国家都可用于排名追踪而项目级Labs 驱动的 picker 才做按国家过滤。3.3 语言与位置的关系配置模型同时支持locationCode国家/地区如DEFAULT_LOCATION_CODE 2840与languageCode两者解耦先选国家再选语言语言用于覆盖该国家的默认语言。createConfigSchema/updateConfigSchema均允许单独或同时设置这两个字段rank-tracking.ts意味着你可以针对同一国家创建多个不同语言的追踪配置如瑞士同时追踪德语与法语排名。四、Tracked Domains 列表与可搜索国家选择器4.1 Tracked Domains 新增搜索与设备/国家筛选当项目中追踪的域名tracker数量较多时v0.0.22 在 Tracked Domains 列表加入了关键词搜索按域名/关键字快速定位指定 tracker设备筛选按 Desktop / Mobile 过滤国家筛选按目标国家过滤。配合 RankTrackingColumns.tsx、RankTrackingConfigModal.tsx 等组件配置入口与列表视图共享同一套筛选语义便于在大规模关键词追踪场景下维护。4.2 国家下拉框升级为可搜索 Comboboxv0.0.22 将原先的静态国家下拉框替换为可输入过滤的 combobox用户直接打字即可过滤候选国家无需在超长列表中滚动查找。该交互同时服务于排名追踪配置与项目级位置选择相关的位置选项数据来自LOCATION_OPTIONS含 94 个 Labs 支持国家与SERP_LANGUAGE_OPTIONS的组合校验keyword-locations.ts保证“选到的国家一定可用”。五、升级与使用建议升级路径从 v0.0.21 升级到 v0.0.22 无需数据库迁移——monthly只是对既有schedule_interval枚举值的扩展语言字段此前已存在于配置模型自托管用户使用get_backlinks_profile前确认 DataForSEO 账户已开通 Backlinks API并留意单次调用约 30 credits 的计费量级Agent 集成在 MCP 客户端中可直接调用get_backlinks_profile通过filters、sortField、mode组合实现“只取 dofollow 且 domainRank 高于某阈值的新反链”这类精确查询再配合hasMore翻页拉全量数据。以上能力均可在仓库源码中复现验证MCP 工具实现见 get-backlinks-profile.ts调度算法与单测见 rank-tracking.ts 与 rank-tracking.test.ts语言/位置校验见 keyword-locations.ts。【免费下载链接】open-seoOpen source alternative to Semrush and Ahrefs项目地址: https://gitcode.com/GitHub_Trending/op/open-seo创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表