siluzan-cso-cli 1.1.24 → 1.1.25-beta.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 +13 -3
  2. package/dist/index.js +76 -7
  3. package/dist/skill/SKILL.md +4 -4
  4. package/dist/skill/_meta.json +2 -2
  5. package/dist/skill/assets/three-lib-content-workflow.example.md +29 -38
  6. package/dist/skill/assets//344/272/247/345/223/201/350/265/204/344/272/247/345/272/223.md +227 -274
  7. package/dist/skill/assets//346/265/201/351/207/217/345/233/240/345/255/220/345/272/223.md +441 -240
  8. package/dist/skill/assets//347/203/271/350/260/203/346/226/271/346/263/225/345/272/223.md +178 -299
  9. package/dist/skill/references/publish.md +1 -1
  10. package/dist/skill/references/rag.md +1 -1
  11. package/dist/skill/references/setup.md +4 -4
  12. package/dist/skill/references/web-pages.md +21 -21
  13. package/dist/skill/scripts/install.ps1 +3 -3
  14. package/dist/skill/scripts/install.sh +3 -3
  15. package/dist/skill/three-lib-content-workflow/collaboration.md +50 -16
  16. package/dist/skill/three-lib-content-workflow/content-writer.workflow.md +81 -29
  17. package/dist/skill/three-lib-content-workflow/packs//345/205/254/344/274/227/345/217/267/347/210/206/346/254/276//344/272/247/345/223/201/350/265/204/344/272/247-extension.md +224 -0
  18. package/dist/skill/three-lib-content-workflow/packs//345/205/254/344/274/227/345/217/267/347/210/206/346/254/276//346/265/201/351/207/217/345/233/240/345/255/220-extension.md +286 -0
  19. package/dist/skill/three-lib-content-workflow/packs//345/205/254/344/274/227/345/217/267/347/210/206/346/254/276//347/203/271/350/260/203/346/226/271/346/263/225-extension.md +337 -0
  20. package/dist/skill/three-lib-content-workflow/persona-onboarding.md +175 -0
  21. package/dist/skill/three-lib-content-workflow/persona-reverse-sop.md +125 -122
  22. package/dist/skill/three-lib-content-workflow/persona-schema.md +239 -0
  23. package/dist/skill/three-lib-content-workflow/sop.md +166 -81
  24. package/package.json +1 -1
package/README.md CHANGED
@@ -46,7 +46,7 @@
46
46
  在**用户的目标项目根目录**执行(根据用户使用的助手选择 `--ai`):
47
47
 
48
48
  ```bash
49
- npm install -g siluzan-cso-cli
49
+ npm install -g siluzan-cso-cli@beta
50
50
  siluzan-cso init --ai cursor # 写入 Cursor(默认)
51
51
  siluzan-cso init --ai cursor,claude # 同时写入多个平台
52
52
  siluzan-cso init --ai all # 写入所有支持的平台
@@ -54,6 +54,7 @@ siluzan-cso init -d /path/to/skills # 写入自定义目录
54
54
  siluzan-cso init --force # 强制覆盖已存在文件
55
55
  ```
56
56
 
57
+ > **注意**:当前为测试版(1.1.25-beta.2),供内部测试使用。正式发布后安装命令将改为 `npm install -g siluzan-cso-cli`。
57
58
 
58
59
  | 助手 | 建议 `--ai` |
59
60
  | ----------------------- | ------------------------------------ |
@@ -71,7 +72,16 @@ siluzan-cso init --force # 强制覆盖已存在文件
71
72
 
72
73
  **若用户已安装 `siluzan-tso` 并完成登录,无需重复操作,直接跳到第 4 步。**
73
74
 
74
- ### 方式 A:交互式登录(推荐)
75
+ ### 方式 A:手机号 + 验证码(对话式 AI 推荐)
76
+
77
+ ```bash
78
+ siluzan-cso send-login-code --phone <手机号>
79
+ siluzan-cso login --phone <手机号> --code <6位验证码>
80
+ ```
81
+
82
+ 第 1 步只发送验证码并立即返回;第 2 步用验证码自动创建 API Key 并保存到 `~/.siluzan/config.json`。
83
+
84
+ ### 方式 B:交互式登录
75
85
 
76
86
  ```bash
77
87
  siluzan-cso login
@@ -83,7 +93,7 @@ siluzan-cso login
83
93
  siluzan-cso login --api-key <YOUR_API_KEY>
84
94
  ```
85
95
 
86
- ### 方式 B:直接设置(适合自动化场景)
96
+ ### 方式 C:直接设置(适合自动化场景)
87
97
 
88
98
  ```bash
89
99
  siluzan-cso config set --api-key <你的ApiKey>
package/dist/index.js CHANGED
@@ -2708,6 +2708,35 @@ function normalizeChinaPhone(input) {
2708
2708
  function isValidChinaPhone(input) {
2709
2709
  return /^\+861\d{10}$/.test(normalizeChinaPhone(input));
2710
2710
  }
2711
+ async function sendPhoneLoginCode(opts) {
2712
+ const phone = normalizeChinaPhone(opts.phone);
2713
+ const url = `${opts.ssoBaseUrl}/Account/SendVaildCode?Phone=${encodeURIComponent(
2714
+ phone
2715
+ )}&RandStr=&Iicket=`;
2716
+ if (opts.verbose) {
2717
+ process.stderr.write(`[phone-login] GET ${url}
2718
+ `);
2719
+ }
2720
+ const res = await rawRequest(url, {
2721
+ method: "GET",
2722
+ headers: {
2723
+ Accept: "application/json",
2724
+ "Accept-Language": "zh-CN"
2725
+ }
2726
+ });
2727
+ if (res.status < 200 || res.status >= 300) {
2728
+ return { ok: false, message: `HTTP ${res.status}` };
2729
+ }
2730
+ let body;
2731
+ try {
2732
+ body = JSON.parse(res.text);
2733
+ } catch {
2734
+ return { ok: false, message: `\u54CD\u5E94\u975E JSON\uFF1A${res.text.slice(0, 120)}` };
2735
+ }
2736
+ const state = (body.State ?? body.state ?? "").toLowerCase();
2737
+ const message = body.Message ?? body.message ?? "";
2738
+ return { ok: state === "ok", message };
2739
+ }
2711
2740
  async function loginByPhoneCode(opts) {
2712
2741
  const phone = normalizeChinaPhone(opts.phone);
2713
2742
  const url = `${opts.ssoBaseUrl}/Account/LoginByMiniCode?phone=${encodeURIComponent(
@@ -2849,11 +2878,11 @@ import { Command } from "commander";
2849
2878
  import { Option } from "commander";
2850
2879
 
2851
2880
  // src/config/defaults.ts
2852
- var BUILD_ENV = "production";
2853
- var DEFAULT_API_BASE = "https://api.siluzan.com";
2854
- var DEFAULT_CSO_BASE = "https://cso.siluzan.com";
2855
- var DEFAULT_WEB_BASE = "https://www.siluzan.com";
2856
- var DEFAULT_AGENT_BASE = "https://agent.mysiluzan.com";
2881
+ var BUILD_ENV = "test";
2882
+ var DEFAULT_API_BASE = "https://api-ci.siluzan.com";
2883
+ var DEFAULT_CSO_BASE = "https://cso-ci.siluzan.com";
2884
+ var DEFAULT_WEB_BASE = "https://www-ci.siluzan.com";
2885
+ var DEFAULT_AGENT_BASE = "https://agent-ci.mysiluzan.com";
2857
2886
 
2858
2887
  // src/commands/init.ts
2859
2888
  import * as fs4 from "fs/promises";
@@ -3097,6 +3126,31 @@ function resolveSsoCsoBase() {
3097
3126
  const csoBaseUrl = process.env.SILUZAN_CSO_BASE ?? DEFAULT_CSO_BASE ?? deriveCsoApiBaseUrl(apiBase);
3098
3127
  return { ssoBaseUrl, csoBaseUrl };
3099
3128
  }
3129
+ async function runSendLoginCode(opts) {
3130
+ const phone = validateAndNormalizePhone(opts.phone);
3131
+ const { ssoBaseUrl } = resolveSsoCsoBase();
3132
+ console.log("\n\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550");
3133
+ console.log(" Siluzan CSO \u53D1\u9001\u767B\u5F55\u77ED\u4FE1\u9A8C\u8BC1\u7801");
3134
+ console.log("\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n");
3135
+ console.log(` \u624B\u673A\u53F7 : ${phone}`);
3136
+ console.log(` SSO : ${ssoBaseUrl}
3137
+ `);
3138
+ console.log("\u2192 \u6B63\u5728\u5411\u624B\u673A\u53D1\u9001\u9A8C\u8BC1\u7801...");
3139
+ const r = await sendPhoneLoginCode({ ssoBaseUrl, phone, verbose: opts.verbose });
3140
+ if (!r.ok) {
3141
+ console.error(`
3142
+ \u274C \u77ED\u4FE1\u9A8C\u8BC1\u7801\u53D1\u9001\u5931\u8D25\uFF1A${r.message || "(\u540E\u7AEF\u672A\u8FD4\u56DE\u539F\u56E0)"}
3143
+ `);
3144
+ process.exit(1);
3145
+ }
3146
+ console.log(`\u2713 \u9A8C\u8BC1\u7801\u5DF2\u53D1\u9001\uFF0810 \u5206\u949F\u5185\u6709\u6548\uFF09\u3002
3147
+ `);
3148
+ console.log("\u4E0B\u4E00\u6B65\uFF1A\u62FF\u5230 6 \u4F4D\u9A8C\u8BC1\u7801\u540E\uFF0C\u8FD0\u884C\u4E0B\u9762\u7684\u547D\u4EE4\u5B8C\u6210\u767B\u5F55\uFF1A\n");
3149
+ console.log(` siluzan-cso login --phone ${phone} --code <6\u4F4D\u9A8C\u8BC1\u7801>
3150
+ `);
3151
+ console.log("\u53EF\u9009\u53C2\u6570\uFF1A--name / --valid-days / --expires-at / --services");
3152
+ console.log("\uFF08\u9ED8\u8BA4\u521B\u5EFA 90 \u5929\u6709\u6548\u3001\u52FE\u9009 CSO + CUT \u670D\u52A1\u7684 API Key\uFF09\n");
3153
+ }
3100
3154
  async function runPhoneLogin(opts) {
3101
3155
  const phone = validateAndNormalizePhone(opts.phone);
3102
3156
  const code = opts.code?.trim() ?? "";
@@ -7562,8 +7616,23 @@ function registerCsoCommands(program2) {
7562
7616
  cmdConfigSet({ apiKey: opts.apiKey, token: opts.token });
7563
7617
  });
7564
7618
  configCmd.command("clear").description("\u6E05\u7A7A\u5DF2\u4FDD\u5B58\u7684 Token").action(() => cmdConfigClear());
7565
- program2.command("login").description("\u5F15\u5BFC\u5B8C\u6210 Siluzan \u8D26\u53F7\u767B\u5F55\uFF0C\u4FDD\u5B58 API Key \u5230\u672C\u5730").option("--api-key <key>", "\u76F4\u63A5\u4FDD\u5B58 API Key\uFF08\u8DF3\u8FC7\u4EA4\u4E92\u5F0F\u6D41\u7A0B\uFF0C\u4E0E siluzan-tso \u5171\u7528\uFF09").addOption(new Option("--token <token>", "\u76F4\u63A5\u4FDD\u5B58 JWT Token").hideHelp()).action(async (opts) => {
7566
- await runLogin({ apiKey: opts.apiKey, token: opts.token });
7619
+ program2.command("login").description("\u5F15\u5BFC\u5B8C\u6210 Siluzan \u8D26\u53F7\u767B\u5F55\uFF0C\u4FDD\u5B58 API Key \u5230\u672C\u5730").option("--api-key <key>", "\u76F4\u63A5\u4FDD\u5B58 API Key\uFF08\u8DF3\u8FC7\u4EA4\u4E92\u5F0F\u6D41\u7A0B\uFF0C\u4E0E siluzan-tso \u5171\u7528\uFF09").option("--phone <phone>", "\u624B\u673A\u53F7\u767B\u5F55\uFF1A\u4E2D\u56FD\u5927\u9646\u624B\u673A\u53F7\uFF0C\u53EF\u5E26\u6216\u4E0D\u5E26 +86\uFF08\u9700\u914D\u5408 --code\uFF09").option("--code <code>", "\u77ED\u4FE1\u9A8C\u8BC1\u7801\uFF08\u5148\u8FD0\u884C send-login-code \u83B7\u53D6\uFF09").option("--name <name>", "\u624B\u673A\u53F7\u767B\u5F55\u65F6\u81EA\u52A8\u521B\u5EFA\u7684 API Key \u540D\u79F0").option("--valid-days <days>", "\u624B\u673A\u53F7\u767B\u5F55\u65F6\u521B\u5EFA API Key \u7684\u6709\u6548\u671F\u5929\u6570", parseInt).option("--expires-at <iso>", "\u624B\u673A\u53F7\u767B\u5F55\u65F6\u521B\u5EFA API Key \u7684\u7EDD\u5BF9\u8FC7\u671F\u65F6\u95F4\uFF08ISO 8601\uFF09").option("--services <services>", "\u624B\u673A\u53F7\u767B\u5F55\u65F6 API Key \u53EF\u8BBF\u95EE\u670D\u52A1\uFF0C\u9017\u53F7\u5206\u9694\uFF1ACSO,TSO,CUT").option("--verbose", "\u8F93\u51FA\u767B\u5F55\u76F8\u5173 HTTP \u8BF7\u6C42 URL\uFF08\u6392\u9519\u7528\uFF09", false).addOption(new Option("--token <token>", "\u76F4\u63A5\u4FDD\u5B58 JWT Token").hideHelp()).action(
7620
+ async (opts) => {
7621
+ await runLogin({
7622
+ apiKey: opts.apiKey,
7623
+ token: opts.token,
7624
+ phone: opts.phone,
7625
+ code: opts.code,
7626
+ name: opts.name,
7627
+ validDays: opts.validDays,
7628
+ expiresAt: opts.expiresAt,
7629
+ services: opts.services,
7630
+ verbose: opts.verbose
7631
+ });
7632
+ }
7633
+ );
7634
+ program2.command("send-login-code").description("\u53D1\u9001\u624B\u673A\u53F7\u767B\u5F55\u77ED\u4FE1\u9A8C\u8BC1\u7801\uFF08\u4E24\u6BB5\u5F0F\u767B\u5F55\u7B2C 1 \u6B65\uFF09").requiredOption("--phone <phone>", "\u4E2D\u56FD\u5927\u9646\u624B\u673A\u53F7\uFF0C\u53EF\u5E26\u6216\u4E0D\u5E26 +86").option("--verbose", "\u8F93\u51FA\u767B\u5F55\u76F8\u5173 HTTP \u8BF7\u6C42 URL\uFF08\u6392\u9519\u7528\uFF09", false).action(async (opts) => {
7635
+ await runSendLoginCode({ phone: opts.phone, verbose: opts.verbose });
7567
7636
  });
7568
7637
  program2.command("update").description("\u68C0\u67E5\u5E76\u66F4\u65B0 siluzan-cso-cli \u81F3\u6700\u65B0\u7248\u672C\uFF0C\u540C\u6B65\u5237\u65B0\u6240\u6709\u5DF2\u5B89\u88C5\u7684 skill \u6587\u4EF6").option("--force", "\u8DF3\u8FC7\u7248\u672C\u6BD4\u8F83\uFF0C\u5F3A\u5236\u91CD\u65B0\u5B89\u88C5\u5E76\u5237\u65B0 skill \u6587\u4EF6", false).option("--skip-init", "\u4EC5\u66F4\u65B0 CLI\uFF0C\u4E0D\u91CD\u65B0\u521D\u59CB\u5316 skill \u6587\u4EF6", false).action(async (opts) => {
7569
7638
  await runUpdate({ force: opts.force, skipInit: opts.skipInit });
@@ -48,7 +48,7 @@ Windows 注意:部分 Agent 客户端通过 PowerShell / cmd 代执行命令
48
48
  | 业务流程 | 手段 | 说明 |
49
49
  | ---------------------- | ------------------------------------------------------- | ------------------------------------ |
50
50
  | **发布与运营** | 下方 CLI 命令 + `references/*.md` | 上传、发布、任务、报表、账号、规划等 |
51
- | **文案生产(子流程)** | `three-lib-content-workflow/content-writer.workflow.md` | 选题、三库、口播/成稿 |
51
+ | **文案生产(子流程)** | `three-lib-content-workflow/content-writer.workflow.md` | 选题、三库、口播/公众号/成稿、审稿、改稿 |
52
52
 
53
53
  两类流程同属 CSO 业务。文案生产流程嵌套在本 skill 内,见下文「三库内容工作流」。
54
54
 
@@ -56,7 +56,7 @@ Windows 注意:部分 Agent 客户端通过 PowerShell / cmd 代执行命令
56
56
 
57
57
  | 命令 | 作用 | 详细文档 |
58
58
  | ---------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ----------------------------- |
59
- | `siluzan-cso login` | 登录 / 配置凭据 | `references/setup.md` |
59
+ | `siluzan-cso login` / `siluzan-cso send-login-code` | 登录 / 配置凭据;手机号 + 验证码两段式登录 | `references/setup.md` |
60
60
  | `siluzan-cso config show/set/clear` | 查看 / 修改 / 清空本地配置 | `references/setup.md` |
61
61
  | `siluzan-cso init` | Skill 文件初始化(写入 AI 助手目录) | `references/setup.md` |
62
62
  | `siluzan-cso update` | 更新 CLI 版本并刷新 Skill 文件 | `references/setup.md` |
@@ -93,7 +93,7 @@ Windows 注意:部分 Agent 客户端通过 PowerShell / cmd 代执行命令
93
93
  | 需要给用户提供后台页面链接 | `references/web-pages.md` |
94
94
  | 拉取人设 / styleGuide(写稿前)/ 保存人设 | `references/persona.md` |
95
95
  | 写稿时检索素材库 RAG 片段(三库拆素材等) | `references/rag.md` |
96
- | 选题 / 三库拆解 / 口播文案/其他文案 / 人设卡 / 代表作品反推人设 | `three-lib-content-workflow/content-writer.workflow.md` |
96
+ | 选题 / 三库拆解 / 口播文案/公众号文章/其他文案 / 人设卡 / 代表作品反推人设 / 文章审稿打分 / 精准改稿 | `three-lib-content-workflow/content-writer.workflow.md` |
97
97
 
98
98
  ---
99
99
 
@@ -239,6 +239,6 @@ CLI 返回的时间字段(如 `*DateTime` / `*Time` / `createTime` / `publishT
239
239
 
240
240
  > 无对应 CLI 命令的模块,或需要引导用户在网页端查看数据时,查阅 `references/web-pages.md` 获取完整页面清单与链接。
241
241
 
242
- URL 格式:`https://www.siluzan.com/v3/foreign_trade/cso/{页面}`
242
+ URL 格式:`https://www-ci.siluzan.com/v3/foreign_trade/cso/{页面}`
243
243
 
244
244
  常用页面:`task`(任务管理)· `postVideo`(发布页)· `ManageAccounts`(账号管理)· `planning`(AI 内容规划)· `table`(绩效报表)· `Workdata`(作品数据)
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "slug": "siluzan-cso",
3
- "version": "1.1.24",
4
- "publishedAt": 1780390788355,
3
+ "version": "1.1.25-beta.2",
4
+ "publishedAt": 1780655490422,
5
5
  "homepage": "https://www.siluzan.com",
6
6
  "source": "https://dev.azure.com/jack4it/Sammamish/_git/siluzan-skill",
7
7
  "requiredBinaries": [
@@ -1,68 +1,59 @@
1
1
  # three-lib-content-workflow 使用说明
2
2
 
3
- 这是一套把“热点/素材 → 选题 → 结构 → 文案 → 复盘”串起来的工作流。核心是三层:
3
+ 这是一套把"素材/热点人设 → 选题 → 结构 → 文案 → 复盘"串起来的内容生产系统。核心是"**人设是变量、三库是骨架**":
4
4
 
5
5
  - 流量因子库:决定写什么更容易被看见
6
6
  - 产品资产库:决定写什么更有长期价值
7
- - 烹调方法库:决定怎么写得像目标账号
7
+ - 烹调方法库:决定怎么把内容组织好看
8
+ - 人设卡(走 CSO 平台):决定以谁的口气写、避开什么、用什么尺子检查
8
9
 
9
10
  ## 你什么时候该用它
10
11
 
11
- 当你要做下面这些事时,直接用这套流程:
12
-
13
- - 从热点里挑选题
14
- - 把一篇文案改成xxx或yyy风格
12
+ - 从热点 / 素材挑选题
13
+ - 写口播 / 公众号 / 博客等成稿
14
+ - 把一篇文案改成某种风格
15
15
  - 把代表作品反推成一个人设卡
16
- - 复盘一篇爆款为什么有效
16
+ - 给已有公众号文章审稿打分 / 精准改稿
17
17
  - 输出能重复使用的文案 SOP
18
18
 
19
- 这个文件已经把:
19
+ ## 三种工作流
20
20
 
21
- - 三库定义
22
- - 人设卡
23
- - 文案生成 SOP
24
- - 代表作品反推人设
25
- - 协作关系
26
- 都整合在一起了。
21
+ | 工作流 | 怎么触发 |
22
+ |---|---|
23
+ | **new** 写新文章 | "帮我写一篇""把这个素材改成文章" |
24
+ | **audit** 审稿打分 | "审一下这篇""给这篇打分"(主要针对公众号) |
25
+ | **revise** 精准改稿 | "改标题""重写开头""换个 CTA" |
27
26
 
28
27
  ## 推荐使用方式
29
28
 
30
- ### 1. 先定人设
31
-
32
- 先确定是:
29
+ ### 1. 先定人设(走 CSO 平台)
33
30
 
34
- - 人设1
35
- - 人设2
36
- - ...
37
- - 还是一个新的人设
31
+ 人设统一存在 CSO 平台:
32
+ - 已有:`siluzan-cso persona list` 选一个
33
+ - 没有:按 `persona-onboarding.md` 三选一建一个(反推作品 / 描述 / 已有卡),落盘走 `siluzan-cso persona create`
34
+ - 临时人设:不想建正式的,可以先用临时人设写一篇,喜欢再保存
38
35
 
39
36
  ### 2. 再定输入类型
40
37
 
41
- 你可以给它:
42
-
43
- - 热点
44
- - 一篇文案
45
- - 代表作品
46
- - 一个选题方向
38
+ 你可以给它:热点 / 一篇文案 / 代表作品 / 一个选题方向 / 一段视频脚本。
47
39
 
48
40
  ### 3. 让它按流程处理
49
41
 
50
- 它会按下面顺序工作:
42
+ 它会按 `sop.md` 的 12 步工作:
43
+ - 加载人设 → 定目标 → 选题 → 拆素材(需要品牌素材时先 RAG)→ 找流量因子 → 配产品资产 → 选烹调方法 → 出提纲 → 写正文(注入人设腔调)→ 质检 → 改写 → 反哺人设卡
51
44
 
52
- - 先找流量因子
53
- - 再找产品资产
54
- - 再选烹调方法
55
- - 最后输出成稿 / 人设卡 / 选题建议
45
+ 如果人设 `platform_focus` 含"公众号",会自动挂载 `packs/公众号爆款/`,按黄金骨架成稿并跑 12 项自检。
56
46
 
57
47
  ## 如果你只想快速上手
58
48
 
59
- 你可以直接这样说:
49
+ 直接这样说:
60
50
 
61
- - “帮我按三库拆这篇文案”
62
- - “根据这个热点,生成xxx选题”
63
- - “把这几篇代表作品反推成人设卡”
64
- - “把这篇改成xxx风格”
51
+ - "帮我按三库拆这篇文案"
52
+ - "根据这个热点,用 <人设名> 生成公众号选题"
53
+ - "把这几篇代表作品反推成人设卡"
54
+ - "把这篇改成更强钩子的爆款版"
55
+ - "审一下这篇公众号,给我打分和改进建议"
65
56
 
66
57
  ## 一句话总结
67
58
 
68
- 这不是单纯的写稿说明,而是一套可重复使用的内容生产系统。
59
+ 这不是单纯的写稿说明,而是一套可重复使用的内容生产系统:**人设是变量,三库是骨架,人设卡注入腔调与边界。**