siluzan-cso-cli 1.1.23 → 1.1.24-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.
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.24-beta.2),供内部测试使用。正式发布后安装命令将改为 `npm install -g siluzan-cso-cli`。
57
58
 
58
59
  | 助手 | 建议 `--ai` |
59
60
  | ----------------------- | ------------------------------------ |
package/dist/index.js CHANGED
@@ -2849,11 +2849,11 @@ import { Command } from "commander";
2849
2849
  import { Option } from "commander";
2850
2850
 
2851
2851
  // 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";
2852
+ var BUILD_ENV = "test";
2853
+ var DEFAULT_API_BASE = "https://api-ci.siluzan.com";
2854
+ var DEFAULT_CSO_BASE = "https://cso-ci.siluzan.com";
2855
+ var DEFAULT_WEB_BASE = "https://www-ci.siluzan.com";
2856
+ var DEFAULT_AGENT_BASE = "https://agent-ci.mysiluzan.com";
2857
2857
 
2858
2858
  // src/commands/init.ts
2859
2859
  import * as fs4 from "fs/promises";
@@ -5587,6 +5587,15 @@ var DEFAULT_CONTENT_TYPES = [
5587
5587
  { id: "video", label: "\u89C6\u9891" }
5588
5588
  ];
5589
5589
  var EXPORT_TABLE_HEADERS = ["\u5468\u6B21", "\u65B9\u5411\u5206\u7C7B", "\u4E3B\u9898", "\u5185\u5BB9\u65B9\u5411", "\u76EE\u6807\u53D7\u4F17"];
5590
+ var PLANNING_TARGET_MARKET_OPTIONS = [
5591
+ "\u5168\u7403",
5592
+ "\u4E2D\u4E9A",
5593
+ "\u975E\u6D32",
5594
+ "\u62C9\u7F8E",
5595
+ "\u4E2D\u4E1C",
5596
+ "\u72EC\u8054\u4F53",
5597
+ "\u4E1C\u5357\u4E9A"
5598
+ ];
5590
5599
  function exitWithError2(message) {
5591
5600
  console.error(`
5592
5601
  \u274C ${message}
@@ -5653,6 +5662,23 @@ function ensureContentTypes(input) {
5653
5662
  }
5654
5663
  return uniq;
5655
5664
  }
5665
+ function ensureTargetMarkets(input) {
5666
+ if (!input || input.length === 0) return void 0;
5667
+ const values = input.flatMap((part) => part.split(",")).map((item) => item.trim()).filter(Boolean);
5668
+ const uniq = Array.from(new Set(values));
5669
+ if (uniq.length === 0) return void 0;
5670
+ const allowed = new Set(PLANNING_TARGET_MARKET_OPTIONS);
5671
+ const invalid = uniq.filter((item) => !allowed.has(item));
5672
+ if (invalid.length > 0) {
5673
+ exitWithError2(
5674
+ `--target-markets \u4EC5\u652F\u6301\uFF1A${PLANNING_TARGET_MARKET_OPTIONS.join("\u3001")}\uFF0C\u6536\u5230\uFF1A${invalid.join("\u3001")}`
5675
+ );
5676
+ }
5677
+ if (uniq.includes("\u5168\u7403") && uniq.length > 1) {
5678
+ exitWithError2("--target-markets \u9009\u4E86\u300C\u5168\u7403\u300D\u540E\u4E0D\u80FD\u518D\u9009\u5176\u4ED6\u5E02\u573A");
5679
+ }
5680
+ return uniq;
5681
+ }
5656
5682
  function ensurePartnershipTotalMonths(value) {
5657
5683
  const num = value ? Number(value) : 12;
5658
5684
  if (num !== 6 && num !== 12 && num !== 24) {
@@ -5829,7 +5855,7 @@ async function runPlanningEnterprises(options) {
5829
5855
  return;
5830
5856
  }
5831
5857
  const columns = [
5832
- { key: "id", header: "\u4F01\u4E1AID" },
5858
+ { key: "id", header: "\u77E5\u8BC6\u5E93\u4F01\u4E1AID" },
5833
5859
  { key: "name", header: "\u4F01\u4E1A\u540D\u79F0" }
5834
5860
  ];
5835
5861
  const rows = enterprises.map((item) => ({ id: item.id, name: item.name || "-" }));
@@ -5871,6 +5897,10 @@ function buildGenerateRequest(options) {
5871
5897
  if (!enterpriseId) {
5872
5898
  exitWithError2("--enterprise-id \u4E0D\u80FD\u4E3A\u7A7A");
5873
5899
  }
5900
+ const enterpriseName = String(options.enterpriseName ?? "").trim();
5901
+ if (!enterpriseName) {
5902
+ exitWithError2("--enterprise-name \u4E0D\u80FD\u4E3A\u7A7A");
5903
+ }
5874
5904
  const yearMonth = ensureYearMonth(options.yearMonth, "--year-month");
5875
5905
  const contentTypes = ensureContentTypes(options.contentTypes);
5876
5906
  const partnershipTotalMonths = ensurePartnershipTotalMonths(options.partnershipTotalMonths);
@@ -5879,7 +5909,7 @@ function buildGenerateRequest(options) {
5879
5909
  const partnershipStartYearMonth = startYmRaw ? ensureYearMonth(startYmRaw, "--partnership-start-year-month") : void 0;
5880
5910
  return {
5881
5911
  enterpriseIds: [enterpriseId],
5882
- enterpriseName: String(options.enterpriseName ?? enterpriseId).trim() || enterpriseId,
5912
+ enterpriseName,
5883
5913
  yearMonth,
5884
5914
  contentTypes,
5885
5915
  partnershipTotalMonths,
@@ -5887,7 +5917,7 @@ function buildGenerateRequest(options) {
5887
5917
  frequency,
5888
5918
  marketingGoal: options.marketingGoal?.trim() || void 0,
5889
5919
  keyProducts: options.keyProducts?.trim() || void 0,
5890
- targetMarkets: options.targetMarkets?.trim() || void 0,
5920
+ targetMarkets: ensureTargetMarkets(options.targetMarkets),
5891
5921
  keyEvents: options.keyEvents?.trim() || void 0,
5892
5922
  contentTone: options.contentTone?.trim() || void 0
5893
5923
  };
@@ -7823,7 +7853,10 @@ function registerCsoCommands(program2) {
7823
7853
  await runReportDownload(opts);
7824
7854
  });
7825
7855
  const planningCmd = program2.command("planning").description("AI \u5185\u5BB9\u89C4\u5212\uFF08planning\uFF09\uFF1A\u4F01\u4E1A\u5217\u8868\u3001\u5185\u5BB9\u7C7B\u578B\u3001\u751F\u6210\u3001\u4EFB\u52A1\u7BA1\u7406\u3001\u8BE6\u60C5\u4E0E\u5BFC\u51FA");
7826
- planningCmd.command("enterprises").description("\u67E5\u8BE2\u4F01\u4E1A\u76EE\u5F55\uFF08cutapi querylist\uFF0C\u4F9B\u89C4\u5212\u751F\u6210\u65F6\u9009\u62E9\u4F01\u4E1A\uFF09").option("--belong-to-id <id>", "\u4F01\u4E1A\u5F52\u5C5E ID\uFF08\u4E0D\u4F20\u65F6\u53D1\u9001\u7A7A\u503C\uFF09").option("--page-size <number>", "\u76EE\u5F55\u67E5\u8BE2\u6761\u6570\uFF08\u9ED8\u8BA4 100\uFF09").option("-t, --token <token>", "Token\uFF08\u53EF\u9009\uFF1B\u4F18\u5148\u4E8E ~/.siluzan/config.json\uFF09").option("--json", "\u8F93\u51FA JSON", false).option("--unicode", "\u4F7F\u7528 Unicode \u7EBF\u6846\u8868\u683C\uFF08\u9ED8\u8BA4 ASCII\uFF09", false).option("--verbose", "\u663E\u793A\u8BE6\u7EC6\u9519\u8BEF\u4FE1\u606F", false).action(
7856
+ planningCmd.command("enterprises").description("\u67E5\u8BE2\u4F01\u4E1A\u76EE\u5F55\uFF08cutapi querylist\uFF0C\u4F9B\u89C4\u5212\u751F\u6210\u65F6\u9009\u62E9\u4F01\u4E1A\uFF09").option(
7857
+ "--belong-to-id <id>",
7858
+ "\u7EC4\u7EC7\u5F52\u5C5E ID\uFF08companyId\uFF0C\u4EC5\u7528\u4E8E\u7B5B\u9009\u4F01\u4E1A\u76EE\u5F55\uFF1B\u4E0D\u53EF\u4F5C\u4E3A generate \u7684 --enterprise-id\uFF09"
7859
+ ).option("--page-size <number>", "\u76EE\u5F55\u67E5\u8BE2\u6761\u6570\uFF08\u9ED8\u8BA4 100\uFF09").option("-t, --token <token>", "Token\uFF08\u53EF\u9009\uFF1B\u4F18\u5148\u4E8E ~/.siluzan/config.json\uFF09").option("--json", "\u8F93\u51FA JSON", false).option("--unicode", "\u4F7F\u7528 Unicode \u7EBF\u6846\u8868\u683C\uFF08\u9ED8\u8BA4 ASCII\uFF09", false).option("--verbose", "\u663E\u793A\u8BE6\u7EC6\u9519\u8BEF\u4FE1\u606F", false).action(
7827
7860
  async (opts) => {
7828
7861
  await runPlanningEnterprises(opts);
7829
7862
  }
@@ -7833,12 +7866,24 @@ function registerCsoCommands(program2) {
7833
7866
  await runPlanningContentTypes(opts);
7834
7867
  }
7835
7868
  );
7836
- planningCmd.command("generate").description("\u521B\u5EFA\u89C4\u5212\u751F\u6210\u4EFB\u52A1\uFF08\u5BF9\u5E94 planning \u751F\u6210\u5F39\u7A97\uFF09").requiredOption("--enterprise-id <id>", "\u4F01\u4E1A ID").option("--enterprise-name <name>", "\u4F01\u4E1A\u540D\u79F0\uFF08\u4E0D\u4F20\u9ED8\u8BA4\u4F7F\u7528 enterprise-id\uFF09").requiredOption("--year-month <YYYY-MM>", "\u89C4\u5212\u6708\u4EFD").requiredOption("--content-types <types...>", "\u5185\u5BB9\u7C7B\u578B\uFF0C\u652F\u6301\u9017\u53F7\u6216\u7A7A\u683C\uFF1Apost,video").option("--partnership-total-months <6|12|24>", "\u5408\u4F5C\u603B\u6708\u6570\uFF08\u9ED8\u8BA4 12\uFF09", "12").option("--partnership-start-year-month <YYYY-MM>", "\u5408\u4F5C\u5F00\u59CB\u6708\u4EFD\uFF08\u4E0E\u89C4\u5212\u6708\u4E0D\u540C\u624D\u4F1A\u4F20\u7ED9\u63A5\u53E3\uFF09").option("--freq-unit <week|month>", "\u9891\u6B21\u5355\u4F4D").option("--freq-count <number>", "\u9891\u6B21\u6570\u91CF\uFF08\u4E0E --freq-unit \u540C\u65F6\u63D0\u4F9B\uFF09").option("--marketing-goal <text>", "\u672C\u6708\u89C4\u5212\u91CD\u70B9\uFF1A\u8425\u9500\u76EE\u6807").option("--key-products <text>", "\u672C\u6708\u89C4\u5212\u91CD\u70B9\uFF1A\u6838\u5FC3\u4EA7\u54C1").option("--target-markets <text>", "\u672C\u6708\u89C4\u5212\u91CD\u70B9\uFF1A\u76EE\u6807\u5E02\u573A").option("--key-events <text>", "\u672C\u6708\u89C4\u5212\u91CD\u70B9\uFF1A\u5173\u952E\u8282\u70B9").option("--content-tone <text>", "\u672C\u6708\u89C4\u5212\u91CD\u70B9\uFF1A\u5185\u5BB9\u8BED\u8C03").option("--watch", "\u63D0\u4EA4\u540E\u76D1\u542C\u4EFB\u52A1\u76F4\u5230\u5B8C\u6210/\u5931\u8D25", false).option("--watch-timeout <seconds>", "\u76D1\u542C\u8D85\u65F6\u79D2\u6570\uFF08\u9ED8\u8BA4 300 \u79D2\uFF09").option("-t, --token <token>", "Token\uFF08\u53EF\u9009\uFF1B\u4F18\u5148\u4E8E ~/.siluzan/config.json\uFF09").option("--json", "\u8F93\u51FA JSON", false).option("--verbose", "\u663E\u793A\u8BE6\u7EC6\u9519\u8BEF\u4FE1\u606F", false).action(
7869
+ planningCmd.command("generate").description("\u521B\u5EFA\u89C4\u5212\u751F\u6210\u4EFB\u52A1\uFF08\u5BF9\u5E94 planning \u751F\u6210\u5F39\u7A97\uFF09").requiredOption(
7870
+ "--enterprise-id <id>",
7871
+ "\u77E5\u8BC6\u5E93\u4F01\u4E1A ID\uFF08\u987B\u4E3A planning enterprises \u8FD4\u56DE\u7684 id\uFF0C\u4E0D\u662F --belong-to-id\uFF09"
7872
+ ).requiredOption(
7873
+ "--enterprise-name <name>",
7874
+ "\u4F01\u4E1A\u540D\u79F0\uFF08\u987B\u4E3A planning enterprises \u8FD4\u56DE\u7684 name\uFF09"
7875
+ ).requiredOption("--year-month <YYYY-MM>", "\u89C4\u5212\u6708\u4EFD").requiredOption("--content-types <types...>", "\u5185\u5BB9\u7C7B\u578B\uFF0C\u652F\u6301\u9017\u53F7\u6216\u7A7A\u683C\uFF1Apost,video").option("--partnership-total-months <6|12|24>", "\u5408\u4F5C\u603B\u6708\u6570\uFF08\u9ED8\u8BA4 12\uFF09", "12").option("--partnership-start-year-month <YYYY-MM>", "\u5408\u4F5C\u5F00\u59CB\u6708\u4EFD\uFF08\u4E0E\u89C4\u5212\u6708\u4E0D\u540C\u624D\u4F1A\u4F20\u7ED9\u63A5\u53E3\uFF09").option("--freq-unit <week|month>", "\u9891\u6B21\u5355\u4F4D").option("--freq-count <number>", "\u9891\u6B21\u6570\u91CF\uFF08\u4E0E --freq-unit \u540C\u65F6\u63D0\u4F9B\uFF09").option("--marketing-goal <text>", "\u672C\u6708\u89C4\u5212\u91CD\u70B9\uFF1A\u8425\u9500\u76EE\u6807").option("--key-products <text>", "\u672C\u6708\u89C4\u5212\u91CD\u70B9\uFF1A\u6838\u5FC3\u4EA7\u54C1").option(
7876
+ "--target-markets <markets...>",
7877
+ "\u76EE\u6807\u5E02\u573A\uFF1A\u5168\u7403\uFF08\u5355\u72EC\uFF09\u6216 \u4E2D\u4E9A/\u975E\u6D32/\u62C9\u7F8E/\u4E2D\u4E1C/\u72EC\u8054\u4F53/\u4E1C\u5357\u4E9A\uFF08\u53EF\u591A\u9009\uFF0C\u4E0D\u53EF\u4E0E\u5168\u7403\u540C\u9009\uFF09"
7878
+ ).option("--key-events <text>", "\u672C\u6708\u89C4\u5212\u91CD\u70B9\uFF1A\u5173\u952E\u8282\u70B9").option("--content-tone <text>", "\u672C\u6708\u89C4\u5212\u91CD\u70B9\uFF1A\u5185\u5BB9\u8BED\u8C03").option("--watch", "\u63D0\u4EA4\u540E\u76D1\u542C\u4EFB\u52A1\u76F4\u5230\u5B8C\u6210/\u5931\u8D25", false).option("--watch-timeout <seconds>", "\u76D1\u542C\u8D85\u65F6\u79D2\u6570\uFF08\u9ED8\u8BA4 300 \u79D2\uFF09").option("-t, --token <token>", "Token\uFF08\u53EF\u9009\uFF1B\u4F18\u5148\u4E8E ~/.siluzan/config.json\uFF09").option("--json", "\u8F93\u51FA JSON", false).option("--verbose", "\u663E\u793A\u8BE6\u7EC6\u9519\u8BEF\u4FE1\u606F", false).action(
7837
7879
  async (opts) => {
7838
7880
  await runPlanningGenerate(opts);
7839
7881
  }
7840
7882
  );
7841
- planningCmd.command("list").description("\u67E5\u8BE2\u89C4\u5212\u4EFB\u52A1\u5217\u8868\uFF08\u652F\u6301\u4F01\u4E1A/\u6708\u5EA6\u7B5B\u9009\u4E0E\u5206\u9875\uFF09").option("--enterprise-id <id>", "\u4F01\u4E1A ID").option("--year-month <YYYY-MM>", "\u89C4\u5212\u6708\u4EFD").option("--page-index <number>", "\u9875\u7801\uFF08\u9ED8\u8BA4 1\uFF09").option("--page-size <number>", "\u6BCF\u9875\u6761\u6570\uFF08\u9ED8\u8BA4 10\uFF09").option("-t, --token <token>", "Token\uFF08\u53EF\u9009\uFF1B\u4F18\u5148\u4E8E ~/.siluzan/config.json\uFF09").option("--json", "\u8F93\u51FA JSON", false).option("--unicode", "\u4F7F\u7528 Unicode \u7EBF\u6846\u8868\u683C\uFF08\u9ED8\u8BA4 ASCII\uFF09", false).option("--verbose", "\u663E\u793A\u8BE6\u7EC6\u9519\u8BEF\u4FE1\u606F", false).action(
7883
+ planningCmd.command("list").description("\u67E5\u8BE2\u89C4\u5212\u4EFB\u52A1\u5217\u8868\uFF08\u652F\u6301\u4F01\u4E1A/\u6708\u5EA6\u7B5B\u9009\u4E0E\u5206\u9875\uFF09").option(
7884
+ "--enterprise-id <id>",
7885
+ "\u77E5\u8BC6\u5E93\u4F01\u4E1A ID\uFF08\u987B\u4E3A planning enterprises \u8FD4\u56DE\u7684 id\uFF0C\u4E0D\u662F --belong-to-id\uFF09"
7886
+ ).option("--year-month <YYYY-MM>", "\u89C4\u5212\u6708\u4EFD").option("--page-index <number>", "\u9875\u7801\uFF08\u9ED8\u8BA4 1\uFF09").option("--page-size <number>", "\u6BCF\u9875\u6761\u6570\uFF08\u9ED8\u8BA4 10\uFF09").option("-t, --token <token>", "Token\uFF08\u53EF\u9009\uFF1B\u4F18\u5148\u4E8E ~/.siluzan/config.json\uFF09").option("--json", "\u8F93\u51FA JSON", false).option("--unicode", "\u4F7F\u7528 Unicode \u7EBF\u6846\u8868\u683C\uFF08\u9ED8\u8BA4 ASCII\uFF09", false).option("--verbose", "\u663E\u793A\u8BE6\u7EC6\u9519\u8BEF\u4FE1\u606F", false).action(
7842
7887
  async (opts) => {
7843
7888
  await runPlanningList(opts);
7844
7889
  }
@@ -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.23",
4
- "publishedAt": 1780046102147,
3
+ "version": "1.1.24-beta.2",
4
+ "publishedAt": 1780292582274,
5
5
  "homepage": "https://www.siluzan.com",
6
6
  "source": "https://dev.azure.com/jack4it/Sammamish/_git/siluzan-skill",
7
7
  "requiredBinaries": [
@@ -12,6 +12,25 @@ enterprises → generate → watch(监控进度)→ get(查看详情)→
12
12
 
13
13
  ---
14
14
 
15
+ ## ⚠️ 两种「企业 ID」勿混用
16
+
17
+ 业务上都叫「企业 ID」,CLI 里对应**两个不同字段**,混用会导致查不到企业或生成失败。
18
+
19
+ | 名称 | 出现位置 | 含义 | 用于 |
20
+ | --- | --- | --- | --- |
21
+ | **知识库企业 ID** | `planning enterprises` 返回的 `id` / `folders[].id` | 知识库里的企业目录 ID | `planning generate --enterprise-id`、`planning list --enterprise-id` |
22
+ | **组织归属 ID** | `planning enterprises --belong-to-id` | 当前登录账号所属组织(类似 RAG 的 `belongToId` / `companyId`) | **仅**查询企业目录时的筛选参数 |
23
+
24
+ **执行 generate 前必须:**
25
+
26
+ 1. 先跑 `planning enterprises`(一般**不要**传 `--belong-to-id`,除非明确要按组织筛选)。
27
+ 2. 从输出表格或 `--json` 取 **知识库企业 ID**(`id` / `folders[].id`)与 **企业名称**(`name` / `folders[].name`)。
28
+ 3. 将二者分别填入 `planning generate --enterprise-id` 与 `--enterprise-name`。
29
+
30
+ **禁止:** 把 `--belong-to-id`、`account me` 的 `companyId`、或 RAG 用的 `belongToId` 当作 `--enterprise-id`。
31
+
32
+ ---
33
+
15
34
  ## 命令速查
16
35
 
17
36
  | 命令 | 说明 |
@@ -33,16 +52,20 @@ enterprises → generate → watch(监控进度)→ get(查看详情)→
33
52
  ## 示例:生成月度规划
34
53
 
35
54
  ```bash
36
- # Step 1:查企业列表,获取 enterpriseId
55
+ # Step 1:查企业列表,从返回的 id 列(或 JSON 的 folders[].id)取知识库企业 ID
37
56
  siluzan-cso planning enterprises
57
+ # 可选:按组织筛选目录(勿将此值用于 generate)
58
+ # siluzan-cso planning enterprises --belong-to-id <组织归属ID>
38
59
 
39
- # Step 2:发起生成任务
60
+ # Step 2:发起生成任务(id/name 均来自 Step 1,不是 belongToId)
40
61
  siluzan-cso planning generate \
41
- --enterprise-id <id> \
62
+ --enterprise-id <folders[].id> \
63
+ --enterprise-name "<folders[].name>" \
42
64
  --year-month 2026-05 \
43
65
  --content-types post,video \
44
66
  --marketing-goal "提升品牌曝光" \
45
67
  --key-products "新品 A" \
68
+ --target-markets 中亚,东南亚 \
46
69
  --freq-unit week --freq-count 3
47
70
 
48
71
  # Step 3:监控生成进度(taskId 来自 generate 输出)
@@ -57,16 +80,37 @@ siluzan-cso planning export txt --plan-id <planId> --output plan.md
57
80
 
58
81
  ---
59
82
 
83
+ ## planning enterprises — 查询企业目录
84
+
85
+ ```bash
86
+ # 默认:列出可选企业(取输出 id 用于 generate)
87
+ siluzan-cso planning enterprises
88
+
89
+ # JSON 输出(id 在 folders[].id)
90
+ siluzan-cso planning enterprises --json
91
+
92
+ # 按组织归属筛选(高级用法;该 ID 不可用于 generate)
93
+ siluzan-cso planning enterprises --belong-to-id <组织归属ID>
94
+ ```
95
+
96
+ | 参数 | 说明 |
97
+ | --- | --- |
98
+ | `--belong-to-id` | 组织归属 ID(`companyId`),仅传给素材库 querylist 做筛选;**不是** generate 用的企业 ID |
99
+ | `--page-size` | 目录条数上限(默认 100) |
100
+
101
+ ---
102
+
60
103
  ## generate 主要参数
61
104
 
62
105
  | 参数 | 必填 | 说明 |
63
106
  | ------------------ | ---- | --------------------------------------------------- |
64
- | `--enterprise-id` | ✅ | 企业 ID |
107
+ | `--enterprise-id` | ✅ | 知识库企业 ID(`planning enterprises` 返回的 `id`,**不是** `--belong-to-id`) |
108
+ | `--enterprise-name`| ✅ | 企业名称(`planning enterprises` 返回的 `name`,须与 `--enterprise-id` 同行) |
65
109
  | `--year-month` | ✅ | 规划月份,格式 `YYYY-MM` |
66
110
  | `--content-types` | ✅ | 内容类型,逗号分隔:`post`(图文)/ `video`(视频) |
67
111
  | `--marketing-goal` | — | 营销目标(自然语言描述) |
68
112
  | `--key-products` | — | 重点产品 |
69
- | `--target-markets` | — | 目标市场 |
113
+ | `--target-markets` | — | 目标市场 `string[]`:`全球` **单独选**;或从 `中亚`、`非洲`、`拉美`、`中东`、`独联体`、`东南亚` 多选(**不可与全球同选**) |
70
114
  | `--key-events` | — | 重要节点/活动 |
71
115
  | `--content-tone` | — | 内容风格(如"专业严肃"/"轻松活泼") |
72
116
  | `--freq-unit` | — | 发布频率单位:`week` / `month` |
@@ -81,9 +125,55 @@ siluzan-cso planning export txt --plan-id <planId> --output plan.md
81
125
  # 查所有规划任务
82
126
  siluzan-cso planning list
83
127
 
84
- # 按企业筛选
85
- siluzan-cso planning list --enterprise-id <id>
128
+ # 按企业筛选(同样用 enterprises 返回的 id,不是 belongToId)
129
+ siluzan-cso planning list --enterprise-id <folders[].id>
86
130
 
87
131
  # 按月份筛选
88
132
  siluzan-cso planning list --year-month 2026-05
89
133
  ```
134
+
135
+ ---
136
+
137
+ ## planning get — 规划详情字段
138
+
139
+ `planning get <planId> --json` 返回完整规划对象。以下仅列**写稿、排期、复用规划**时真正需要关注的字段(Cosmos `_rid` / `_etag` / `PartitionKey` 等存储字段可忽略)。
140
+
141
+ ### 规划主体
142
+
143
+ | 字段 | 说明 |
144
+ | --- | --- |
145
+ | `id` | 规划 ID,再生成、导出时引用 |
146
+ | `enterpriseIds` | 企业 ID 列表(通常一项) |
147
+ | `enterpriseName` | 企业名称 |
148
+ | `yearMonth` | 规划月份 `YYYY-MM` |
149
+ | `contentTypes` | 已规划体裁:`post`(图文)、`video`(视频) |
150
+ | `frequency` | 发布频次:`perWeek` 或 `perMonth`(与 generate 的 `--freq-unit` / `--freq-count` 对应) |
151
+ | `targetMarkets` | 目标市场 `string[]`;`全球` 与区域项互斥,规则同 `--target-markets` |
152
+ | `strategyBrief` | 用户侧策略简报原文,本月叙事与重点的**总纲** |
153
+ | `contextUsed` | 生成时采用的背景摘要(含知识库/业务语境),写稿前建议先读 |
154
+ | `planRationale` | 本月排期逻辑(周次节奏、阶段目标),export txt 会写入「规划逻辑」 |
155
+ | `postItems` / `videoItems` | 图文 / 视频选题表,见下表 |
156
+
157
+ ### 长期合作周期(影响阶段化叙事)
158
+
159
+ 生成时需传 `--partnership-total-months`(6/12/24)与可选 `--partnership-start-year-month`;详情里会回显当前处于合作周期的哪一段:
160
+
161
+ | 字段 | 说明 |
162
+ | --- | --- |
163
+ | `partnershipTotalMonths` | 合作总月数(6 / 12 / 24) |
164
+ | `partnershipStartYearMonth` | 合作起始月 `YYYY-MM` |
165
+ | `partnershipMonthIndex` | 当前是合作第几个月(从 1 起) |
166
+ | `partnershipPhaseSlot` | 阶段槽位(长周期内分段策略用,与总月数配合理解本月侧重) |
167
+
168
+ ### 选题行(`postItems` / `videoItems` 每项)
169
+
170
+ | 字段 | 说明 |
171
+ | --- | --- |
172
+ | `week` | 排期周次,如 `第一周(4月1日-7日)-1`(同周多条以 `-1`、`-2` 区分) |
173
+ | `contentDirection` | 方向分类(案例、TCO、展会等标签) |
174
+ | `topic` | 选题标题 |
175
+ | `mainDirection` | 本条内容的撰写/拍摄要点与转化导向 |
176
+ | `targetAudience` | 目标受众 |
177
+ | `referenceMaterials` | 建议引用的素材或资料线索;**仅 `--json` 可见**,`export txt` 表格不含此列 |
178
+
179
+ 按 `week` 排序即可还原月度节奏;写具体稿件时优先组合 `mainDirection` + `referenceMaterials`,并对照 `planRationale` 与 `strategyBrief` 保持口径一致。
@@ -236,7 +236,7 @@ siluzan-cso publish -c publish-config.json
236
236
 
237
237
  > 查询发布状态、处理失败项 → 参见 `references/task.md`
238
238
 
239
- 前往 CSO 任务管理页面查看进度:`https://www.siluzan.com/v3/foreign_trade/cso/task`
239
+ 前往 CSO 任务管理页面查看进度:`https://www-ci.siluzan.com/v3/foreign_trade/cso/task`
240
240
 
241
241
  ---
242
242
 
@@ -1,6 +1,6 @@
1
1
  # rag:RAG 知识库检索
2
2
 
3
- 知识库管理页面在https://www.siluzan.com/knowledge-base/
3
+ 知识库管理页面在https://www-ci.siluzan.com/knowledge-base/
4
4
 
5
5
  用于写稿、产品知识问答、三库素材提取等场景;凡回答依赖「本企业已入库素材」且不应凭模型记忆编造时,优先走 RAG。
6
6
 
@@ -3,7 +3,7 @@
3
3
  ## 安装 CLI
4
4
 
5
5
  ```bash
6
- npm install -g siluzan-cso-cli
6
+ npm install -g siluzan-cso-cli@beta
7
7
  ```
8
8
 
9
9
  环境要求:Node.js 18+
@@ -46,7 +46,7 @@ siluzan-cso config set --token <Token> # 备用:设置 JWT Token
46
46
 
47
47
  > **⚠️ 不要使用 `config set --token <token>` 的方式。** 该方式会将 Token 明文写入 shell history(`~/.bash_history`、`~/.zsh_history`、PowerShell 历史),存在凭证泄露风险。推荐使用 `siluzan-cso login` 交互式输入。
48
48
 
49
- API Key 获取入口:`https://www.siluzan.com/v3/foreign_trade/settings/apiKeyManagement`
49
+ API Key 获取入口:`https://www-ci.siluzan.com/v3/foreign_trade/settings/apiKeyManagement`
50
50
 
51
51
  ### 通过手机号 + 验证码登录(对话式 AI 推荐)
52
52
 
@@ -123,8 +123,8 @@ siluzan-cso config show
123
123
 
124
124
  ```
125
125
  构建环境 : production
126
- apiBaseUrl : https://api.siluzan.com
127
- csoBaseUrl : https://cso.siluzan.com
126
+ apiBaseUrl : https://api-ci.siluzan.com
127
+ csoBaseUrl : https://cso-ci.siluzan.com
128
128
  apiKey : abcd****1234
129
129
  ```
130
130
 
@@ -1,7 +1,7 @@
1
1
  # web-pages — CSO 后台页面速查
2
2
 
3
3
  > 当需要引导用户前往网页端查看数据或执行操作时,使用本文件中的页面链接。
4
- > URL 格式:`https://www.siluzan.com/v3/foreign_trade/cso/{页面路径}`
4
+ > URL 格式:`https://www-ci.siluzan.com/v3/foreign_trade/cso/{页面路径}`
5
5
 
6
6
  ---
7
7
 
@@ -11,9 +11,9 @@
11
11
 
12
12
  | 页面 | 完整链接 | 功能说明 |
13
13
  | -------- | --------------------------------------------------------- | ---------------------------------------------------- |
14
- | 账号管理 | `https://www.siluzan.com/v3/foreign_trade/cso/ManageAccounts` | 绑定/授权/查看媒体账号列表、账号状态、Token 到期时间 |
15
- | 账号分组 | `https://www.siluzan.com/v3/foreign_trade/cso/AccountGroup` | 新建分组、管理分组内账号 |
16
- | 重点账号 | `https://www.siluzan.com/v3/foreign_trade/cso/KeyAccounts` | 配置重点关注账号、数据备份 |
14
+ | 账号管理 | `https://www-ci.siluzan.com/v3/foreign_trade/cso/ManageAccounts` | 绑定/授权/查看媒体账号列表、账号状态、Token 到期时间 |
15
+ | 账号分组 | `https://www-ci.siluzan.com/v3/foreign_trade/cso/AccountGroup` | 新建分组、管理分组内账号 |
16
+ | 重点账号 | `https://www-ci.siluzan.com/v3/foreign_trade/cso/KeyAccounts` | 配置重点关注账号、数据备份 |
17
17
 
18
18
  ---
19
19
 
@@ -21,10 +21,10 @@
21
21
 
22
22
  | 页面 | 完整链接 | 功能说明 |
23
23
  | -------- | ------------------------------------------------------------------ | ------------------------------------------------------------------------------ |
24
- | 发布作品 | `https://www.siluzan.com/v3/foreign_trade/cso/postVideo?contentType=1` | 矩阵发布视频、图文、草稿管理、话题组 contentType=1 是视频,contentType=2是图文 |
24
+ | 发布作品 | `https://www-ci.siluzan.com/v3/foreign_trade/cso/postVideo?contentType=1` | 矩阵发布视频、图文、草稿管理、话题组 contentType=1 是视频,contentType=2是图文 |
25
25
 
26
- | 发布日历 | `https://www.siluzan.com/v3/foreign_trade/cso/publishCalendar` | 日历视图规划发布任务、创建/编辑发布任务 |
27
- | 营销日历 | `https://www.siluzan.com/v3/foreign_trade/cso/marketingCalendar` | 营销节点日历、跳转创建发布任务 |
26
+ | 发布日历 | `https://www-ci.siluzan.com/v3/foreign_trade/cso/publishCalendar` | 日历视图规划发布任务、创建/编辑发布任务 |
27
+ | 营销日历 | `https://www-ci.siluzan.com/v3/foreign_trade/cso/marketingCalendar` | 营销节点日历、跳转创建发布任务 |
28
28
 
29
29
  ---
30
30
 
@@ -32,10 +32,10 @@
32
32
 
33
33
  | 页面 | 完整链接 | 功能说明 |
34
34
  | -------- | ------------------------------------------------------- | ----------------------------------------- |
35
- | 任务列表 | `https://www.siluzan.com/v3/foreign_trade/cso/task` | 发布任务列表、状态筛选、任务详情抽屉 |
36
- | 视频管理 | `https://www.siluzan.com/v3/foreign_trade/cso/VideoMgr` | 已发布视频/图文列表、删除、重发、评论查看 |
37
- | 视频搬家 | `https://www.siluzan.com/v3/foreign_trade/cso/relocation` | 将视频搬运到其他平台 |
38
- | 搬家记录 | `https://www.siluzan.com/v3/foreign_trade/cso/MovingRecord` | 搬家任务列表与执行状态 |
35
+ | 任务列表 | `https://www-ci.siluzan.com/v3/foreign_trade/cso/task` | 发布任务列表、状态筛选、任务详情抽屉 |
36
+ | 视频管理 | `https://www-ci.siluzan.com/v3/foreign_trade/cso/VideoMgr` | 已发布视频/图文列表、删除、重发、评论查看 |
37
+ | 视频搬家 | `https://www-ci.siluzan.com/v3/foreign_trade/cso/relocation` | 将视频搬运到其他平台 |
38
+ | 搬家记录 | `https://www-ci.siluzan.com/v3/foreign_trade/cso/MovingRecord` | 搬家任务列表与执行状态 |
39
39
 
40
40
  ---
41
41
 
@@ -43,9 +43,9 @@
43
43
 
44
44
  | 页面 | 完整链接 | 功能说明 |
45
45
  | -------- | ------------------------------------------------------ | --------------------------------------- |
46
- | 私信管理 | `https://www.siluzan.com/v3/foreign_trade/cso/letter` | 按渠道/时间查看与处理私信(多平台 Tab) |
47
- | 评论管理 | `https://www.siluzan.com/v3/foreign_trade/cso/comment` | 收到的评论列表、回复、账号组筛选 |
48
- | 智能互动 | `https://www.siluzan.com/v3/foreign_trade/cso/interaction` | 私信欢迎语、自动回复规则配置 |
46
+ | 私信管理 | `https://www-ci.siluzan.com/v3/foreign_trade/cso/letter` | 按渠道/时间查看与处理私信(多平台 Tab) |
47
+ | 评论管理 | `https://www-ci.siluzan.com/v3/foreign_trade/cso/comment` | 收到的评论列表、回复、账号组筛选 |
48
+ | 智能互动 | `https://www-ci.siluzan.com/v3/foreign_trade/cso/interaction` | 私信欢迎语、自动回复规则配置 |
49
49
 
50
50
  ---
51
51
 
@@ -53,9 +53,9 @@
53
53
 
54
54
  | 页面 | 完整链接 | 功能说明 |
55
55
  | -------- | ------------------------------------------------------ | -------------------------------------------------------------------- |
56
- | 作品数据 | `https://www.siluzan.com/v3/foreign_trade/cso/Workdata` | 作品维度统计、图表、明细(对应 CLI `report fetch`) |
57
- | 账户数据 | `https://www.siluzan.com/v3/foreign_trade/cso/accountdata` | 账户维度汇总数据、趋势图表 |
58
- | 绩效报表 | `https://www.siluzan.com/v3/foreign_trade/cso/table` | 多维度绩效报表、PDF 导出(对应 CLI `report fetch/records/download`) |
56
+ | 作品数据 | `https://www-ci.siluzan.com/v3/foreign_trade/cso/Workdata` | 作品维度统计、图表、明细(对应 CLI `report fetch`) |
57
+ | 账户数据 | `https://www-ci.siluzan.com/v3/foreign_trade/cso/accountdata` | 账户维度汇总数据、趋势图表 |
58
+ | 绩效报表 | `https://www-ci.siluzan.com/v3/foreign_trade/cso/table` | 多维度绩效报表、PDF 导出(对应 CLI `report fetch/records/download`) |
59
59
 
60
60
  ---
61
61
 
@@ -63,11 +63,11 @@
63
63
 
64
64
  | 页面 | 完整链接 | 功能说明 |
65
65
  | -------- | ------------------------------------------------------ | -------------------------------------------------------------- |
66
- | 内容规划 | `https://www.siluzan.com/v3/foreign_trade/cso/planning` | AI 内容规划列表、生成规划、企业维度筛选(对应 CLI `planning`) |
67
- | 营销首页 | `https://www.siluzan.com/v3/foreign_trade/cso/ContentHome` | 工作台总览:账号数、视频数、最新评论与视频 |
66
+ | 内容规划 | `https://www-ci.siluzan.com/v3/foreign_trade/cso/planning` | AI 内容规划列表、生成规划、企业维度筛选(对应 CLI `planning`) |
67
+ | 营销首页 | `https://www-ci.siluzan.com/v3/foreign_trade/cso/ContentHome` | 工作台总览:账号数、视频数、最新评论与视频 |
68
68
 
69
- | 话题组 | `https://www.siluzan.com/v3/foreign_trade/cso/TopicGroup` | 话题组维护、话题内容管理 |
70
- | 知识库 | `https://www.siluzan.com/knowledge-base/` | 知识库管理、编辑及查询 |
69
+ | 话题组 | `https://www-ci.siluzan.com/v3/foreign_trade/cso/TopicGroup` | 话题组维护、话题内容管理 |
70
+ | 知识库 | `https://www-ci.siluzan.com/knowledge-base/` | 知识库管理、编辑及查询 |
71
71
 
72
72
  ---
73
73
 
@@ -9,11 +9,11 @@ $ErrorActionPreference = 'Stop'
9
9
  # -- Package info (injected at build time) ------------------------------------
10
10
  $PKG_NAME = 'siluzan-cso-cli'
11
11
  # PKG_VERSION 锁定到与本脚本同批构建产物一致的版本,避免与 dist/skill 错位
12
- $PKG_VERSION = '1.1.23'
12
+ $PKG_VERSION = '1.1.24-beta.2'
13
13
  $CLI_BIN = 'siluzan-cso'
14
14
  $SKILL_LABEL = 'Siluzan CSO'
15
- $INSTALL_CMD = 'npm install -g siluzan-cso-cli'
16
- $WEB_BASE = 'https://www.siluzan.com'
15
+ $INSTALL_CMD = 'npm install -g siluzan-cso-cli@beta'
16
+ $WEB_BASE = 'https://www-ci.siluzan.com'
17
17
 
18
18
  # -- Constants ----------------------------------------------------------------
19
19
  $NODE_MAJOR_MIN = 18
@@ -9,11 +9,11 @@ set -euo pipefail
9
9
  # -- Package info (injected at build time) ------------------------------------
10
10
  readonly PKG_NAME="siluzan-cso-cli"
11
11
  # PKG_VERSION 锁定到与本脚本同批构建产物一致的版本,避免与 dist/skill 错位
12
- readonly PKG_VERSION="1.1.23"
12
+ readonly PKG_VERSION="1.1.24-beta.2"
13
13
  readonly CLI_BIN="siluzan-cso"
14
14
  readonly SKILL_LABEL="Siluzan CSO"
15
- readonly INSTALL_CMD="npm install -g siluzan-cso-cli"
16
- readonly WEB_BASE="https://www.siluzan.com"
15
+ readonly INSTALL_CMD="npm install -g siluzan-cso-cli@beta"
16
+ readonly WEB_BASE="https://www-ci.siluzan.com"
17
17
 
18
18
  # -- Constants ----------------------------------------------------------------
19
19
  readonly NODE_MAJOR_MIN=18
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "siluzan-cso-cli",
3
- "version": "1.1.23",
3
+ "version": "1.1.24-beta.2",
4
4
  "description": "Siluzan platform AI Skill CLI — multi-platform content publishing (video/image-text) for Cursor, Claude Code, and OpenClaw.",
5
5
  "keywords": [
6
6
  "ai-skill",