@clize/clize 0.35.4 → 0.36.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli.js +23 -8
- package/dist/cli.js.map +1 -1
- package/dist/core/seo-cells.js +388 -0
- package/dist/core/seo-cells.js.map +1 -0
- package/dist/core/seo-classify.js +256 -17
- package/dist/core/seo-classify.js.map +1 -1
- package/dist/core/seo-pages.js +58 -0
- package/dist/core/seo-pages.js.map +1 -1
- package/dist/core/seo.js +480 -58
- package/dist/core/seo.js.map +1 -1
- package/dist/index.js +0 -0
- package/dist/remote.js +2 -0
- package/dist/remote.js.map +1 -1
- package/dist/tools/email.js +1 -1
- package/dist/tools/email.js.map +1 -1
- package/package.json +1 -1
- package/skills/clize-seo/SKILL.md +515 -588
|
@@ -10,12 +10,37 @@
|
|
|
10
10
|
//
|
|
11
11
|
// 规则与阈值全部来自 2026-08-30 的 13 个真实 SERP(test/fixtures/serp/*.json 是
|
|
12
12
|
// 同一批数据的精简快照)—— 已经付过学费的判读,钉进回归。
|
|
13
|
+
//
|
|
14
|
+
// 2026-09-03 多语区扩展(design/seo-cell-funnel.md §3.2 E + 附录 A):非英语结果页
|
|
15
|
+
// 以前十有八九是 `other`,整页读成盲盒 `open`。这里加四种占位者 tool / tutorial /
|
|
16
|
+
// template / app(host 表 + 各市场标题词表,仍然是纯规则),第五个 verdict
|
|
17
|
+
// `tool_window`(前十工具 ≥3,优先级最低,只有原 open 会变),`composition` 按种类
|
|
18
|
+
// 计数,以及 `clusterCells`(同市场两词前十共享 ≥5 个 URL → 同簇)。
|
|
19
|
+
// 四种新占位者只在原有规则**全部**没命中之后才试 —— 原来不是 `other` 的条目一条不动,
|
|
20
|
+
// 所以英文样本的 verdict 除了 open → tool_window 之外不可能变。
|
|
21
|
+
// 标题词表全部写成正则字面量(scripts/check-i18n.mjs 只查字符串字面量里的中日韩文)。
|
|
22
|
+
// test/seo-classify-locales.test.ts 用 2026-09-03 的 73 个真实非英语 SERP 钉回归。
|
|
13
23
|
// ============================================================
|
|
24
|
+
/** 全部种类(composition 的键集合,顺序即输出顺序)。 */
|
|
25
|
+
export const ITEM_TYPES = [
|
|
26
|
+
"docs",
|
|
27
|
+
"listicle",
|
|
28
|
+
"ugc",
|
|
29
|
+
"directory",
|
|
30
|
+
"reference",
|
|
31
|
+
"tool",
|
|
32
|
+
"tutorial",
|
|
33
|
+
"template",
|
|
34
|
+
"app",
|
|
35
|
+
"other",
|
|
36
|
+
];
|
|
14
37
|
// ---- 阈值(常量化,改判定只动这里)----
|
|
15
38
|
const TOP_N = 10; // 判定只看前 10(第二页之后对占位格局无影响)
|
|
16
39
|
const OFFICIAL_TOP5_MIN = 3; // 前 5 里同一品牌自有站 ≥3 → 官方墙
|
|
17
40
|
const LISTICLE_MIN = 3; // 前 10 里榜单 ≥3 → 榜单窗口
|
|
18
41
|
const DEFINITION_MIN = 4; // 前 10 里大厂/百科定义文 ≥4 → 定义文墙
|
|
42
|
+
const TOOL_MIN = 3; // 前 10 里工具 ≥3 → 工具窗口(优先级最低)
|
|
43
|
+
const CLUSTER_SHARED_MIN = 5; // 同市场两词前十共享 ≥5 个 URL → 同簇
|
|
19
44
|
// ---- 域名类型库 ----
|
|
20
45
|
/** UGC 讨论位:自己发不了正式内容,但能参与(Reddit 回帖 / HN / SO)。 */
|
|
21
46
|
const UGC_HOSTS = new Set([
|
|
@@ -23,6 +48,8 @@ const UGC_HOSTS = new Set([
|
|
|
23
48
|
"medium.com", "dev.to", "hashnode.com", "substack.com", "youtube.com",
|
|
24
49
|
"linkedin.com", "x.com", "twitter.com", "github.com", "producthunt.com",
|
|
25
50
|
"ycombinator.com", "discord.com",
|
|
51
|
+
// 2026-09-03 多语区样本里反复出现的社交位(fr / es / pt / ko / zh-TW 的短视频与帖子)
|
|
52
|
+
"facebook.com", "instagram.com", "tiktok.com",
|
|
26
53
|
]);
|
|
27
54
|
/** 目录 / registry:能提交条目的信任位(放置优先序里排在自有站之前)。 */
|
|
28
55
|
const DIRECTORY_HOSTS = new Set([
|
|
@@ -51,27 +78,124 @@ const PUBLISHER_HOSTS = new Set([
|
|
|
51
78
|
"mashable.com", "geekflare.com", "hackernoon.com", "cloudwards.net", "websiteplanet.com",
|
|
52
79
|
"toolify.ai", "futurepedia.io", "theresanaiforthat.com", "unite.ai", "aitoolreport.com",
|
|
53
80
|
]);
|
|
54
|
-
/** 产品站上的内容栏目:榜单挂在这些路径下 = 厂商博客写的榜单。
|
|
81
|
+
/** 产品站上的内容栏目:榜单挂在这些路径下 = 厂商博客写的榜单。
|
|
82
|
+
* 工具站上的这类路径同理 = 工具厂商写的文章,不是工具本身(formatarc /blog/、sheetgo /blog/)。 */
|
|
55
83
|
const VENDOR_CONTENT_PATH_RE = /\/(blog|resources?|learn|guides?|insights|library|articles?|academy|hub|magazine|knowledge|kb)(\/|$)/i;
|
|
84
|
+
// ---- 2026-09-03 多语区扩展:host 表(附录 A + 73 个样本里反复出现的同类站)----
|
|
85
|
+
/** 应用商店:占的是「装个软件」的位,不是网页。 */
|
|
86
|
+
const APP_HOSTS = new Set([
|
|
87
|
+
"apps.microsoft.com", "play.google.com", "apps.apple.com", "chromewebstore.google.com",
|
|
88
|
+
"marketplace.visualstudio.com", "webcatalog.io",
|
|
89
|
+
]);
|
|
90
|
+
/** 在线工具站:转换 / 比较 / 拆分 / 合并 … 这类词的常客(多语区都是同一批)。 */
|
|
91
|
+
const TOOL_HOSTS = new Set([
|
|
92
|
+
"tableconvert.com", "convertcsv.com", "diffchecker.com", "diffchecker.dev", "list-difference.com",
|
|
93
|
+
"listdiff.com", "list1list2.com", "compare-lists.org", "text-compare.com", "textcompare.org",
|
|
94
|
+
"maxai.co", "datablist.com", "splitcsv.com", "csv-splitter.com", "mightymerge.io", "xlcompare.com",
|
|
95
|
+
"tablesgenerator.com", "formatarc.com", "md-to.com", "csv.ink", "boost-tool.com", "becsv.com",
|
|
96
|
+
"filesmerge.com", "merge-csv.com", "mergeexcelfilesonline.com", "aspose.app", "products.aspose.app",
|
|
97
|
+
"groupdocs.app", "products.groupdocs.app", "smallpdf.com", "ilovepdf.com", "lightpdf.com",
|
|
98
|
+
"aconvert.com", "rakko.tools", "tool.sorezore.net", "dcode.fr", "vmaths.fr", "miniwebtool.com",
|
|
99
|
+
"parseur.com", "bank-extract.com", "bankstatementwizard.com", "bankstatementlab.com",
|
|
100
|
+
"easybankconvert.com", "aslitools.com", "statementsheet.com", "re-cap.com", "crowsole.tools",
|
|
101
|
+
"toolshub.com.br", "site112.com", "comparelists.net", "csv-tools.de", "60tools.com", "prlbr.de",
|
|
102
|
+
"zemith.com", "file2markdown.ai", "markitdown.online", "devtool.tech", "onul.works", "flowhunt.io",
|
|
103
|
+
"tools.occ.center", "analyticslane.com", "sheetgo.com", "pinetools.com", "ofxfacil.com.br",
|
|
104
|
+
"bankstatement.to",
|
|
105
|
+
]);
|
|
106
|
+
/** 教程 / 博客位:各市场的博客平台、问答站、Excel 教学站、官方支持文档。
|
|
107
|
+
* 注意 youtube / reddit / stackoverflow 仍是 ugc(上面先判),这里不收。 */
|
|
108
|
+
const TUTORIAL_HOSTS = new Set([
|
|
109
|
+
// ja
|
|
110
|
+
"qiita.com", "note.com", "zenn.dev", "hatenablog.com", "hatenadiary.jp", "chiebukuro.yahoo.co.jp",
|
|
111
|
+
// ko
|
|
112
|
+
"naver.com", "blog.naver.com", "m.blog.naver.com", "tistory.com", "velog.io", "brunch.co.kr",
|
|
113
|
+
// zh-TW
|
|
114
|
+
"pixnet.net", "vocus.cc", "ptt.cc", "dcard.tw", "threads.com",
|
|
115
|
+
// de / fr / es / ko / zh-TW Excel 教学站
|
|
116
|
+
"herber.de", "excel-pratique.com", "todoexcel.com", "oppadu.com", "jinrih.com", "gtwang.org",
|
|
117
|
+
// 跨市场教程站 + 官方支持文档
|
|
118
|
+
"datacamp.com", "automateexcel.com", "wikihow.com", "pt.wikihow.com", "ionos.com", "ionos.es",
|
|
119
|
+
"ionos.fr", "learn.microsoft.com", "support.microsoft.com",
|
|
120
|
+
// fr. / ko. / zh-tw. 子域一套 Excel 教程(样本里三个市场都撞见)
|
|
121
|
+
"extendoffice.com",
|
|
122
|
+
]);
|
|
56
123
|
/** 榜单标题:`best|top|N 个|vs|alternatives|compared` 家族。数字+Best 是最强信号。 */
|
|
57
124
|
const LISTICLE_RE = /\b(\d+\s+)?(best|top|greatest)\b|\balternatives?\b|\bvs\.?\b|\bcompared\b|\bcomparison\b|\broundup\b/i;
|
|
58
125
|
/** 定义型标题:`what is X` / `guide to` / `introduction` / 纯词条。 */
|
|
59
126
|
const DEFINITION_RE = /\bwhat\s+is\b|\bwhat\s+are\b|\bguide\b|\bintroduction\b|\bexplained\b|\boverview\b|\bprimer\b|\ba\s+new\s+era\b|\bhow\s+.{0,24}\s+(work|works)\b/i;
|
|
60
127
|
/** 文档页:URL 上的 /docs/ /api/ 或 docs. 前缀。 */
|
|
61
128
|
const DOCS_RE = /(^|\.)docs?\.|\/docs?\/|\/api\/|\/reference\//i;
|
|
62
|
-
|
|
129
|
+
// ---- 2026-09-03 多语区扩展:标题词表(附录 A 的八个市场,合成一张表)----
|
|
130
|
+
// 分类器不知道页面的市场(classifyItem 只拿到一条结果),而且非英语页上英文标题很常见
|
|
131
|
+
// (YouTube / GitHub / "Free Tool"),所以八个市场的词表合成一张,谁命中都算。
|
|
132
|
+
// 拉丁字母标题先折掉重音再匹配(cómo = como、générateur = generateur),`\b` 只认 ASCII,
|
|
133
|
+
// 中日韩文用子串匹配。三张表的先后:tutorial > template > tool ——
|
|
134
|
+
// 「PDF in Excel umwandeln – so geht's」是教程(不是工具),「如何用 AI 製作…範本」是教程(不是模板),
|
|
135
|
+
// 「Kostenlose Monatsbericht-Vorlage」是模板(不是工具)。
|
|
136
|
+
/** 工具:en online/free/generator/converter/viewer/splitter/diff/compare/tool ·
|
|
137
|
+
* fr comparateur/outil/gratuit/en ligne/convertisseur/générateur · de kostenlos/umwandeln/vergleichen online ·
|
|
138
|
+
* es gratis/en línea/generador/convertir/comparador/herramienta · pt grátis/gratuito/gerador/converter/comparar online/ferramenta ·
|
|
139
|
+
* ja 無料/オンライン/ツール/変換 · ko 무료/온라인/변환/사이트 · zh-TW 免費/線上/工具/轉換/產生器(+ 简体同义)。 */
|
|
140
|
+
const TOOL_RE = /\b(online|free|generators?|converters?|convertors?|viewers?|splitters?|mergers?|diff|checker|compare|tools?|comparateur|outils?|gratuit\w*|en ligne|convertisseur|generateurs?|kostenlos\w*|umwandeln|vergleichen online|gratis|en linea|generador(es)?|convertir|comparador(es)?|herramientas?|gerador(es)?|comparar online|ferramentas?)\b|無料|オンライン|ツール|変換|무료|온라인|변환|사이트|생성기|免費|線上|工具|轉換|產生器|免费|在线|转换|生成器/;
|
|
141
|
+
/** 教程:en how to/tutorial/guide/tips/ways · ja 方法/やり方/手順/解説/まとめ · ko 방법/하는 법/정리/꿀팁 ·
|
|
142
|
+
* de so geht's/anleitung/tipps/erklärt(+ wie/möglichkeiten) · fr comment/tuto/astuce/étape(+ façons/méthodes) ·
|
|
143
|
+
* es cómo/tutorial/guía/trucos(+ formas/maneras/métodos) · pt como/tutorial/guia/dicas(+ formas/maneiras) ·
|
|
144
|
+
* zh-TW 教學/教程/方法/技巧/怎麼(+ 如何/步驟/指南 与简体同义)。 */
|
|
145
|
+
const TUTORIAL_RE = /\b(how to|tuto(riels?|rials?)?|guide|tips?|ways|step[ -]by[ -]step|so geht'?s|anleitung|tipps|erklart|moglichkeiten|schritt fur schritt|wie|comment|astuces?|etapes?|facons?|methodes?|como|guia|trucos|formas|maneras|metodos|paso a paso|dicas|maneiras|passo a passo)\b|方法|やり方|手順|解説|まとめ|使い方|入門|방법|하는 법|하는법|정리|꿀팁|가이드|어떻게|教學|教程|技巧|怎麼|怎么|如何|步驟|步骤|指南|攻略/;
|
|
146
|
+
/** 模板:template · テンプレート · 양식/서식 · vorlage · modèle · plantilla · modelo/planilha pronta · 範本/模板。
|
|
147
|
+
* 韩文「서식」也是 Excel 里的「格式」:「조건부 서식」(条件格式)、「셀 서식」(单元格格式)不算模板。 */
|
|
148
|
+
const TEMPLATE_RE = /\b(templates?|vorlagen?|modeles?|plantillas?|modelos?|planilha pronta)\b|テンプレート|雛形|양식|(?<!조건부\s?)(?<!셀\s?)서식|템플릿|範本|模板/;
|
|
149
|
+
/** 拉丁标题折叠:去重音(NFD 拆出组合符再删,NFC 把韩文音节 / 日文浊音拼回去)、
|
|
150
|
+
* 弯引号归直、转小写 —— 之后 `\b` 词表才对得上「Cómo」「Générateur」「so geht’s」。 */
|
|
151
|
+
function foldTitle(title) {
|
|
152
|
+
return title
|
|
153
|
+
.normalize("NFD")
|
|
154
|
+
.replace(/[\u0300-\u036f]/g, "")
|
|
155
|
+
.normalize("NFC")
|
|
156
|
+
.replace(/[\u2018\u2019\u02bc\u0060\u00b4]/g, "'")
|
|
157
|
+
.toLowerCase();
|
|
158
|
+
}
|
|
159
|
+
/** 两段式公共后缀(co.jp / com.br / com.tw / co.kr / edu.co …):多语区结果页里到处都是,
|
|
160
|
+
* 取根域时把它们当一段。不做完整 PSL,只认这些常见二级段 + 两字母国家顶级域。 */
|
|
161
|
+
const SECOND_LEVEL_LABELS = new Set(["co", "com", "net", "org", "gov", "edu", "ac", "ne", "or", "go", "mil", "ltd", "gob"]);
|
|
162
|
+
/** host → 可比根(去 www;.com 类取最后两段;co.jp 类多段公共后缀取最后三段)。 */
|
|
63
163
|
function rootOf(host) {
|
|
64
|
-
const parts = host.replace(/^www\./, "").split(".");
|
|
65
|
-
|
|
164
|
+
const parts = host.toLowerCase().replace(/^www\./, "").split(".");
|
|
165
|
+
if (parts.length <= 2)
|
|
166
|
+
return parts.join(".");
|
|
167
|
+
const tld = parts[parts.length - 1] ?? "";
|
|
168
|
+
const sld = parts[parts.length - 2] ?? "";
|
|
169
|
+
if (tld.length === 2 && SECOND_LEVEL_LABELS.has(sld))
|
|
170
|
+
return parts.slice(-3).join(".");
|
|
171
|
+
return parts.slice(-2).join(".");
|
|
66
172
|
}
|
|
67
173
|
/** 根域的品牌词(root 的第一段:docs.stripe.com → stripe)。 */
|
|
68
174
|
function brandOf(host) {
|
|
69
175
|
return rootOf(host).split(".")[0] ?? "";
|
|
70
176
|
}
|
|
177
|
+
/** host 命中表:去 www 后,本身或任一 ≥2 段的后缀在表里就算
|
|
178
|
+
* (detail.chiebukuro.yahoo.co.jp 命中 chiebukuro.yahoo.co.jp;m.blog.naver.com 命中 naver.com)。 */
|
|
71
179
|
function inSet(set, host) {
|
|
72
|
-
|
|
180
|
+
const parts = host.toLowerCase().replace(/^www\./, "").split(".");
|
|
181
|
+
for (let i = 0; i < parts.length - 1; i++) {
|
|
182
|
+
if (set.has(parts.slice(i).join(".")))
|
|
183
|
+
return true;
|
|
184
|
+
}
|
|
185
|
+
return false;
|
|
73
186
|
}
|
|
74
|
-
|
|
187
|
+
function pathOf(url) {
|
|
188
|
+
try {
|
|
189
|
+
return new URL(url).pathname;
|
|
190
|
+
}
|
|
191
|
+
catch {
|
|
192
|
+
return url; // 不是完整 URL 就按原串匹配
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
/** 单条结果的页型 —— 只看域名类型库 + 标题/URL 形态,不猜内容。
|
|
196
|
+
* 原有五种先判(一条不动);全部没命中的再分 app / tool / tutorial / template:
|
|
197
|
+
* host 表优先于标题词表(qiita 上一篇讲「ツール」的文章仍是教程),
|
|
198
|
+
* UGC / 目录 / 榜单在工具之前(reddit 上标题带 "free tool" 的帖子仍是 ugc)。 */
|
|
75
199
|
export function classifyItem(it) {
|
|
76
200
|
if (inSet(UGC_HOSTS, it.host))
|
|
77
201
|
return "ugc";
|
|
@@ -86,6 +210,21 @@ export function classifyItem(it) {
|
|
|
86
210
|
// 百科无需定义型标题(词条名本身就是定义位)
|
|
87
211
|
if (rootOf(it.host) === "wikipedia.org")
|
|
88
212
|
return "reference";
|
|
213
|
+
// ---- 以下只对原来的 other 生效 ----
|
|
214
|
+
if (inSet(APP_HOSTS, it.host))
|
|
215
|
+
return "app";
|
|
216
|
+
// 工具站的内容栏目(/blog/ …)是工具厂商写的文章,按标题归类,不按站
|
|
217
|
+
if (inSet(TOOL_HOSTS, it.host) && !VENDOR_CONTENT_PATH_RE.test(pathOf(it.url)))
|
|
218
|
+
return "tool";
|
|
219
|
+
if (inSet(TUTORIAL_HOSTS, it.host))
|
|
220
|
+
return "tutorial";
|
|
221
|
+
const title = foldTitle(it.title);
|
|
222
|
+
if (TUTORIAL_RE.test(title))
|
|
223
|
+
return "tutorial";
|
|
224
|
+
if (TEMPLATE_RE.test(title))
|
|
225
|
+
return "template";
|
|
226
|
+
if (TOOL_RE.test(title))
|
|
227
|
+
return "tool";
|
|
89
228
|
return "other";
|
|
90
229
|
}
|
|
91
230
|
/**
|
|
@@ -100,6 +239,8 @@ export function classifyItem(it) {
|
|
|
100
239
|
* definition_wall:大厂 / 百科的定义文占了前 10 的 ≥4 席(`agentic commerce` 型)。
|
|
101
240
|
* listicle_window:榜单占了前 10 的 ≥3 席(`email api for ai agents` 型)——
|
|
102
241
|
* 这是唯一能靠别人的页面进场的形态,所以顺带输出寄生目标。
|
|
242
|
+
* tool_window:在线工具占了前 10 的 ≥3 席(`csv markdown 変換` / `comparer deux listes` 型)——
|
|
243
|
+
* 优先级最低,只有原本 open 的页会变;寄生目标不给(那是榜单窗口的事)。
|
|
103
244
|
* open:没有单一占位主导(`domain registration api` 型)。
|
|
104
245
|
*/
|
|
105
246
|
export function classifySerp(keyword, items) {
|
|
@@ -124,8 +265,13 @@ export function classifySerp(keyword, items) {
|
|
|
124
265
|
officialSeatsByRoot.set(root, (officialSeatsByRoot.get(root) ?? 0) + 1);
|
|
125
266
|
}
|
|
126
267
|
const officialTop5 = Math.max(0, ...officialSeatsByRoot.values());
|
|
127
|
-
const
|
|
128
|
-
|
|
268
|
+
const composition = {};
|
|
269
|
+
for (const t of ITEM_TYPES)
|
|
270
|
+
composition[t] = 0;
|
|
271
|
+
for (const it of classified)
|
|
272
|
+
composition[it.type] += 1;
|
|
273
|
+
const listicle = composition.listicle;
|
|
274
|
+
const definition = composition.reference;
|
|
129
275
|
const counts = { officialTop5, listicle, definition };
|
|
130
276
|
let verdict = "open";
|
|
131
277
|
if (officialTop5 >= OFFICIAL_TOP5_MIN)
|
|
@@ -134,13 +280,15 @@ export function classifySerp(keyword, items) {
|
|
|
134
280
|
verdict = "listicle_window";
|
|
135
281
|
else if (definition >= DEFINITION_MIN)
|
|
136
282
|
verdict = "definition_wall";
|
|
283
|
+
else if (composition.tool >= TOOL_MIN)
|
|
284
|
+
verdict = "tool_window";
|
|
137
285
|
// 寄生目标 = 榜单本身(去谈收录的对象);非榜单窗口不给,免得 agent 拿着空清单乱投。
|
|
138
286
|
const parasiteTargets = verdict === "listicle_window"
|
|
139
287
|
? classified
|
|
140
288
|
.filter((it) => it.type === "listicle")
|
|
141
289
|
.map((it) => ({ host: it.host, pos: it.pos, title: it.title, owner: ownerOf(keyword, it, classified) }))
|
|
142
290
|
: [];
|
|
143
|
-
return { verdict, items: classified, parasiteTargets, counts };
|
|
291
|
+
return { verdict, items: classified, parasiteTargets, counts, composition };
|
|
144
292
|
}
|
|
145
293
|
/** 榜单页归谁(见 TargetOwner)。四条机械证据,按强弱排:查询词里的品牌就是这个站(官方自己的
|
|
146
294
|
* 「X 的替代品」页)> 同根域在本页另占非榜单席位 > `alternative(s)` 型标题(tabledi 走查:
|
|
@@ -157,15 +305,106 @@ export function ownerOf(keyword, it, page) {
|
|
|
157
305
|
return "vendor";
|
|
158
306
|
if (/\balternatives?\b/i.test(it.title))
|
|
159
307
|
return "vendor";
|
|
160
|
-
|
|
161
|
-
try {
|
|
162
|
-
path = new URL(it.url).pathname;
|
|
163
|
-
}
|
|
164
|
-
catch {
|
|
165
|
-
/* 不是完整 URL 就按原串匹配 */
|
|
166
|
-
}
|
|
167
|
-
if (VENDOR_CONTENT_PATH_RE.test(path))
|
|
308
|
+
if (VENDOR_CONTENT_PATH_RE.test(pathOf(it.url)))
|
|
168
309
|
return "vendor";
|
|
169
310
|
return "unknown";
|
|
170
311
|
}
|
|
312
|
+
/** URL 归一:去 ?query / #hash、去尾斜杠、协议与主机转小写、路径原样。
|
|
313
|
+
* 例外:youtube.com/watch 的视频 id 在 query 里(v=),去掉就把所有视频折成一条,所以单独保留。 */
|
|
314
|
+
export function normalizeSerpUrl(url) {
|
|
315
|
+
let s = url.trim();
|
|
316
|
+
const hash = s.indexOf("#");
|
|
317
|
+
if (hash >= 0)
|
|
318
|
+
s = s.slice(0, hash);
|
|
319
|
+
let query = "";
|
|
320
|
+
const q = s.indexOf("?");
|
|
321
|
+
if (q >= 0) {
|
|
322
|
+
query = s.slice(q + 1);
|
|
323
|
+
s = s.slice(0, q);
|
|
324
|
+
}
|
|
325
|
+
const m = /^([a-z][a-z0-9+.-]*:\/\/)([^/]*)(.*)$/i.exec(s);
|
|
326
|
+
if (m)
|
|
327
|
+
s = `${(m[1] ?? "").toLowerCase()}${(m[2] ?? "").toLowerCase()}${m[3] ?? ""}`;
|
|
328
|
+
s = s.replace(/\/+$/, "");
|
|
329
|
+
if (query && /youtube\.com\/watch$/i.test(s)) {
|
|
330
|
+
const v = query.split("&").find((p) => /^v=/.test(p));
|
|
331
|
+
if (v)
|
|
332
|
+
s += `?${v}`;
|
|
333
|
+
}
|
|
334
|
+
return s;
|
|
335
|
+
}
|
|
336
|
+
/** 两组 URL 归一后的共享数(各自先去重)。 */
|
|
337
|
+
export function sharedUrlCount(a, b) {
|
|
338
|
+
return sharedOfSets(new Set(a.map(normalizeSerpUrl)), new Set(b.map(normalizeSerpUrl)));
|
|
339
|
+
}
|
|
340
|
+
function sharedOfSets(a, b) {
|
|
341
|
+
let n = 0;
|
|
342
|
+
for (const u of a)
|
|
343
|
+
if (b.has(u))
|
|
344
|
+
n += 1;
|
|
345
|
+
return n;
|
|
346
|
+
}
|
|
347
|
+
export function clusterCells(cells) {
|
|
348
|
+
const sets = cells.map((c) => new Set(c.urls.slice(0, TOP_N).map(normalizeSerpUrl)));
|
|
349
|
+
const parent = cells.map((_, i) => i);
|
|
350
|
+
const find = (i) => {
|
|
351
|
+
let r = i;
|
|
352
|
+
while (parent[r] !== r)
|
|
353
|
+
r = parent[r];
|
|
354
|
+
while (parent[i] !== r) {
|
|
355
|
+
const next = parent[i];
|
|
356
|
+
parent[i] = r;
|
|
357
|
+
i = next;
|
|
358
|
+
}
|
|
359
|
+
return r;
|
|
360
|
+
};
|
|
361
|
+
const shared = (i, j) => sharedOfSets(sets[i], sets[j]);
|
|
362
|
+
for (let i = 0; i < cells.length; i++) {
|
|
363
|
+
for (let j = i + 1; j < cells.length; j++) {
|
|
364
|
+
if (cells[i].locale !== cells[j].locale)
|
|
365
|
+
continue;
|
|
366
|
+
if (shared(i, j) < CLUSTER_SHARED_MIN)
|
|
367
|
+
continue;
|
|
368
|
+
const ri = find(i);
|
|
369
|
+
const rj = find(j);
|
|
370
|
+
if (ri !== rj)
|
|
371
|
+
parent[rj] = ri;
|
|
372
|
+
}
|
|
373
|
+
}
|
|
374
|
+
// 簇 id:按市场从 1 起,按簇内首个成员在输入里出现的顺序编号(单成员也占号 —— 每个键都有簇 id)
|
|
375
|
+
const idOfRoot = new Map();
|
|
376
|
+
const membersOfRoot = new Map();
|
|
377
|
+
const nextByLocale = new Map();
|
|
378
|
+
const clusterOf = new Map();
|
|
379
|
+
cells.forEach((cell, i) => {
|
|
380
|
+
const r = find(i);
|
|
381
|
+
let id = idOfRoot.get(r);
|
|
382
|
+
if (id === undefined) {
|
|
383
|
+
const n = (nextByLocale.get(cell.locale) ?? 0) + 1;
|
|
384
|
+
nextByLocale.set(cell.locale, n);
|
|
385
|
+
id = `${cell.locale}:${n}`;
|
|
386
|
+
idOfRoot.set(r, id);
|
|
387
|
+
membersOfRoot.set(r, []);
|
|
388
|
+
}
|
|
389
|
+
membersOfRoot.get(r)?.push(i);
|
|
390
|
+
clusterOf.set(cell.key, id);
|
|
391
|
+
});
|
|
392
|
+
const clusters = [];
|
|
393
|
+
for (const [r, idx] of membersOfRoot) {
|
|
394
|
+
if (idx.length < 2)
|
|
395
|
+
continue;
|
|
396
|
+
let min = Number.POSITIVE_INFINITY;
|
|
397
|
+
for (let a = 0; a < idx.length; a++) {
|
|
398
|
+
for (let b = a + 1; b < idx.length; b++)
|
|
399
|
+
min = Math.min(min, shared(idx[a], idx[b]));
|
|
400
|
+
}
|
|
401
|
+
clusters.push({
|
|
402
|
+
id: idOfRoot.get(r),
|
|
403
|
+
locale: cells[idx[0]].locale,
|
|
404
|
+
members: idx.map((i) => cells[i].key),
|
|
405
|
+
shared: min,
|
|
406
|
+
});
|
|
407
|
+
}
|
|
408
|
+
return { clusterOf, clusters };
|
|
409
|
+
}
|
|
171
410
|
//# sourceMappingURL=seo-classify.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"seo-classify.js","sourceRoot":"","sources":["../../src/core/seo-classify.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"seo-classify.js","sourceRoot":"","sources":["../../src/core/seo-classify.ts"],"names":[],"mappings":"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"}
|
package/dist/core/seo-pages.js
CHANGED
|
@@ -160,6 +160,64 @@ export async function probeStatus(urls, fetchImpl = fetch) {
|
|
|
160
160
|
await Promise.all(Array.from({ length: Math.min(PROBE_CONCURRENCY, queue.length) }, worker));
|
|
161
161
|
return out;
|
|
162
162
|
}
|
|
163
|
+
// ---- 页首(hreflang / lang / noindex / title)----
|
|
164
|
+
/** 抓一批页的页首:GET,只读前 64KB 就取消。失败是 null,不是错。
|
|
165
|
+
* 用于外部站的页面清单(design/seo-cell-funnel.md §3.2 A);托管站由 deploy 直接写清单,不抓。 */
|
|
166
|
+
export async function fetchPageHeads(urls, fetchImpl = fetch) {
|
|
167
|
+
const out = new Map();
|
|
168
|
+
const queue = [...new Set(urls)];
|
|
169
|
+
const one = async (url) => {
|
|
170
|
+
try {
|
|
171
|
+
const res = await fetchImpl(url, {
|
|
172
|
+
method: "GET",
|
|
173
|
+
redirect: "follow",
|
|
174
|
+
headers: { "user-agent": UA, accept: "text/html,*/*" },
|
|
175
|
+
signal: AbortSignal.timeout(PROBE_TIMEOUT_MS),
|
|
176
|
+
});
|
|
177
|
+
const finalUrl = res.url && normalizePageUrl(res.url) !== normalizePageUrl(url) ? res.url : null;
|
|
178
|
+
let html = null;
|
|
179
|
+
if (res.ok && res.body) {
|
|
180
|
+
const reader = res.body.getReader();
|
|
181
|
+
const chunks = [];
|
|
182
|
+
let size = 0;
|
|
183
|
+
while (size < HEAD_BYTES) {
|
|
184
|
+
const { done, value } = await reader.read();
|
|
185
|
+
if (done)
|
|
186
|
+
break;
|
|
187
|
+
if (value) {
|
|
188
|
+
chunks.push(value);
|
|
189
|
+
size += value.byteLength;
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
await reader.cancel().catch(() => undefined);
|
|
193
|
+
html = new TextDecoder("utf-8", { fatal: false }).decode(concat(chunks));
|
|
194
|
+
}
|
|
195
|
+
else
|
|
196
|
+
await res.body?.cancel().catch(() => undefined);
|
|
197
|
+
out.set(url, { status: res.status, finalUrl, html });
|
|
198
|
+
}
|
|
199
|
+
catch {
|
|
200
|
+
out.set(url, { status: null, finalUrl: null, html: null });
|
|
201
|
+
}
|
|
202
|
+
};
|
|
203
|
+
const worker = async () => {
|
|
204
|
+
for (let u = queue.shift(); u !== undefined; u = queue.shift())
|
|
205
|
+
await one(u);
|
|
206
|
+
};
|
|
207
|
+
await Promise.all(Array.from({ length: Math.min(PROBE_CONCURRENCY, queue.length) }, worker));
|
|
208
|
+
return out;
|
|
209
|
+
}
|
|
210
|
+
const HEAD_BYTES = 64 * 1024;
|
|
211
|
+
function concat(chunks) {
|
|
212
|
+
const total = chunks.reduce((n, c) => n + c.byteLength, 0);
|
|
213
|
+
const out = new Uint8Array(total);
|
|
214
|
+
let off = 0;
|
|
215
|
+
for (const c of chunks) {
|
|
216
|
+
out.set(c, off);
|
|
217
|
+
off += c.byteLength;
|
|
218
|
+
}
|
|
219
|
+
return out;
|
|
220
|
+
}
|
|
163
221
|
// ---- 挑页(纯函数)----
|
|
164
222
|
/** 从两窗口的页级聚合 + sitemap 挑出三组页。状态 / 收录态字段留 null,由调用方按预算填。
|
|
165
223
|
* `prev` 整段为空(冷启动、补拉也空)时不出 movers:没有对照就没有「变化」,别把每页都报成 mover。 */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"seo-pages.js","sourceRoot":"","sources":["../../src/core/seo-pages.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"seo-pages.js","sourceRoot":"","sources":["../../src/core/seo-pages.ts"],"names":[],"mappings":"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"}
|