@lucasygu/redbook 0.1.6 → 0.1.8

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/README.md CHANGED
@@ -55,6 +55,7 @@ redbook post --title "测试" --body "..." --images img.png --private
55
55
  | `feed` | 获取推荐页内容 |
56
56
  | `post` | 发布图文笔记 |
57
57
  | `topics <关键词>` | 搜索话题/标签 |
58
+ | `analyze-viral <url>` | 分析爆款笔记(钩子、互动、结构) |
58
59
 
59
60
  ### 通用选项
60
61
 
@@ -89,6 +90,19 @@ redbook post --title "测试" --body "..." --images img.png --private
89
90
  - **主 API**(`edith.xiaohongshu.com`)—— 读取:搜索、推荐页、笔记、评论、用户资料。使用 144 字节 x-s 签名(v4.3.1)
90
91
  - **创作者 API**(`creator.xiaohongshu.com`)—— 写入:上传图片、发布笔记。使用 AES-128-CBC 签名
91
92
 
93
+ ## Claude Code 集成
94
+
95
+ 安装后自动注册为 Claude Code 技能。在 Claude Code 中使用 `/redbook` 命令:
96
+
97
+ ```
98
+ /redbook search "AI编程" # 搜索笔记
99
+ /redbook read <url> # 阅读笔记
100
+ /redbook user <userId> # 查看博主
101
+ /redbook analyze <userId> # 完整博主分析
102
+ ```
103
+
104
+ Claude 会自动调用 CLI 命令,解析结果,完成竞品分析、话题研究等复杂任务。
105
+
92
106
  ## 编程接口
93
107
 
94
108
  ```typescript
@@ -175,6 +189,7 @@ redbook post --title "测试" --body "..." --images img.png --private
175
189
  | `feed` | Get homepage feed |
176
190
  | `post` | Publish an image note |
177
191
  | `topics <keyword>` | Search for topics/hashtags |
192
+ | `analyze-viral <url>` | Analyze why a viral note works (hooks, engagement, structure) |
178
193
 
179
194
  ### Global Options
180
195
 
@@ -209,6 +224,19 @@ redbook post --title "测试" --body "..." --images img.png --private
209
224
  - **Main API** (`edith.xiaohongshu.com`) — for reading: search, feed, notes, comments, user profiles. Uses x-s signature with 144-byte payload (v4.3.1).
210
225
  - **Creator API** (`creator.xiaohongshu.com`) — for writing: upload images, publish notes. Uses simpler AES-128-CBC signing.
211
226
 
227
+ ## Claude Code Integration
228
+
229
+ Installs automatically as a Claude Code skill. Use `/redbook` in Claude Code:
230
+
231
+ ```
232
+ /redbook search "AI编程" # Search notes
233
+ /redbook read <url> # Read a note
234
+ /redbook user <userId> # Creator profile
235
+ /redbook analyze <userId> # Full creator analysis
236
+ ```
237
+
238
+ Claude will call CLI commands, parse results, and handle complex workflows like competitive analysis and topic research.
239
+
212
240
  ## Programmatic Usage
213
241
 
214
242
  ```typescript
package/SKILL.md CHANGED
@@ -31,6 +31,7 @@ When this command is invoked, determine the user's intent and run the appropriat
31
31
  | Creator's posts | `redbook user-posts <userId> --json` |
32
32
  | Browse feed | `redbook feed --json` |
33
33
  | Search hashtags | `redbook topics "keyword" --json` |
34
+ | Analyze viral note | `redbook analyze-viral <url> --json` |
34
35
  | Check connection | `redbook whoami` |
35
36
 
36
37
  ### Always Use `--json`
@@ -111,6 +112,29 @@ Search for topic hashtags. Useful for finding trending topics to attach to posts
111
112
  redbook topics "Claude Code" --json
112
113
  ```
113
114
 
115
+ #### `redbook analyze-viral <url>`
116
+
117
+ Analyze why a viral XHS note works — hook patterns, engagement metrics, content structure, and performance relative to the author's baseline. Returns a deterministic viral score (0-100).
118
+
119
+ ```bash
120
+ redbook analyze-viral "https://www.xiaohongshu.com/explore/abc123" --json
121
+ redbook analyze-viral "https://www.xiaohongshu.com/explore/abc123" --comment-pages 5
122
+ ```
123
+
124
+ **Options:**
125
+ - `--comment-pages <n>`: Comment pages to fetch (default: 3, max: 10)
126
+
127
+ **JSON output structure:**
128
+ Returns `{ note, score, hook, content, visual, engagement, comments, relative, fetchedAt }`.
129
+
130
+ - `score.overall` (0-100) — composite of hook/engagement/relative/content/comments
131
+ - `hook.hookPatterns[]` — detected title patterns (Identity Hook, Emotion Word, etc.)
132
+ - `engagement` — likes, comments, collects, shares + ratios
133
+ - `relative.viralMultiplier` — performance vs author's median
134
+ - `comments.themes[]` — top recurring phrases from comments
135
+
136
+ Use `--json` when consuming from Claude Code skills for further synthesis.
137
+
114
138
  #### `redbook whoami`
115
139
 
116
140
  Check connection status. Verifies cookies are valid and shows the logged-in user.
@@ -177,6 +201,24 @@ redbook search "keyword" --sort popular --json # What's proven
177
201
  redbook search "keyword" --sort latest --json # What's new
178
202
  ```
179
203
 
204
+ ### Viral Note Research
205
+
206
+ Analyze what makes top-performing notes work:
207
+
208
+ ```bash
209
+ # 1. Find viral notes in a niche
210
+ redbook search "Claude Code" --sort popular --json
211
+
212
+ # 2. Analyze the top-performing note
213
+ redbook analyze-viral "<noteUrl>" --json
214
+
215
+ # 3. Compare multiple viral notes to find common patterns
216
+ # Run analyze-viral on 3-5 top notes, then synthesize:
217
+ # - Which hook patterns appear most often?
218
+ # - What engagement ratios are typical for this niche?
219
+ # - What content structure drives saves vs shares?
220
+ ```
221
+
180
222
  ### Creator Deep-Dive
181
223
 
182
224
  Analyze a specific creator's strategy:
@@ -208,10 +250,62 @@ const results = await client.searchNotes("AI编程", 1, 20, "popular");
208
250
  const topics = await client.searchTopics("Claude Code");
209
251
  ```
210
252
 
253
+ ## xsec_token — CRITICAL for Reading Notes
254
+
255
+ The XHS API requires a valid `xsec_token` to fetch note content. Without it, `read`, `comments`, and `analyze-viral` return `{}`.
256
+
257
+ **Key rules:**
258
+
259
+ 1. **Tokens expire.** A URL with `?xsec_token=...` from a previous session will return `{}`. Never cache or reuse old URLs.
260
+ 2. **`search` always returns fresh tokens.** Every item in search results includes a valid `xsec_token` for that note.
261
+ 3. **noteId alone returns `{}`.** Running `redbook read <noteId>` without a token almost always fails.
262
+
263
+ **The correct workflow — always search first:**
264
+
265
+ ```bash
266
+ # WRONG — stale URL or bare noteId, will likely return {}
267
+ redbook read "689da7b0000000001b0372c6" --json
268
+ redbook read "https://www.xiaohongshu.com/explore/689da7b0?xsec_token=OLD_TOKEN" --json
269
+
270
+ # RIGHT — search first, then use the fresh URL with token
271
+ redbook search "AI编程" --sort popular --json
272
+ # Extract the noteId + xsec_token from search results, then:
273
+ redbook read "https://www.xiaohongshu.com/explore/<noteId>?xsec_token=<freshToken>" --json
274
+ redbook analyze-viral "https://www.xiaohongshu.com/explore/<noteId>?xsec_token=<freshToken>" --json
275
+ ```
276
+
277
+ **For Claude Code agents:** When the user gives you a bare XHS note URL (no `xsec_token` param), extract the noteId from the URL path, search for the note title or noteId to get a fresh token, then use the full URL with the fresh token for `read`/`comments`/`analyze-viral`.
278
+
279
+ **How to extract fresh URLs from search results (JSON):**
280
+
281
+ ```bash
282
+ # Each search result item has: { id: "noteId", xsec_token: "...", note_card: { ... } }
283
+ # Build the URL: https://www.xiaohongshu.com/explore/{id}?xsec_token={xsec_token}
284
+ ```
285
+
286
+ **Commands that need xsec_token:** `read`, `comments`, `analyze-viral`
287
+ **Commands that do NOT need xsec_token:** `search`, `user`, `user-posts`, `feed`, `whoami`, `topics`
288
+
289
+ ## Chinese Number Formats in API Responses
290
+
291
+ The XHS API returns abbreviated numbers with Chinese unit suffixes:
292
+
293
+ | API value | Actual number |
294
+ |-----------|---------------|
295
+ | `"1.5万"` | 15,000 |
296
+ | `"2.4万"` | 24,000 |
297
+ | `"1.2亿"` | 120,000,000 |
298
+ | `"115"` | 115 |
299
+
300
+ `万` = ×10,000. `亿` = ×100,000,000. Numbers under 10,000 are plain integers as strings.
301
+
302
+ The `analyze-viral` command handles this automatically. When parsing `--json` output manually, watch for these suffixes in `interact_info` fields (`liked_count`, `collected_count`, etc.).
303
+
211
304
  ## Error Handling
212
305
 
213
306
  | Error | Meaning | Fix |
214
307
  |-------|---------|-----|
308
+ | `{}` empty response | Missing or expired xsec_token | Search first to get a fresh token (see above) |
215
309
  | "No 'a1' cookie" | Not logged into XHS in browser | Log into xiaohongshu.com in Chrome |
216
310
  | "Session expired" | Cookie too old | Re-login in Chrome |
217
311
  | "NeedVerify" / captcha | Anti-bot triggered | Wait and retry, or reduce request frequency |
package/dist/cli.js CHANGED
@@ -17,6 +17,7 @@ import { Command } from "commander";
17
17
  import kleur from "kleur";
18
18
  import { extractCookies } from "./lib/cookies.js";
19
19
  import { XhsClient, XhsApiError } from "./lib/client.js";
20
+ import { analyzeViral, formatViralAnalysis } from "./lib/analyze.js";
20
21
  const program = new Command();
21
22
  program
22
23
  .name("redbook")
@@ -351,6 +352,109 @@ topicsCmd.action(async (keyword, opts) => {
351
352
  handleError(err);
352
353
  }
353
354
  });
355
+ // ─── analyze-viral ──────────────────────────────────────────────────────────
356
+ const analyzeViralCmd = program
357
+ .command("analyze-viral <url>")
358
+ .description("Analyze why a viral note works — hooks, engagement, structure");
359
+ analyzeViralCmd.option("--comment-pages <n>", "Comment pages to fetch (max 10)", "3");
360
+ addCookieOption(analyzeViralCmd);
361
+ addJsonOption(analyzeViralCmd);
362
+ analyzeViralCmd.action(async (url, opts) => {
363
+ try {
364
+ const client = await getClient(opts.cookieSource);
365
+ const { noteId, xsecToken } = parseNoteUrl(url);
366
+ // 1. Fetch the note (same pattern as `read` — prefer HTML, API when xsec_token present)
367
+ let note;
368
+ if (xsecToken) {
369
+ try {
370
+ const feedResult = (await client.getNoteById(noteId, xsecToken));
371
+ note = feedResult?.items?.[0]?.note_card ?? {};
372
+ if (!note.user) {
373
+ note = (await client.getNoteFromHtml(noteId, xsecToken));
374
+ }
375
+ }
376
+ catch {
377
+ note = (await client.getNoteFromHtml(noteId, xsecToken));
378
+ }
379
+ }
380
+ else {
381
+ note = (await client.getNoteFromHtml(noteId, ""));
382
+ }
383
+ const user = note.user ?? {};
384
+ const userId = String(user.user_id ?? "");
385
+ if (!userId) {
386
+ console.error(kleur.red("Could not extract author user_id from note"));
387
+ process.exit(1);
388
+ }
389
+ // 2. Fetch comments, author posts, and author info in parallel
390
+ const commentPages = Math.min(parseInt(opts.commentPages) || 3, 10);
391
+ const fetchComments = async () => {
392
+ const all = [];
393
+ let cursor = "";
394
+ for (let i = 0; i < commentPages; i++) {
395
+ try {
396
+ const res = (await client.getComments(noteId, cursor, xsecToken ?? ""));
397
+ if (res.comments)
398
+ all.push(...res.comments);
399
+ if (!res.has_more)
400
+ break;
401
+ cursor = res.cursor ?? "";
402
+ }
403
+ catch {
404
+ break; // Comment fetch failed, continue with what we have
405
+ }
406
+ }
407
+ return all;
408
+ };
409
+ const fetchAuthorPosts = async () => {
410
+ try {
411
+ const res = (await client.getUserNotes(userId));
412
+ return res.notes ?? [];
413
+ }
414
+ catch {
415
+ return [];
416
+ }
417
+ };
418
+ const fetchAuthorInfo = async () => {
419
+ try {
420
+ const res = (await client.getUserInfo(userId));
421
+ // Follower count is in interactions array: {type: "fans", count: "30510"}
422
+ const interactions = (res.interactions ?? []);
423
+ const fansEntry = interactions.find((i) => i.type === "fans");
424
+ if (fansEntry?.count) {
425
+ // Handle Chinese abbreviated numbers (e.g., "3.1万")
426
+ const s = fansEntry.count.trim();
427
+ if (s.endsWith("万"))
428
+ return Math.round(parseFloat(s.slice(0, -1)) * 10000);
429
+ if (s.endsWith("亿"))
430
+ return Math.round(parseFloat(s.slice(0, -1)) * 100000000);
431
+ return parseInt(s, 10) || 0;
432
+ }
433
+ return 0;
434
+ }
435
+ catch {
436
+ return 0;
437
+ }
438
+ };
439
+ console.error(kleur.dim("Fetching comments, author posts, and profile..."));
440
+ const [comments, authorPosts, authorFollowers] = await Promise.all([
441
+ fetchComments(),
442
+ fetchAuthorPosts(),
443
+ fetchAuthorInfo(),
444
+ ]);
445
+ // 3. Run analysis
446
+ const analysis = analyzeViral(noteId, note, comments, authorPosts, authorFollowers);
447
+ if (opts.json) {
448
+ output(analysis, true);
449
+ }
450
+ else {
451
+ console.log(formatViralAnalysis(analysis));
452
+ }
453
+ }
454
+ catch (err) {
455
+ handleError(err);
456
+ }
457
+ });
354
458
  // ─── Helpers ────────────────────────────────────────────────────────────────
355
459
  function parseNoteUrl(url) {
356
460
  // Handle full URLs like https://www.xiaohongshu.com/explore/abc123?xsec_token=xxx
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,116 @@
1
+ /**
2
+ * Viral note analysis — deterministic, no LLM dependency.
3
+ *
4
+ * Analyzes WHY a note works: hook patterns, engagement ratios,
5
+ * content structure, and performance vs author baseline.
6
+ */
7
+ export interface HookAnalysis {
8
+ title: string;
9
+ titleLength: number;
10
+ emojiCount: number;
11
+ emojis: string[];
12
+ hasNumber: boolean;
13
+ hasQuestion: boolean;
14
+ hasExclamation: boolean;
15
+ isListFormat: boolean;
16
+ hasIdentityHook: boolean;
17
+ hasEmotionWord: boolean;
18
+ hasContrastHook: boolean;
19
+ hasSeriesFormat: boolean;
20
+ hookPatterns: string[];
21
+ }
22
+ export interface ContentStructure {
23
+ bodyLength: number;
24
+ paragraphCount: number;
25
+ avgParagraphLength: number;
26
+ lineBreakDensity: number;
27
+ emojiDensity: number;
28
+ hashtagCount: number;
29
+ hashtags: string[];
30
+ hasCallToAction: boolean;
31
+ bulletOrListUsage: boolean;
32
+ }
33
+ export interface VisualStrategy {
34
+ imageCount: number;
35
+ noteType: string;
36
+ }
37
+ export interface EngagementMetrics {
38
+ likes: number;
39
+ comments: number;
40
+ collects: number;
41
+ shares: number;
42
+ totalEngagement: number;
43
+ commentToLikeRatio: number;
44
+ collectToLikeRatio: number;
45
+ shareToLikeRatio: number;
46
+ }
47
+ export interface CommentInfo {
48
+ author: string;
49
+ content: string;
50
+ likes: number;
51
+ }
52
+ export interface CommentPatterns {
53
+ totalFetched: number;
54
+ topComments: CommentInfo[];
55
+ avgCommentLength: number;
56
+ avgCommentLikes: number;
57
+ themes: Array<{
58
+ keyword: string;
59
+ count: number;
60
+ }>;
61
+ questionCount: number;
62
+ questionRate: number;
63
+ }
64
+ export interface RelativePerformance {
65
+ authorPostCount: number;
66
+ authorAvgLikes: number;
67
+ authorMedianLikes: number;
68
+ authorMaxLikes: number;
69
+ thisNoteLikes: number;
70
+ viralMultiplier: number;
71
+ percentileRank: number;
72
+ isOutlier: boolean;
73
+ authorFollowers: number;
74
+ likesToFollowerRatio: number;
75
+ }
76
+ export interface ViralScore {
77
+ overall: number;
78
+ breakdown: {
79
+ hook: number;
80
+ engagement: number;
81
+ relative: number;
82
+ content: number;
83
+ comments: number;
84
+ };
85
+ }
86
+ export interface ViralAnalysis {
87
+ note: {
88
+ id: string;
89
+ title: string;
90
+ url: string;
91
+ author: {
92
+ nickname: string;
93
+ userId: string;
94
+ followers: number;
95
+ };
96
+ type: string;
97
+ };
98
+ score: ViralScore;
99
+ hook: HookAnalysis;
100
+ content: ContentStructure;
101
+ visual: VisualStrategy;
102
+ engagement: EngagementMetrics;
103
+ comments: CommentPatterns;
104
+ relative: RelativePerformance;
105
+ fetchedAt: string;
106
+ }
107
+ export declare function analyzeHook(title: string): HookAnalysis;
108
+ export declare function analyzeContent(desc: string): ContentStructure;
109
+ export declare function analyzeVisual(note: Record<string, unknown>): VisualStrategy;
110
+ export declare function computeEngagement(interactInfo: Record<string, unknown>): EngagementMetrics;
111
+ export declare function analyzeComments(comments: Array<Record<string, unknown>>): CommentPatterns;
112
+ export declare function computeRelativePerformance(thisNoteLikes: number, authorPosts: Array<Record<string, unknown>>, authorFollowers: number): RelativePerformance;
113
+ export declare function computeViralScore(hook: HookAnalysis, engagement: EngagementMetrics, relative: RelativePerformance, content: ContentStructure, commentPatterns: CommentPatterns): ViralScore;
114
+ export declare function analyzeViral(noteId: string, note: Record<string, unknown>, comments: Array<Record<string, unknown>>, authorPosts: Array<Record<string, unknown>>, authorFollowers: number): ViralAnalysis;
115
+ export declare function formatViralAnalysis(a: ViralAnalysis): string;
116
+ //# sourceMappingURL=analyze.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"analyze.d.ts","sourceRoot":"","sources":["../../src/lib/analyze.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,438 @@
1
+ /**
2
+ * Viral note analysis — deterministic, no LLM dependency.
3
+ *
4
+ * Analyzes WHY a note works: hook patterns, engagement ratios,
5
+ * content structure, and performance vs author baseline.
6
+ */
7
+ import kleur from "kleur";
8
+ // ─── Chinese Pattern Dictionaries ───────────────────────────────────────────
9
+ const EMOTION_WORDS = [
10
+ "太香了", "绝了", "震惊", "真香", "丝滑", "上头", "离谱", "爆了",
11
+ "神了", "逆天", "炸裂", "牛逼", "绝绝子", "泪目", "笑死", "裂开",
12
+ "麻了", "吐血", "哭了", "天花板", "yyds", "YYDS",
13
+ ];
14
+ const IDENTITY_MARKERS = [
15
+ "小白", "文科生", "非技术", "新手", "零基础", "0基础", "不会编程",
16
+ "普通人", "打工人", "宝妈", "学生党", "上班族", "大龄", "转行",
17
+ ];
18
+ const CONTRAST_PATTERNS = [
19
+ /不是.{1,8}才/, /竟然/, /居然/, /没想到/, /万万没想到/,
20
+ /以为.{1,8}(其实|结果|没想到)/, /才发现/, /原来/,
21
+ ];
22
+ const NUMBER_PATTERN = /\d+[个分秒招步天种条件套款篇张页]/;
23
+ const LIST_PATTERN = /^(\d+[\.、]|[①②③④⑤⑥⑦⑧⑨⑩]|[一二三四五六七八九十][、.])/m;
24
+ const SERIES_PATTERN = /[((]\s*[一二三四五六七八九十\d]+\s*[))]|[Pp]art\s*\d+|第[一二三四五六七八九十\d]+[期篇章集部]/;
25
+ const CTA_PATTERN = /关注|点赞|收藏|转发|双击|评论区|留言|私信/;
26
+ const HASHTAG_PATTERN = /#[^\s#]+/g;
27
+ const EMOJI_PATTERN = /\p{Emoji_Presentation}|\p{Emoji}\uFE0F/gu;
28
+ // Bigram stop words — common Chinese chars that don't carry topic meaning
29
+ const BIGRAM_STOP = new Set([
30
+ "的是", "是的", "了吗", "吗?", "啊啊", "哈哈", "嘿嘿", "呢?",
31
+ "不是", "没有", "可以", "这个", "那个", "什么", "怎么", "真的",
32
+ "一个", "我的", "你的", "他的", "她的", "是不", "有没", "也是",
33
+ "就是", "还是", "但是", "不过", "所以", "因为", "然后", "已经",
34
+ ]);
35
+ // ─── Analysis Functions ─────────────────────────────────────────────────────
36
+ export function analyzeHook(title) {
37
+ const emojis = title.match(EMOJI_PATTERN) ?? [];
38
+ const patterns = [];
39
+ const hasNumber = NUMBER_PATTERN.test(title);
40
+ if (hasNumber)
41
+ patterns.push("Number Hook");
42
+ const hasQuestion = /[??]\s*$/.test(title);
43
+ if (hasQuestion)
44
+ patterns.push("Question");
45
+ const hasExclamation = /[!!]\s*$/.test(title);
46
+ if (hasExclamation)
47
+ patterns.push("Exclamation");
48
+ const isListFormat = LIST_PATTERN.test(title);
49
+ if (isListFormat)
50
+ patterns.push("List Format");
51
+ const hasIdentityHook = IDENTITY_MARKERS.some((w) => title.includes(w));
52
+ if (hasIdentityHook)
53
+ patterns.push("Identity Hook");
54
+ const hasEmotionWord = EMOTION_WORDS.some((w) => title.includes(w));
55
+ if (hasEmotionWord)
56
+ patterns.push("Emotion Word");
57
+ const hasContrastHook = CONTRAST_PATTERNS.some((p) => p.test(title));
58
+ if (hasContrastHook)
59
+ patterns.push("Contrast Hook");
60
+ const hasSeriesFormat = SERIES_PATTERN.test(title);
61
+ if (hasSeriesFormat)
62
+ patterns.push("Series Format");
63
+ if (emojis.length > 0)
64
+ patterns.push("Emoji");
65
+ return {
66
+ title,
67
+ titleLength: [...title].length,
68
+ emojiCount: emojis.length,
69
+ emojis,
70
+ hasNumber,
71
+ hasQuestion,
72
+ hasExclamation,
73
+ isListFormat,
74
+ hasIdentityHook,
75
+ hasEmotionWord,
76
+ hasContrastHook,
77
+ hasSeriesFormat,
78
+ hookPatterns: patterns,
79
+ };
80
+ }
81
+ export function analyzeContent(desc) {
82
+ const paragraphs = desc.split(/\n\s*\n|\n/).filter((p) => p.trim());
83
+ const bodyLength = desc.length;
84
+ const paragraphCount = paragraphs.length;
85
+ const avgParagraphLength = paragraphCount > 0 ? Math.round(bodyLength / paragraphCount) : 0;
86
+ const lineBreaks = (desc.match(/\n/g) ?? []).length;
87
+ const lineBreakDensity = bodyLength > 0 ? (lineBreaks / bodyLength) * 100 : 0;
88
+ const emojis = desc.match(EMOJI_PATTERN) ?? [];
89
+ const emojiDensity = bodyLength > 0 ? (emojis.length / bodyLength) * 100 : 0;
90
+ const hashtags = desc.match(HASHTAG_PATTERN) ?? [];
91
+ const hasCallToAction = CTA_PATTERN.test(desc);
92
+ const bulletOrListUsage = LIST_PATTERN.test(desc);
93
+ return {
94
+ bodyLength,
95
+ paragraphCount,
96
+ avgParagraphLength,
97
+ lineBreakDensity: round2(lineBreakDensity),
98
+ emojiDensity: round2(emojiDensity),
99
+ hashtagCount: hashtags.length,
100
+ hashtags,
101
+ hasCallToAction,
102
+ bulletOrListUsage,
103
+ };
104
+ }
105
+ export function analyzeVisual(note) {
106
+ const imageList = (note.image_list ?? note.images ?? []);
107
+ return {
108
+ imageCount: imageList.length,
109
+ noteType: String(note.type ?? "normal"),
110
+ };
111
+ }
112
+ export function computeEngagement(interactInfo) {
113
+ const likes = num(interactInfo.liked_count);
114
+ const comments = num(interactInfo.comment_count);
115
+ const collects = num(interactInfo.collected_count);
116
+ const shares = num(interactInfo.share_count);
117
+ const total = likes + comments + collects + shares;
118
+ return {
119
+ likes,
120
+ comments,
121
+ collects,
122
+ shares,
123
+ totalEngagement: total,
124
+ commentToLikeRatio: ratio(comments, likes),
125
+ collectToLikeRatio: ratio(collects, likes),
126
+ shareToLikeRatio: ratio(shares, likes),
127
+ };
128
+ }
129
+ export function analyzeComments(comments) {
130
+ if (comments.length === 0) {
131
+ return {
132
+ totalFetched: 0,
133
+ topComments: [],
134
+ avgCommentLength: 0,
135
+ avgCommentLikes: 0,
136
+ themes: [],
137
+ questionCount: 0,
138
+ questionRate: 0,
139
+ };
140
+ }
141
+ // Sort by likes descending, take top 5
142
+ const sorted = [...comments].sort((a, b) => num(b.like_count) - num(a.like_count));
143
+ const topComments = sorted.slice(0, 5).map((c) => ({
144
+ author: String(c.user_info?.nickname ?? "?"),
145
+ content: String(c.content ?? ""),
146
+ likes: num(c.like_count),
147
+ }));
148
+ const totalLength = comments.reduce((sum, c) => sum + String(c.content ?? "").length, 0);
149
+ const totalLikes = comments.reduce((sum, c) => sum + num(c.like_count), 0);
150
+ const questionCount = comments.filter((c) => /[??]\s*$/.test(String(c.content ?? ""))).length;
151
+ // Bigram frequency for theme extraction
152
+ const bigramCounts = new Map();
153
+ for (const c of comments) {
154
+ const text = String(c.content ?? "");
155
+ const chars = [...text].filter((ch) => /[\u4e00-\u9fff]/.test(ch) // Chinese chars only
156
+ );
157
+ for (let i = 0; i < chars.length - 1; i++) {
158
+ const bigram = chars[i] + chars[i + 1];
159
+ if (!BIGRAM_STOP.has(bigram)) {
160
+ bigramCounts.set(bigram, (bigramCounts.get(bigram) ?? 0) + 1);
161
+ }
162
+ }
163
+ }
164
+ const themes = [...bigramCounts.entries()]
165
+ .filter(([, count]) => count >= 3)
166
+ .sort((a, b) => b[1] - a[1])
167
+ .slice(0, 10)
168
+ .map(([keyword, count]) => ({ keyword, count }));
169
+ return {
170
+ totalFetched: comments.length,
171
+ topComments,
172
+ avgCommentLength: Math.round(totalLength / comments.length),
173
+ avgCommentLikes: Math.round(totalLikes / comments.length),
174
+ themes,
175
+ questionCount,
176
+ questionRate: round2((questionCount / comments.length) * 100),
177
+ };
178
+ }
179
+ export function computeRelativePerformance(thisNoteLikes, authorPosts, authorFollowers) {
180
+ // Extract likes from author's posts
181
+ const likesArr = authorPosts
182
+ .map((p) => {
183
+ const info = p.interact_info;
184
+ return info ? num(info.liked_count) : num(p.liked_count);
185
+ })
186
+ .filter((n) => n >= 0);
187
+ if (likesArr.length === 0) {
188
+ return {
189
+ authorPostCount: 0,
190
+ authorAvgLikes: 0,
191
+ authorMedianLikes: 0,
192
+ authorMaxLikes: 0,
193
+ thisNoteLikes,
194
+ viralMultiplier: 0,
195
+ percentileRank: 0,
196
+ isOutlier: false,
197
+ authorFollowers,
198
+ likesToFollowerRatio: ratio(thisNoteLikes, authorFollowers),
199
+ };
200
+ }
201
+ const sorted = [...likesArr].sort((a, b) => a - b);
202
+ const median = sorted.length % 2 === 0
203
+ ? (sorted[sorted.length / 2 - 1] + sorted[sorted.length / 2]) / 2
204
+ : sorted[Math.floor(sorted.length / 2)];
205
+ const avg = likesArr.reduce((s, n) => s + n, 0) / likesArr.length;
206
+ const max = sorted[sorted.length - 1];
207
+ const belowCount = likesArr.filter((l) => l < thisNoteLikes).length;
208
+ const percentile = round2((belowCount / likesArr.length) * 100);
209
+ const multiplier = median > 0 ? round2(thisNoteLikes / median) : 0;
210
+ return {
211
+ authorPostCount: likesArr.length,
212
+ authorAvgLikes: Math.round(avg),
213
+ authorMedianLikes: Math.round(median),
214
+ authorMaxLikes: max,
215
+ thisNoteLikes,
216
+ viralMultiplier: multiplier,
217
+ percentileRank: percentile,
218
+ isOutlier: multiplier > 3,
219
+ authorFollowers,
220
+ likesToFollowerRatio: ratio(thisNoteLikes, authorFollowers),
221
+ };
222
+ }
223
+ export function computeViralScore(hook, engagement, relative, content, commentPatterns) {
224
+ // Hook (0-20): +4 per detected pattern, capped
225
+ const hookScore = Math.min(20, hook.hookPatterns.length * 4);
226
+ // Engagement (0-20): threshold on absolute likes
227
+ let engagementScore = 4;
228
+ if (engagement.likes >= 500)
229
+ engagementScore = 8;
230
+ if (engagement.likes >= 1000)
231
+ engagementScore = 12;
232
+ if (engagement.likes >= 5000)
233
+ engagementScore = 16;
234
+ if (engagement.likes >= 10000)
235
+ engagementScore = 20;
236
+ // Relative (0-20): threshold on viral multiplier
237
+ let relativeScore = 4;
238
+ if (relative.viralMultiplier >= 1.5)
239
+ relativeScore = 8;
240
+ if (relative.viralMultiplier >= 3)
241
+ relativeScore = 12;
242
+ if (relative.viralMultiplier >= 5)
243
+ relativeScore = 16;
244
+ if (relative.viralMultiplier >= 10)
245
+ relativeScore = 20;
246
+ // Content (0-20): structural quality signals
247
+ let contentScore = 0;
248
+ if (content.bodyLength > 200)
249
+ contentScore += 4;
250
+ if (content.paragraphCount > 3)
251
+ contentScore += 4;
252
+ if (content.emojiDensity > 0.5 && content.emojiDensity < 8)
253
+ contentScore += 4;
254
+ if (content.hashtagCount >= 1 && content.hashtagCount <= 8)
255
+ contentScore += 4;
256
+ if (content.hasCallToAction)
257
+ contentScore += 4;
258
+ contentScore = Math.min(20, contentScore);
259
+ // Comments (0-20): audience engagement quality
260
+ let commentScore = 0;
261
+ if (commentPatterns.totalFetched > 50)
262
+ commentScore += 5;
263
+ if (commentPatterns.avgCommentLength > 15)
264
+ commentScore += 5;
265
+ if (commentPatterns.questionRate > 5)
266
+ commentScore += 5;
267
+ if (commentPatterns.topComments[0]?.likes > 50)
268
+ commentScore += 5;
269
+ commentScore = Math.min(20, commentScore);
270
+ return {
271
+ overall: hookScore + engagementScore + relativeScore + contentScore + commentScore,
272
+ breakdown: {
273
+ hook: hookScore,
274
+ engagement: engagementScore,
275
+ relative: relativeScore,
276
+ content: contentScore,
277
+ comments: commentScore,
278
+ },
279
+ };
280
+ }
281
+ // ─── Top-Level Orchestrator ─────────────────────────────────────────────────
282
+ export function analyzeViral(noteId, note, comments, authorPosts, authorFollowers) {
283
+ const title = String(note.title ?? "");
284
+ const desc = String(note.desc ?? "");
285
+ const user = note.user ?? {};
286
+ const interactInfo = note.interact_info ?? {};
287
+ const hook = analyzeHook(title);
288
+ const content = analyzeContent(desc);
289
+ const visual = analyzeVisual(note);
290
+ const engagement = computeEngagement(interactInfo);
291
+ const commentPatterns = analyzeComments(comments);
292
+ const relative = computeRelativePerformance(engagement.likes, authorPosts, authorFollowers);
293
+ const score = computeViralScore(hook, engagement, relative, content, commentPatterns);
294
+ return {
295
+ note: {
296
+ id: noteId,
297
+ title,
298
+ url: `https://www.xiaohongshu.com/explore/${noteId}`,
299
+ author: {
300
+ nickname: String(user.nickname ?? "unknown"),
301
+ userId: String(user.user_id ?? ""),
302
+ followers: authorFollowers,
303
+ },
304
+ type: visual.noteType,
305
+ },
306
+ score,
307
+ hook,
308
+ content,
309
+ visual,
310
+ engagement,
311
+ comments: commentPatterns,
312
+ relative,
313
+ fetchedAt: new Date().toISOString(),
314
+ };
315
+ }
316
+ // ─── Formatting ─────────────────────────────────────────────────────────────
317
+ export function formatViralAnalysis(a) {
318
+ const lines = [];
319
+ const hr = (label) => kleur.dim(`─── ${label} ` + "─".repeat(Math.max(0, 46 - label.length)));
320
+ // Header
321
+ lines.push(kleur.bold("═══ Viral Analysis ════════════════════════════════"));
322
+ lines.push("");
323
+ lines.push(` ${kleur.bold(`"${a.note.title}"`)}`);
324
+ lines.push(` by ${kleur.dim(`@${a.note.author.nickname}`)}`);
325
+ lines.push("");
326
+ lines.push(` Viral Score: ${kleur.bold(String(a.score.overall))}/100 ${progressBar(a.score.overall, 100, 20)}`);
327
+ // Engagement
328
+ lines.push("");
329
+ lines.push(hr("Engagement"));
330
+ lines.push("");
331
+ lines.push(` ${kleur.red("♥")} ${fmtNum(a.engagement.likes)} ` +
332
+ `${kleur.cyan("💬")} ${fmtNum(a.engagement.comments)} ` +
333
+ `${kleur.yellow("⭐")} ${fmtNum(a.engagement.collects)} ` +
334
+ `${kleur.blue("📤")} ${fmtNum(a.engagement.shares)}`);
335
+ lines.push(kleur.dim(` 💬/♥ ${a.engagement.commentToLikeRatio}% ` +
336
+ `⭐/♥ ${a.engagement.collectToLikeRatio}% ` +
337
+ `📤/♥ ${a.engagement.shareToLikeRatio}%`));
338
+ // Relative Performance
339
+ if (a.relative.authorPostCount > 0) {
340
+ lines.push("");
341
+ lines.push(hr("vs Author Baseline"));
342
+ lines.push("");
343
+ lines.push(` Author avg: ${fmtNum(a.relative.authorAvgLikes)} ♥ | ` +
344
+ `This note: ${kleur.bold(fmtNum(a.relative.thisNoteLikes))} ♥`);
345
+ lines.push(` ${kleur.bold(String(a.relative.viralMultiplier) + "x")} median | ` +
346
+ `Top ${round2(100 - a.relative.percentileRank)}%` +
347
+ (a.relative.authorFollowers > 0
348
+ ? ` | ${a.relative.likesToFollowerRatio}% of followers`
349
+ : ""));
350
+ }
351
+ // Hook Analysis
352
+ lines.push("");
353
+ lines.push(hr("Hook Patterns"));
354
+ lines.push("");
355
+ lines.push(` Title (${a.hook.titleLength} chars): ${kleur.bold(`"${a.hook.title}"`)}`);
356
+ if (a.hook.hookPatterns.length > 0) {
357
+ lines.push(` ${a.hook.hookPatterns.map((p) => kleur.cyan(`[${p}]`)).join(" ")}`);
358
+ }
359
+ else {
360
+ lines.push(kleur.dim(" No hook patterns detected"));
361
+ }
362
+ // Content Structure
363
+ lines.push("");
364
+ lines.push(hr("Content"));
365
+ lines.push("");
366
+ lines.push(` ${fmtNum(a.content.bodyLength)} chars | ` +
367
+ `${a.content.paragraphCount} paras | ` +
368
+ `${a.content.hashtagCount} #tags | ` +
369
+ `CTA ${a.content.hasCallToAction ? kleur.green("✓") : kleur.dim("✗")}`);
370
+ if (a.visual.imageCount > 0) {
371
+ lines.push(` ${a.visual.imageCount} images | ${a.visual.noteType}`);
372
+ }
373
+ // Top Comments
374
+ if (a.comments.totalFetched > 0) {
375
+ lines.push("");
376
+ lines.push(hr("Top Comments"));
377
+ lines.push("");
378
+ for (const c of a.comments.topComments.slice(0, 3)) {
379
+ const preview = c.content.length > 40 ? c.content.slice(0, 40) + "..." : c.content;
380
+ lines.push(` ${kleur.dim(`@${c.author}`)} (${c.likes}♥): "${preview}"`);
381
+ }
382
+ if (a.comments.themes.length > 0) {
383
+ lines.push(` Themes: ${a.comments.themes.slice(0, 6).map((t) => `${t.keyword}(${t.count})`).join(" ")}`);
384
+ }
385
+ lines.push(kleur.dim(` Questions: ${a.comments.questionRate}% | ${a.comments.totalFetched} comments fetched`));
386
+ }
387
+ // Score Breakdown
388
+ lines.push("");
389
+ lines.push(hr("Score Breakdown"));
390
+ lines.push("");
391
+ const { breakdown } = a.score;
392
+ for (const [label, val] of [
393
+ ["Hook", breakdown.hook],
394
+ ["Engagement", breakdown.engagement],
395
+ ["Relative", breakdown.relative],
396
+ ["Content", breakdown.content],
397
+ ["Comments", breakdown.comments],
398
+ ]) {
399
+ const padded = label.padEnd(12);
400
+ lines.push(` ${padded} ${String(val).padStart(2)}/20 ${progressBar(val, 20, 20)}`);
401
+ }
402
+ lines.push("");
403
+ return lines.join("\n");
404
+ }
405
+ // ─── Helpers ────────────────────────────────────────────────────────────────
406
+ function num(v) {
407
+ if (typeof v === "number")
408
+ return v;
409
+ if (typeof v === "string") {
410
+ // Handle Chinese abbreviated numbers: "1.5万" = 15000, "2.4亿" = 240000000
411
+ const s = v.trim();
412
+ if (s.endsWith("万")) {
413
+ const n = parseFloat(s.slice(0, -1));
414
+ return isNaN(n) ? 0 : Math.round(n * 10000);
415
+ }
416
+ if (s.endsWith("亿")) {
417
+ const n = parseFloat(s.slice(0, -1));
418
+ return isNaN(n) ? 0 : Math.round(n * 100000000);
419
+ }
420
+ const n = parseInt(s, 10);
421
+ return isNaN(n) ? 0 : n;
422
+ }
423
+ return 0;
424
+ }
425
+ function ratio(a, b) {
426
+ return b > 0 ? round2((a / b) * 100) : 0;
427
+ }
428
+ function round2(n) {
429
+ return Math.round(n * 100) / 100;
430
+ }
431
+ function fmtNum(n) {
432
+ return n.toLocaleString("en-US");
433
+ }
434
+ function progressBar(value, max, width) {
435
+ const filled = Math.round((value / max) * width);
436
+ return kleur.green("█".repeat(filled)) + kleur.dim("░".repeat(width - filled));
437
+ }
438
+ //# sourceMappingURL=analyze.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"analyze.js","sourceRoot":"","sources":["../../src/lib/analyze.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lucasygu/redbook",
3
- "version": "0.1.6",
3
+ "version": "0.1.8",
4
4
  "description": "CLI tool for Xiaohongshu (Red Note) - read and post via private API",
5
5
  "type": "module",
6
6
  "main": "./dist/lib/client.js",