@clize/clize 0.26.1 → 0.27.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.
@@ -0,0 +1,102 @@
1
+ /** AI 引擎来源域。加一个引擎 = 加一行(独立常量,不散在判定逻辑里)。 */
2
+ export const AI_REFERRERS = [
3
+ "chatgpt.com",
4
+ "chat.openai.com",
5
+ "perplexity.ai",
6
+ "www.perplexity.ai",
7
+ "gemini.google.com",
8
+ "copilot.microsoft.com",
9
+ "claude.ai",
10
+ "you.com",
11
+ "phind.com",
12
+ "poe.com",
13
+ "grok.com",
14
+ "x.ai",
15
+ "mistral.ai",
16
+ "chat.deepseek.com",
17
+ "kimi.moonshot.cn",
18
+ "doubao.com",
19
+ "yuanbao.tencent.com",
20
+ ];
21
+ /** 搜索引擎来源域(用于把"搜索"与"AI"分开,两者都不是直接访问)。 */
22
+ const SEARCH_REFERRERS = [
23
+ "google.com",
24
+ "bing.com",
25
+ "duckduckgo.com",
26
+ "search.yahoo.com",
27
+ "baidu.com",
28
+ "yandex.com",
29
+ "ecosia.org",
30
+ "brave.com",
31
+ ];
32
+ const stripWww = (h) => h.replace(/^www\./, "");
33
+ /** google.co.jp / www.google.de 这类国别站也算 google。 */
34
+ const isSearch = (host) => {
35
+ const h = stripWww(host);
36
+ return SEARCH_REFERRERS.some((s) => h === s || h.endsWith(`.${s}`)) || /^google\.[a-z.]+$/.test(h);
37
+ };
38
+ export const isAiReferrer = (host) => AI_REFERRERS.includes(host) ||
39
+ AI_REFERRERS.includes(stripWww(host));
40
+ /** 自适应采样校正:真实量 ≈ 采样行数 × 平均采样间隔。 */
41
+ const adj = (g) => Math.round((Number(g.count) || 0) * (g.avg?.sampleInterval && g.avg.sampleInterval > 0 ? g.avg.sampleInterval : 1));
42
+ const QUERY = `query($acc:String!,$from:Time!,$to:Time!,$host:String!){
43
+ viewer{ accounts(filter:{accountTag:$acc}){
44
+ byReferrer: rumPageloadEventsAdaptiveGroups(
45
+ filter:{datetime_geq:$from, datetime_leq:$to, requestHost:$host},
46
+ limit:200, orderBy:[count_DESC]
47
+ ){ count avg{sampleInterval} dimensions{ refererHost } }
48
+ }}}`;
49
+ /** 把 CF 的 referrer 聚合转成分源结果。纯函数(不碰网络),便于单测口径。 */
50
+ export function shapeTraffic(groups, meta) {
51
+ const ai = {};
52
+ const search = {};
53
+ const other = [];
54
+ let direct = 0;
55
+ let pv = 0;
56
+ for (const g of groups) {
57
+ const raw = (g.dimensions?.refererHost ?? "").toLowerCase();
58
+ const n = adj(g);
59
+ pv += n;
60
+ if (!raw) {
61
+ direct += n;
62
+ continue;
63
+ }
64
+ // 站内跳转不是来源(实测 top 榜前几名全是自引)——计入 pv,但不进任何来源桶。
65
+ if (stripWww(raw) === stripWww(meta.host))
66
+ continue;
67
+ if (isAiReferrer(raw))
68
+ ai[stripWww(raw)] = (ai[stripWww(raw)] ?? 0) + n;
69
+ else if (isSearch(raw))
70
+ search[stripWww(raw)] = (search[stripWww(raw)] ?? 0) + n;
71
+ else
72
+ other.push({ host: raw, pv: n });
73
+ }
74
+ const sum = (o) => Object.values(o).reduce((a, b) => a + b, 0);
75
+ const aiTotal = sum(ai);
76
+ return {
77
+ from: meta.from,
78
+ to: meta.to,
79
+ pv,
80
+ ai: {
81
+ total: aiTotal,
82
+ shareOfPv: pv > 0 ? Number((aiTotal / pv).toFixed(4)) : 0,
83
+ byEngine: ai,
84
+ },
85
+ search: { total: sum(search), byEngine: search },
86
+ direct,
87
+ topReferrers: other.sort((a, b) => b.pv - a.pv).slice(0, meta.limit ?? 10),
88
+ note: "RUM is adaptively sampled — figures are estimates rounded by magnitude; compare over time, never quote as exact counts. Same-host referrers are internal navigation and excluded from sources.",
89
+ };
90
+ }
91
+ /** 读一个域在窗口内的流量分源。CF 侧算聚合,我们只校验 + 转形。 */
92
+ export async function readTraffic(ctx, opts) {
93
+ const data = await ctx.cf.graphql(QUERY, {
94
+ acc: ctx.cf.accountId,
95
+ from: opts.from,
96
+ to: opts.to,
97
+ host: opts.host,
98
+ });
99
+ const groups = data?.viewer?.accounts?.[0]?.byReferrer ?? [];
100
+ return shapeTraffic(groups, opts);
101
+ }
102
+ //# sourceMappingURL=seo-traffic.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"seo-traffic.js","sourceRoot":"","sources":["../../src/core/seo-traffic.ts"],"names":[],"mappings":"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"}