@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.
@@ -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
- /** host 可比根(取最后两段;.co.uk 类多段公共后缀不在本域出现,不做完整 PSL)。 */
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
- return parts.length <= 2 ? parts.join(".") : parts.slice(-2).join(".");
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
- return set.has(rootOf(host)) || set.has(host.replace(/^www\./, ""));
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
- /** 单条结果的页型 —— 只看域名类型库 + 标题/URL 形态,不猜内容。 */
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 listicle = classified.filter((it) => it.type === "listicle").length;
128
- const definition = classified.filter((it) => it.type === "reference").length;
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
- let path = it.url;
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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"}
@@ -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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"}