@tikomni/skills 0.1.0 → 0.1.2

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.
Files changed (24) hide show
  1. package/README.md +40 -6
  2. package/README.zh-CN.md +40 -6
  3. package/bin/tikomni-skills.js +0 -0
  4. package/package.json +1 -1
  5. package/skills/creator-analysis/SKILL.md +34 -10
  6. package/skills/creator-analysis/references/contracts/creator-card-fields.md +2 -0
  7. package/skills/creator-analysis/references/contracts/work-card-fields.md +40 -4
  8. package/skills/creator-analysis/references/platform-guides/douyin.md +41 -36
  9. package/skills/creator-analysis/references/platform-guides/generic.md +11 -7
  10. package/skills/creator-analysis/references/platform-guides/xiaohongshu.md +45 -30
  11. package/skills/creator-analysis/references/schemas/author-analysis-v2.schema.json +224 -95
  12. package/skills/creator-analysis/references/workflow.md +8 -3
  13. package/skills/creator-analysis/scripts/author_home/adapters/platform_adapters.py +205 -21
  14. package/skills/creator-analysis/scripts/author_home/analyzers/author_analysis_v2_support.py +54 -11
  15. package/skills/creator-analysis/scripts/author_home/analyzers/prompt_first_analyzers.py +200 -13
  16. package/skills/creator-analysis/scripts/author_home/analyzers/sampled_work_batch_explainer.py +113 -42
  17. package/skills/creator-analysis/scripts/author_home/asr/home_asr.py +65 -7
  18. package/skills/creator-analysis/scripts/author_home/builders/home_builders.py +82 -18
  19. package/skills/creator-analysis/scripts/author_home/collectors/homepage_collectors.py +198 -32
  20. package/skills/creator-analysis/scripts/author_home/orchestrator/run_author_analysis.py +374 -31
  21. package/skills/creator-analysis/scripts/author_home/orchestrator/work_analysis_artifacts.py +68 -12
  22. package/skills/creator-analysis/scripts/core/storage_router.py +3 -0
  23. package/skills/creator-analysis/scripts/writers/write_author_homepage_samples.py +3 -2
  24. package/skills/creator-analysis/scripts/writers/write_benchmark_card.py +314 -137
package/README.md CHANGED
@@ -88,22 +88,56 @@ They matter, but they do not define the full capability boundary of this reposit
88
88
 
89
89
  ### 2. Install skills
90
90
 
91
- If the npm package has been published, you can install directly with:
91
+ Install directly from npm.
92
+
93
+ First, list the currently available skills:
92
94
 
93
95
  ```bash
94
96
  npx @tikomni/skills list
97
+ ```
98
+
99
+ Install into Codex:
100
+
101
+ ```bash
102
+ # Install all skills
95
103
  npx @tikomni/skills install codex all
104
+
105
+ # Install one specific skill
106
+ npx @tikomni/skills install codex single-work-analysis
107
+ ```
108
+
109
+ Default target: `$CODEX_HOME/skills`, default `~/.codex/skills`
110
+
111
+ Install into Claude Code:
112
+
113
+ ```bash
114
+ # Install all skills
115
+ npx @tikomni/skills install claude-code all
116
+
117
+ # Install only the creator-analysis skill
96
118
  npx @tikomni/skills install claude-code creator-analysis
119
+ ```
120
+
121
+ Default target: `~/.claude/skills`
122
+
123
+ Install into OpenClaw:
124
+
125
+ ```bash
126
+ # Install all skills
127
+ npx @tikomni/skills install openclaw all
128
+
129
+ # Install into a custom directory
97
130
  npx @tikomni/skills install openclaw meta-capability --dir "/custom/skills"
98
131
  ```
99
132
 
100
- Default install targets:
133
+ Default target: prefers `~/.openclaw/workspace/skills`, otherwise `~/.openclaw/skills`
134
+
135
+ Common flags:
101
136
 
102
- - `codex` -> `$CODEX_HOME/skills`, default `~/.codex/skills`
103
- - `claude-code` -> `~/.claude/skills`
104
- - `openclaw` -> prefers `~/.openclaw/workspace/skills`, otherwise `~/.openclaw/skills`
137
+ - `--dir <path>`: override the target `skills` directory
138
+ - `--force`: overwrite an existing installed skill directory
105
139
 
106
- If you are not distributing through npm yet, you can also copy the target skill folder into the runtime's `skills` directory manually.
140
+ If you do not want to use npm, you can also copy the target skill folder into the runtime's `skills` directory manually.
107
141
 
108
142
  ### 3. Configure environment variables
109
143
 
package/README.zh-CN.md CHANGED
@@ -88,22 +88,56 @@
88
88
 
89
89
  ### 2. 安装 Skills
90
90
 
91
- 如果 npm 包已发布,可以直接使用:
91
+ 使用 npm 直接安装。
92
+
93
+ 先查看当前可安装的 Skills:
92
94
 
93
95
  ```bash
94
96
  npx @tikomni/skills list
97
+ ```
98
+
99
+ 安装到 Codex:
100
+
101
+ ```bash
102
+ # 安装全部 Skills
95
103
  npx @tikomni/skills install codex all
104
+
105
+ # 只安装一个 Skill
106
+ npx @tikomni/skills install codex single-work-analysis
107
+ ```
108
+
109
+ 默认目录:`$CODEX_HOME/skills`,默认值 `~/.codex/skills`
110
+
111
+ 安装到 Claude Code:
112
+
113
+ ```bash
114
+ # 安装全部 Skills
115
+ npx @tikomni/skills install claude-code all
116
+
117
+ # 只安装创作者分析 Skill
96
118
  npx @tikomni/skills install claude-code creator-analysis
119
+ ```
120
+
121
+ 默认目录:`~/.claude/skills`
122
+
123
+ 安装到 OpenClaw:
124
+
125
+ ```bash
126
+ # 安装全部 Skills
127
+ npx @tikomni/skills install openclaw all
128
+
129
+ # 安装到自定义目录
97
130
  npx @tikomni/skills install openclaw meta-capability --dir "/custom/skills"
98
131
  ```
99
132
 
100
- 默认安装目录:
133
+ 默认目录:优先 `~/.openclaw/workspace/skills`,否则 `~/.openclaw/skills`
134
+
135
+ 常用参数:
101
136
 
102
- - `codex` -> `$CODEX_HOME/skills`,默认 `~/.codex/skills`
103
- - `claude-code` -> `~/.claude/skills`
104
- - `openclaw` -> 优先 `~/.openclaw/workspace/skills`,否则 `~/.openclaw/skills`
137
+ - `--dir <path>`:显式指定目标 `skills` 目录
138
+ - `--force`:覆盖已存在的同名 Skill 目录
105
139
 
106
- 如果你暂时不走 npm 分发,也可以手动把目标 Skill 目录复制到对应运行时的 `skills` 目录。
140
+ 如果你不想使用 npm,也可以手动把目标 Skill 目录复制到对应运行时的 `skills` 目录。
107
141
 
108
142
  ### 3. 配置环境变量
109
143
 
File without changes
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tikomni/skills",
3
- "version": "0.1.0",
3
+ "version": "0.1.2",
4
4
  "description": "TikOmni skill installer CLI for Codex, Claude Code, and OpenClaw",
5
5
  "license": "MIT",
6
6
  "homepage": "https://github.com/mark-ly-wang/TikOmni-Skills#readme",
@@ -8,7 +8,7 @@ description: Use this skill for creator, account profile, and content-collection
8
8
  ## When To Use
9
9
 
10
10
  - Use this skill when the target is a creator, account, profile page, channel, or content collection rather than a single content item.
11
- - Use this skill when the user wants a creator card, a full set of work cards, sampled explanations, or aggregated creator-level conclusions.
11
+ - Use this skill when the user wants a creator card, author sample cards, sampled explanations, or aggregated creator-level conclusions.
12
12
  - Use this skill when multiple videos under one profile should go through batch ASR first.
13
13
  - Use this skill when the user provides a profile URL, creator handle, account identifier, channel entry, or another creator-level entry point.
14
14
 
@@ -16,12 +16,12 @@ description: Use this skill for creator, account profile, and content-collection
16
16
 
17
17
  - Fetch and normalize creator-side fact fields.
18
18
  - Fetch and normalize the full content collection under a profile.
19
- - Produce work fact cards for the retrieved items.
19
+ - Produce author sample cards for the retrieved items.
20
20
  - Run batch ASR for video items when needed.
21
21
  - Complete bucketing, sampling, sampled explanations, and creator-level analysis.
22
- - Return creator cards, work cards, and aggregated conclusions.
22
+ - Return creator cards, author sample cards, sampled enhanced cards, and aggregated conclusions.
23
23
 
24
- ## Core Rules
24
+ ## Core Workflow Rules
25
25
 
26
26
  - Keep the task scoped to a creator, account profile, or content collection.
27
27
  - Prefer the platform guide first. Only go back to API discovery references when the guide is insufficient.
@@ -31,26 +31,50 @@ description: Use this skill for creator, account profile, and content-collection
31
31
  - Treat `author_analysis_v2` as the formal creator-level analysis object.
32
32
  - If `analysis_eligibility=incomplete`, keep the fact card but exclude the item from sampling, sampled explanations, and creator-level analysis.
33
33
 
34
+ ## Shared Layer Boundaries
35
+
36
+ - Shared layer owns orchestration order, status semantics, output contracts, sampled-work explanation constraints, and final card-writing rules.
37
+ - Platform layer owns route strategy, collector behavior, platform-field compatibility, adapter normalization, and platform-specific cleaning rules.
38
+ - Keep sampled explanations as a batch-stage artifact. Do not reintroduce per-work deep analysis in the creator path.
39
+ - Treat `author`, `author_sample_work`, and sampled enhanced cards as separate output roles with explicit routing semantics.
40
+
41
+ ## Platform Navigation
42
+
43
+ - Start with the platform guide:
44
+ - Douyin: `references/platform-guides/douyin.md`
45
+ - Xiaohongshu: `references/platform-guides/xiaohongshu.md`
46
+ - Other platforms: `references/platform-guides/generic.md`
47
+ - Route strategy, collector behavior, and raw payload retrieval:
48
+ - First stop: `scripts/author_home/collectors/homepage_collectors.py`
49
+ - Platform-field compatibility and normalization:
50
+ - First stop: `scripts/author_home/adapters/platform_adapters.py`
51
+ - Orchestration order, stage status, degradation, persistence, and final result assembly:
52
+ - First stop: `scripts/author_home/orchestrator/run_author_analysis.py`
53
+ - Work-analysis artifacts, cache behavior, and structural labels:
54
+ - First stop: `scripts/author_home/orchestrator/work_analysis_artifacts.py`
55
+ - Sampled explanations and creator-level analysis logic:
56
+ - First stop: `scripts/author_home/analyzers/`
57
+ - Card writing and markdown rendering:
58
+ - First stop: `scripts/writers/write_author_homepage_samples.py`
59
+ - Supporting renderer: `scripts/writers/write_benchmark_card.py`
60
+
34
61
  ## Do Not
35
62
 
36
63
  - Do not paste sampled explanations directly into every work-card body.
37
64
  - Do not expose platform process fields directly in the final card body.
38
65
  - Do not introduce per-work LLM explanations inside the creator path.
39
- - Do not collapse a creator task into single-item analysis when the user clearly wants creator-level output.
66
+ - Do not bypass the platform guide and jump straight into local helpers without understanding the route and contract expectations first.
40
67
 
41
68
  ## Workflow
42
69
 
43
70
  1. Identify the platform and confirm that the target is a creator, account profile, channel, or content collection.
44
71
  2. Read `references/contracts/creator-card-fields.md` to confirm required creator-card fields.
45
72
  3. Read `references/contracts/work-card-fields.md` to confirm required work-card fields for the collected items.
46
- 4. Read the platform guide first:
47
- - Douyin: `references/platform-guides/douyin.md`
48
- - Xiaohongshu: `references/platform-guides/xiaohongshu.md`
49
- - Other platforms: `references/platform-guides/generic.md`
73
+ 4. Read the platform guide first and then the first-stop implementation file for the problem type you are solving.
50
74
  5. If video items are involved, read `references/service-guides/asr-u2-u3-fallback.md` and then `references/asr-orchestration.md` to run batch ASR and fallback.
51
75
  6. Read `references/api-capability-index.md`, `references/api-tags/`, and `references/api-contracts/` only when the platform guide does not provide enough route or field detail.
52
76
  7. Read `references/workflow.md` to complete bucketing, sampling, sampled explanations, and `author_analysis_v2`.
53
- 8. Return the creator card, work cards, and aggregated conclusions.
77
+ 8. Return the creator card, author sample cards, sampled enhanced cards, and aggregated conclusions.
54
78
 
55
79
  ## References
56
80
 
@@ -20,4 +20,6 @@
20
20
 
21
21
  - The creator card is the fact container for creator-level data.
22
22
  - The creator-level analysis body comes from `author_analysis_v2`, not from platform process fields.
23
+ - The creator-card body should present the `author_analysis_v2` modules and representative works, not a raw JSON dump.
24
+ - Debug JSON, validation, and trace data belong in appendix/details blocks rather than the main body.
23
25
  - Platform-native IDs stay in the internal reference layer and should not appear in the final creator-card body.
@@ -1,4 +1,11 @@
1
- # Creator Work Card Fields
1
+ # Creator Analysis Work Card Fields
2
+
3
+ ## Card Roles
4
+
5
+ - `author_sample_card`
6
+ - Fact-and-structure card for every retrieved work in creator analysis.
7
+ - `sample_work_card`
8
+ - Sampled-only enhanced card that reuses the same fact-and-structure fields and adds the explanation block.
2
9
 
3
10
  ## Fixed Display Fields
4
11
 
@@ -20,13 +27,42 @@
20
27
  - `share_url`
21
28
  - `primary_text`
22
29
 
23
- ## Video-Only Additional Fields
30
+ ## Structural Display Fields
31
+
32
+ - `performance_score`
33
+ - `performance_score_norm`
34
+ - `bucket`
35
+ - `hook_type`
36
+ - `structure_type`
37
+ - `cta_type`
38
+ - `content_form`
39
+ - `style_markers`
40
+ - `tags`
41
+
42
+ ## Shared Appendix Fields
43
+
44
+ - `analysis_eligibility`
45
+ - `analysis_exclusion_reason`
46
+
47
+ ## Video-Only Appendix Fields
24
48
 
25
49
  - `asr_raw`
26
50
  - `video_download_url`
27
51
 
52
+ ## Sampled-Only Explanation Block
53
+
54
+ - `sampled_explanation.why_it_worked_or_failed`
55
+ - `sampled_explanation.copyable_elements`
56
+ - `sampled_explanation.non_copyable_elements`
57
+ - `sampled_explanation.emotional_triggers`
58
+ - `sampled_explanation.cognitive_gap`
59
+ - `sampled_explanation.commercial_signal`
60
+
28
61
  ## Key Rules
29
62
 
30
- - Keep fact cards for all retrieved works.
31
- - The final work card should not expose `content_type`, `publish_time`, `create_time_sec`, `subtitle_raw`, `asr_source`, `asr_status`, or `asr_error_reason`.
63
+ - Keep author sample cards for all retrieved works.
64
+ - Only sampled works receive the sampled explanation block.
65
+ - The final card should not expose `content_type`, `publish_time`, `create_time_sec`, `subtitle_raw`, `asr_source`, `asr_status`, or `asr_error_reason`.
66
+ - Use `primary_text` as the main reading body and keep `asr_raw` in appendix/details only.
32
67
  - If a video item cannot obtain `asr_raw`, keep the fact card but mark `analysis_eligibility=incomplete` and exclude that item from creator analysis.
68
+ - Do not introduce per-work standalone LLM analysis in creator analysis.
@@ -1,49 +1,54 @@
1
1
  # Douyin Creator Guide
2
2
 
3
- ## Read This First
3
+ ## Use This Guide For
4
4
 
5
5
  - Use this guide first for Douyin creator, profile, and account tasks.
6
- - The validated chain in this repository is profile input -> `sec_user_id` resolution -> creator profile -> paginated post list.
7
-
8
- ## Preferred Creator Resources
9
-
10
- - nickname: `nickname`
11
- - handle: `short_id` / `unique_id`
12
- - IP location
13
- - avatar
14
- - fan count, liked count, work count
15
-
16
- ## Preferred Work Resources
17
-
18
- - work ID: `aweme_id`
19
- - title / caption: `title` / `desc`
20
- - video download URL: prefer the no-watermark path
21
- - engagement metrics: digg, comment, collect, share, play
22
-
23
- ## Preferred Route Chain
24
-
25
- 1. Profile identifier resolution: `GET /api/u1/v1/douyin/web/get_sec_user_id`
26
- - OpenAPI-required input: `url`
27
- - The current implementation also sends `share_url` redundantly.
28
- 2. Creator profile: `GET /api/u1/v1/douyin/app/v3/handler_user_profile`
29
- - Required input: `sec_user_id`
30
- 3. Paginated post list: `GET /api/u1/v1/douyin/app/v3/fetch_user_post_videos`
31
- - Required input: `sec_user_id`
32
- - Common pagination parameters: `max_cursor`, `count`, `sort_type`
33
-
34
- ## Unified Fields To Fill
35
-
36
- - creator card: `platform_author_id`, `author_handle`, `nickname`, `ip_location`, `signature`, `avatar_url`, `fans_count`, `liked_count`, `works_count`, `verified`
37
- - work cards: `platform_work_id`, `title`, `caption_raw`, `published_date`, `digg_count`, `comment_count`, `collect_count`, `share_count`, `play_count`, `video_download_url`
6
+ - The validated creator chain in this repository is profile input -> `sec_user_id` resolution -> creator profile -> paginated post list.
7
+
8
+ ## Validated Route Chain
9
+
10
+ 1. Resolve `sec_user_id`: `GET /api/u1/v1/douyin/web/get_sec_user_id`
11
+ 2. Fetch creator profile: `GET /api/u1/v1/douyin/app/v3/handler_user_profile`
12
+ 3. Fetch paginated post list: `GET /api/u1/v1/douyin/app/v3/fetch_user_post_videos`
13
+
14
+ ## Required Unified Fields
15
+
16
+ - creator side:
17
+ - `platform_author_id`
18
+ - `author_handle`
19
+ - `nickname`
20
+ - `ip_location`
21
+ - `signature`
22
+ - `avatar_url`
23
+ - `fans_count`
24
+ - `liked_count`
25
+ - `works_count`
26
+ - `verified`
27
+ - work side:
28
+ - `platform_work_id`
29
+ - `title`
30
+ - `caption_raw`
31
+ - `published_date`
32
+ - `digg_count`
33
+ - `comment_count`
34
+ - `collect_count`
35
+ - `share_count`
36
+ - `play_count`
37
+ - `cover_image`
38
+ - `share_url`
39
+ - `source_url`
40
+ - `video_download_url`
38
41
 
39
42
  ## Route Rules
40
43
 
41
44
  - If `sec_user_id` is already available, skip the resolution route.
42
45
  - Default to the latest-post pagination path. Do not search random feed routes first.
46
+ - The post-list route must supply stable `aweme_id`, publish time, and engagement fields before creator analysis can continue.
43
47
  - If batch U2 ASR is still incomplete after 120 seconds, follow `references/service-guides/asr-u2-u3-fallback.md` and use U3 fallback only for the unsuccessful subset.
44
48
  - If the profile chain still cannot supply key creator fields, go back to `references/api-capability-index.md` and the matching `references/api-tags/*.md` to find supplemental routes instead of giving up on the creator card.
45
49
 
46
- ## Current Runnable Implementation
50
+ ## First Stops In Code
47
51
 
48
- - `skills/creator-analysis/scripts/author_home/adapters/platform_adapters.py`
49
- - `skills/creator-analysis/scripts/author_home/orchestrator/run_author_analysis.py`
52
+ - Route and pagination behavior: `skills/creator-analysis/scripts/author_home/collectors/homepage_collectors.py`
53
+ - Platform-field normalization: `skills/creator-analysis/scripts/author_home/adapters/platform_adapters.py`
54
+ - Shared creator pipeline: `skills/creator-analysis/scripts/author_home/orchestrator/run_author_analysis.py`
@@ -1,19 +1,20 @@
1
- # Generic Creator Guide
1
+ # Generic Creator Adaptation Guide
2
2
 
3
3
  ## Goal
4
4
 
5
- Map an unfamiliar platform into the unified creator-card and work-card contracts and then complete the creator analysis flow.
5
+ Map an unfamiliar platform into the creator-analysis contracts and only then feed it into the shared creator pipeline.
6
6
 
7
7
  ## Read Order
8
8
 
9
9
  - Start with `references/api-capability-index.md` to lock onto the relevant platform tag.
10
10
  - Read the matching `references/api-tags/<tag>.md` for route summaries, inputs, request bodies, and success-response summaries.
11
11
  - Prioritize routes related to `user / author / creator / profile / home / channel / posts / notes / videos`.
12
+ - Then read `references/contracts/creator-card-fields.md`, `references/contracts/work-card-fields.md`, and `references/workflow.md`.
12
13
  - Add comment, media-download, subtitle, and extra-metric routes only when needed.
13
14
 
14
15
  ## Minimum Mapping Checklist
15
16
 
16
- creator side:
17
+ - creator side:
17
18
 
18
19
  - `platform_author_id`
19
20
  - `author_handle`
@@ -27,7 +28,7 @@ creator side:
27
28
  - `works_count`
28
29
  - `verified`
29
30
 
30
- work side:
31
+ - work side:
31
32
 
32
33
  - the required fields from the unified work-card field dictionary
33
34
  - for video items: `video_download_url`
@@ -38,9 +39,12 @@ work side:
38
39
  - If the platform provides multiple profile routes or posts routes, prefer the variant with fuller fields and more stable pagination.
39
40
  - The work-list route must reliably provide `platform_work_id` and the main published-time and engagement fields before sampling or aggregation can begin.
40
41
  - If video items have no subtitles and no download path, mark ASR as infeasible at the route-selection stage.
42
+ - Do not invent platform cleaning rules inside the shared layer. Normalize in the platform adapter first.
43
+ - If the platform still cannot satisfy the unified creator/work contracts, stop and report the mapping gap instead of pushing half-complete data into creator analysis.
41
44
  - If batch U2 ASR is still incomplete after 120 seconds, follow `references/service-guides/asr-u2-u3-fallback.md` and use U3 fallback only for the unsuccessful subset.
42
45
 
43
- ## Current Runnable Implementation
46
+ ## First Stops For Adaptation
44
47
 
45
- - `skills/creator-analysis/scripts/author_home/`
46
- - `skills/creator-analysis/scripts/core/`
48
+ - Collector and route selection: `skills/creator-analysis/scripts/author_home/collectors/homepage_collectors.py`
49
+ - Platform normalization: `skills/creator-analysis/scripts/author_home/adapters/platform_adapters.py`
50
+ - Shared creator orchestration: `skills/creator-analysis/scripts/author_home/orchestrator/run_author_analysis.py`
@@ -1,54 +1,69 @@
1
1
  # Xiaohongshu Creator Guide
2
2
 
3
- ## Read This First
3
+ ## Use This Guide For
4
4
 
5
5
  - Use this guide first for Xiaohongshu creator, profile, and account tasks.
6
- - The validated chain in this repository is profile input -> `user_id` / `xsec_token` resolution -> profile cascade -> post-list cascade.
6
+ - The validated creator chain in this repository is profile input -> `user_id` / `xsec_token` resolution -> profile cascade -> post-list cascade.
7
7
 
8
- ## Preferred Creator Resources
8
+ ## Preferred Route Comparator
9
9
 
10
- - nickname
11
- - handle
12
- - IP location
13
- - avatar
14
- - fan count, liked count, work count
10
+ - source priority: `app > web`
11
+ - version priority within the same source: `v2 > v1`
12
+ - desired order for the current creator-home pipeline: `app v2 -> app -> web v2`
15
13
 
16
- ## Preferred Work Resources
14
+ ## Validated Route Chain
17
15
 
18
- - work ID: `note_id`
19
- - title / caption: `title` / `desc` / `content`
20
- - for video items, check native subtitles first
21
- - engagement metrics: digg, comment, collect, share, play
22
-
23
- ## Preferred Route Chain
24
-
25
- 1. Profile identifier resolution: `GET /api/u1/v1/xiaohongshu/app/get_user_id_and_xsec_token`
26
- - OpenAPI-required input: `share_link`
27
- - The current implementation also sends `share_url` and `url` redundantly.
16
+ 1. Resolve `user_id` / `xsec_token`: `GET /api/u1/v1/xiaohongshu/app/get_user_id_and_xsec_token`
28
17
  2. Profile cascade:
29
18
  - `GET /api/u1/v1/xiaohongshu/app_v2/get_user_info`
30
- - `GET /api/u1/v1/xiaohongshu/web_v2/fetch_user_info_app`
31
19
  - `GET /api/u1/v1/xiaohongshu/app/get_user_info`
32
- - Typical input: `user_id`, with `share_text` / `xsec_token` as needed
20
+ - `GET /api/u1/v1/xiaohongshu/web_v2/fetch_user_info_app`
33
21
  3. Post-list cascade:
34
22
  - `GET /api/u1/v1/xiaohongshu/app_v2/get_user_posted_notes`
35
- - `GET /api/u1/v1/xiaohongshu/web_v2/fetch_home_notes_app`
36
23
  - `GET /api/u1/v1/xiaohongshu/app/get_user_notes`
37
- - Typical input: `user_id`, `cursor`
24
+ - `GET /api/u1/v1/xiaohongshu/web_v2/fetch_home_notes_app`
38
25
 
39
- ## Unified Fields To Fill
26
+ ## Required Unified Fields
40
27
 
41
- - creator card: `platform_author_id`, `author_handle`, `nickname`, `ip_location`, `signature`, `avatar_url`, `fans_count`, `liked_count`, `collected_count`, `works_count`, `verified`
42
- - work cards: `platform_work_id`, `title`, `caption_raw`, `published_date`, `digg_count`, `comment_count`, `collect_count`, `share_count`, `play_count`, `video_download_url`
28
+ - creator side:
29
+ - `platform_author_id`
30
+ - `author_handle`
31
+ - `nickname`
32
+ - `ip_location`
33
+ - `signature`
34
+ - `avatar_url`
35
+ - `fans_count`
36
+ - `liked_count`
37
+ - `collected_count`
38
+ - `works_count`
39
+ - `verified`
40
+ - work side:
41
+ - `platform_work_id`
42
+ - `title`
43
+ - `caption_raw`
44
+ - `published_date`
45
+ - `digg_count`
46
+ - `comment_count`
47
+ - `collect_count`
48
+ - `share_count`
49
+ - `play_count`
50
+ - `cover_image`
51
+ - `share_url`
52
+ - `source_url`
53
+ - `video_download_url`
43
54
 
44
55
  ## Route Rules
45
56
 
46
57
  - If `user_id` is already available, skip the resolution route. Treat `xsec_token` as supplemental rather than universally required.
47
- - Try both the profile cascade and the posts cascade in order, and switch to fallback based on field completeness.
58
+ - Apply the comparator above consistently to both profile and post-list cascades.
59
+ - Switch to fallback based on field completeness, not only on HTTP success.
60
+ - For the current fixed pipeline, do not add a web-v1 fallback unless a later plan explicitly freezes its endpoint, parameters, and accept rules.
61
+ - For video items, prefer native subtitles first; only move into batch ASR when native text is insufficient.
48
62
  - If batch U2 ASR is still incomplete after 120 seconds, follow `references/service-guides/asr-u2-u3-fallback.md` and use U3 fallback only for the unsuccessful subset.
49
63
  - If the profile-post chain still cannot provide stable fields, go back to `references/api-capability-index.md` and the matching `references/api-tags/*.md` for supplemental routes instead of sending half-complete data into creator analysis.
50
64
 
51
- ## Current Runnable Implementation
65
+ ## First Stops In Code
52
66
 
53
- - `skills/creator-analysis/scripts/author_home/adapters/platform_adapters.py`
54
- - `skills/creator-analysis/scripts/author_home/orchestrator/run_author_analysis.py`
67
+ - Route and pagination behavior: `skills/creator-analysis/scripts/author_home/collectors/homepage_collectors.py`
68
+ - Platform-field normalization: `skills/creator-analysis/scripts/author_home/adapters/platform_adapters.py`
69
+ - Shared creator pipeline: `skills/creator-analysis/scripts/author_home/orchestrator/run_author_analysis.py`