知识库首页 关键词资料 DESIGN.md

DESIGN

本地来源:关键词/ahrefs-top-worldwide-2026-07-all/ahrefs-top-websites-worldwide-2026-07/DESIGN.md

Ahrefs Top Websites 月度总库设计

目标

把用户每天提供的 Ahrefs Worldwide 分类榜单按统一格式导出 SimilarWeb 数据。每个分类可独立查看和续跑,同时维护一个覆盖当月所有分类的大合并与本地浏览器索引。

目录与数据边界

  • 分类目录:ahrefs-top-<category>-worldwide-2026-07/
  • 01_domains.csv:原始榜单域名和 Ahrefs 元数据。
  • 02_site_keywords_all.csv:该分类关键词汇总。
  • 03_landing_pages_all.csv:该分类落地页汇总。
  • raw/site_keywords/*.jsonraw/landing_pages/*.json:逐域名缓存。
  • index.htmlindex_data.js:可直接通过 file:// 打开的分类索引。
  • 月度总库:ahrefs-top-websites-worldwide-2026-07/
  • 01_all_categories_domains.csv02_all_categories_site_keywords.csv03_all_categories_landing_pages.csv:发现并合并全部分类目录。
  • 04_category_summary.csv:分类级域名数、关键词数、落地页数。
  • index.htmlindex_data.js:跨分类总索引。
  • export_category.py:通用 SimilarWeb 分类导出器。
  • build_catalog.py:合并和索引生成器。

抓取与续跑

通用导出器读取分类目录现有的 01_domains.csv,顺序请求本机 /api/site-keywords/api/landing-pages。成功响应立即写入逐域名 JSON;重新运行时复用缓存。空数据、HTTP 错误和登录错误不写入成功缓存,旧的无效或 0 行缓存会自动重新请求,并从分类汇总排除。包装器把服务商的“今日配额耗尽”页面识别为 HTTP 429,防止把配额页误记为 0 行成功数据。

2026-07 月度总库当前包含 Games、Travel、Sports、Shopping、Science、Reference、Real Estate、Pets & Animals、People & Society、Online Communities、News、Law & Government、Jobs & Education、Internet & Telecom、Home & Garden、Hobbies & Leisure、Health 和 Food & Drink 十八个完整的 Worldwide Top 100 分类。Finance 的 Top 100 源清单和部分缓存已建立,但在 SimilarWeb 日配额重置并补齐 100/100 两类端点前不得进入总库。每个分类必须保留 Ahrefs 排名、搜索流量、流量变化和排名变化元数据,并沿用相同的逐域名缓存、CSV 汇总和本地索引结构。

本地 SimilarWeb 包装器的所有报表请求共享一个 Puppeteer 页面,因此必须通过串行队列执行。每次 hash 路由切换后校验页面正文是否包含目标域名;仅在检测到游离的旧路由时从 about:blank 重新初始化,防止将上一域名的表格误记为当前结果。

合并规则

大合并保留每条记录的 categorycategory_slug,不跨分类去重,以免丢失同一域名在不同榜单中的分类和排名语义。分类目录由命名规则自动发现,但只接纳 summary.json 中两类缓存都覆盖全部源域名的完整分类;中断中的部分 CSV 不进入总库。以后新增分类完成后只需再运行总库构建器。

本地索引

索引采用无第三方依赖的 HTML/CSS/JavaScript。数据写入独立的 index_data.js 全局变量,因此双击 index.html 即可使用,不需要启动 HTTP 服务,也不会受到 file:// 读取 CSV 的跨域限制。

页面提供关键词、域名、分类、28 天流量 K/M 级别、流量上下限、增长百分比快捷阈值(正增长、+100%+500%+1000%)与增长上下限的组合筛选,以及核心 SEO 字段。筛选后的全部结果属于同一个逻辑表格,不使用分页;为避免总库一次创建十几万行导致浏览器无响应,DOM 首批只渲染 200 行并在表格滚动接近底部时继续追加。筛选和排序先作用于全部匹配数据,再重置渐进渲染。总索引的数据文件使用一份共享字段表和数组行,避免为每条记录重复序列化字段名。每个关键词包含三个新窗口按钮:

  • Google:https://www.google.com/search?q=<keyword>
  • 查域名:https://query.domains/zh-hans?search=<keyword>
  • 趋势:https://trends.google.com/trends/explore?date=today%201-m&q=happy%20birthday%20images,GPTs,<keyword>

所有关键词都使用 encodeURIComponent 编码。热门网址作为可点击链接,外部链接统一使用 rel="noopener noreferrer"

表格排序

15 个可见表头全部可点击排序:分类、榜单、域名、关键词、点击量、点击占比、点击变化、KD、意图、28 天流量、流量变化、平均体量、CPC、排位、热门网址。第一次点击升序,第二次点击降序,当前方向用箭头和 aria-sort 同时表示。

排序顺序为“筛选 → 全量结果排序 → 全量展示”,因此每次排序覆盖当前筛选条件下的全部记录。数值列统一解析正负号、逗号、K/M/B、百分号和货币符号;文本列使用中文环境的自然排序。空白、- 在升降序中都固定排到末尾,相同值按原始顺序稳定排列。

固定布局

页面使用单视口布局:标题区、统计与筛选区不随数据滚动,表格卡片占用剩余高度,只有表格数据区可以纵向或横向滚动。15 列表头在表格数据区顶部保持固定,滚动全部关键词时始终可见。页面不再显示“每页”“上一页”“下一页”等分页控件。

正流量增长榜

月度总库额外生成单文件 05_positive_traffic_growth.html。该文件只嵌入 traffic_change 可解析且大于 0% 的记录,并在生成阶段按百分比数值降序稳定排列。+5,000% 必须排在 +80% 前,0%、负数、空值和 NEW 不进入增长榜。

为避免正增长记录仍然过多导致浏览器卡顿,增长榜初次只创建 200 行 DOM;用户接近表格底部时继续追加下一批,不显示分页按钮。关键词、域名或分类筛选以及点击表头排序时,逻辑仍覆盖全部正增长记录,然后重置为首批结果。文件内嵌精简数据,不依赖旁边的 index_data.js,可直接通过 file:// 单独打开。

>500% 三词关键词与 query.domains

月度总库额外筛选 traffic_change 可解析且严格大于 500% 的记录。关键词去除首尾空白后按连续空白分词,词数必须为 1–3;连字符词算一个词,无空格的中日韩或其他 Unicode 词组算一个词。源记录按流量变化百分比数值降序输出到 06_growth_keywords_over_500_3_words.csv

query.domains 查询先对关键词去重,再把关键词规范成小写、单词间用连字符连接的域名标签,并生成 .com.ai.io 三个候选。候选域名使用 IDNA ASCII 形式请求 API;不能形成有效域名的关键词保留为无候选状态。状态接口批量查询;已注册域名继续查询 WHOIS 与最近 12 个月流量,可注册域名不发送无意义的 WHOIS/流量请求。

reservedpremium 与普通已注册域名分开统计;此类状态可能没有可用的 WHOIS 注册日期。query.domains 返回的明确无流量数据或 IDN 不支持结果保留为可审计错误,不伪造为 0。

每个候选域名的无凭据响应立即缓存到 raw/query_domains/。代码只在运行时通过 api_keys.py 读取 QUERY_DOMAINS_API_KEY,密钥不得写入 URL、日志、缓存、CSV、HTML、测试或文档。结果按“关键词 × 候选域名”输出到 07_query_domains_keyword_domains.csv,并生成可直接打开的 08_growth_keywords_query_domains.html。结果表包含关键词增长、来源分类/域名、候选域名状态、注册日期、到期日期、注册商、最新与前一月流量、变化量、变化率和 12 月历史。

>1000%、>300K 且未注册的 .com

窄表读取最终的 02_all_categories_site_keywords.csv,同时对 traffic_change 严格应用 >1000%、对 traffic_28d 严格应用 >300000,并限制关键词为 1–3 词。数值解析支持正负号、逗号、百分号和 K/M/B;恰好 1000%300K 的边界记录不进入结果。

每个关键词只生成一个规范化 .com。重复关键词按“流量变化 → 28 天流量 → 点击量”选择代表行,同时汇总所有来源分类和站点。query.domains 只调用 /check,只有 available is true 的唯一候选进入 09_available_com_growth_over_1000_traffic_over_300k.csv 和单文件 10_available_com_growth_over_1000_traffic_over_300k.html。该 HTML 无页码切换,对完整筛选集排序,并按 200 行渐进创建 DOM。

可变现且低时效衰减的二次精选

build_monetizable_opportunities.py 只从 09 的已确认可注册结果中筛选,不重复请求 query.domains。点击变化必须为 NEW+>5000% 或至少 +500%。机会分综合 28 天流量、流量增长、点击动量、KD、CPC、意图与主题持久性。

赛事/对阵/比分、已过日历节点、人物突发、品牌/作品、游戏 IP 和疑似 .site 异常词直接排除。通用商品/交易、目的地、常青查询、医疗与季节天气需求分别标注机会类型、时效风险和注意事项。医疗词只进入“观察”且必须标记 YMYL;IDN 候选标记本地市场验证要求。结果写入 11_monetizable_fresh_opportunities.csv 和可直接打开的 12_monetizable_fresh_opportunities.html

严格商业利基与 AI/Web SaaS 观察池

13/14 同时要求关键词 28 天流量严格大于 1,000,000、KD 严格小于 30、平均体量为 10,000–99,999,并要求任务型产品意图或有 CPC 支持的交易意图。人名、地名、天气、赛事、新闻、纯导航和高政策风险词必须排除。若语义复核后为 0,输出空表和排除统计,不得暗中放宽。

15/16 是独立的次严格观察池,不与严格结果混用。它要求 28 天流量至少 10,000、流量正增长、KD 小于 30、平均体量为 10,000–99,999,并仅接纳图片工作流、创作者商业工具、内容生成、文本设计、头像/游戏资产、实时翻译和相邻 Web SaaS 工作流。每个关键词规范化出一个精确 .com 并通过 query.domains 查询;已注册域名继续补 WHOIS 和域名流量。平台下载/匿名查看类必须标记条款、隐私和版权高风险,可注册不等于建议注册。

验证标准

  • Travel 榜单必须是连续排名 1–100 且 100 个域名唯一。
  • 每个 Travel 域名必须各有一个关键词 JSON 和一个落地页 JSON,或在最终错误清单中明确列出。
  • CSV 行数必须等于对应 JSON 行数之和。
  • 大合并必须覆盖 Games 与 Travel 两个分类,并与分类 CSV 行数之和一致。
  • Games、Travel、总库三个索引必须可通过本地文件打开;筛选、全量单页显示和三个关键词按钮必须通过浏览器测试。
  • 15 个表头必须都可点击,浏览器测试必须覆盖文本列、缩写数值列、正负变化列、空值位置和全量排序。
  • 页面框架保持在视口内,滚动表格时标题区、筛选区和表头不能发生位置漂移。
  • 正流量增长榜只能包含大于 0% 的流量变化,并按数值降序默认显示;首屏 DOM 行数不得超过 200,滚动后应连续追加。
  • Sports、Shopping、Science 源清单都必须是连续排名 1–100 且分类内域名唯一;每个域名必须有两类 SimilarWeb 缓存或出现在错误清单中。
  • 06 文件只能包含严格大于 500% 且 1–3 词的记录,并按百分比数值降序。
  • query.domains 结果必须覆盖每个有效去重关键词的 .com/.ai/.io 候选;注册和流量字段必须能从缓存重新构建,所有产物不得包含 API key。
  • Reference、Real Estate、Pets & Animals、People & Society、Online Communities、News、Law & Government、Jobs & Education、Internet & Telecom、Home & Garden、Hobbies & Leisure、Health 和 Food & Drink 源清单也必须各有连续 1–100 的排名和 100 个唯一域名;当前完整总库应为 18 个分类、1,800 条榜单记录。Finance 源清单同样必须满足连续排名与唯一域名,但只有两类缓存均达 100/100 后才可使总库增加到 19 个分类、1,900 条榜单记录。
  • 09 的每行必须同时满足 1–3 词、流量变化 >1000、28 天流量 >300000、唯一 .comavailable is true;生成物和缓存的精确密钥扫描必须为 0 匹配。
  • 11 只能来自 09,所有行的点击动量必须至少 +500%NEW;赛事、人物、品牌/作品和异常站点词不得出现。
  • 13 每行必须满足三项硬指标和语义排除;15 必须清楚标注是未达百万门槛的观察池,不能被描述为严格命中。

本文档为站内渲染。原始文件本地路径:saas/source/keywords/关键词-ahrefs-top-worldwide-2026-07-all-ahrefs-top-websites-wor-57f3e4.md(仅本地保留,不入库不部署)