{"id":"eada9160-c8a9-40f9-9002-aa6a9f85bd23","entityType":"agent","slug":"clawhub-sigedev01-bit-siluzan-cso","name":"Siluzan CSO","canonicalUrl":"https://www.xpersona.co/agent/clawhub-sigedev01-bit-siluzan-cso","canonicalPath":"/agent/clawhub-sigedev01-bit-siluzan-cso","generatedAt":"2026-10-09T14:24:47.820Z","source":"CLAWHUB","claimStatus":"UNCLAIMED","verificationTier":"NONE","summary":{"evidence":{"source":"editorial-content","verified":true,"confidence":"high","updatedAt":"2026-10-09T12:40:50.600Z","emptyReason":null},"description":"丝路赞内容运营平台（CSO）。**凡涉及以下任一类业务，必须先加载并使用本 skill**。 (1) **文案生成与改稿**：选题、爆款拆解、新写成稿（公众号、小红书、**视频口播/字幕/配音/分镜脚本**、博客、改稿润色、评论区回复等）须走 `three-lib-content-workflow/content-writer.workflow.md`；**热点/资讯生成选题**见 `topic-selection.md`；**单轨 / 多轨**（多轨默认 2 篇、可增减，可主动推断）见 `multi-track.md`；**禁止**直接成稿或聊天润色。 **视频脚本 vs 发布 Caption**：口播/字幕/分镜走 content-writer；上传发布框 Caption 走 `overseas-b2b-social-post`。 (2) **人设管理**：运营账号人设卡（styleGuide）；反推/查询/保存。 (3) **发布与运营**（YouTube/TikTok/Instagram/LinkedIn/X/Facebook）：OAuth、**账号分组**、发布、任务/重试、upload、**extract-cover**、planning、报表。 (4) **RAG 知识库**：品牌/产品问答与写稿事实依据。 **海外 B2B 社媒贴文/Caption**：走独立 skill `overseas-b2b-social-post`，不在本 skill 文案流程内。 **高频误路由**：写文案禁联网代替 rag query；发布/截封面须调 CLI。 **账号不明先问**：仅运营媒体账号；广告账户走 siluzan-tso。 Skill: Siluzan CSO Owner: sigedev01-bit Summary: 丝路赞内容运营平台（CSO）。**凡涉及以下任一类业务，必须先加载并使用本 skill**。 (1) **文案生成与改稿**：选题、爆款拆解、新写成稿（公众号、小红书、**视频口播/字幕/配音/分镜脚本**、博客、改稿润色、评论区回复等）须走 three-lib-content-workflow/content-writer.workflow.md；**热点/资讯生成选题**见 topic-selection.md；**单轨 / 多轨**（多轨默认 2 篇、可增减，可主动推断）见 multi-track.md；**禁止**直接成稿或聊天润色。 **视频脚本 vs 发布 Caption**：口播/字幕/分镜走 content-writer；上传发布框 Caption 走 overseas-b2b-social-post。 (2) **","descriptionLabel":"Technical summary","evidenceSummary":"Capability contract not published. No trust telemetry is available yet. 2.6K downloads reported by the source. Last updated 10/9/2026.","installCommand":"clawhub skill install s1739h41ywzdb9wt12gajjaks983j6gr:siluzan-cso","sourceUrl":"https://clawhub.ai/sigedev01-bit/siluzan-cso","homepage":"https://clawhub.ai/sigedev01-bit/skills/siluzan-cso","primaryLinks":[{"label":"View on ClawHub","url":"https://clawhub.ai/sigedev01-bit/siluzan-cso","kind":"source"},{"label":"Homepage","url":"https://clawhub.ai/sigedev01-bit/skills/siluzan-cso","kind":"homepage"}],"safetyScore":84,"overallRank":62,"popularityScore":40,"trustScore":null,"claimedByName":null,"isOwner":false,"seoDescription":"丝路赞内容运营平台（CSO）。**凡涉及以下任一类业务，必须先加载并使用本 skill**。 (1) **文案生成与改稿**：选题、爆款拆解、新写成稿（公众号、小红书、**视频口播/字幕/配音/分镜脚本**、博客、改稿润色、评论区回复等）须走 `three-lib-content-workflow/content-wr"},"coverage":{"evidence":{"source":"public-profile","verified":false,"confidence":"medium","updatedAt":"2026-10-09T12:40:50.600Z","emptyReason":null},"protocols":[{"protocol":"OPENCLEW","label":"OpenClaw","status":"self-declared","notes":"Declared in the public agent profile."}],"capabilities":[],"verifiedCount":0,"selfDeclaredCount":1,"capabilityMatrix":{"rows":[{"key":"OPENCLEW","type":"protocol","support":"unknown","confidenceSource":"profile","notes":"Listed on profile"}],"flattenedTokens":"protocol:OPENCLEW|unknown|profile"}},"adoption":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-09T12:40:50.600Z","emptyReason":null},"stars":null,"forks":null,"downloads":2634,"packageName":null,"latestVersion":"1.1.45","tractionLabel":"2.6K downloads"},"release":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-09T12:40:50.600Z","emptyReason":null},"lastUpdatedAt":"2026-10-09T12:40:50.600Z","lastCrawledAt":"2026-10-09T12:40:50.600Z","lastIndexedAt":null,"nextCrawlAt":"2026-10-10T12:40:50.600Z","lastVerifiedAt":null,"highlights":[{"version":"1.1.45","createdAt":"2026-09-08T08:41:59.897Z","changelog":"siluzan-cso v1.1.45 - 移除了 skill-card.md 文件，简化文档结构。 - 更新/补充多项文档，包括 content-writer 视频脚本与内容校验流程说明。 - 优化安装脚本（install.sh、install.ps1）以提升平台兼容性与易用性。 - 增强 references/validate-content.md 对内容校验的流程指引。 - 精简或调整了部分文档内容，使操作步骤和权限描述更清晰。","fileCount":42,"zipByteSize":164773},{"version":"1.1.44","createdAt":"2026-09-01T08:55:06.146Z","changelog":"- Added new documentation file: three-lib-content-workflow/library-catalog.md - Updated multiple workflow and documentation files to improve clarity and detail in the content creation process - Removed obsolete file: skill-card.md - Minor edits to installation scripts for enhanced compatibility and user guidance - Refined workflow definitions and schema for content and collaboration management","fileCount":42,"zipByteSize":161261},{"version":"1.1.43","createdAt":"2026-08-25T09:25:55.772Z","changelog":"siluzan-cso v1.1.43 - 新增各大主流平台运营规范文档：包含 YouTube、TikTok、LinkedIn、微信、抖音等。 - 内容生成工作流说明补充：三库策略需在各平台规则下使用，平台规则从独立 references 目录加载。 - content-writer/video-script 工作流等文件更新，完善内容生产与脚本生成流程。 - 安装脚本和工作流说明文档优化，提升脚本稳定性和阅读体验。 - skill-card.md 文件移除，精简冗余文档。","fileCount":41,"zipByteSize":147355},{"version":"1.1.42","createdAt":"2026-08-20T08:34:16.810Z","changelog":"Promote the validated host plan gate and video workflow safeguards to production.","fileCount":35,"zipByteSize":128620},{"version":"1.1.41","createdAt":"2026-08-17T10:01:41.727Z","changelog":"Preserve confirmed video plans while grounding unsupported enterprise claims through the final six-type workflow.","fileCount":35,"zipByteSize":127754},{"version":"1.1.40","createdAt":"2026-07-31T07:34:25.883Z","changelog":"Improve WeChat article generation so source material proceeds directly to a complete article and closes naturally without fixed generic ending headings.","fileCount":34,"zipByteSize":123849},{"version":"1.1.33","createdAt":"2026-07-24T09:03:50.920Z","changelog":"- Improved documentation and workflow for content writing and publishing processes. - Updated installation scripts for better cross-platform compatibility. - Refined skill boundaries: \"overseas-b2b-social-post\" content remains external. - Removed outdated skill card file. - Minor structural and instruction adjustments for clarity.","fileCount":33,"zipByteSize":116337},{"version":"1.1.32","createdAt":"2026-07-17T10:30:12.426Z","changelog":"siluzan-cso v1.1.32 - 更新文案工作流与选题说明文档：优化 content-writer.workflow.md、topic-selection.md 流程细节 - install.sh 和 install.ps1 脚本调整，提升 CLI 安装与环境兼容性 - 删除 skill-card.md，文档结构更加精简 - 更新元数据与说明，确保行为与分工边界更清晰","fileCount":33,"zipByteSize":116368}]},"execution":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No published capability contract is available yet."},"installCommand":"clawhub skill install s1739h41ywzdb9wt12gajjaks983j6gr:siluzan-cso","setupComplexity":"low","setupSteps":["Setup complexity is classified as HIGH. You must provision dedicated cloud infrastructure or an isolated VM. Do not run this directly on your local workstation.","Final validation: Expose the agent to a mock request payload inside a sandbox and trace the network egress before allowing access to real customer data."],"contract":{"contractStatus":"missing","authModes":[],"requires":[],"forbidden":[],"supportsMcp":false,"supportsA2a":false,"supportsStreaming":false,"inputSchemaRef":null,"outputSchemaRef":null,"dataRegion":null,"contractUpdatedAt":null,"sourceUpdatedAt":null,"freshnessSeconds":null},"invocationGuide":{"preferredApi":{"snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-sigedev01-bit-siluzan-cso/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-sigedev01-bit-siluzan-cso/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-sigedev01-bit-siluzan-cso/trust"},"curlExamples":["curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-sigedev01-bit-siluzan-cso/snapshot\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-sigedev01-bit-siluzan-cso/contract\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-sigedev01-bit-siluzan-cso/trust\""],"jsonRequestTemplate":{"query":"summarize this repo","constraints":{"maxLatencyMs":2000,"protocolPreference":["OPENCLEW"]}},"jsonResponseTemplate":{"ok":true,"result":{"summary":"...","confidence":0.9},"meta":{"source":"CLAWHUB","generatedAt":"2026-10-09T14:24:47.818Z"}},"retryPolicy":{"maxAttempts":3,"backoffMs":[500,1500,3500],"retryableConditions":["HTTP_429","HTTP_503","NETWORK_TIMEOUT"]}},"endpoints":{"dossierUrl":"https://www.xpersona.co/api/v1/agents/clawhub-sigedev01-bit-siluzan-cso/dossier","snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-sigedev01-bit-siluzan-cso/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-sigedev01-bit-siluzan-cso/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-sigedev01-bit-siluzan-cso/trust"}},"reliability":{"evidence":{"source":"runtime-metrics","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No trust, reliability, or runtime telemetry is available."},"trust":{"status":"unavailable","handshakeStatus":"UNKNOWN","verificationFreshnessHours":null,"reputationScore":null,"p95LatencyMs":null,"successRate30d":null,"fallbackRate":null,"attempts30d":null,"trustUpdatedAt":null,"trustConfidence":"unknown","sourceUpdatedAt":null,"freshnessSeconds":null},"decisionGuardrails":{"doNotUseIf":["Contract metadata is missing or unavailable for deterministic execution."],"safeUseWhen":[],"riskFlags":["missing_or_unavailable_contract","trust_data_unavailable","schema_references_missing"],"operationalConfidence":"low"},"executionMetrics":{"observedLatencyMsP50":null,"observedLatencyMsP95":null,"estimatedCostUsd":null,"uptime30d":null,"rateLimitRpm":null,"rateLimitBurst":null,"lastVerifiedAt":null,"verificationSource":null},"runtimeMetrics":{"successRate":null,"avgLatencyMs":null,"avgCostUsd":null,"hallucinationRate":null,"retryRate":null,"disputeRate":null,"p50Latency":null,"p95Latency":null,"lastUpdated":null}},"benchmarks":{"evidence":{"source":"no-benchmark-data","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No benchmark suites or observed failure patterns are available."},"suites":[],"failurePatterns":[]},"artifacts":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"high","updatedAt":"2026-10-09T12:40:50.600Z","emptyReason":null},"readme":"Skill: Siluzan CSO\n\nOwner: sigedev01-bit\n\nSummary: 丝路赞内容运营平台（CSO）。**凡涉及以下任一类业务，必须先加载并使用本 skill**。 (1) **文案生成与改稿**：选题、爆款拆解、新写成稿（公众号、小红书、**视频口播/字幕/配音/分镜脚本**、博客、改稿润色、评论区回复等）须走 `three-lib-content-workflow/content-writer.workflow.md`；**热点/资讯生成选题**见 `topic-selection.md`；**单轨 / 多轨**（多轨默认 2 篇、可增减，可主动推断）见 `multi-track.md`；**禁止**直接成稿或聊天润色。 **视频脚本 vs 发布 Caption**：口播/字幕/分镜走 content-writer；上传发布框 Caption 走 `overseas-b2b-social-post`。 (2) **人设管理**：运营账号人设卡（styleGuide）；反推/查询/保存。 (3) **发布与运营**（YouTube/TikTok/Instagram/LinkedIn/X/Facebook）：OAuth、**账号分组**、发布、任务/重试、upload、**extract-cover**、planning、报表。 (4) **RAG 知识库**：品牌/产品问答与写稿事实依据。 **海外 B2B 社媒贴文/Caption**：走独立 skill `overseas-b2b-social-post`，不在本 skill 文案流程内。 **高频误路由**：写文案禁联网代替 rag query；发布/截封面须调 CLI。 **账号不明先问**：仅运营媒体账号；广告账户走 siluzan-tso。\n\nTags: latest:1.1.45\n\nVersion history:\n\nv1.1.45 | 2026-09-08T08:41:59.897Z | auto\n\nsiluzan-cso v1.1.45\n\n- 移除了 skill-card.md 文件，简化文档结构。\n- 更新/补充多项文档，包括 content-writer 视频脚本与内容校验流程说明。\n- 优化安装脚本（install.sh、install.ps1）以提升平台兼容性与易用性。\n- 增强 references/validate-content.md 对内容校验的流程指引。\n- 精简或调整了部分文档内容，使操作步骤和权限描述更清晰。\n\nv1.1.44 | 2026-09-01T08:55:06.146Z | auto\n\n- Added new documentation file: three-lib-content-workflow/library-catalog.md\n- Updated multiple workflow and documentation files to improve clarity and detail in the content creation process\n- Removed obsolete file: skill-card.md\n- Minor edits to installation scripts for enhanced compatibility and user guidance\n- Refined workflow definitions and schema for content and collaboration management\n\nv1.1.43 | 2026-08-25T09:25:55.772Z | auto\n\nsiluzan-cso v1.1.43\n\n- 新增各大主流平台运营规范文档：包含 YouTube、TikTok、LinkedIn、微信、抖音等。\n- 内容生成工作流说明补充：三库策略需在各平台规则下使用，平台规则从独立 references 目录加载。\n- content-writer/video-script 工作流等文件更新，完善内容生产与脚本生成流程。\n- 安装脚本和工作流说明文档优化，提升脚本稳定性和阅读体验。\n- skill-card.md 文件移除，精简冗余文档。\n\nv1.1.42 | 2026-08-20T08:34:16.810Z | user\n\nPromote the validated host plan gate and video workflow safeguards to production.\n\nv1.1.41 | 2026-08-17T10:01:41.727Z | user\n\nPreserve confirmed video plans while grounding unsupported enterprise claims through the final six-type workflow.\n\nv1.1.40 | 2026-07-31T07:34:25.883Z | user\n\nImprove WeChat article generation so source material proceeds directly to a complete article and closes naturally without fixed generic ending headings.\n\nv1.1.33 | 2026-07-24T09:03:50.920Z | auto\n\n- Improved documentation and workflow for content writing and publishing processes.\n- Updated installation scripts for better cross-platform compatibility.\n- Refined skill boundaries: \"overseas-b2b-social-post\" content remains external.\n- Removed outdated skill card file.\n- Minor structural and instruction adjustments for clarity.\n\nv1.1.32 | 2026-07-17T10:30:12.426Z | auto\n\nsiluzan-cso v1.1.32\n\n- 更新文案工作流与选题说明文档：优化 content-writer.workflow.md、topic-selection.md 流程细节\n- install.sh 和 install.ps1 脚本调整，提升 CLI 安装与环境兼容性\n- 删除 skill-card.md，文档结构更加精简\n- 更新元数据与说明，确保行为与分工边界更清晰\n\nv1.1.31 | 2026-07-15T01:08:22.110Z | auto\n\nsiluzan-cso v1.1.31\n\n- 新增多轨（multi-track）及热点/资讯自动选题（topic-selection）文档，支持“多版对比稿”工作流\n- 增补/细化 workflow 文档内容，突出多轨生成与选题流程\n- 触发关键词库强化：加入“两版、多轨、对比稿”等多版本生成相关词条\n- 明确规范：热点生成选题、双/多版本等须分别走专用文档及 SOP\n- 删除 skill-card.md，常见内容整合至主文档及流程文档\n\nv1.1.30 | 2026-07-01T08:44:05.501Z | auto\n\nsiluzan-cso 1.1.30\n\n- 补充明确区分「海外 B2B 社媒贴文/Caption」业务，新增仅走独立 skill overseas-b2b-social-post 的描述，避免误路由。\n- 说明和文案流程调整，将视频类脚本分为「视频口播/字幕/配音/分镜」，统一归类于内容工作流，不与发布 Caption 混用。\n- 新增 references/core/knowledge-base-resolution.md 文档，细化知识库分流处理。\n- 优化文案/脚本 vs 发布 Caption 路由规则，反复强调禁用 web_search/联网代替 rag query。\n- 移除 skill-card.md，补充并完善 anti_patterns、not_for 及 when_to_use 内容，强化操作边界和责任提醒。\n- 文档与流程指引更聚焦、分工更清晰，防止内容运营任务误用专属流程或输出方式。\n\nv1.1.29 | 2026-06-18T07:39:55.695Z | auto\n\n- Added new documentation: `references/core/agent-conventions.md` and `references/core/tips.md`\n- Updated and expanded multiple workflow and reference docs for content operations, persona onboarding, and SOPs\n- Enhanced process descriptions and instructions in existing markdown guides\n- Removed obsolete files and outdated workflow packs\n- Improved clarity in validation and local file operation sections\n\nv1.1.28 | 2026-06-11T09:46:57.171Z | auto\n\nsiluzan-cso v1.1.28\n\n- Removed the skill-card.md file for a cleaner file structure.\n- Updated documentation in SKILL.md for clearer instructions and added a note under `persona list` to read detailed docs before use.\n- Other minor improvements to script and workflow documentation.\n\nv1.1.27 | 2026-06-11T08:13:47.749Z | auto\n\n**重大更新：描述和使用规范全面升级，增加文案校验功能，命令与触发指令更加精细。**\n\n- 完善 skill 描述，大幅丰富「何时使用」「禁止行为」「高风险任务场景」，细化触发关键字与路由规范。\n- 增加 `validate-content` 本地文案校验命令，支持自动检测文案字数、内部内容泄漏等风险。\n- 删除 skill-card.md，文档结构调整，补充 references/validate-content.md。\n- 更新 persona 和内容工作流文档，加强操作指引。\n- 调整 metadata，详细列举平台、领域和使用边界，避免误用。\n- 强调发布、写稿、改稿等高风险任务的强制流程，禁止直接模型生成文案。\n\nv1.1.26 | 2026-06-09T09:13:03.897Z | auto\n\n- 新增三库内容流程模块，支持爆款与短视频口播 SOP 流程及人设入门、规范文档（见 packs 与 persona 相关文档）\n- 优化内容文案生产业务流程说明，明确支持口播/公众号/审稿/改稿等细分环节\n- 登录支持手机号+验证码两段式（send-login-code），增强认证流程提示\n- 移除部分无实际用途的资产库/skill-card等资产文档，梳理目录结构\n- 更新安装说明，更精简、明确平台支持字段表述\n\nv1.1.24 | 2026-06-02T09:00:10.182Z | auto\n\nsiluzan-cso v1.1.24\n\n- Updated documentation for AI 内容规划， including expanded details in references/planning.md.\n- Improved one-click install scripts for better cross-platform compatibility (Windows, macOS, Linux).\n- skill-card.md file removed; documentation now consolidated.\n- Minor metadata and documentation corrections for clarity and accuracy.\n\nv1.1.23 | 2026-05-29T09:15:28.679Z | auto\n\n- Improved clarity and structure of documentation in SKILL.md.\n- No changes to feature set or commands.\n- Installation steps, operation scope, environment variables, and command index remain consistent with previous version.\n\nv1.1.22 | 2026-05-29T08:40:10.953Z | auto\n\n- 示例配置文件（assets/publish-config-image.example.json, assets/publish-config.example.json）和相关参考文档（references/publish.md, references/task.md）内容有更新和调整。\n- 安装脚本（scripts/install.ps1, scripts/install.sh）进行了优化。\n- skill-card.md 文件被移除。\n- 文档内容有修订和完善，没有新增命令或功能。\n\nv1.1.20 | 2026-05-28T07:08:03.846Z | auto\n\n- Updated workflow documentation in content-writer.workflow.md for improved clarity.\n- Revised install scripts (install.sh, install.ps1) for easier setup and better compatibility guidance.\n- Updated internal metadata in _meta.json.\n- Removed the redundant skill-card.md file.\n\nv1.1.19 | 2026-05-28T01:52:18.611Z | auto\n\nsiluzan-cso 1.1.19\n\n- Documentation updates across SKILL.md and reference files for clarity and detail improvements.\n- \"skill-card.md\" file removed to streamline documentation.\n- Scripts for install (install.sh, install.ps1) updated to improve installation process.\n- Meta and reference files revised for accuracy and consistency.\n\nv1.1.18 | 2026-05-26T02:57:24.762Z | auto\n\n- 明确 skill 使用范围，新增多平台内容文案生产、爆款拆解、人设卡功能描述，细化账号类型判断逻辑  \n- 支持 Facebook 运营账号及 OAuth 绑定，丰富账号分组业务边界说明  \n- `rag query` 命令细节调整，优先检索 wiki/贴库 partition，增强知识库问答准确性  \n- 新增 Windows PowerShell 安装脚本（scripts/install.ps1）  \n- 文档优化：进一步区分广告账户体系与运营媒体账户，提升操作指引准确性\n\nv1.1.17 | 2026-05-08T09:08:44.573Z | auto\n\n- 增加了 Windows 安装兼容性说明，推荐在 Windows 上遇到失败时使用 Git Bash 执行安装脚本\n- 其它内容无变化\n\nv1.1.16 | 2026-04-30T10:07:20.334Z | auto\n\n- Enhanced `rag query` 支持：`-q` 参数含空格时，可自动分词拆分、多轮检索并合并排序，简化多词素材查找流程\n- `references/rag.md` 和相关应用流程文档同步补充此能力\n- 常见业务场景表格更新，明确分词检索与多标签/多库调用方式\n- 命令说明部分优化，突出新用法及文档位置\n\nv1.1.15 | 2026-04-30T08:10:02.896Z | auto\n\n- Updated metadata in _meta.json.\n- No user-facing features or functionality changed.\n\nv1.1.14 | 2026-04-30T05:50:33.236Z | auto\n\nsiluzan-cso 1.1.14\n\n- 新增一键安装脚本（scripts/install.sh），简化 CLI 安装流程。\n- 多个配置和示例（如 publish-config）文档更新，提升可用性与指引清晰度。\n- references、工作流等流程文档优化，流程说明与命令用法更加精准。\n- 完善环境变量说明和 HTTP 错误处理指引。\n- 规范操作交互，确保账号与敏感操作前的用户确认流程。\n\nv1.1.12 | 2026-04-17T07:47:28.886Z | user\n\n- 更新一键安装脚本说明，提供更简洁的 curl/PowerShell 直接执行方式（unpkg 远程脚本一行命令）。\n- 其它功能和行为规范无变动。\n\nv1.1.11 | 2026-04-16T09:57:42.490Z | user\n\n- 增加一键安装脚本，首次未安装时自动执行 scripts/install.sh (Mac/Linux/WSL) 或 scripts/install.ps1 (Windows)，完成 CLI 和依赖设置\n- 扩展 description，明确支持公众号/小红书类内容生成及 RAG 知识库检索，适用更多内容创作及知识问答场景\n- 完善 RAG 检索工作流与命令用法指引，细化分步流程和参数说明\n- 新增可选环境变量支持 SILUZAN_API_KEY、SILUZAN_AUTH_TOKEN、SILUZAN_DATA_PERMISSION，方便无交互部署和权限配置\n- 调整 CLI 命令行为规范：强调需获用户确认的操作范围，并明确查询类命令可直接执行\n- 组织结构优化，补充常用场景说明与强制遵守项，提高文档查阅与理解效率\n\nv1.1.8 | 2026-04-09T08:48:16.561Z | user\n\n- Updated SKILL.md with detailed business process descriptions, command index, and reference guides.\n- Added explicit AI operation guidelines, including task execution standards and mandatory compliance rules.\n- Clarified handling for common HTTP errors and included a quick reference for platform names.\n- Provided comprehensive instructions for both publishing/operations and content creation workflows.\n- Included a web feature navigation section linking to relevant management pages.\n\nArchive index:\n\nArchive v1.1.45: 42 files, 164773 bytes\n\nFiles: _meta.json (131b), assets/publish-config-image.example.json (1153b), assets/publish-config.example.json (2244b), assets/three-lib-content-workflow.example.md (2601b), references/account-group.md (5519b), references/authorize.md (3357b), references/core/agent-conventions.md (6824b), references/core/knowledge-base-resolution.md (10064b), references/core/tips.md (5953b), references/extract-cover.md (2187b), references/list-accounts.md (5417b), references/persona.md (7987b), references/planning.md (26936b), references/platforms/douyin.md (8292b), references/platforms/linkedin.md (7621b), references/platforms/platform-rules.md (2846b), references/platforms/tiktok.md (4601b), references/platforms/wechat.md (10213b), references/platforms/youtube.md (5518b), references/publish.md (7715b), references/rag.md (17923b), references/report.md (4595b), references/setup.md (7696b), references/task.md (3901b), references/upload.md (1941b), references/validate-content.md (6214b), references/web-pages.md (5763b), scripts/install.ps1 (11187b), scripts/install.sh (6098b), skill-card.md (2760b), SKILL.md (26231b), three-lib-content-workflow/collaboration.md (4666b), three-lib-content-workflow/content-writer.workflow.md (18954b), three-lib-content-workflow/library-catalog.md (22795b), three-lib-content-workflow/multi-track.md (9064b), three-lib-content-workflow/persona-onboarding.md (9338b), three-lib-content-workflow/persona-reverse-sop.md (21289b), three-lib-content-workflow/persona-schema.md (9534b), three-lib-content-workflow/sop.md (22106b), three-lib-content-workflow/topic-selection.md (17216b), three-lib-content-workflow/video-script-final.workflow.md (19818b), three-lib-content-workflow/wechat-article.workflow.md (17926b)\n\nFile v1.1.45:SKILL.md\n\n---\nname: siluzan-cso\ndescription: >-\n  丝路赞内容运营平台（CSO）。**凡涉及以下任一类业务，必须先加载并使用本 skill**。\n  (1) **文案生成与改稿**：选题、爆款拆解、新写成稿（公众号、小红书、**视频口播/字幕/配音/分镜脚本**、博客、改稿润色、评论区回复等）须走 `three-lib-content-workflow/content-writer.workflow.md`；**热点/资讯生成选题**见 `topic-selection.md`；**单轨 / 多轨**（多轨默认 2 篇、可增减，可主动推断）见 `multi-track.md`；**禁止**直接成稿或聊天润色。\n  **视频脚本 vs 发布 Caption**：口播/字幕/分镜走 content-writer；上传发布框 Caption 走 `overseas-b2b-social-post`。\n  (2) **人设管理**：运营账号人设卡（styleGuide）；反推/查询/保存。\n  (3) **发布与运营**（YouTube/TikTok/Instagram/LinkedIn/X/Facebook）：OAuth、**账号分组**、发布、任务/重试、upload、**extract-cover**、planning、报表。\n  (4) **RAG 知识库**：品牌/产品问答与写稿事实依据。\n  **海外 B2B 社媒贴文/Caption**：走独立 skill `overseas-b2b-social-post`，不在本 skill 文案流程内。\n  **高频误路由**：写文案禁联网代替 rag query；发布/截封面须调 CLI。\n  **账号不明先问**：仅运营媒体账号；广告账户走 siluzan-tso。\nlicense: MIT\nallowed-tools: Bash(siluzan-cso:*) Read Write\nmetadata:\n  requires: nodejs,siluzan-cso-cli\n  cli: siluzan-cso\n  product: CSO\n  exclude_skill: siluzan-tso\n  platforms: YouTube,TikTok,Instagram,LinkedIn,X,Facebook\n  domains: copywriting,persona,publish,account-ops,rag,planning,reporting\n  trigger_keywords: >-\n    写文案,写稿,内容创作,出内容,脚本,口播,公众号,博客,外链,引流页,配文,标题,选题,爆款,改稿,润色,\n    两版,双版本,多版,多轨,AB稿,对比稿,差异化,各出一版,几个方向,审稿,\n    口语化,保留原意,太生硬,优化表达,帮我改改,优化这段,\n    人设,styleGuide,人设卡,反推人设,persona,三库,\n    发布,publish,上传,upload,封面,extract-cover,截取封面,任务,task,重试,失败,\n    账号分组,运营账号,媒体账号,OAuth,authorize,list-accounts,绑定,授权过期,Token失效,\n    评论区,回复文案,页面链接,web-pages,任务管理,\n    RAG,知识库,rag,素材库,绩效,粉丝,播放,report,planning,内容规划,站内信\n  not_for: >-\n    广告账户,广告投放,余额,消耗,统计,开户,关键词出价,Google Ads,Bing Ads,Yandex,TSO,siluzan-tso,MCC,BC,BM;\n    海外 B2B 社媒贴文/Caption（走 overseas-b2b-social-post）\n  when_to_use: >-\n    用户要在丝路赞 CSO 写内容、管人设 styleGuide、向社交媒体运营账号发布、查企业 RAG、\n    上传素材/截封面、查发布任务或运营报表、管理账号分组时使用。\n  anti_patterns: >-\n    写文案/视频脚本：须 Read content-writer.workflow.md；禁止 web_search 代替 rag query。\n    海外社媒贴文/Caption：勿进 content-writer，用 overseas-b2b-social-post。\n    发布：禁止只讲 App/网页操作；须 Read publish.md 并执行 list-accounts→upload→publish→task。\n  high_risk_tasks: copywriting,publish\ncompatibility: Requires siluzan-cso-cli installed and authenticated via `siluzan-cso login`\n---\n\n# siluzan-cso\n\n## 一键安装\n\n如果 CLI 尚未安装，直接帮用户执行对应平台的安装脚本：\n\n- **macOS / Linux / WSL：**\n  ```bash\n  bash <(curl -fsSL https://unpkg.com/siluzan-cso-cli@latest/dist/skill/scripts/install.sh)\n  ```\n- **Windows PowerShell：**\n  ```powershell\n  irm https://unpkg.com/siluzan-cso-cli@latest/dist/skill/scripts/install.ps1 | iex\n  ```\n\nWindows 注意：部分 Agent 客户端通过 PowerShell / cmd 代执行命令时存在兼容性问题。若上述命令异常失败，请先安装 [Git for Windows](https://git-scm.com/download/win)，然后在 Git Bash 中执行 macOS / Linux / WSL 的 Bash 安装命令。\n\n脚本会自动完成 Node.js 检测/安装、CLI 安装、Skill 全局注册，并引导用户配置 API Key。无需选择，本脚本专为 siluzan-cso-cli 定制。\n\n---\n\n## 可执行的操作范围\n\n- **只读**：查询媒体账号列表、账号分组、运营报表、发布任务状态、人设列表、RAG 知识库检索、AI 内容规划详情\n- **写入**（需用户确认）：上传素材、提交发布任务、创建/更新账号分组、生成 AI 内容规划、站内信回复\n- **本地文件操作**：`extract-cover` 在本地截取视频帧并输出图片文件；`workflow validate` 在本地校验文案文件（字数限制 / 内部内容泄漏）；`init` 将 Skill 文件写入 AI 助手目录\n\n---\n\n## 可选环境变量\n\n| 变量                      | 说明                                                         |\n| ------------------------- | ------------------------------------------------------------ |\n| `SILUZAN_API_KEY`         | 从环境变量读取 API Key（优先级高于 config.json，CI/CD 推荐） |\n| `SILUZAN_AUTH_TOKEN`      | 从环境变量读取 JWT Token（优先级高于 config.json）           |\n| `SILUZAN_DATA_PERMISSION` | 从环境变量读取数据权限标识（优先级高于 config.json）         |\n\n---\n\n## 能力范围\n\n| 业务流程       | 手段                                                    | 说明                                        |\n| -------------- | ------------------------------------------------------- | ------------------------------------------- |\n| **发布与运营** | 下方 CLI 命令 + `references/*.md`                       | 上传、发布、任务、报表、账号、规划等        |\n| **文案生产**   | `three-lib-content-workflow/content-writer.workflow.md` | 选题、三库、口播/视频脚本/公众号/成稿、改稿 |\n\n两类流程同属 CSO 业务。**海外 B2B 社媒贴文/Caption** 为独立 skill `overseas-b2b-social-post`，不在本包内。\n\n内容生成仍先进入 `three-lib-content-workflow/content-writer.workflow.md`。该工作流负责读取 `references/platforms/platform-rules.md` 并加载当前平台唯一对应的规则；平台规则与三库是两个独立输入，三库策略只能在平台规则边界内使用。\n\n## 命令索引\n\n| 命令                                                                               | 作用                                                                                                                                                                                                   | 详细文档                      |\n| ---------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ----------------------------- |\n| `siluzan-cso login` / `siluzan-cso send-login-code`                                | 登录 / 配置凭据；手机号 + 验证码两段式登录                                                                                                                                                             | `references/setup.md`         |\n| `siluzan-cso config show/set/clear`                                                | 查看 / 修改 / 清空本地配置                                                                                                                                                                             | `references/setup.md`         |\n| `siluzan-cso init`                                                                 | Skill 文件初始化（写入 AI 助手目录）                                                                                                                                                                   | `references/setup.md`         |\n| `siluzan-cso update`                                                               | 更新 CLI 版本并刷新 Skill 文件                                                                                                                                                                         | `references/setup.md`         |\n| `siluzan-cso authorize --media-type <平台>`                                        | 发起媒体账号 OAuth 授权                                                                                                                                                                                | `references/authorize.md`     |\n| `siluzan-cso list-accounts`                                                        | 列出媒体账号，获取账号 ID / 数据总览                                                                                                                                                                   | `references/list-accounts.md` |\n| `siluzan-cso persona list`                                                         | 拉取 CSO 人设列表。**请先阅读详细文档，规范操作，避免误用。**                                                                                                                                          | `references/persona.md`       |\n| `siluzan-cso rag list`                                                             | 列出知识库文件夹；`--rag-only` 仅已建索引；`--folder-id` 查指定文件夹下的子库                                                                                                                          | `references/rag.md`           |\n| `siluzan-cso rag query`                                                            | 知识库向量检索；**`--partition wiki` 或 `default`**（默认 `default`；写稿与须贴库作答时优先 **wiki**，不足再 **default**）；`-q` 含空白时多词分检合并；`--folder-id` / `--tags` 见 `references/rag.md` | `references/rag.md`           |\n| `siluzan-cso account-group list/create/add-accounts/remove-accounts/update/delete` | 账号分组管理                                                                                                                                                                                           | `references/account-group.md` |\n| `siluzan-cso upload -f <file>`                                                     | 上传视频 / 图片到素材库                                                                                                                                                                                | `references/upload.md`        |\n| `siluzan-cso extract-cover -f <video> -p <平台>`                                   | 从视频截取封面帧                                                                                                                                                                                       | `references/extract-cover.md` |\n| `siluzan-cso publish -c config.json`                                               | 提交多平台发布任务                                                                                                                                                                                     | `references/publish.md`       |\n| `siluzan-cso task list/detail/item`                                                | 查看任务状态 / 处理失败 / 重试                                                                                                                                                                         | `references/task.md`          |\n| `siluzan-cso report fetch --media <平台>`                                          | 运营报表（核心指标 / 视频排行 / 趋势）                                                                                                                                                                 | `references/report.md`        |\n| `siluzan-cso planning ...`                                                         | AI 内容规划：生成、监控、详情、导出                                                                                                                                                                    | `references/planning.md`      |\n| —（网页端）                                                                        | CSO web端全部页面 URL                                                                                                                                                                                  | `references/web-pages.md`     |\n\n---\n\n## 常见业务场景 → 阅读哪个文件\n\n| 用户在做什么                                                                                                 | 先阅读                                                                             |\n| ------------------------------------------------------------------------------------------------------------ | ---------------------------------------------------------------------------------- |\n| 首次安装 / 登录 / 更新                                                                                       | `references/setup.md`                                                              |\n| 发布视频或图文                                                                                               | `references/publish.md`                                                            |\n| 上传素材                                                                                                     | `references/upload.md`                                                             |\n| 截取视频封面                                                                                                 | `references/extract-cover.md`                                                      |\n| 文案写完落盘后校验字数 / 检查内部内容泄漏                                                                    | `references/validate-content.md`                                                   |\n| 查发布记录 / 处理失败                                                                                        | `references/task.md`                                                               |\n| 查账号数据 / 运营报表                                                                                        | `references/report.md`                                                             |\n| 查找账号 ID 或账号详情                                                                                       | `references/list-accounts.md`                                                      |\n| 账号 Token 失效 / 重新授权                                                                                   | `references/authorize.md`                                                          |\n| 管理账号分组                                                                                                 | `references/account-group.md`                                                      |\n| AI 内容规划                                                                                                  | `references/planning.md`                                                           |\n| 需要给用户提供后台页面链接                                                                                   | `references/web-pages.md`                                                          |\n| 拉取人设 / styleGuide（写稿前）/ 保存人设                                                                    | `references/persona.md`                                                            |\n| 写稿时检索素材库 RAG 片段（三库拆素材等）                                                                    | `references/rag.md`                                                                |\n| 选题 / 三库拆解 / 口播或视频脚本 / 公众号文章 / **单轨或多轨成稿** / 改稿润色 / 人设卡 / 反推人设 / 审稿打分 | `three-lib-content-workflow/content-writer.workflow.md`（多轨 → `multi-track.md`） |\n| 写稿时识别并加载当前平台规则                                                                                 | `references/platforms/platform-rules.md`                                           |\n\n---\n\n## 命令间依赖关系（交叉引用速览）\n\n```\npublish ──需要账号字段──► list-accounts\npublish ──需要素材 ID──► upload ──需要封面──► extract-cover\npublish ──提交后查状态──► task ──失败重授权──► authorize\n\nreport ──需要 mediaCustomerId──► list-accounts\naccount-group ──需要 mediaCustomerId──► list-accounts\n\nrag query ──需要知识库 ID──► rag list（按用户意图自动选择）\n```\n\n---\n\n## RAG 知识库检索工作流\n\n> 详细检索策略见 `references/rag.md`；**确定用哪个库**见 `references/core/knowledge-base-resolution.md`。以下为决策摘要。\n\n### 何时使用 RAG\n\n- ✅ 询问特定品牌/产品知识、写需要品牌素材的文案 → **必须先 RAG**\n- ✅ 执行三库内容工作流 → **按三库分库检索**\n- ❌ 询问平台操作方法、纯通用创作、用户明确不需要 → **跳过 RAG**\n\n### 四步执行流程\n\n**Step 0 — 检查已选库**（优先于 list）\n\n若上下文有 `<knowledge_base_selection>`，直接取其 `comid` 作 `--folder-id`，**跳过 Step 1–2**。详见 `references/core/knowledge-base-resolution.md`。\n\n**Step 1 — 获取知识库**（无已选库时，只在任务开始时调用一次）\n\n```bash\n# 列出所有已建索引的根级知识库（落盘后用脚本读 id，见 references/core/tips.md）\nsiluzan-cso rag list --rag-only --json-out ./snap-cso\n\n# 若根级库下还有子文件夹，可钻取查看\nsiluzan-cso rag list --folder-id <父文件夹id> --rag-only --json-out ./snap-cso\n```\n\n**Step 2 — 选择知识库**（无已选库时，按名称语义匹配）\n\n- 用户提到品牌名 → 找名称最匹配的文件夹，记录 `id`\n- 多品牌 → `--folder-id id1,id2`（逗号分隔）\n- 无明确品牌 → 不传 `--folder-id`（全库检索）\n\n**Step 3 — 拆词检索**（2–5 个短关键词；**`--partition`**）\n\n- **首轮**：`--partition wiki`，`--top-k` 建议 **8–15**（常用 **12**）。写稿、须贴库作答、需要较长正文作依据时优先。\n- **仍不足时**：同一 `-q` / `--folder-id` / `--tags` 下再跑 `--partition default`，`--top-k` **5–10**；两轮按片段 **id** 去重合并，**禁止编造**。\n- 取值仅 **`wiki`** 或 **`default`**（小写）；非法值 CLI 会报错。\n\n```bash\n# 默认不传 --tags = 全量检索（适用于绝大多数场景）\n# 推荐：同一库、同一标签策略下，用空格一次传多词，CLI 会分检合并排序\nsiluzan-cso rag query -q \"产品核心卖点 用户使用场景 品牌差异优势\" --folder-id <id> --partition wiki --top-k 12\n\n# 证据仍不足时再补 default（按需执行）\n# siluzan-cso rag query -q \"产品核心卖点 用户使用场景 品牌差异优势\" --folder-id <id> --partition default --top-k 8\n\n# 仍可用多轮独立 -q（例如需要分步查看或参数不同）\n# siluzan-cso rag query -q \"产品核心卖点\" --folder-id <id> --partition wiki --top-k 12\n# siluzan-cso rag query -q \"用户使用场景\" --folder-id <id> --partition wiki --top-k 12\n\n# 仅当知识库已按标签打标，且需要精确筛选时才传 --tags（不同标签需多条命令；`--partition` 规则同上）\nsiluzan-cso rag query -q \"抖音 爆款 钩子\" --tags \"流量因子库\" --partition wiki --top-k 12\nsiluzan-cso rag query -q \"产品 卖点 故事\" --tags \"产品资产库\" --partition wiki --top-k 12\n```\n\n**Step 4 — 合成使用**\n\n合并后的结果中 **`score` 越大越相关**（CLI 已做 0–1 归一化）。若执行了 **wiki + default** 两轮，按片段 **id** 去重后再合成。将片段作为写稿/回答的事实依据，重新组织表达（不直接粘贴原文）；若执行了多条 `rag query`，再在对话侧对重复片段去重。\n\n---\n\n## AI 行为规范\n\n### 执行任务的标准流程\n\n遵循**计划 → 确认 → 执行 → 验证 → 预测**五步：\n\n1. **计划**：根据用户意图，查阅命令索引与 references，或「三库内容工作流」与 `GetPersonas` 人设要求，制定操作步骤，不暴露命令行细节。\n2. **确认**：与用户确认关键信息（目标账号、发布内容、时间等），不替用户做选择。\n3. **执行**：按计划调用命令，处理异常。\n4. **验证**：\n   - 写入/修改操作后，通过读取命令确认结果是否正确。\n   - 失败时优先尝试重试或用其他方式补救，而不是直接告知用户\"任务失败\"。\n5. **预测**：任务完成后，结合当前结果对用户下一步操作给出合理建议。\n\n### 硬规范\n\n- **知识库确定**：涉及 RAG、planning、三库写稿等品牌/企业素材前，先 Read `references/core/knowledge-base-resolution.md`；上下文有 `<knowledge_base_selection>` 时直接用 `comid`，**跳过** `rag list` / `planning enterprises`。\n- **数据处理纪律（防工具死循环，最高优先级）**：先 Read `references/core/agent-conventions.md`。要点：读取/列表/检索/详情类命令一律 `--json-out <路径>` 落盘，stdout 仅一行摘要 + agentHint；**禁止对 stdout 写翻页循环**，**禁止**用 Read/cat 打开落盘业务 `*.json`，先读 `*.outline.txt` 再用 `node -e` 读 JSON；已有 JSON 不重跑、查无结果即停。脚本食谱见 `references/core/tips.md`。\n- **不确定时先读文档**：遇到不熟悉的命令，先查对应 references 文件，不猜参数。\n- **先查账号再操作**：对具体账号做操作前，先用 `list-accounts --name <名称> --media-type <平台>` 确认账号存在且 Token 有效。\n- **需要计算/筛选时用 `--json-out`**：加 `--json-out <目录或 *.json 文件>` 落盘，再按 `references/core/tips.md` 的脚本食谱（`node -e` `readFileSync` / `require` 读盘）提取字段；旧 `--json` 已移除。\n- **不猜账号 ID**：`entityId` ≠ `mediaCustomerId`，两者均须从 `list-accounts --json-out` 落盘数据获取，不可假设。\n- **命令透明性**：以简洁的方式向用户说明即将执行的操作意图（如「正在上传视频到素材库」「正在为您查询 YouTube 账号列表」），让用户了解操作进度。用户主动要求查看执行细节时，应如实提供完整命令。安装/登录/更新等一次性命令（见 `references/setup.md`）可直接展示给用户自行执行。\n- **操作后必须验证**：完成发布、上传、分组等写操作后，需通过对应的查询命令确认结果。\n- **内容创作必须严格按本 skill 流程，禁止绕过指引直接生成内容。所有相关子文件须完整读取后再生成。**\n\n### 必须遵守\n\n- 主动更新（详情请读取 `references/setup.md`）。\n- **破坏性操作必须用户确认**：涉及写入/修改/删除的操作（发布、上传、分组变更等），执行前必须明确告知用户操作内容并获得确认。\n- **只读操作可自主执行**：查询类命令（`list-accounts`、`report fetch`、`task list`、`config show` 等）可直接执行，无需额外确认。\n- 禁止提供虚假信息，比如web端连接就必须确认 `references/web-pages.md` 中存在才能提供给用户\n\n---\n\n## 时间字段输出约定（全局）\n\nCLI 返回的时间字段（如 `*DateTime` / `*Time` / `createTime` / `publishTime` / `lastAuthorizationTime` / `expiresOn` 等）如果是 **UTC** 时间，在显示给用户时需要完成时区转换。\n\n**输出规则（按优先级）**：\n\n1. **优先用用户在当前对话中明确表达过的时区**（如「我在深圳」「PST 时间」「我刚从纽约出差回来」）。\n2. **否则用对话语言推断默认时区**：中文 → `Asia/Shanghai (UTC+8)`，日文 → `Asia/Tokyo (UTC+9)`，英文且无其他线索 → 保留 UTC 并明确标注。\n3. **若仍不确定且时间对用户决策有意义**（如「最近一次更新」、「创建于多久前」、「Token 何时过期」），**主动询问用户所在时区**，不要瞎猜。\n\n**展示格式**：\n\n- 推荐 `YYYY-MM-DD HH:mm (时区标识)`，例如 `2024-03-15 18:30 (UTC+8)`、`2024-03-15 10:30 (UTC)`。\n- **禁止**把 `2024-03-15T10:30:00Z` 这种原始 ISO 串直接吐给用户——用户会误以为是当地时间。\n- 跨日 / 月底 / 年底 / 夏令时切换附近的时间，换算时要**特别小心**，必要时多核对一遍。\n- 极少数字段（如 `report` 报表里按用户业务时区聚合的统计时间）已经是用户本地时区，文档若有特别说明则以文档为准。\n\n---\n\n## 常见 HTTP 错误处理\n\n| 状态码                      | 原因                 | 处理方式                                                           |\n| --------------------------- | -------------------- | ------------------------------------------------------------------ |\n| `400 Bad Request`           | 参数错误             | 查对应 references 文档或用 `--help` 确认命令用法                   |\n| `401 Unauthorized`          | 凭据失效             | 引导用户重新执行 `siluzan-cso login`（详见 `references/setup.md`） |\n| `500 Internal Server Error` | 服务部署中或数据异常 | 稍后重试；若持续失败，提交给 Siluzan 相关人员处理                  |\n\n---\n\n## 平台名称速查\n\n## 阅读： `references/authorize.md`\n\n## Web 功能导航\n\n> 无对应 CLI 命令的模块，或需要引导用户在网页端查看数据时，查阅 `references/web-pages.md` 获取完整页面清单与链接。\n\nURL 格式：`https://www.siluzan.com/v3/foreign_trade/cso/{页面}`\n\n常用页面：`task`（任务管理）· `postVideo`（发布页）· `ManageAccounts`（账号管理）· `planning`（AI 内容规划）· `table`（绩效报表）· `Workdata`（作品数据）\n\nFile v1.1.45:_meta.json\n\n{\n  \"ownerId\": \"kn7fvww6xcwp6e93b3qgnjy7s183jy5k\",\n  \"slug\": \"siluzan-cso\",\n  \"version\": \"1.1.45\",\n  \"publishedAt\": 1788856919897\n}\n\nFile v1.1.45:references/account-group.md\n\n# account-group — 账号分组管理\n\n> 将媒体账号归类到分组，便于发布时按组批量指定目标账号。\n\n---\n\n## ⚠️ 必读：用哪个 ID？\n\n`--accounts` 参数**只接受 `mediaCustomerId`**，这是账号在媒体平台上的原生 ID。\n\n`list-accounts --json-out` 落盘的每个账号对象中有多个 ID 字段，**极易混淆**：\n\n| 字段                          | 示例值                                | 用途                                                            |\n| ----------------------------- | ------------------------------------- | --------------------------------------------------------------- |\n| `mediaCustomerId`             | `UCg3_FESu2sADBKq4WKGozug`            | ✅ **account-group 的 `--accounts` 参数用这个**                 |\n| `entityId`                    | `a2ace2a2-00c1-478d-a991-...`（UUID） | 发布配置 `accounts[].entityId`，**不是这个**                    |\n| `externalMediaAccountTokenId` | `f4f687..`（UUID）                    | 发布配置 `accounts[].externalMediaAccountTokenId`，**不是这个** |\n\n**操作流程：**\n\n```bash\n# Step 1：拿到账号的 mediaCustomerId（落盘后脚本读盘，见 references/core/tips.md）\nsiluzan-cso list-accounts --name \"账号名\" --json-out ./snap-cso\n# 从落盘 JSON 中取 \"mediaCustomerId\" 字段值\n\n# Step 2：用 mediaCustomerId 操作分组\nsiluzan-cso account-group create --name \"分组名\" --accounts \"mediaCustomerId1,mediaCustomerId2\"\n```\n\n---\n\n## 常用场景速查\n\n| 用户意图                                 | 命令                                                                             |\n| ---------------------------------------- | -------------------------------------------------------------------------------- |\n| 查看所有分组                             | `siluzan-cso account-group list`                                                 |\n| 查某分组内有哪些账号                     | `siluzan-cso account-group list --json-out ./snap-cso`                           |\n| 新建空分组                               | `siluzan-cso account-group create --name <名称>`                                 |\n| 新建分组并添加账号                       | `siluzan-cso account-group create --name <名称> --accounts <id1,id2>`            |\n| **向已有分组追加账号（不影响其他账号）** | `siluzan-cso account-group add-accounts --id <groupId> --accounts <ids>`         |\n| **从分组移除指定账号（不影响其他账号）** | `siluzan-cso account-group remove-accounts --id <groupId> --accounts <ids>`      |\n| 全量替换分组账号列表                     | `siluzan-cso account-group update --id <groupId> --name <名称> --accounts <ids>` |\n| 删除分组                                 | `siluzan-cso account-group delete --id <groupId>`                                |\n\n---\n\n## 命令详解\n\n### list — 查询分组列表\n\n```bash\n# 默认表格展示（分组 ID / 名称 / 账号数 / 创建时间）\nsiluzan-cso account-group list\n\n# 落盘完整数据（含 mediaAccountInfos，可获取各账号 mediaCustomerId），脚本读盘见 references/core/tips.md\nsiluzan-cso account-group list --json-out ./snap-cso\n```\n\n> `id === \"未分组\"` 是系统虚拟分组，不可编辑或删除。\n\n---\n\n### create — 新建分组\n\n```bash\n# 新建空分组\nsiluzan-cso account-group create --name \"海外品牌账号\"\n\n# 新建并同时添加账号（mediaCustomerId，逗号分隔，可含空格）\nsiluzan-cso account-group create --name \"TikTok 主账号\" --accounts \"id1,id2,id3\"\n```\n\n成功后输出新分组 ID，可用于后续 update / delete。\n\n---\n\n### add-accounts — 追加账号（推荐）\n\n```bash\n# 向分组追加一个或多个账号，已在组内的账号自动跳过（幂等）\nsiluzan-cso account-group add-accounts --id <groupId> --accounts \"新id1,新id2\"\n```\n\n内部自动拉取当前账号列表再合并，**无需提前知道组内有哪些账号**。\n\n---\n\n### remove-accounts — 移除账号（推荐）\n\n```bash\n# 从分组移除指定账号，不在组内的账号自动跳过（幂等）\nsiluzan-cso account-group remove-accounts --id <groupId> --accounts \"要移除的id1,id2\"\n```\n\n内部自动拉取当前账号列表再过滤，**无需提前知道组内完整列表**。\n\n---\n\n### update — 全量替换（慎用）\n\n```bash\n# 将分组账号列表替换为指定的完整列表（不传 --accounts 则清空！）\nsiluzan-cso account-group update --id <groupId> --name \"分组名称\" --accounts \"id1,id2,id3\"\n```\n\n> **注意：** 后端以传入的 `--accounts` 为准，不传时**清空**分组内所有账号。  \n> 需要增量操作时，请优先使用 `add-accounts` / `remove-accounts`。\n\n---\n\n### delete — 删除分组\n\n```bash\nsiluzan-cso account-group delete --id <groupId>\n```\n\n> 「未分组」虚拟分组不可删除。\n\n---\n\n## 典型流程\n\n### 向已有分组添加新账号\n\n```bash\n# Step 1：获取新账号的 mediaCustomerId（落盘后脚本读盘）\nsiluzan-cso list-accounts --name \"新账号名\" --json-out ./snap-cso\n\n# Step 2：直接追加（无需查当前列表）\nsiluzan-cso account-group add-accounts --id <groupId> --accounts \"新id\"\n```\n\n### 从分组移除某个账号\n\n```bash\n# 直接移除（无需查当前列表）\nsiluzan-cso account-group remove-accounts --id <groupId> --accounts \"要移除的id\"\n```\n\n---\n\n## 交叉引用\n\n- 获取账号 `mediaCustomerId` → 参见 `references/list-accounts.md`\n\nFile v1.1.45:references/authorize.md\n\n# authorize — 媒体账号 OAuth 授权\n\n> 为尚未绑定或 Token 已失效的媒体账号发起 OAuth 授权，在浏览器中完成授权后自动跳回账号管理页。\n\n---\n\n## 用法\n\n```bash\nsiluzan-cso authorize --media-type YouTube\nsiluzan-cso authorize --media-type TikTokBusinessAccount   # TikTok（注意不是 TikTok）\nsiluzan-cso authorize --media-type Instagram\nsiluzan-cso authorize --media-type Facebook\nsiluzan-cso authorize --media-type LinkedIn\nsiluzan-cso authorize --media-type Twitter    # X（推特）\n```\n\n命令执行后 CLI 会打印授权链接，并尝试在系统默认浏览器中打开授权页面；用户在浏览器完成授权后会自动跳转回账号管理页。\n\n**当前若运行在受限的 API/工具环境（如沙箱、容器、远程 Agent 等无法自动唤起本地浏览器的场景），必须将 CLI 输出的完整授权链接展示给用户，由其手动复制到浏览器打开**\n\n> ⚠️ 链接显示规范（必须遵守，否则可能会出现 URL 溢出容器、被强制折行、排版错乱）：\n>\n> - **必须**使用独立的围栏代码块（三个反引号 ` ``` `）展示链接，并指定语言为 `text`，让链接独占一整块、可横向滚动；\n> - **不要**使用单反引号的行内代码（` `...` `）包裹长 URL —— 行内代码不会横向滚动，会被强制折行；\n> - **不要**使用 Markdown 链接语法 `[文本](https://...)` —— 用户复制时容易漏掉字符；\n> - 链接前后各保留一行空行，避免与正文挤在一起。\n>\n> ✅ 正确示例（向用户呈现的内容）：\n>\n> 请在浏览器中打开下面的授权链接完成授权：\n>\n> ```text\n> https://accounts.google.com/o/oauth2/auth?access_type=offline&state=...&client_id=...&redirect_uri=...&scope=...&prompt=consent\n> ```\n\n---\n\n## 支持的平台\n\n| 用户说法                         | `--media-type` 参数值   | 备注                                                           |\n| -------------------------------- | ----------------------- | -------------------------------------------------------------- |\n| YouTube                          | `YouTube`               |                                                                |\n| TikTok                           | `TikTokBusinessAccount` | ⚠️ 必须用这个值，传 `TikTok` 会跳到错误的授权页                |\n| Instagram / IG                   | `Instagram`             |                                                                |\n| Facebook / FB                    | `Facebook`              |                                                                |\n| LinkedIn                         | `LinkedIn`              |                                                                |\n| Twitter（即 X / 推特，同一平台） | `Twitter`               | Twitter 已更名为 X，前端显示为\"X\"，但 API 参数固定为 `Twitter` |\n\n---\n\n## 何时需要重新授权\n\n以下情况需要对账号重新执行 `authorize`：\n\n- `list-accounts --json-out` 落盘数据中 `invalidOAuthToken: true`\n- `list-accounts` 显示账号状态为\"异常\"或\"已过期\"\n- 发布任务失败，错误原因为 Token 失效\n\n---\n\n## 交叉引用\n\n- 查看账号 Token 状态 → 参见 `references/list-accounts.md`\n- 重新发布失败的任务项 → 参见 `references/task.md`\n\nFile v1.1.45:references/core/agent-conventions.md\n\n# Agent 执行规范（数据处理纪律唯一真相源）\n\n> 本文件是 siluzan-cso Skill 下 AI 助手的**通用数据纪律**：加载纪律、数据处理协议、防工具死循环、交付自检。\n> 各域 reference（`references/*.md`）只讲命令参数与字段口径，**不再重复**这些规则，需要处单行指向本文件。\n> **知识库确定**（`<knowledge_base_selection>`、何时跳过 `rag list` / `planning enterprises`）见 `references/core/knowledge-base-resolution.md`。\n> 脚本示例（`--json-out` + `node -e` 读盘）见 `references/core/tips.md`。\n\n---\n\n## 一、文档加载纪律\n\n本 Skill 采用 **SKILL 路由 + references 按需加载**；**「按需」= 每个用户任务都要按需，不是整段对话只读一次**。\n\n| 触发                                                              | 动作                                                                                                                                                                          |\n| ----------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| **任务需锁定企业知识库**（RAG、planning、三库写稿涉及品牌事实等） | **Read** `references/core/knowledge-base-resolution.md`，再读当次域 reference                                                                                                 |\n| **新的用户任务 / 同对话内换话题**（新账号、新平台、新报表/规划）  | 按 `SKILL.md` 命令索引 **重新 Read** 该任务对应的 `references/<域>.md` 后再执行 CLI；**禁止**沿用上一任务的参数记忆——对话会被压缩，「读过」≠ 当前上下文仍含正确字段名与 flags |\n| **上下文被压缩 / 记不清字段或命令**                               | 重读 `SKILL.md` 命令索引 + 当次任务 reference                                                                                                                                 |\n| **CLI 返回 400 / 字段对不上**                                     | 回到对应 reference 核对参数名与口径，**勿猜**                                                                                                                                 |\n\n所有 ID、命令 flags、业务数值以**当次 Read 的文档 + 当次 CLI 输出**为准；数值只来自本次 stdout 或脚本读盘结果，不引用对话记忆里的示例值。\n\n---\n\n## 二、数据处理协议（最高优先级，防工具死循环）\n\n读取/列表/检索/详情类命令（`list-accounts`、`account-group list`、`persona list`、`rag list/query`、`report fetch/records`、`planning enterprises/content-types/list/get`、`task list/detail/comment list`、`list-members`）都支持 **`--json-out <路径>`**：业务数据落盘为唯一真相源，stdout 只回**一行摘要 + agentHint**。每条 `--json-out` 命令成功后**必须按顺序**处理，不要跳步：\n\n1. **解析 stdout 一行摘要 JSON**：拿到 `outlineFile`、`writtenFiles[0]`、`manifestFile`、`agentHint`。摘要里**没有** `total` / `items` 等业务字段——**禁止对 stdout 写翻页循环**，业务数据只在 `writtenFiles[0]` 落盘文件里；**不要**硬编码 `<section>.json` 文件名，以摘要里的 `writtenFiles[]` / `manifestFile` 为准。\n2. **【outline 门禁·先读完再动手】Read 当次产出的每个 `*.outline.txt`**（schema-only，通常 <2KB）确认字段树后**才可**写脚本。类型字面量是**最后一个不以 `//` 开头的行**（提取写法 `outlineRaw.trimEnd().split('\\n').filter(l => !l.startsWith('//')).pop()`）。outline 是结构描述，**不是数据**，勿当 JSON `require`、勿贴给用户。**字段真相源 = 当次 outline**；SKILL.md / reference 里出现的字段名都是说明性示例，凡 outline 未确认的字段路径**禁止**凭印象写进脚本。\n3. **编写并执行脚本**（`node -e` / `.mjs` / `python`）`readFileSync` / `require` 读 `writtenFiles[0]` 做筛选、聚合、计算；**永远不得**用宿主 Read / `cat` / `type` / `Get-Content` 打开落盘业务 `*.json`（可能 MB 级，会撑爆上下文）。\n4. **交付物用代码写出**；向用户展示的数字须来自**脚本 stdout**，不在对话里手填、改数、心算汇总。\n\n| 允许 Read 的文件                        | 必须用代码读取的文件                       |\n| --------------------------------------- | ------------------------------------------ |\n| `references/**/*.md`（Skill 文档）      | 所有 `--json-out` 业务 `*.json`            |\n| 当次 `*.outline.txt`                    | manifest 中的路径索引（脚本 `JSON.parse`） |\n| stdout 一行摘要、你刚写出的最终产物文件 | 用户提供的同构大 JSON                      |\n\n**已有 JSON 不重跑**：用户已保存输出，或只问「怎么从一坨 JSON 里筛字段」时，**直接读本地文件**喂给脚本，不必为示例再执行业务命令。\n\n**无结果即停**：用户指定的账号 / 知识库 / 任务 ID 查无结果时，**如实告知用户并停止**，禁止翻页 grep 自行换 ID 或反复重跑命令（会导致报错户、死循环）。\n\n**中间结果一律落盘**：跨步骤数据不靠对话记忆；Windows 避免管道传 JSON，优先 `--json-out` + `node -e` 读文件。\n\n---\n\n## 三、`--json` 已移除\n\n为杜绝整坨 JSON 打到 stdout 引发的翻页死循环，数据命令的 `--json` **已移除**，统一改用 `--json-out <目录或 *.json 文件>`。若仍传 `--json`，CLI 会 exit 1 并提示改用 `--json-out`（`workflow validate` 例外，其输出小、保留 `--json`）。写入/动作类命令（`publish`、`upload`、`persona create`、`account-group create/update/delete/...`、`task start/stop/...`、`planning generate/regenerate/...`）只输出简洁人类可读确认，无需 `--json-out`。\n\n---\n\n## 四、执行流程与交付自检\n\n**计划 → 确认 → 执行 → 验证 → 预测**：\n\n1. 按 §一 Read 当次任务 reference → 用 `-h` 确认命令 → 向用户输出操作计划。\n2. 涉及写入/修改/删除的操作**必须先与用户确认**。\n3. 按计划执行，说明每步意图。\n4. 用成对的读命令复核写入结果；异步任务（`planning watch`、`task` 发布）按提示轮询直到完成/失败。\n5. 报告 / 含数字话术交付前，**亲自 Read 最终产物**核对：数字来自脚本 stdout、账号 ID 与用户给定一致、无模板占位残留、空数据章节明确标注（禁止编造数字填坑）。\n6. 全部完成后预测用户下一步操作。\n\nFile v1.1.45:references/core/knowledge-base-resolution.md\n\n# 知识库确定（通用）\n\n> **唯一真相源**：凡任务需要锁定「用哪个企业知识库」（RAG 的 `--folder-id`、规划的 `--enterprise-id` / `--enterprise-name`、三库写稿前的 RAG 等），**先读本文件**，再决定是否调用 `rag list` / `planning enterprises`。\n>\n> 数据处理纪律见 `references/core/agent-conventions.md`。RAG 检索策略见 `references/rag.md`。规划域「知识库企业 ID vs 组织归属 ID」见 `references/planning.md`「两种企业 ID 勿混用」。\n\n---\n\n## `<knowledge_base_selection>` 是什么\n\nDeerFlow / CSO 宿主在对话 system prompt 中注入的 XML 块，表达本轮知识库状态。可能是两种语义之一：\n\n### A. 已选具体库（可用）\n\n用户**已在界面「知识库」popover 选定具体企业知识库**（非「全部」、非「关闭」）。\n\n典型一行内容类似：\n\n```text\nThe user has selected a specific enterprise knowledge base for this turn: 「品牌资料库」(comid=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx).\n```\n\n从该段可解析：\n\n| 字段  | 来源            | 含义                                                                                                   |\n| ----- | --------------- | ------------------------------------------------------------------------------------------------------ |\n| comid | `comid=…`       | 知识库企业目录 ID（与 `rag list` 的 `id`、`planning enterprises` 的 `id` / `folders[].id` **同口径**） |\n| 库名  | 「…」中的展示名 | 向用户确认摘要、对话中称呼该库时用                                                                     |\n\n> **术语**：业务上常叫 comid / 知识库企业 ID / folder id——在本 Skill 中指向**同一 UUID**，只是不同 CLI 命令的参数名不同（见下文映射表）。\n\n### B. 知识库未开启（不可用）\n\n块内出现类似文案（中英文皆可）：\n\n```text\n知识库功能未开启，不可使用。Do NOT call any enterprise KB tools …\n```\n\n表示本轮**知识库能力未开启**，**不可**走 RAG / 企业知识库检索路径。见下方「知识库未开启时」。\n\n---\n\n## 知识库未开启时（selection 含「不可使用」提示）\n\n**识别**：`<knowledge_base_selection>` 存在，且内容含「知识库功能未开启」「不可使用」或等价英文（`Do NOT call any enterprise KB tools` 等）。\n\n**强制动作**：\n\n1. **禁止**调用一切 RAG / 知识库相关 CLI，包括但不限于：\n   - `siluzan-cso rag list` / `rag query`\n   - `siluzan-cso planning enterprises`（以及依赖企业知识库 ID 的 planning 检索路径）\n   - 其他会打企业知识库 / KB 工具的命令\n2. **先向用户说明**：本轮知识库不可用（界面未开启或未选库），因此无法做贴库检索 / 无法按知识库锁定企业。\n3. **再按任务是否依赖知识库分支**：\n\n| 任务性质       | 判定示例                                                                                           | 动作                                                                                                           |\n| -------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- |\n| **必须知识库** | 用户明确要求按知识库作答、三库写稿须贴库拆素材、品牌事实必须以 RAG 为准、planning 必须锁定企业库等 | **终止**当前依赖知识库的步骤；告知用户需在界面开启并选定知识库后重试；**禁止**用联网搜索、模型通识或猜 ID 顶替 |\n| **非必须**     | 纯文案润色、人设闲聊、发布/账号操作、不依赖企业素材的通用问答等                                    | 告知知识库不可用后，**继续**用不依赖 RAG 的路径完成任务                                                        |\n\n**禁止**：把「未开启」当成「无已选库」去走 `rag list` / 全库检索回退；也禁止静默跳过而不告知用户。\n\n---\n\n## 默认动作（有已选库且可用时）\n\n仅当 selection 为 **A（含 `comid=`）** 时适用：\n\n1. **直接使用**解析出的 `comid` 与库名。\n2. **跳过**列表解析命令：\n   - RAG → **跳过** `rag list`（不要再说「请先选知识库」或按名称重新匹配 ID）\n   - 规划 → **跳过** `planning enterprises`（不要再说「请先选企业」）\n3. **禁止**：声称用户未选择、反复索要 comid、或按名称重解析 ID（用户明确要换库时除外，见「例外」）。\n\n---\n\n## 语义对齐\n\n- 用户说「我选的知识库 / 这个知识库 / the knowledge base I picked」→ **始终指** `<knowledge_base_selection>` 里**这一条**库（仅 A 态）。\n- 用户**已经选过**；勿与「全部知识库检索」（无 selection、RAG 不传 `--folder-id`）混淆。\n- 若为 **B 态（未开启）**，即使用户口头说「查知识库」，也按「知识库未开启时」处理，不可假装已选库。\n\n---\n\n## 无已选库时的回退\n\n**触发条件**（满足其一即走回退；**不含**「未开启」B 态——B 态走上一节，禁止回退到 list）：\n\n- 上下文中**没有** `<knowledge_base_selection>`，且用户也**未**给出可核验的知识库 ID（comid / folder id / enterprise-id）；或\n- 用户只给了企业/库**名称**、未给 ID。\n\n此时按场景解析：\n\n| 场景     | 命令                                                       | 产出用途                                             |\n| -------- | ---------------------------------------------------------- | ---------------------------------------------------- |\n| RAG 检索 | `siluzan-cso rag list --rag-only --json-out ./snap-cso`    | 按名称语义匹配 → `--folder-id`                       |\n| 内容规划 | `siluzan-cso planning enterprises [--json-out ./snap-cso]` | 按名称匹配 → `--enterprise-id` + `--enterprise-name` |\n\n**匹配规则**：语义近似 > 包含关键词；多个近似匹配时让用户选择；**无匹配时如实说明并停止，禁止猜测 ID**（见 `agent-conventions.md`「无结果即停」）。\n\nRAG **全库检索**（不传 `--folder-id`）仅当用户意图明确为跨库/公共素材且**未**指定品牌时。\n\n### 人设默认知识库（写稿场景兜底）\n\n三库写稿前解析 `--folder-id` 时，若**没有** `<knowledge_base_selection>`、用户本轮也**未**指定知识库，但当前已加载人设的 `knowledgeBaseId` 字段非空 → **默认用它作 `--folder-id`**（该字段即知识库 comid，与本文件其他 ID 同口径），无需再 `rag list`。\n\n- 若 selection 为 **B 态（未开启）** → **不适用**本兜底：仍按「知识库未开启时」处理（写稿贴库属必须知识库时终止）。\n- 用户本轮明确指定了别的库 / 明确要换库 → 以用户为准，忽略人设默认。\n- 人设 `knowledgeBaseId` 为空 → 回到上方按名称 `rag list` / 全库检索的常规回退。\n\n---\n\n## 仍须 list / enterprises 的例外\n\n| 情况                                                      | 动作                                                                                                                    |\n| --------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------- |\n| 用户**明确要换**另一家企业/库，与已选不一致               | 重新 `rag list` 或 `planning enterprises` 解析新目标                                                                    |\n| selection 里只有 `comid=`、无库名，且对话中也取不到展示名 | 只读 `planning enterprises --json-out` 或 `rag list --json-out` **核对名称**（ID 仍用 selection 的 comid，勿重解析 ID） |\n| 无 `<knowledge_base_selection>`，用户只给了名称、未给 ID  | **必须**走上方「回退」列表命令                                                                                          |\n| selection 含「知识库功能未开启 / 不可使用」               | **禁止** list / query；告知用户后按是否必须知识库继续或终止（见「知识库未开启时」）                                     |\n\n---\n\n## CLI 参数映射\n\n| 从 selection / list 取得 | RAG（`rag query`）    | 规划（`planning generate` / `list` / …） |\n| ------------------------ | --------------------- | ---------------------------------------- |\n| comid（知识库企业 ID）   | `--folder-id <comid>` | `--enterprise-id <comid>`                |\n| 库名 / list 的 `name`    | 向用户确认摘要时用    | `--enterprise-name`                      |\n\n**禁止混用**：组织 `belong-to-id`、RAG 查询链路上的 `belongToId` / `companyId` **不是** `--enterprise-id` 或 `--folder-id`；规划域细节见 `references/planning.md`「两种企业 ID 勿混用」。\n\n---\n\n## 决策流程（速查）\n\n```text\n上下文有 <knowledge_base_selection>？\n  ├─ 是 → 内容含「未开启 / 不可使用」？\n  │       ├─ 是 → 禁止 rag / KB 相关命令 → 告知用户知识库不可用\n  │       │       ├─ 任务必须知识库 → 终止依赖步骤，请用户开启并选定后再试\n  │       │       └─ 任务非必须 → 用不依赖 RAG 的路径继续\n  │       └─ 否（含 comid=）→ 取 comid + 库名 → 映射到 --folder-id / --enterprise-id+name → 跳过 list/enterprises\n  │               └─ 用户明确换库？→ 是：走 list/enterprises 解析新目标\n  └─ 否 → 用户给了可核验 ID？\n          ├─ 是：直接用\n          └─ 否 →（写稿场景）当前人设 knowledgeBaseId 非空？\n                  ├─ 是：用它作 --folder-id\n                  └─ 否：rag list 或 planning enterprises 按名称解析 → 无匹配则停止\n```\n\nFile v1.1.45:references/core/tips.md\n\n# CLI 脚本食谱：`--json-out` 落盘 + Node.js 精准查询\n\n> 通用纪律（加载纪律、数据处理协议「摘要 → outline → 脚本读 JSON」、防死循环、交付自检）**只在** `references/core/agent-conventions.md` 维护，本文件是配套**脚本示例集**。\n> 核心约定一句话：凡需结构化数据，一律 **`--json-out <路径>`** 落盘，**用 `node -e` / 脚本**读 JSON 筛选聚合；**禁止**用宿主 Read 工具打开落盘业务 `*.json`；唯一允许 Read 的数据结构文件是 `*.outline.txt`。\n\n---\n\n## 落盘产物与命名\n\n一条 `--json-out` 命令成功后，目标目录下会生成三类文件，stdout 回一行摘要 JSON：\n\n- 业务数据：`<section>[-<查询id>].json`（如 `list-accounts-youtube.json`、`task-detail-<publishId>.json`）\n- 结构描述：同名 `<section>[-<查询id>].outline.txt`（schema-only，**先读它**）\n- 索引清单：`cli-manifest[-<查询id>].json`（`artifacts[].file` 指向业务 JSON）\n\n**读文件以 stdout 摘要里的 `writtenFiles[]` / `manifestFile` 为准**，不要把 `<section>.json` 当成不变的硬编码。若传入的是 `*.json` 文件路径（而非目录），业务数据写入该文件，outline 为同名 `*.outline.txt`。\n\n### outline 文件格式\n\n- 前几行为 `//` 注释（schema-only 声明、用法、类型推断口径）。\n- **类型字面量**是最后一个不以 `//` 开头的行；提取写法：`outlineRaw.trimEnd().split('\\n').filter(l => !l.startsWith('//')).pop()`。\n- outline 是结构描述，**不是数据**：勿 `require` 当 JSON，勿贴给用户。\n\n---\n\n## 基础模式：`--json-out` + 读文件 + `node -e`\n\n约定示例目录 **`./snap-cso`**（可换任意空目录）。文件名以当次摘要 `writtenFiles[0]` / `cli-manifest*.json` → `artifacts[].file` 为准。\n\n### 1. 账户列表提取特定账号 ID\n\n```bash\nmkdir -p ./snap-cso\nsiluzan-cso list-accounts --media-type YouTube --json-out ./snap-cso\nnode -e \"\nconst d = require('./snap-cso/list-accounts-youtube.json');\nconst rows = Array.isArray(d.accounts) ? d.accounts : [];\nrows.forEach((a) => console.log(a.mediaCustomerId, a.mediaCustomerName));\n\"\n```\n\nWindows PowerShell（避免管道传 JSON）：\n\n```powershell\n$SNAP = \".\\snap-cso\"; New-Item -ItemType Directory -Force -Path $SNAP | Out-Null\nsiluzan-cso list-accounts --media-type YouTube --json-out $SNAP\nnode -e \"const d=require('./snap-cso/list-accounts-youtube.json'); (d.accounts||[]).forEach(a=>console.log(a.mediaCustomerId, a.mediaCustomerName));\"\n```\n\n### 2. RAG 检索结果按 score 取 TopN\n\n```bash\nsiluzan-cso rag query -q \"产品核心卖点 用户使用场景\" --folder-id <id> --partition wiki --top-k 12 --json-out ./snap-cso\nnode -e \"\nconst fs = require('fs'), path = require('path');\nconst man = JSON.parse(fs.readFileSync('./snap-cso/cli-manifest.json','utf8'));\nconst art = man.artifacts.find(a => a.section.startsWith('rag-query')) || man.artifacts[0];\nconst d = require(path.join('./snap-cso', art.file));\nconst hits = d.output || [];\nhits.slice().sort((a,b)=>(b.score??0)-(a.score??0)).slice(0,8)\n  .forEach(h => console.log((h.score??0).toFixed(3), String(h.fields?.content||'').slice(0,60)));\n\"\n```\n\n### 3. 人设列表查 styleGuide 字符数 / 取指定人设 id\n\n`persona list` 落盘含 `styleGuide`（通常很长）；脚本只打印需要的字段，避免把长文吐进对话：\n\n```bash\nsiluzan-cso persona list --json-out ./snap-cso\nnode -e \"\nconst d = require('./snap-cso/persona-list.json');\nconst rows = d.results || [];\nrows.forEach(p => {\n  const len = p.styleGuideChars ?? String(p.styleGuide || '').length;\n  console.log(p.id, p.personaName, '(styleGuide', len, 'chars)');\n});\n\"\n```\n\n### 4. 任务列表筛异常项 / 汇总状态\n\n```bash\nsiluzan-cso task list --failed-only --json-out ./snap-cso\nnode -e \"\nconst d = require('./snap-cso/task-list.json');\nconst list = d.list || [];\nconsole.log('共', d.total, '条异常任务');\nlist.forEach(t => console.log(' ', t.publishId, t.taskName));\n\"\n```\n\n任务级状态筛选（`0` 执行中 · `1` 已完成 · `2` 已中止）示例：\n\n```bash\nsiluzan-cso task list --status 2 --json-out ./snap-cso\nnode -e \"\nconst d = require('./snap-cso/task-list.json');\nconsole.log('共', d.total, '条已中止任务');\n(d.list || []).forEach(t => console.log(' ', t.publishId, t.taskName));\n\"\n```\n\n### 5. 运营报表汇总\n\n```bash\nsiluzan-cso report fetch --media Douyin --days 7 --json-out ./snap-cso\nnode -e \"\nconst fs = require('fs'), path = require('path');\nconst manFile = fs.readdirSync('./snap-cso').find(f => f.startsWith('cli-manifest') && f.endsWith('.json'));\nconst man = JSON.parse(fs.readFileSync(path.join('./snap-cso', manFile), 'utf8'));\nconst art = man.artifacts.find(a => a.section.startsWith('report-fetch')) || man.artifacts[0];\nconst d = require(path.join('./snap-cso', art.file));\nconsole.log('keys:', Object.keys(d));\nconsole.log('sections:', Object.keys(d.sections || {}));\n\"\n```\n\n---\n\n## 调试技巧\n\n### 查看原始 API 响应（`--verbose` 打到 stderr）\n\n```bash\nsiluzan-cso list-accounts --media-type YouTube --json-out ./snap-cso --verbose 2> ./snap-cso/verbose.log\n```\n\n### 验证快照 JSON 结构\n\n```bash\nsiluzan-cso list-accounts --media-type YouTube --json-out ./snap-cso\nnode -e \"\nconst d = require('./snap-cso/list-accounts-youtube.json');\nconsole.log('keys:', Object.keys(d));\nconsole.log('accountCount:', (d.accounts||[]).length, 'sample:', d.accounts && d.accounts[0] && Object.keys(d.accounts[0]));\n\"\n```\n\n---\n\n## 脚本编写小贴士\n\n- **用 `process.stdout.write` 而不是 `console.log` 提取单个值**：前者不带换行符，方便直接赋给 shell 变量。\n- **节点代码复杂时拆分写法**：不要写超过 10 行的 `node -e` 单行，改用 `.mjs` 脚本文件。\n- **不确定文件名时**先看 stdout 摘要的 `manifestFile`，再读 `cli-manifest*.json` 的 `artifacts[]` 找到业务 `*.json`。\n\nFile v1.1.45:references/extract-cover.md\n\n# extract-cover — 视频封面截取\n\n> 从视频中截取指定时间点的帧，按目标平台规格裁剪缩放，可选自动上传到素材库。\n> 需要本机安装 **ffmpeg**，命令会自动检测，未安装时报错提示。\n\n---\n\n## 用法\n\n```bash\n# 查看所有平台规格\nsiluzan-cso extract-cover --list-platforms\n\n# 截取第 3 秒的帧，按 YouTube 规格输出\nsiluzan-cso extract-cover -f video.mp4 -p youtube -t 3\n\n# 截取多个时间点（输出多张备选封面）\nsiluzan-cso extract-cover -f video.mp4 -p tiktok -t 1 5 10\n\n# 截取后自动上传到素材库（输出 sourceImageId，可直接填入发布配置）\nsiluzan-cso extract-cover -f video.mp4 -p youtube -t 3 --upload\n\n# 指定输出目录\nsiluzan-cso extract-cover -f video.mp4 -p youtube -t 3 -o /path/to/output/\n```\n\n---\n\n## 平台规格速查\n\n| 平台 ID（`-p` 参数） | 平台名称           | 尺寸      | 比例 |\n| -------------------- | ------------------ | --------- | ---- |\n| `youtube`            | YouTube            | 1280×720  | 16:9 |\n| `youtube-shorts`     | YouTube Shorts     | 1080×1920 | 9:16 |\n| `tiktok`             | TikTok             | 1080×1920 | 9:16 |\n| `twitter`            | Twitter / X        | 1280×720  | 16:9 |\n| `facebook`           | Facebook           | 1280×720  | 16:9 |\n| `instagram`          | Instagram          | 1080×1080 | 1:1  |\n| `instagram-portrait` | Instagram Portrait | 1080×1350 | 4:5  |\n| `douyin`             | 抖音 (Douyin)      | 1080×1920 | 9:16 |\n| `channel`            | 微信视频号         | 1080×1440 | 3:4  |\n\n> 完整规格（含文件大小限制等）运行 `siluzan-cso extract-cover --list-platforms` 查看。\n\n---\n\n## `--upload` 输出字段\n\n加 `--upload` 后自动上传，输出：\n\n| 字段            | 用途                           |\n| --------------- | ------------------------------ |\n| `sourceImageId` | 发布配置 `cover.sourceImageId` |\n| `imageUrl`      | 发布配置 `cover.imageUrl`      |\n\n---\n\n## 交叉引用\n\n- 上传封面到素材库（不截取，直接上传已有图片）→ 参见 `references/upload.md`\n- 获取封面后提交发布 → 参见 `references/publish.md`\n\nFile v1.1.45:references/list-accounts.md\n\n# list-accounts — 媒体账号列表\n\n> 账号 ID（entityId / mediaCustomerId）是发布配置和数据查询的基础字段，使用 `publish` 或 `report` 前通常需要先运行本命令。\n\n---\n\n## 常用场景速查\n\n| 用户意图                                 | 命令                                                                                   |\n| ---------------------------------------- | -------------------------------------------------------------------------------------- |\n| 查所有账号总览（粉丝/播放/获赞横向对比） | `siluzan-cso list-accounts`                                                            |\n| 按平台筛选账号                           | `siluzan-cso list-accounts --media-type <平台>`                                        |\n| 按名称搜索账号                           | `siluzan-cso list-accounts --name \"账号名\"`                                            |\n| 获取账号完整字段（用于发布配置或脚本）   | `siluzan-cso list-accounts --json-out ./snap-cso`                                      |\n| 精准定位单个账号（名称 + 平台）          | `siluzan-cso list-accounts --name \"账号名\" --media-type YouTube --json-out ./snap-cso` |\n| 只看异常/过期账号                        | `siluzan-cso list-accounts --state abnormal`                                           |\n| 只展示基础信息（隐藏总览数据）           | `siluzan-cso list-accounts --no-overview`                                              |\n\n---\n\n## 平台名称对照表\n\n| 用户常说                                    | `--media-type` 参数值   |\n| ------------------------------------------- | ----------------------- |\n| 抖音                                        | `Douyin`                |\n| TikTok                                      | `TikTokBusinessAccount` |\n| YouTube                                     | `YouTube`               |\n| 微信视频号 / 视频号                         | `Wechat`                |\n| Instagram / IG                              | `Instagram`             |\n| Facebook / FB                               | `Facebook`              |\n| Twitter / X（同一平台，Twitter 已更名为 X） | `Twitter`               |\n| Kwai / 快手                                 | `Kwai`                  |\n\n> 同一平台名称在 `--media-type`（list-accounts）和 `report fetch --media` 中通用。\n\n---\n\n## JSON 输出字段说明\n\n`--json-out` 落盘的每个账号对象中，常用字段如下（处理落盘 JSON 前先读同名 `*.outline.txt`，见 `references/core/agent-conventions.md`）：\n\n| 字段                          | 用途                                                                   |\n| ----------------------------- | ---------------------------------------------------------------------- |\n| `entityId`                    | 发布配置 `accounts[].entityId`（UUID 格式）                            |\n| `mediaCustomerId`             | `report fetch --maids <id>` 的参数；也用于账号分组                     |\n| `mediaAccountType`            | 发布配置 `accounts[].mediaAccountType`；`--media-type` 参数值          |\n| `mediaCustomerName`           | 发布配置 `accounts[].mediaCustomerName`                                |\n| `externalMediaAccountTokenId` | 发布配置 `accounts[].externalMediaAccountTokenId`（UUID 格式）         |\n| `invalidOAuthToken`           | `true` 表示 Token 已失效，需重新授权（参见 `references/authorize.md`） |\n| `expiresOn`                   | Token 到期时间                                                         |\n| `overview.fansCount`          | 当前粉丝数                                                             |\n| `overview.videoCount`         | 发布作品总数                                                           |\n| `overview.playCount`          | 历史总播放数                                                           |\n\n---\n\n## 示例\n\n```bash\n# 查所有账号总览\nsiluzan-cso list-accounts\n\n# 只看 TikTok 平台\nsiluzan-cso list-accounts --media-type TikTokBusinessAccount\n\n# 精准定位 + 获取完整字段（用于填写发布配置），落盘后用脚本读盘（见 references/core/tips.md）\nsiluzan-cso list-accounts --name \"品牌账号\" --media-type YouTube --json-out ./snap-cso\n\n# 搜索所有平台中名称包含关键词的账号\nsiluzan-cso list-accounts --name \"品牌名\" --json-out ./snap-cso\n\n# 只看异常账号（Token 过期等）\nsiluzan-cso list-accounts --state abnormal\n```\n\n---\n\n## AI 行为规则\n\n- 用户要找一个具体账号时，**优先用 `--name` + `--media-type` 双重过滤**，通常可直接得到唯一结果。\n- 找到账号后，`entityId` + `externalMediaAccountTokenId` + `mediaCustomerId` 即可直接填入发布配置，无需再次询问用户。\n- 账号 `overview` 字段已包含粉丝数/播放数等基本数据，找到账号后无需再单独调用 `report fetch`。\n- `invalidOAuthToken: true` 的账号需先重新授权，再发布（参见 `references/authorize.md`）。\n\n---\n\n## 交叉引用\n\n- 发布时需要账号字段 → 参见 `references/publish.md`\n- 用账号 ID 查运营数据 → 参见 `references/report.md`\n- 将账号加入分组 → 参见 `references/account-group.md`\n- 账号 Token 失效需重授权 → 参见 `references/authorize.md`\n\nFile v1.1.45:references/persona.md\n\n# persona：人设查询与保存（GetPersonas / AddPersona）\n\n对应 Web / MarkAI `getPersonas()`、`addPersona()`：\n\n- 列表：`POST {csoBaseUrl}/cso/v1/platformdata/GetPersonas`，请求体 `{}`\n- 新建：`POST {csoBaseUrl}/cso/v1/platformdata/AddPersona`，请求体 `{ personaName, styleGuide, materials: [] }`（可选带 `mediaType`（运营平台）、`knowledgeBaseId`（默认知识库 id），仅在传入时携带）\n\n返回人设含 **`styleGuide`**（Markdown 风格指南）、`materials`、`taskStatus` 等，供文案与三库工作流使用。\n\n## 命令一：查询人设列表\n\n```text\nsiluzan-cso persona list [选项]\n```\n\n| 选项                  | 说明                                                                                      |\n| --------------------- | ----------------------------------------------------------------------------------------- |\n| `-t, --token <token>` | 凭据（可选，默认读 `~/.siluzan/config.json`）                                             |\n| `--id <id>`           | 只显示指定人设 id                                                                         |\n| `--name <text>`       | 按人设名称子串过滤（客户端过滤）                                                          |\n| `--json-out <path>`   | 将完整人设（含 `styleGuide`）落盘到目录或 \\*.json 文件，stdout 仅一行摘要（防工具死循环） |\n| `--no-style-guide`    | 搭配 `--json-out`：省略 `styleGuide`，改输出 `styleGuideChars`（字符数）                  |\n| `--unicode`           | 表格使用 Unicode 线框                                                                     |\n| `--verbose`           | 打印详细错误                                                                              |\n\n终端表格仅展示 `styleGuide` 摘要；需要全文时用 `--json-out` 落盘后脚本读盘。\n\n> **【硬规范·执行前必读】调用 `persona list` 前，必须先 Read `references/core/tips.md`（例 #3 为人设专用「`--json-out` 落盘 + `node -e` 读盘」脚本）。** `styleGuide` 通常每条数千字，一律落盘后用脚本读取需要的字段，**禁止**把全文吐到 stdout（会被宿主 bash 工具截断、丢记录、触发翻页死循环）。未读 tips.md、直接对 stdout 处理 `styleGuide` 视为违规。\n\n> **⚠️ 列全量列表用 `--json-out` 落盘即可（不再有截断风险）。** `styleGuide` 通常每条数千字，旧 `--json` 直吐到 stdout 动辄数万字符、\n> 极易被宿主 bash 工具从中间截断丢记录——这正是 `--json` 被移除、改 `--json-out` 落盘的原因。\n> 正确姿势：先 `persona list --json-out ./snap-cso --no-style-guide` 落盘精简列表（仅含 `styleGuideChars` 长度提示），脚本读盘选中目标后再用\n> `persona list --id <id> --json-out ./snap-cso` 单独落盘那一条的完整 `styleGuide`。\n\n`--no-style-guide` 模式下每条记录形如（去掉 `styleGuide`，新增 `styleGuideChars`）：\n\n```json\n{\n  \"id\": \"...\",\n  \"personaName\": \"...\",\n  \"taskStatus\": 3,\n  \"materials\": [],\n  \"styleGuideChars\": 5837\n}\n```\n\n## 命令二：保存人设到平台\n\n```text\nsiluzan-cso persona create --name <名称> ( --style-guide <markdown> | --style-guide-file <path> ) [选项]\n```\n\n| 选项                        | 说明                                                                                                          |\n| --------------------------- | ------------------------------------------------------------------------------------------------------------- |\n| `--name <name>`             | **必填**。人设名称，长度上限 60 字符                                                                          |\n| `--style-guide <markdown>`  | 直接传入 styleGuide markdown 内容（与 `--style-guide-file` 二选一）                                           |\n| `--style-guide-file <path>` | 从本地 markdown 文件读取 styleGuide（长文推荐用文件，与 `--style-guide` 二选一）                              |\n| `--platform <platform>`     | 可选。运营平台（如 `douyin` / `wechat_mp` 等），映射到请求体 `mediaType`，仅在传入时携带                      |\n| `--kb-id <id>`              | 可选。默认知识库 id（从知识库创建人设时传入对应知识库 comid），映射到请求体 `knowledgeBaseId`，仅在传入时携带 |\n| `-t, --token <token>`       | 凭据（可选）                                                                                                  |\n| `--verbose`                 | 打印详细错误                                                                                                  |\n\n> `--platform` → CSO `AddPersona` 的 `mediaType`（社媒平台），`--kb-id` → `knowledgeBaseId`（默认知识库 id）。二者均为可选，仅在你显式传值时才带上。\n\n> **建卡可选绑库**：非从知识库反推创建人设时，可先 `siluzan-cso rag list` 让用户选一个默认知识库绑定（用户可不绑），保存时带 `--kb-id`；从知识库合成的人设直接用合成所用库的 comid。详见 `three-lib-content-workflow/persona-onboarding.md`。\n\n> `persona create` 为写入命令，仅输出简洁人类可读确认（含新建人设 `id`），不再支持 JSON 输出。\n\n> **CLI 不会替你生成 styleGuide**。AI 助手在调用本命令前，应先按\n> `three-lib-content-workflow/persona-reverse-sop.md` 的 SOP 把 styleGuide 写好（Markdown 格式），再用\n> `--style-guide-file` 把文件喂给 CLI。这样保持 CLI 只做平台持久化、不依赖外部 LLM 的设计。\n\n### 典型用法\n\n1. AI 助手先把 styleGuide 写到临时文件，如 `./tmp-persona.md`\n2. 调命令保存：\n   ```text\n   siluzan-cso persona create --name \"外贸老炮\" --style-guide-file ./tmp-persona.md\n   ```\n3. 拿到回包里的 `id`，后续写稿时用 `siluzan-cso persona list --id <id> --json-out ./snap-cso` 落盘后脚本读全文复核。\n   （若是「先浏览全部人设再挑一个」，先 `persona list --json-out ./snap-cso --no-style-guide` 落盘精简列表，再按 `--id` 取全文。）\n\n## 字段说明\n\n| 字段                  | 含义                                                       |\n| --------------------- | ---------------------------------------------------------- |\n| `personaName`         | 人设名称                                                   |\n| `styleGuide`          | 风格指南正文（Markdown）                                   |\n| `materials`           | 参考素材（文件名、URL 等），新建时固定传空数组             |\n| `mediaType`           | 运营平台 / 社媒平台（可选，仅新建时透传）                  |\n| `knowledgeBaseId`     | 默认知识库 id（可选，仅新建时透传）                        |\n| `taskStatus`          | `1` 待生成 · `2` 生成中 · `0`或`3` 生成完成 · `4` 生成失败 |\n| `createdDateTime`     | **UTC** 时间字符串                                         |\n| `lastChangedDateTime` | **UTC** 时间字符串                                         |\n\n> 时间字段展示前必须做时区转换，详见 SKILL.md 「时间字段输出约定（全局）」。\n\n> **`knowledgeBaseId` 的写稿用途**：拿到目标人设后，若其 `knowledgeBaseId` 非空、且用户本轮未另行指定知识库、上下文也无当前已选库，写稿检索默认以该 id 作 `rag query --folder-id`（它就是知识库 comid）。优先级详见 `references/core/knowledge-base-resolution.md`。\n\n## 与 Skill 的关系\n\n编写口播/成稿前应先拿到目标人设的 `styleGuide`，再结合 `three-lib-content-workflow/` 中的 SOP。\n若用户要求「新建一个人设」，先按 `persona-reverse-sop.md` 反推风格指南、确认无误后再用 `persona create` 写回平台。\n详见上级 `SKILL.md`「三库内容工作流」。\n\nFile v1.1.45:references/planning.md\n\n# planning — AI 内容规划\n\n> 对应 CSO Web 端 `/planning` 页面。基于企业知识库生成、查看、再生成和导出**月度内容规划**——含依据知识库、发布频次、规划逻辑以及图文/视频分表的可评审方案。\n>\n> 通用数据纪律（`--json-out`、写入确认、交付自检）见 `references/core/agent-conventions.md`。\n> 知识库确定（`<knowledge_base_selection>`、跳过 list/enterprises）见 `references/core/knowledge-base-resolution.md`。\n\n---\n\n## 判断任务类型\n\n**先读本节，再决定读哪一章。** 不要把只读查询误当成生成流程。\n\n| 用户意图                           | 动作                                                                                                                                                                                  | 阅读范围                                                                        |\n| ---------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------- |\n| 生成或再生成规划                   | 执行完整生成工作流；生成、再生成、取消或删除均为**写入操作**，执行前取得明确确认                                                                                                      | 本章 + 下方 **[生成工作流](#生成工作流)** 全章                                  |\n| 只查看已有规划、任务状态或企业列表 | 只读查询，无需额外确认                                                                                                                                                                | **跳过 [生成工作流](#生成工作流)**；按需读 [命令速查](#命令速查) 与对应命令小节 |\n| 讨论产品方案、字段或示例           | 仅输出方案，不调用生成命令                                                                                                                                                            | **跳过 [生成工作流](#生成工作流)**                                              |\n| 指定某个知识库文件夹或文件         | 说明原生规划按企业 ID 读取企业知识，不能在 `planning generate` 中指定 `folder-id` 或 `source-id`；只有用户明确要求限定或核验素材来源时，才另行使用 RAG 检索（见 `references/rag.md`） | 视情况读 RAG 文档；**不进入生成工作流**                                         |\n\n---\n\n## 生成工作流\n\n> **门禁**：仅当上一节判定为「生成或再生成规划」时阅读本章。**只读查询、导出已有规划、讨论方案**等任务**不得**阅读本章，也**不得**执行 `planning generate` / `planning regenerate`。\n\n### 目标与固定链路\n\n**上下文中已有 `<knowledge_base_selection>`（用户已选具体知识库，见 `references/core/knowledge-base-resolution.md`）时：**\n\n```\n收集月份 / 类型 / 频次 → 确认摘要 → generate [--watch] → 验证结果\n```\n\n**尚未确定知识库企业 ID 时：**\n\n```\n用户选择企业 → 解析知识库企业 ID → 收集月份 / 类型 / 频次 → 确认摘要 → generate [--watch] → 验证结果\n```\n\n界面和对话中向用户展示**企业名称**；调用接口时使用**知识库企业 ID**（`comid`，与 `planning enterprises` 返回的 `id` / `folders[].id` 同口径）。不要把组织 `belong-to-id` 当作知识库企业 ID。\n\n### 用户已选知识库\n\n见 **`references/core/knowledge-base-resolution.md`**（解析 `<knowledge_base_selection>`、默认跳过 `planning enterprises`、语义对齐、例外与 ID 映射）。\n\n规划域：`comid=` → `--enterprise-id`，库名 → `--enterprise-name`。无已选库时走下方「解析企业」与 `planning enterprises`。\n\n### 生成前收集信息\n\n#### 必填\n\n1. **知识库企业**：按 `references/core/knowledge-base-resolution.md` 确定 ID 与名称；无已选库时优先接收企业名称，再经 `planning enterprises` 解析。\n2. **规划月份**：格式 `YYYY-MM`。\n3. **内容类型**：`post`（图文）和/或 `video`（视频）。\n4. **发布频次**：每周几条或每月几条。\n\n#### 选填\n\n- 营销目标\n- 核心产品\n- 目标市场\n- 关键节点或活动\n- 内容语调\n- 合作总月数（6 / 12 / 24）及合作开始月份\n\n缺少选填项时允许由企业知识库与模型推断，**不要阻塞生成**。缺少必填项时，只询问尚缺的信息。\n\n### 两种「企业 ID」勿混用\n\n业务上都叫「企业 ID」，CLI 里对应**两个不同字段**，混用会导致查不到企业或生成失败。\n\n| 名称              | 出现位置                                                                      | 含义                                                           | 用于                                                                 |\n| ----------------- | ----------------------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------------- |\n| **知识库企业 ID** | `<knowledge_base_selection>` 中的 `comid=`；或 `planning enterprises` 的 `id` | 知识库里的企业目录 ID（**comid**）                             | `planning generate --enterprise-id`、`planning list --enterprise-id` |\n| **组织归属 ID**   | `planning enterprises --belong-to-id`                                         | 当前登录账号所属组织（类似 RAG 的 `belongToId` / `companyId`） | **仅**查询企业目录时的筛选参数                                       |\n\n**需要解析企业时（无 `<knowledge_base_selection>`）：**\n\n1. 跑 `planning enterprises`（一般**不要**传 `--belong-to-id`，除非明确要按组织筛选）。\n2. 从输出表格列「知识库企业ID」/「企业名称」，或 `--json-out` 落盘数据的 `folders[].id` / `folders[].name`，取 ID 与名称。\n3. 将二者分别填入 `planning generate --enterprise-id` 与 `--enterprise-name`。\n\n**禁止：** 把 `--belong-to-id`、RAG 用的 `belongToId` / `companyId` 当作 `--enterprise-id`。\n\n### TaskID 与 PlanID\n\n| 标识       | 来源                                                                                                                                | 用途                                                                   |\n| ---------- | ----------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------- |\n| **TaskID** | `planning generate` / `planning regenerate` stdout；`planning list` 表格「TaskID」列                                                | `planning watch`、`planning task cancel/retry/delete`                  |\n| **PlanID** | `planning watch` 或 `generate/regenerate --watch` 完成时 stdout「规划ID」；`planning list --json-out` 落盘数据中的 `list[].plan.id` | `planning get`、`planning regenerate`、`planning export txt --plan-id` |\n\n`planning list` **表格只显示 TaskID**，不显示 PlanID。未加 `--watch` 时，需 `planning watch <taskId>` 等到完成后从 stdout 取 PlanID，或对 list 使用 `--json-out` 读 `plan.id`。\n\n### 执行步骤\n\n**CLI 命令链：**\n\n```\n[可选 enterprises] → generate [--watch] → get → export txt\n                       └─ 或 generate 后 planning watch <taskId>\n```\n\n**Agent 步骤：**\n\n1. **检查环境**：确认 `siluzan-cso` 已安装；401 时引导 `siluzan-cso login`（见 `references/setup.md`）。不要展示或记录令牌。\n2. **确定企业**：按 `references/core/knowledge-base-resolution.md`；无已选库时跑 `planning enterprises` 按名称匹配（`--json-out` 落盘、多个近似匹配让用户选、无匹配则停止且禁止猜 ID）。\n3. **确认生成摘要**：写入前展示一行摘要并取得明确确认，例如：\n\n   > 海科佳｜2026-07｜图文 + 视频｜每周 2 条｜目标：获取海外询盘｜重点产品：智能挂面生产线\n\n   同时说明系统将根据所选知识库企业 ID 读取该企业知识并生成规划。\n\n4. **生成并监控**：把每周频次映射为 `--freq-unit week --freq-count N`，每月频次映射为 `--freq-unit month --freq-count N`（**须同时提供**）。只传用户提供或已明确确认的选填参数，**不要把空字符串作为参数传入**。\n5. **验证结果**：从 watch 完成输出或 `planning get <planId> --json-out` 核对（见下文「验证清单」）。未通过时先说明具体问题，征得确认后执行 `planning regenerate <planId> --watch`。\n\n### 示例：生成月度规划\n\n```bash\n# Step 1（无已选库时）：见 references/core/knowledge-base-resolution.md → planning enterprises\n# 有 <knowledge_base_selection> 时跳过本步，comid/库名取自该段\nsiluzan-cso planning enterprises\n# 可选：按组织筛选目录（勿将此值用于 generate）\n# siluzan-cso planning enterprises --belong-to-id <组织归属ID>\n\n# Step 2：发起生成任务（id/name 来自 <knowledge_base_selection>，或 Step 1）\nsiluzan-cso planning generate \\\n  --enterprise-id <comid> \\\n  --enterprise-name \"<企业名称>\" \\\n  --year-month 2026-07 \\\n  --content-types post,video \\\n  --freq-unit week \\\n  --freq-count 2 \\\n  --marketing-goal \"获取海外询盘\" \\\n  --key-products \"智能挂面生产线\" \\\n  --target-markets 中亚,东南亚 \\\n  --partnership-total-months 12 \\\n  --watch\n\n# Step 3：监控生成进度（未加 --watch 时；TaskID 来自 generate stdout）\nsiluzan-cso planning watch <taskId>\n# 完成后 stdout 会打印「规划ID: <planId>」\n\n# Step 4：查看规划详情（PlanID 来自 Step 3 完成输出，或 generate --watch 完成输出）\nsiluzan-cso planning get <planId>\n# 需要完整 JSON 时加 --json-out <目录或 *.json>\n\n# Step 5：导出为 TXT 文件（--plan-id 与 --input 二选一；-o/--output 可省略则自动命名）\nsiluzan-cso planning export txt --plan-id <planId> -o plan.txt\n```\n\n### 验证清单\n\n生成完成后核对：\n\n- 企业与月份正确。\n- 所选图文/视频类型完整。\n- 条数与频次一致。\n- 内容确实体现该企业的产品、行业、应用场景、客户或展会信息，而非通用空话。\n- 不编造知识库没有支持的认证、参数、客户或案例。\n- 规划逻辑体现企业所属行业及 B2B 决策特点。\n\n### 输出结构（面向用户交付）\n\n#### 规划总体信息\n\n- 企业\n- 规划月份\n- 内容类型\n- 发布频次\n- **依据知识库**：概括本次实际使用的企业资料类型（官网、品牌手册、产品特性、应用场景、展会或客户案例等）。不要宣称使用了未验证的资料。\n- **规划逻辑**：优先说明企业行业、目标受众和 B2B 决策特征，再说明「建立认知 → 强化专业与信任 → 引导合作」的内容节奏。\n\n#### 单条内容字段\n\n图文和视频分别成表，每条包含：\n\n| 字段     | 要求                                               |\n| -------- | -------------------------------------------------- |\n| 周次     | 每周 2 条时使用「第一周-1、第一周-2」等格式        |\n| 方向分类 | 如品牌认知、产品价值、专业知识、案例背书           |\n| 主题     | 可直接用于评审的选题标题                           |\n| 内容方向 | 说明该主题具体讲什么，不写「结合知识库」等内部措辞 |\n| 目标受众 | 明确到工厂老板、采购经理、经销商、技术负责人等     |\n\n不要增加平台列；平台分发不属于当前规划维度。图文与视频均被选择时必须分成两张表。\n\n### 内容质量规则\n\n- 把规划定位为供企业内部运营或代运营团队评审的**月度半成品**，规划到主题和方向，不直接扩写整篇文案或完整脚本。\n- 用企业真实名称、真实业务和真实产品，避免「企业 A」「某产品」等占位表达。\n- 让图文侧重专业解释、选型和决策支持；让视频侧重流程、场景、设备运转和直观传播。\n- 避免每条内容重复同一个卖点；覆盖认知、专业、信任和转化阶段。\n- 对外可见的「内容方向」中**不得**出现「根据知识库」「结合知识库」「AI 生成」等内部过程词。\n- 当知识不足时明确指出缺口，不用行业常识冒充企业事实。\n\n---\n\n## 命令速查\n\n| 命令                            | 说明                                                             |\n| ------------------------------- | ---------------------------------------------------------------- |\n| `planning enterprises`          | 查询企业目录（无 `<knowledge_base_selection>` 时生成前先选企业） |\n| `planning content-types`        | 查询可用内容类型（post / video）                                 |\n| `planning generate`             | 创建规划生成任务                                                 |\n| `planning watch <taskId>`       | 监听生成任务进度（SSE 实时推送）                                 |\n| `planning list`                 | 查询规划任务列表                                                 |\n| `planning get <planId>`         | 获取规划详情                                                     |\n| `planning regenerate <planId>`  | 对已有规划重新生成                                               |\n| `planning task cancel <taskId>` | 取消任务                                                         |\n| `planning task retry <taskId>`  | 重试失败/取消的任务                                              |\n| `planning task delete <taskId>` | 删除任务                                                         |\n| `planning export txt`           | 导出规划为 TXT（Markdown 表格格式）                              |\n\n---\n\n## planning enterprises — 查询企业目录\n\n```bash\n# 默认：列出可选企业（取输出 id 用于 generate）\nsiluzan-cso planning enterprises\n\n# 落盘完整数据（id 在 folders[].id），脚本读盘见 references/core/tips.md\nsiluzan-cso planning enterprises --json-out ./snap-cso\n\n# 按组织归属筛选（高级用法；该 ID 不可用于 generate）\nsiluzan-cso planning enterprises --belong-to-id <组织归属ID>\n```\n\n| 参数             | 说明                                                                                     |\n| ---------------- | ---------------------------------------------------------------------------------------- |\n| `--belong-to-id` | 组织归属 ID（`companyId`），仅传给素材库 querylist 做筛选；**不是** generate 用的企业 ID |\n| `--page-size`    | 目录条数上限（默认 100）                                                                 |\n\n> 上下文中已有 `<knowledge_base_selection>` 时，生成流程**不必**调用本命令；仅在没有已选库或需核对名称时使用。\n\n---\n\n## generate 主要参数\n\n| 参数                             | 必填 | 说明                                                                                                                       |\n| -------------------------------- | ---- | -------------------------------------------------------------------------------------------------------------------------- |\n| `--enterprise-id`                | ✅   | 知识库企业 ID（`<knowledge_base_selection>` 中的 `comid=`，或 `planning enterprises` 的 `id`；**不是** `--belong-to-id`）  |\n| `--enterprise-name`              | ✅   | 企业名称（`<knowledge_base_selection>` 中的库名，或 `planning enterprises` 的 `name`，须与 `--enterprise-id` 配套）        |\n| `--year-month`                   | ✅   | 规划月份，格式 `YYYY-MM`                                                                                                   |\n| `--content-types`                | ✅   | 内容类型，支持逗号或空格：`post`（图文）/ `video`（视频）                                                                  |\n| `--freq-unit`                    | —    | 发布频率单位：`week` / `month`；与 `--freq-count` **须同时提供**（只传其一 CLI 报错）                                      |\n| `--freq-count`                   | —    | 发布频率数量（正整数）；与 `--freq-unit` **须同时提供**                                                                    |\n| `--marketing-goal`               | —    | 营销目标（自然语言描述）                                                                                                   |\n| `--key-products`                 | —    | 重点产品                                                                                                                   |\n| `--target-markets`               | —    | 目标市场 `string[]`：`全球` **单独选**；或从 `中亚`、`非洲`、`拉美`、`中东`、`独联体`、`东南亚` 多选（**不可与全球同选**） |\n| `--key-events`                   | —    | 重要节点/活动                                                                                                              |\n| `--content-tone`                 | —    | 内容风格（如「专业严肃」/「轻松活泼」）                                                                                    |\n| `--partnership-total-months`     | —    | 合作总月数：`6` / `12` / `24`（默认 12）                                                                                   |\n| `--partnership-start-year-month` | —    | 合作开始月份 `YYYY-MM`（与规划月相同时不会传给接口）                                                                       |\n| `--watch`                        | —    | 生成后自动监听进度，无需单独执行 watch                                                                                     |\n| `--watch-timeout <seconds>`      | —    | 监听超时秒数（默认 300）                                                                                                   |\n\n---\n\n## planning list — 查询任务列表\n\n```bash\n# 查所有规划任务\nsiluzan-cso planning list\n\n# 按企业筛选（知识库企业 ID；可用 <knowledge_base_selection> 中的 comid，不是 belongToId）\nsiluzan-cso planning list --enterprise-id <id>\n\n# 按月份筛选\nsiluzan-cso planning list --year-month 2026-05\n\n# 分页（默认 page-index=1，page-size=10）\nsiluzan-cso planning list --page-index 1 --page-size 20\n\n# 落盘完整列表（含 list[].plan.id 等；表格 stdout 不含 PlanID）\nsiluzan-cso planning list --json-out ./snap-cso\n```\n\n| 参数              | 说明                            |\n| ----------------- | ------------------------------- |\n| `--enterprise-id` | 知识库企业 ID（同 generate）    |\n| `--year-month`    | 规划月份 `YYYY-MM`              |\n| `--page-index`    | 页码（默认 1）                  |\n| `--page-size`     | 每页条数（默认 10）             |\n| `--json-out`      | 落盘完整列表；stdout 仅一行摘要 |\n\n表格列：**TaskID**、状态、企业ID、规划月、内容类型。\n\n---\n\n## planning watch — 监听任务进度\n\n```bash\nsiluzan-cso planning watch <taskId>\nsiluzan-cso planning watch <taskId> --timeout 600\n```\n\n| 参数        | 说明                                  |\n| ----------- | ------------------------------------- |\n| `<taskId>`  | 必填，来自 generate/regenerate stdout |\n| `--timeout` | 监听超时秒数（默认 300）              |\n\n完成后 stdout 打印 **规划ID**；失败/取消/超时会 exit 1。\n\n> `generate --watch` / `regenerate --watch` 使用 **`--watch-timeout`**（非本命令的 `--timeout`）。\n\n---\n\n## planning regenerate — 再生成\n\n```bash\nsiluzan-cso planning regenerate <planId>\nsiluzan-cso planning regenerate <planId> --watch\nsiluzan-cso planning regenerate <planId> --watch --watch-timeout 600\n```\n\n| 参数              | 说明                                   |\n| ----------------- | -------------------------------------- |\n| `<planId>`        | 必填，已有规划 ID                      |\n| `--watch`         | 提交后自动监听直到完成/失败            |\n| `--watch-timeout` | 监听超时秒数（默认 300；需 `--watch`） |\n\n再生成 stdout 返回新 **TaskID**；加 `--watch` 时完成后可能打印新 **规划ID**。\n\n---\n\n## planning get — 规划详情字段\n\n`planning get <planId> --json-out <路径>` 落盘完整规划对象（stdout 仅一行摘要，脚本读盘见 `references/core/tips.md`）。以下仅列**写稿、排期、复用规划**时真正需要关注的字段（Cosmos `_rid` / `_etag` / `PartitionKey` 等存储字段可忽略）。\n\n### 规划主体\n\n| 字段                       | 说明                                                                                    |\n| -------------------------- | --------------------------------------------------------------------------------------- |\n| `id`                       | 规划 ID，再生成、导出时引用                                                             |\n| `enterpriseIds`            | 企业 ID 列表（通常一项）                                                                |\n| `enterpriseName`           | 企业名称                                                                                |\n| `yearMonth`                | 规划月份 `YYYY-MM`                                                                      |\n| `contentTypes`             | 已规划体裁：`post`（图文）、`video`（视频）                                             |\n| `frequency`                | 发布频次：`perWeek` 或 `perMonth`（与 generate 的 `--freq-unit` / `--freq-count` 对应） |\n| `targetMarkets`            | 目标市场 `string[]`；`全球` 与区域项互斥，规则同 `--target-markets`                     |\n| `strategyBrief`            | 用户侧策略简报原文，本月叙事与重点的**总纲**                                            |\n| `contextUsed`              | 生成时采用的背景摘要（含知识库/业务语境），写稿前建议先读                               |\n| `planRationale`            | 本月排期逻辑（周次节奏、阶段目标），export txt 会写入「规划逻辑」                       |\n| `postItems` / `videoItems` | 图文 / 视频选题表，见下表                                                               |\n\n### 长期合作周期（影响阶段化叙事）\n\n生成时可传 `--partnership-total-months`（6/12/24）与可选 `--partnership-start-year-month`；详情里会回显当前处于合作周期的哪一段：\n\n| 字段                        | 说明                                                     |\n| --------------------------- | -------------------------------------------------------- |\n| `partnershipTotalMonths`    | 合作总月数（6 / 12 / 24）                                |\n| `partnershipStartYearMonth` | 合作起始月 `YYYY-MM`                                     |\n| `partnershipMonthIndex`     | 当前是合作第几个月（从 1 起）                            |\n| `partnershipPhaseSlot`      | 阶段槽位（长周期内分段策略用，与总月数配合理解本月侧重） |\n\n### 选题行（`postItems` / `videoItems` 每项）\n\n| 字段                 | 说明                                                                                  |\n| -------------------- | ------------------------------------------------------------------------------------- |\n| `week`               | 排期周次，如 `第一周(4月1日-7日)-1`（同周多条以 `-1`、`-2` 区分）                     |\n| `contentDirection`   | 方向分类（案例、TCO、展会等标签）                                                     |\n| `topic`              | 选题标题                                                                              |\n| `mainDirection`      | 本条内容的撰写/拍摄要点与转化导向                                                     |\n| `targetAudience`     | 目标受众                                                                              |\n| `referenceMaterials` | 建议引用的素材或资料线索；**仅 `--json-out` 落盘数据可见**，`export txt` 表格不含此列 |\n\n按 `week` 排序即可还原月度节奏；写具体稿件时优先组合 `mainDirection` + `referenceMaterials`，并对照 `planRationale` 与 `strategyBrief` 保持口径一致。\n\n---\n\n## planning export txt — 导出\n\n```bash\n# 从服务端拉取规划并导出（常用）\nsiluzan-cso planning export txt --plan-id <planId> -o <文件路径>\n\n# 从本地 JSON 导出（如 planning get --json-out 落盘文件）\nsiluzan-cso planning export txt --input <本地规划.json> -o <文件路径>\n\n# 省略 -o/--output 时按「内容选题方向规划_<企业>_<月份>.txt」自动命名\nsiluzan-cso planning export txt --plan-id <planId>\n```\n\n| 参数           | 说明                                        |\n| -------------- | ------------------------------------------- |\n| `--plan-id`    | 规划 ID（与 `--input` 二选一）              |\n| `--input`      | 本地规划 JSON 文件（与 `--plan-id` 二选一） |\n| `-o, --output` | 导出路径；省略则自动命名                    |\n\n导出内容为 Markdown 表格 TXT，含「依据知识库」（`contextUsed`）、「规划逻辑」（`planRationale`）及图文/视频表（表头：周次、方向分类、主题、内容方向、目标受众）。\n\n---\n\n## 导出与交付\n\n用户要求导出时执行 `planning export txt`（见上节）。导出后确认文件存在且包含总体信息、规划逻辑以及图文/视频表。最终回复简洁报告：企业、月份、内容类型、频次、规划 ID 和导出路径。\n\n---\n\n## 错误处理\n\n| 情况           | 处理                                                          |\n| -------------- | ------------------------------------------------------------- |\n| `400`          | 检查企业 ID、月份、内容类型和频次参数                         |\n| `401`          | 要求重新登录                                                  |\n| `500`          | 稍后重试；持续失败时报告服务端异常，**不伪造规划结果**        |\n| 企业目录无结果 | 停止生成，提示先把企业加入知识库企业目录                      |\n| 生成超时       | 查询 `planning list` 确认后台任务状态，**不重复提交同一任务** |\n\nFile v1.1.45:references/platforms/douyin.md\n\n# 抖音平台创作与运营规则\n\n> 用途：供 CTAI-WD 在生成抖音视频选题、口播稿、字幕、标题、发布文案和质检结果时调用。\n>\n> 规则性质：合规要求属于硬约束；时长、钩子、节奏和互动方式属于运营建议，应结合账号数据持续调整。不得把运营建议描述为抖音官方算法结论。\n\n## 1. 平台定位\n\n抖音以竖屏短视频和直播为核心。内容需要在移动端快速建立理解，让用户尽早知道“这条内容和我有什么关系”。\n\n生成目标：\n\n- 优先解决单一、明确的用户问题。\n- 使用口语表达，避免报告体、长定语和连续抽象概念。\n- 一条视频只承载一个核心判断或一个主要行动目标。\n- 兼顾无声观看，关键信息不能只依赖声音表达。\n\n## 2. 生成前必填上下文\n\n生成脚本前必须取得：\n\n- 当前人设及表达边界。\n- 内容目标：涨粉、互动、建立信任、获客或转化。\n- 目标受众及其真实问题。\n- 内容类型：知识、观点、案例、测评、故事、产品或活动。\n- 目标时长。\n- 是否涉及商业推广、商品、医疗健康、金融、未成年人等高风险领域。\n- 可核验的产品事实、数据、案例和来源。\n\n信息不足时，不得编造数据、客户反馈、政策、功效或身份资质。\n\n## 3. 推荐内容结构\n\n### 3.1 开场\n\n建议在最早的有效表达中完成以下至少一项：\n\n- 点明受众：“做外贸的老板”“第一次做短视频的人”。\n- 提出具体问题：“为什么你的询盘很多，成交却很少？”\n- 给出结果预期：“一分钟讲清三个审核误区”。\n- 呈现反差或变化，但不能制造虚假恐慌。\n- 直接展示结果、现场或关键证据。\n\n避免：\n\n- “大家好，今天给大家分享……”式低信息量寒暄。\n- 与正文无关的夸张标题或悬念。\n- 绝对化承诺、虚假倒计时和强迫互动。\n\n### 3.2 正文\n\n推荐结构：\n\n```text\n具体问题 → 原因或误区 → 证据/案例 → 可执行动作 → 自然收束\n```\n\n正文要求：\n\n- 短句优先，一句话表达一个意思。\n- 每隔一个信息段出现一次例子、画面提示、数字或转折。\n- 观点与事实分开；数据说明来源和时间。\n- 专业术语第一次出现时用普通语言解释。\n- 产品内容先讲适用场景和选择条件，再讲卖点。\n- 不为了节奏删除必要的适用条件、风险提示和证据边界。\n\n### 3.3 结尾与 CTA\n\nCTA 应与内容目标一致：\n\n- 互动：提出一个容易回答、与正文相关的问题。\n- 关注：说明后续持续提供什么价值。\n- 私信或咨询：说明适合哪些人，不制造稀缺或虚假承诺。\n- 商品转化：给出选择条件、适用人群和必要限制。\n\n避免机械要求“点赞、评论、转发”三连，以及与内容无关的口令式互动。\n\n## 4. 时长与信息密度\n\n时长不是固定规则，以下为生成默认值：\n\n| 内容类型          |   建议时长 | 生成侧重点             |\n| ----------------- | ---------: | ---------------------- |\n| 单一技巧/结论     |   20–40 秒 | 一个问题、一个答案     |\n| 三点拆解/轻案例   |   40–90 秒 | 强结构、短句、明确转折 |\n| 专业解释/完整案例 |  90–180 秒 | 证据、案例和行动建议   |\n| 深度知识内容      | 3 分钟以上 | 分章节、持续提供新信息 |\n\n不得为了压缩时长牺牲事实准确性或风险说明。账号历史完播、互动和转化数据应优先于默认建议。\n\n## 5. 语言、字幕与画面\n\n- 默认使用自然中文口语；具体语气由人设决定。\n- 字幕按语义分行，单屏避免堆叠长段文字。\n- 关键信息、数字和结论同步出现在字幕或画面中。\n- 字幕不得遮挡人物面部、商品关键部位或平台交互区域。\n- 画面提示必须服务正文，不使用无关素材制造虚假现场感。\n- 引用他人素材时确认使用权限，并避免去水印搬运或混淆原创身份。\n- 使用 AI 生成或合成内容时，按照平台当期要求进行必要标识，不伪造真人、事件或权威背书。\n\n## 6. 标题、发布文案与话题\n\n标题或首行建议：\n\n- 包含受众、问题、结果或场景中的至少两项。\n- 让标题承诺与视频实际内容一致。\n- 使用具体词替代“震惊、必看、赶紧”等空泛刺激词。\n\n发布文案建议简洁补充视频信息，不重复整段口播稿。话题标签应与内容真实相关，优先使用：\n\n- 1–2 个行业或领域标签。\n- 1–2 个具体问题或场景标签。\n- 必要时使用活动或品牌标签。\n\n不得堆砌无关热词、冒用事件标签或通过标题误导用户。\n\n## 7. 原创与真实性\n\n- 不直接搬运、拼接或轻度改写他人内容冒充原创。\n- 不伪造专家、客户、媒体或机构身份。\n- 不编造销量、排名、功效、收益、案例和用户评价。\n- 演绎、情景再现和虚构案例应避免让用户误认为真实事件。\n- 对争议性新闻、政策和数据进行来源核验，不把相关性写成因果。\n- 内容修改后再次检查标题、字幕和画面是否仍与事实一致。\n\n## 8. 商业内容与高风险领域\n\n涉及商品、服务、品牌合作或商业推广时：\n\n- 明确商业目的，不伪装成无利益关系的客观测评。\n- 产品能力以企业知识库和可核验证据为准。\n- 不使用“最好、第一、百分百、永久、零风险”等无法证明的绝对化表述。\n- 不承诺确定收益、治愈效果、考试结果、投资回报或其他不可控结果。\n- 医疗健康、金融、教育、食品、未成年人等领域必须加载对应行业规则与资质要求。\n- 涉及电商交易时，同时加载抖音电商现行内容规范，不以本文件替代商品发布和广告合规审查。\n\n## 9. 社区安全与表达边界\n\n生成内容不得包含或鼓励：\n\n- 违法活动、危险挑战、自残、自杀或伤害他人。\n- 仇恨、歧视、骚扰、网暴和对个体隐私的侵犯。\n- 色情低俗、未成年人不当内容或利用未成年人营销。\n- 虚假信息、诈骗、恶意引流和规避平台治理的表达。\n- 未经授权泄露个人、客户或企业敏感信息。\n\n争议内容应讨论行为、制度、事实和证据，不使用族群、地域、性别或身份标签替代论证。\n\n## 10. 抖音与 TikTok 不得共用的规则\n\n抖音和 TikTok 属于不同市场与治理环境，不得只替换语言后复用：\n\n- 平台流行文化、音乐、话题和用户表达习惯不同。\n- 内容审核、广告、电商和行业资质要求不同。\n- 抖音默认面向中国大陆市场，TikTok 需要结合具体国家或地区。\n- 抖音中文口播的停顿、字幕和信息密度不能机械套用英文 TikTok 模板。\n\n## 11. 输出格式\n\n生成器应输出：\n\n```text\n【平台】抖音\n【内容目标】\n【目标受众】\n【建议时长】\n【标题/首行】\n【口播脚本】\n【字幕重点】\n【画面建议】\n【发布文案】\n【话题标签】\n【风险与核验项】\n```\n\n## 12. 发布前质检\n\n- [ ] 前段已明确受众、问题或价值。\n- [ ] 标题、口播、字幕和画面表达一致。\n- [ ] 一条视频只有一个主要内容目标。\n- [ ] 每个数据、案例、资质和产品主张均可核验。\n- [ ] 无绝对化承诺、虚假稀缺和误导性互动。\n- [ ] 商业内容已加载对应行业与电商规则。\n- [ ] 字幕易读，重要信息不只依赖声音。\n- [ ] 素材拥有授权，原创身份表达准确。\n- [ ] CTA 与内容相关且不过度诱导。\n- [ ] 已根据抖音最新官方规则进行发布前复核。\n\n## 13. 维护与更新\n\n平台规则会持续调整。本文件的运营建议可用于生成，但发布前应以抖音官方最新规则为准。建议每季度复查一次，遇到平台重大规则更新时立即升级版本。\n\n## 14. 官方核验入口\n\n- 抖音创作者中心：https://creator.douyin.com/\n- 抖音安全与举报中心：https://95152.douyin.com/\n- 抖音开放平台：https://open.douyin.com/\n- 抖音电商学习中心：https://school.jinritemai.com/\n\n最后整理日期：2026-08-19。\n\nArchive v1.1.44: 42 files, 161261 bytes\n\nFiles: _meta.json (131b), assets/publish-config-image.example.json (1153b), assets/publish-config.example.json (2244b), assets/three-lib-content-workflow.example.md (2601b), references/account-group.md (5519b), references/authorize.md (3357b), references/core/agent-conventions.md (6824b), references/core/knowledge-base-resolution.md (10064b), references/core/tips.md (5953b), references/extract-cover.md (2187b), references/list-accounts.md (5417b), references/persona.md (7987b), references/planning.md (26936b), references/platforms/douyin.md (8292b), references/platforms/linkedin.md (7621b), references/platforms/platform-rules.md (2846b), references/platforms/tiktok.md (4601b), references/platforms/wechat.md (10213b), references/platforms/youtube.md (5518b), references/publish.md (7715b), references/rag.md (17923b), references/report.md (4595b), references/setup.md (7696b), references/task.md (3901b), references/upload.md (1941b), references/validate-content.md (5745b), references/web-pages.md (5763b), scripts/install.ps1 (11187b), scripts/install.sh (6098b), skill-card.md (2692b), SKILL.md (26231b), three-lib-content-workflow/collaboration.md (4666b), three-lib-content-workflow/content-writer.workflow.md (18072b), three-lib-content-workflow/library-catalog.md (22795b), three-lib-content-workflow/multi-track.md (9064b), three-lib-content-workflow/persona-onboarding.md (9338b), three-lib-content-workflow/persona-reverse-sop.md (21289b), three-lib-content-workflow/persona-schema.md (9534b), three-lib-content-workflow/sop.md (22106b), three-lib-content-workflow/topic-selection.md (17216b), three-lib-content-workflow/video-script-final.workflow.md (11458b), three-lib-content-workflow/wechat-article.workflow.md (17926b)\n\nFile v1.1.44:SKILL.md\n\n---\nname: siluzan-cso\ndescription: >-\n  丝路赞内容运营平台（CSO）。**凡涉及以下任一类业务，必须先加载并使用本 skill**。\n  (1) **文案生成与改稿**：选题、爆款拆解、新写成稿（公众号、小红书、**视频口播/字幕/配音/分镜脚本**、博客、改稿润色、评论区回复等）须走 `three-lib-content-workflow/content-writer.workflow.md`；**热点/资讯生成选题**见 `topic-selection.md`；**单轨 / 多轨**（多轨默认 2 篇、可增减，可主动推断）见 `multi-track.md`；**禁止**直接成稿或聊天润色。\n  **视频脚本 vs 发布 Caption**：口播/字幕/分镜走 content-writer；上传发布框 Caption 走 `overseas-b2b-social-post`。\n  (2) **人设管理**：运营账号人设卡（styleGuide）；反推/查询/保存。\n  (3) **发布与运营**（YouTube/TikTok/Instagram/LinkedIn/X/Facebook）：OAuth、**账号分组**、发布、任务/重试、upload、**extract-cover**、planning、报表。\n  (4) **RAG 知识库**：品牌/产品问答与写稿事实依据。\n  **海外 B2B 社媒贴文/Caption**：走独立 skill `overseas-b2b-social-post`，不在本 skill 文案流程内。\n  **高频误路由**：写文案禁联网代替 rag query；发布/截封面须调 CLI。\n  **账号不明先问**：仅运营媒体账号；广告账户走 siluzan-tso。\nlicense: MIT\nallowed-tools: Bash(siluzan-cso:*) Read Write\nmetadata:\n  requires: nodejs,siluzan-cso-cli\n  cli: siluzan-cso\n  product: CSO\n  exclude_skill: siluzan-tso\n  platforms: YouTube,TikTok,Instagram,LinkedIn,X,Facebook\n  domains: copywriting,persona,publish,account-ops,rag,planning,reporting\n  trigger_keywords: >-\n    写文案,写稿,内容创作,出内容,脚本,口播,公众号,博客,外链,引流页,配文,标题,选题,爆款,改稿,润色,\n    两版,双版本,多版,多轨,AB稿,对比稿,差异化,各出一版,几个方向,审稿,\n    口语化,保留原意,太生硬,优化表达,帮我改改,优化这段,\n    人设,styleGuide,人设卡,反推人设,persona,三库,\n    发布,publish,上传,upload,封面,extract-cover,截取封面,任务,task,重试,失败,\n    账号分组,运营账号,媒体账号,OAuth,authorize,list-accounts,绑定,授权过期,Token失效,\n    评论区,回复文案,页面链接,web-pages,任务管理,\n    RAG,知识库,rag,素材库,绩效,粉丝,播放,report,planning,内容规划,站内信\n  not_for: >-\n    广告账户,广告投放,余额,消耗,统计,开户,关键词出价,Google Ads,Bing Ads,Yandex,TSO,siluzan-tso,MCC,BC,BM;\n    海外 B2B 社媒贴文/Caption（走 overseas-b2b-social-post）\n  when_to_use: >-\n    用户要在丝路赞 CSO 写内容、管人设 styleGuide、向社交媒体运营账号发布、查企业 RAG、\n    上传素材/截封面、查发布任务或运营报表、管理账号分组时使用。\n  anti_patterns: >-\n    写文案/视频脚本：须 Read content-writer.workflow.md；禁止 web_search 代替 rag query。\n    海外社媒贴文/Caption：勿进 content-writer，用 overseas-b2b-social-post。\n    发布：禁止只讲 App/网页操作；须 Read publish.md 并执行 list-accounts→upload→publish→task。\n  high_risk_tasks: copywriting,publish\ncompatibility: Requires siluzan-cso-cli installed and authenticated via `siluzan-cso login`\n---\n\n# siluzan-cso\n\n## 一键安装\n\n如果 CLI 尚未安装，直接帮用户执行对应平台的安装脚本：\n\n- **macOS / Linux / WSL：**\n  ```bash\n  bash <(curl -fsSL https://unpkg.com/siluzan-cso-cli@latest/dist/skill/scripts/install.sh)\n  ```\n- **Windows PowerShell：**\n  ```powershell\n  irm https://unpkg.com/siluzan-cso-cli@latest/dist/skill/scripts/install.ps1 | iex\n  ```\n\nWindows 注意：部分 Agent 客户端通过 PowerShell / cmd 代执行命令时存在兼容性问题。若上述命令异常失败，请先安装 [Git for Windows](https://git-scm.com/download/win)，然后在 Git Bash 中执行 macOS / Linux / WSL 的 Bash 安装命令。\n\n脚本会自动完成 Node.js 检测/安装、CLI 安装、Skill 全局注册，并引导用户配置 API Key。无需选择，本脚本专为 siluzan-cso-cli 定制。\n\n---\n\n## 可执行的操作范围\n\n- **只读**：查询媒体账号列表、账号分组、运营报表、发布任务状态、人设列表、RAG 知识库检索、AI 内容规划详情\n- **写入**（需用户确认）：上传素材、提交发布任务、创建/更新账号分组、生成 AI 内容规划、站内信回复\n- **本地文件操作**：`extract-cover` 在本地截取视频帧并输出图片文件；`workflow validate` 在本地校验文案文件（字数限制 / 内部内容泄漏）；`init` 将 Skill 文件写入 AI 助手目录\n\n---\n\n## 可选环境变量\n\n| 变量                      | 说明                                                         |\n| ------------------------- | ------------------------------------------------------------ |\n| `SILUZAN_API_KEY`         | 从环境变量读取 API Key（优先级高于 config.json，CI/CD 推荐） |\n| `SILUZAN_AUTH_TOKEN`      | 从环境变量读取 JWT Token（优先级高于 config.json）           |\n| `SILUZAN_DATA_PERMISSION` | 从环境变量读取数据权限标识（优先级高于 config.json）         |\n\n---\n\n## 能力范围\n\n| 业务流程       | 手段                                                    | 说明                                        |\n| -------------- | ------------------------------------------------------- | ------------------------------------------- |\n| **发布与运营** | 下方 CLI 命令 + `references/*.md`                       | 上传、发布、任务、报表、账号、规划等        |\n| **文案生产**   | `three-lib-content-workflow/content-writer.workflow.md` | 选题、三库、口播/视频脚本/公众号/成稿、改稿 |\n\n两类流程同属 CSO 业务。**海外 B2B 社媒贴文/Caption** 为独立 skill `overseas-b2b-social-post`，不在本包内。\n\n内容生成仍先进入 `three-lib-content-workflow/content-writer.workflow.md`。该工作流负责读取 `references/platforms/platform-rules.md` 并加载当前平台唯一对应的规则；平台规则与三库是两个独立输入，三库策略只能在平台规则边界内使用。\n\n## 命令索引\n\n| 命令                                                                               | 作用                                                                                                                                                                                                   | 详细文档                      |\n| ---------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ----------------------------- |\n| `siluzan-cso login` / `siluzan-cso send-login-code`                                | 登录 / 配置凭据；手机号 + 验证码两段式登录                                                                                                                                                             | `references/setup.md`         |\n| `siluzan-cso config show/set/clear`                                                | 查看 / 修改 / 清空本地配置                                                                                                                                                                             | `references/setup.md`         |\n| `siluzan-cso init`                                                                 | Skill 文件初始化（写入 AI 助手目录）                                                                                                                                                                   | `references/setup.md`         |\n| `siluzan-cso update`                                                               | 更新 CLI 版本并刷新 Skill 文件                                                                                                                                                                         | `references/setup.md`         |\n| `siluzan-cso authorize --media-type <平台>`                                        | 发起媒体账号 OAuth 授权                                                                                                                                                                                | `references/authorize.md`     |\n| `siluzan-cso list-accounts`                                                        | 列出媒体账号，获取账号 ID / 数据总览                                                                                                                                                                   | `references/list-accounts.md` |\n| `siluzan-cso persona list`                                                         | 拉取 CSO 人设列表。**请先阅读详细文档，规范操作，避免误用。**                                                                                                                                          | `references/persona.md`       |\n| `siluzan-cso rag list`                                                             | 列出知识库文件夹；`--rag-only` 仅已建索引；`--folder-id` 查指定文件夹下的子库                                                                                                                          | `references/rag.md`           |\n| `siluzan-cso rag query`                                                            | 知识库向量检索；**`--partition wiki` 或 `default`**（默认 `default`；写稿与须贴库作答时优先 **wiki**，不足再 **default**）；`-q` 含空白时多词分检合并；`--folder-id` / `--tags` 见 `references/rag.md` | `references/rag.md`           |\n| `siluzan-cso account-group list/create/add-accounts/remove-accounts/update/delete` | 账号分组管理                                                                                                                                                                                           | `references/account-group.md` |\n| `siluzan-cso upload -f <file>`                                                     | 上传视频 / 图片到素材库                                                                                                                                                                                | `references/upload.md`        |\n| `siluzan-cso extract-cover -f <video> -p <平台>`                                   | 从视频截取封面帧                                                                                                                                                                                       | `references/extract-cover.md` |\n| `siluzan-cso publish -c config.json`                                               | 提交多平台发布任务                                                                                                                                                                                     | `references/publish.md`       |\n| `siluzan-cso task list/detail/item`                                                | 查看任务状态 / 处理失败 / 重试                                                                                                                                                                         | `references/task.md`          |\n| `siluzan-cso report fetch --media <平台>`                                          | 运营报表（核心指标 / 视频排行 / 趋势）                                                                                                                                                                 | `references/report.md`        |\n| `siluzan-cso planning ...`                                                         | AI 内容规划：生成、监控、详情、导出                                                                                                                                                                    | `references/planning.md`      |\n| —（网页端）                                                                        | CSO web端全部页面 URL                                                                                                                                                                                  | `references/web-pages.md`     |\n\n---\n\n## 常见业务场景 → 阅读哪个文件\n\n| 用户在做什么                                                                                                 | 先阅读                                                                             |\n| ------------------------------------------------------------------------------------------------------------ | ---------------------------------------------------------------------------------- |\n| 首次安装 / 登录 / 更新                                                                                       | `references/setup.md`                                                              |\n| 发布视频或图文                                                                                               | `references/publish.md`                                                            |\n| 上传素材                                                                                                     | `references/upload.md`                                                             |\n| 截取视频封面                                                                                                 | `references/extract-cover.md`                                                      |\n| 文案写完落盘后校验字数 / 检查内部内容泄漏                                                                    | `references/validate-content.md`                                                   |\n| 查发布记录 / 处理失败                                                                                        | `references/task.md`                                                               |\n| 查账号数据 / 运营报表                                                                                        | `references/report.md`                                                             |\n| 查找账号 ID 或账号详情                                                                                       | `references/list-accounts.md`                                                      |\n| 账号 Token 失效 / 重新授权                                                                                   | `references/authorize.md`                                                          |\n| 管理账号分组                                                                                                 | `references/account-group.md`                                                      |\n| AI 内容规划                                                                                                  | `references/planning.md`                                                           |\n| 需要给用户提供后台页面链接                                                                                   | `references/web-pages.md`                                                          |\n| 拉取人设 / styleGuide（写稿前）/ 保存人设                                                                    | `references/persona.md`                                                            |\n| 写稿时检索素材库 RAG 片段（三库拆素材等）                                                                    | `references/rag.md`                                                                |\n| 选题 / 三库拆解 / 口播或视频脚本 / 公众号文章 / **单轨或多轨成稿** / 改稿润色 / 人设卡 / 反推人设 / 审稿打分 | `three-lib-content-workflow/content-writer.workflow.md`（多轨 → `multi-track.md`） |\n| 写稿时识别并加载当前平台规则                                                                                 | `references/platforms/platform-rules.md`                                           |\n\n---\n\n## 命令间依赖关系（交叉引用速览）\n\n```\npublish ──需要账号字段──► list-accounts\npublish ──需要素材 ID──► upload ──需要封面──► extract-cover\npublish ──提交后查状态──► task ──失败重授权──► authorize\n\nreport ──需要 mediaCustomerId──► list-accounts\naccount-group ──需要 mediaCustomerId──► list-accounts\n\nrag query ──需要知识库 ID──► rag list（按用户意图自动选择）\n```\n\n---\n\n## RAG 知识库检索工作流\n\n> 详细检索策略见 `references/rag.md`；**确定用哪个库**见 `references/core/knowledge-base-resolution.md`。以下为决策摘要。\n\n### 何时使用 RAG\n\n- ✅ 询问特定品牌/产品知识、写需要品牌素材的文案 → **必须先 RAG**\n- ✅ 执行三库内容工作流 → **按三库分库检索**\n- ❌ 询问平台操作方法、纯通用创作、用户明确不需要 → **跳过 RAG**\n\n### 四步执行流程\n\n**Step 0 — 检查已选库**（优先于 list）\n\n若上下文有 `<knowledge_base_selection>`，直接取其 `comid` 作 `--folder-id`，**跳过 Step 1–2**。详见 `references/core/knowledge-base-resolution.md`。\n\n**Step 1 — 获取知识库**（无已选库时，只在任务开始时调用一次）\n\n```bash\n# 列出所有已建索引的根级知识库（落盘后用脚本读 id，见 references/core/tips.md）\nsiluzan-cso rag list --rag-only --json-out ./snap-cso\n\n# 若根级库下还有子文件夹，可钻取查看\nsiluzan-cso rag list --folder-id <父文件夹id> --rag-only --json-out ./snap-cso\n```\n\n**Step 2 — 选择知识库**（无已选库时，按名称语义匹配）\n\n- 用户提到品牌名 → 找名称最匹配的文件夹，记录 `id`\n- 多品牌 → `--folder-id id1,id2`（逗号分隔）\n- 无明确品牌 → 不传 `--folder-id`（全库检索）\n\n**Step 3 — 拆词检索**（2–5 个短关键词；**`--partition`**）\n\n- **首轮**：`--partition wiki`，`--top-k` 建议 **8–15**（常用 **12**）。写稿、须贴库作答、需要较长正文作依据时优先。\n- **仍不足时**：同一 `-q` / `--folder-id` / `--tags` 下再跑 `--partition default`，`--top-k` **5–10**；两轮按片段 **id** 去重合并，**禁止编造**。\n- 取值仅 **`wiki`** 或 **`default`**（小写）；非法值 CLI 会报错。\n\n```bash\n# 默认不传 --tags = 全量检索（适用于绝大多数场景）\n# 推荐：同一库、同一标签策略下，用空格一次传多词，CLI 会分检合并排序\nsiluzan-cso rag query -q \"产品核心卖点 用户使用场景 品牌差异优势\" --folder-id <id> --partition wiki --top-k 12\n\n# 证据仍不足时再补 default（按需执行）\n# siluzan-cso rag query -q \"产品核心卖点 用户使用场景 品牌差异优势\" --folder-id <id> --partition default --top-k 8\n\n# 仍可用多轮独立 -q（例如需要分步查看或参数不同）\n# siluzan-cso rag query -q \"产品核心卖点\" --folder-id <id> --partition wiki --top-k 12\n# siluzan-cso rag query -q \"用户使用场景\" --folder-id <id> --partition wiki --top-k 12\n\n# 仅当知识库已按标签打标，且需要精确筛选时才传 --tags（不同标签需多条命令；`--partition` 规则同上）\nsiluzan-cso rag query -q \"抖音 爆款 钩子\" --tags \"流量因子库\" --partition wiki --top-k 12\nsiluzan-cso rag query -q \"产品 卖点 故事\" --tags \"产品资产库\" --partition wiki --top-k 12\n```\n\n**Step 4 — 合成使用**\n\n合并后的结果中 **`score` 越大越相关**（CLI 已做 0–1 归一化）。若执行了 **wiki + default** 两轮，按片段 **id** 去重后再合成。将片段作为写稿/回答的事实依据，重新组织表达（不直接粘贴原文）；若执行了多条 `rag query`，再在对话侧对重复片段去重。\n\n---\n\n## AI 行为规范\n\n### 执行任务的标准流程\n\n遵循**计划 → 确认 → 执行 → 验证 → 预测**五步：\n\n1. **计划**：根据用户意图，查阅命令索引与 references，或「三库内容工作流」与 `GetPersonas` 人设要求，制定操作步骤，不暴露命令行细节。\n2. **确认**：与用户确认关键信息（目标账号、发布内容、时间等），不替用户做选择。\n3. **执行**：按计划调用命令，处理异常。\n4. **验证**：\n   - 写入/修改操作后，通过读取命令确认结果是否正确。\n   - 失败时优先尝试重试或用其他方式补救，而不是直接告知用户\"任务失败\"。\n5. **预测**：任务完成后，结合当前结果对用户下一步操作给出合理建议。\n\n### 硬规范\n\n- **知识库确定**：涉及 RAG、planning、三库写稿等品牌/企业素材前，先 Read `references/core/knowledge-base-resolution.md`；上下文有 `<knowledge_base_selection>` 时直接用 `comid`，**跳过** `rag list` / `planning enterprises`。\n- **数据处理纪律（防工具死循环，最高优先级）**：先 Read `references/core/agent-conventions.md`。要点：读取/列表/检索/详情类命令一律 `--json-out <路径>` 落盘，stdout 仅一行摘要 + agentHint；**禁止对 stdout 写翻页循环**，**禁止**用 Read/cat 打开落盘业务 `*.json`，先读 `*.outline.txt` 再用 `node -e` 读 JSON；已有 JSON 不重跑、查无结果即停。脚本食谱见 `references/core/tips.md`。\n- **不确定时先读文档**：遇到不熟悉的命令，先查对应 references 文件，不猜参数。\n- **先查账号再操作**：对具体账号做操作前，先用 `list-accounts --name <名称> --media-type <平台>` 确认账号存在且 Token 有效。\n- **需要计算/筛选时用 `--json-out`**：加 `--json-out <目录或 *.json 文件>` 落盘，再按 `references/core/tips.md` 的脚本食谱（`node -e` `readFileSync` / `require` 读盘）提取字段；旧 `--json` 已移除。\n- **不猜账号 ID**：`entityId` ≠ `mediaCustomerId`，两者均须从 `list-accounts --json-out` 落盘数据获取，不可假设。\n- **命令透明性**：以简洁的方式向用户说明即将执行的操作意图（如「正在上传视频到素材库」「正在为您查询 YouTube 账号列表」），让用户了解操作进度。用户主动要求查看执行细节时，应如实提供完整命令。安装/登录/更新等一次性命令（见 `references/setup.md`）可直接展示给用户自行执行。\n- **操作后必须验证**：完成发布、上传、分组等写操作后，需通过对应的查询命令确认结果。\n- **内容创作必须严格按本 skill 流程，禁止绕过指引直接生成内容。所有相关子文件须完整读取后再生成。**\n\n### 必须遵守\n\n- 主动更新（详情请读取 `references/setup.md`）。\n- **破坏性操作必须用户确认**：涉及写入/修改/删除的操作（发布、上传、分组变更等），执行前必须明确告知用户操作内容并获得确认。\n- **只读操作可自主执行**：查询类命令（`list-accounts`、`report fetch`、`task list`、`config show` 等）可直接执行，无需额外确认。\n- 禁止提供虚假信息，比如web端连接就必须确认 `references/web-pages.md` 中存在才能提供给用户\n\n---\n\n## 时间字段输出约定（全局）\n\nCLI 返回的时间字段（如 `*DateTime` / `*Time` / `createTime` / `publishTime` / `lastAuthorizationTime` / `expiresOn` 等）如果是 **UTC** 时间，在显示给用户时需要完成时区转换。\n\n**输出规则（按优先级）**：\n\n1. **优先用用户在当前对话中明确表达过的时区**（如「我在深圳」「PST 时间」「我刚从纽约出差回来」）。\n2. **否则用对话语言推断默认时区**：中文 → `Asia/Shanghai (UTC+8)`，日文 → `Asia/Tokyo (UTC+9)`，英文且无其他线索 → 保留 UTC 并明确标注。\n3. **若仍不确定且时间对用户决策有意义**（如「最近一次更新」、「创建于多久前」、「Token 何时过期」），**主动询问用户所在时区**，不要瞎猜。\n\n**展示格式**：\n\n- 推荐 `YYYY-MM-DD HH:mm (时区标识)`，例如 `2024-03-15 18:30 (UTC+8)`、`2024-03-15 10:30 (UTC)`。\n- **禁止**把 `2024-03-15T10:30:00Z` 这种原始 ISO 串直接吐给用户——用户会误以为是当地时间。\n- 跨日 / 月底 / 年底 / 夏令时切换附近的时间，换算时要**特别小心**，必要时多核对一遍。\n- 极少数字段（如 `report` 报表里按用户业务时区聚合的统计时间）已经是用户本地时区，文档若有特别说明则以文档为准。\n\n---\n\n## 常见 HTTP 错误处理\n\n| 状态码                      | 原因                 | 处理方式                                                           |\n| --------------------------- | -------------------- | ------------------------------------------------------------------ |\n| `400 Bad Request`           | 参数错误             | 查对应 references 文档或用 `--help` 确认命令用法                   |\n| `401 Unauthorized`          | 凭据失效             | 引导用户重新执行 `siluzan-cso login`（详见 `references/setup.md`） |\n| `500 Internal Server Error` | 服务部署中或数据异常 | 稍后重试；若持续失败，提交给 Siluzan 相关人员处理                  |\n\n---\n\n## 平台名称速查\n\n## 阅读： `references/authorize.md`\n\n## Web 功能导航\n\n> 无对应 CLI 命令的模块，或需要引导用户在网页端查看数据时，查阅 `references/web-pages.md` 获取完整页面清单与链接。\n\nURL 格式：`https://www.siluzan.com/v3/foreign_trade/cso/{页面}`\n\n常用页面：`task`（任务管理）· `postVideo`（发布页）· `ManageAccounts`（账号管理）· `planning`（AI 内容规划）· `table`（绩效报表）· `Workdata`（作品数据）\n\nFile v1.1.44:_meta.json\n\n{\n  \"ownerId\": \"kn7fvww6xcwp6e93b3qgnjy7s183jy5k\",\n  \"slug\": \"siluzan-cso\",\n  \"version\": \"1.1.44\",\n  \"publishedAt\": 1788252906146\n}\n\nFile v1.1.44:references/account-group.md\n\n# account-group — 账号分组管理\n\n> 将媒体账号归类到分组，便于发布时按组批量指定目标账号。\n\n---\n\n## ⚠️ 必读：用哪个 ID？\n\n`--accounts` 参数**只接受 `mediaCustomerId`**，这是账号在媒体平台上的原生 ID。\n\n`list-accounts --json-out` 落盘的每个账号对象中有多个 ID 字段，**极易混淆**：\n\n| 字段                          | 示例值                                | 用途                                                            |\n| ----------------------------- | ------------------------------------- | --------------------------------------------------------------- |\n| `mediaCustomerId`             | `UCg3_FESu2sADBKq4WKGozug`            | ✅ **account-group 的 `--accounts` 参数用这个**                 |\n| `entityId`                    | `a2ace2a2-00c1-478d-a991-...`（UUID） | 发布配置 `accounts[].entityId`，**不是这个**                    |\n| `externalMediaAccountTokenId` | `f4f687..`（UUID）                    | 发布配置 `accounts[].externalMediaAccountTokenId`，**不是这个** |\n\n**操作流程：**\n\n```bash\n# Step 1：拿到账号的 mediaCustomerId（落盘后脚本读盘，见 references/core/tips.md）\nsiluzan-cso list-accounts --name \"账号名\" --json-out ./snap-cso\n# 从落盘 JSON 中取 \"mediaCustomerId\" 字段值\n\n# Step 2：用 mediaCustomerId 操作分组\nsiluzan-cso account-group create --name \"分组名\" --accounts \"mediaCustomerId1,mediaCustomerId2\"\n```\n\n---\n\n## 常用场景速查\n\n| 用户意图                                 | 命令                                                                             |\n| ---------------------------------------- | -------------------------------------------------------------------------------- |\n| 查看所有分组                             | `siluzan-cso account-group list`                                                 |\n| 查某分组内有哪些账号                     | `siluzan-cso account-group list --json-out ./snap-cso`                           |\n| 新建空分组                               | `siluzan-cso account-group create --name <名称>`                                 |\n| 新建分组并添加账号                       | `siluzan-cso account-group create --name <名称> --accounts <id1,id2>`            |\n| **向已有分组追加账号（不影响其他账号）** | `siluzan-cso account-group add-accounts --id <groupId> --accounts <ids>`         |\n| **从分组移除指定账号（不影响其他账号）** | `siluzan-cso account-group remove-accounts --id <groupId> --accounts <ids>`      |\n| 全量替换分组账号列表                     | `siluzan-cso account-group update --id <groupId> --name <名称> --accounts <ids>` |\n| 删除分组                                 | `siluzan-cso account-group delete --id <groupId>`                                |\n\n---\n\n## 命令详解\n\n### list — 查询分组列表\n\n```bash\n# 默认表格展示（分组 ID / 名称 / 账号数 / 创建时间）\nsiluzan-cso account-group list\n\n# 落盘完整数据（含 mediaAccountInfos，可获取各账号 mediaCustomerId），脚本读盘见 references/core/tips.md\nsiluzan-cso account-group list --json-out ./snap-cso\n```\n\n> `id === \"未分组\"` 是系统虚拟分组，不可编辑或删除。\n\n---\n\n### create — 新建分组\n\n```bash\n# 新建空分组\nsiluzan-cso account-group create --name \"海外品牌账号\"\n\n# 新建并同时添加账号（mediaCustomerId，逗号分隔，可含空格）\nsiluzan-cso account-group create --name \"TikTok 主账号\" --accounts \"id1,id2,id3\"\n```\n\n成功后输出新分组 ID，可用于后续 update / delete。\n\n---\n\n### add-accounts — 追加账号（推荐）\n\n```bash\n# 向分组追加一个或多个账号，已在组内的账号自动跳过（幂等）\nsiluzan-cso account-group add-accounts --id <groupId> --accounts \"新id1,新id2\"\n```\n\n内部自动拉取当前账号列表再合并，**无需提前知道组内有哪些账号**。\n\n---\n\n### remove-accounts — 移除账号（推荐）\n\n```bash\n# 从分组移除指定账号，不在组内的账号自动跳过（幂等）\nsiluzan-cso account-group remove-accounts --id <groupId> --accounts \"要移除的id1,id2\"\n```\n\n内部自动拉取当前账号列表再过滤，**无需提前知道组内完整列表**。\n\n---\n\n### update — 全量替换（慎用）\n\n```bash\n# 将分组账号列表替换为指定的完整列表（不传 --accounts 则清空！）\nsiluzan-cso account-group update --id <groupId> --name \"分组名称\" --accounts \"id1,id2,id3\"\n```\n\n> **注意：** 后端以传入的 `--accounts` 为准，不传时**清空**分组内所有账号。  \n> 需要增量操作时，请优先使用 `add-accounts` / `remove-accounts`。\n\n---\n\n### delete — 删除分组\n\n```bash\nsiluzan-cso account-group delete --id <groupId>\n```\n\n> 「未分组」虚拟分组不可删除。\n\n---\n\n## 典型流程\n\n### 向已有分组添加新账号\n\n```bash\n# Step 1：获取新账号的 mediaCustomerId（落盘后脚本读盘）\nsiluzan-cso list-accounts --name \"新账号名\" --json-out ./snap-cso\n\n# Step 2：直接追加（无需查当前列表）\nsiluzan-cso account-group add-accounts --id <groupId> --accounts \"新id\"\n```\n\n### 从分组移除某个账号\n\n```bash\n# 直接移除（无需查当前列表）\nsiluzan-cso account-group remove-accounts --id <groupId> --accounts \"要移除的id\"\n```\n\n---\n\n## 交叉引用\n\n- 获取账号 `mediaCustomerId` → 参见 `references/list-accounts.md`\n\nFile v1.1.44:references/authorize.md\n\n# authorize — 媒体账号 OAuth 授权\n\n> 为尚未绑定或 Token 已失效的媒体账号发起 OAuth 授权，在浏览器中完成授权后自动跳回账号管理页。\n\n---\n\n## 用法\n\n```bash\nsiluzan-cso authorize --media-type YouTube\nsiluzan-cso authorize --media-type TikTokBusinessAccount   # TikTok（注意不是 TikTok）\nsiluzan-cso authorize --media-type Instagram\nsiluzan-cso authorize --media-type Facebook\nsiluzan-cso authorize --media-type LinkedIn\nsiluzan-cso authorize --media-type Twitter    # X（推特）\n```\n\n命令执行后 CLI 会打印授权链接，并尝试在系统默认浏览器中打开授权页面；用户在浏览器完成授权后会自动跳转回账号管理页。\n\n**当前若运行在受限的 API/工具环境（如沙箱、容器、远程 Agent 等无法自动唤起本地浏览器的场景），必须将 CLI 输出的完整授权链接展示给用户，由其手动复制到浏览器打开**\n\n> ⚠️ 链接显示规范（必须遵守，否则可能会出现 URL 溢出容器、被强制折行、排版错乱）：\n>\n> - **必须**使用独立的围栏代码块（三个反引号 ` ``` `）展示链接，并指定语言为 `text`，让链接独占一整块、可横向滚动；\n> - **不要**使用单反引号的行内代码（` `...` `）包裹长 URL —— 行内代码不会横向滚动，会被强制折行；\n> - **不要**使用 Markdown 链接语法 `[文本](https://...)` —— 用户复制时容易漏掉字符；\n> - 链接前后各保留一行空行，避免与正文挤在一起。\n>\n> ✅ 正确示例（向用户呈现的内容）：\n>\n> 请在浏览器中打开下面的授权链接完成授权：\n>\n> ```text\n> https://accounts.google.com/o/oauth2/auth?access_type=offline&state=...&client_id=...&redirect_uri=...&scope=...&prompt=consent\n> ```\n\n---\n\n## 支持的平台\n\n| 用户说法                         | `--media-type` 参数值   | 备注                                                           |\n| -------------------------------- | ----------------------- | -------------------------------------------------------------- |\n| YouTube                          | `YouTube`               |                                                                |\n| TikTok                           | `TikTokBusinessAccount` | ⚠️ 必须用这个值，传 `TikTok` 会跳到错误的授权页                |\n| Instagram / IG                   | `Instagram`             |                                                                |\n| Facebook / FB                    | `Facebook`              |                                                                |\n| LinkedIn                         | `LinkedIn`              |                                                                |\n| Twitter（即 X / 推特，同一平台） | `Twitter`               | Twitter 已更名为 X，前端显示为\"X\"，但 API 参数固定为 `Twitter` |\n\n---\n\n## 何时需要重新授权\n\n以下情况需要对账号重新执行 `authorize`：\n\n- `list-accounts --json-out` 落盘数据中 `invalidOAuthToken: true`\n- `list-accounts` 显示账号状态为\"异常\"或\"已过期\"\n- 发布任务失败，错误原因为 Token 失效\n\n---\n\n## 交叉引用\n\n- 查看账号 Token 状态 → 参见 `references/list-accounts.md`\n- 重新发布失败的任务项 → 参见 `references/task.md`\n\nFile v1.1.44:references/core/agent-conventions.md\n\n# Agent 执行规范（数据处理纪律唯一真相源）\n\n> 本文件是 siluzan-cso Skill 下 AI 助手的**通用数据纪律**：加载纪律、数据处理协议、防工具死循环、交付自检。\n> 各域 reference（`references/*.md`）只讲命令参数与字段口径，**不再重复**这些规则，需要处单行指向本文件。\n> **知识库确定**（`<knowledge_base_selection>`、何时跳过 `rag list` / `planning enterprises`）见 `references/core/knowledge-base-resolution.md`。\n> 脚本示例（`--json-out` + `node -e` 读盘）见 `references/core/tips.md`。\n\n---\n\n## 一、文档加载纪律\n\n本 Skill 采用 **SKILL 路由 + references 按需加载**；**「按需」= 每个用户任务都要按需，不是整段对话只读一次**。\n\n| 触发                                                              | 动作                                                                                                                                                                          |\n| ----------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| **任务需锁定企业知识库**（RAG、planning、三库写稿涉及品牌事实等） | **Read** `references/core/knowledge-base-resolution.md`，再读当次域 reference                                                                                                 |\n| **新的用户任务 / 同对话内换话题**（新账号、新平台、新报表/规划）  | 按 `SKILL.md` 命令索引 **重新 Read** 该任务对应的 `references/<域>.md` 后再执行 CLI；**禁止**沿用上一任务的参数记忆——对话会被压缩，「读过」≠ 当前上下文仍含正确字段名与 flags |\n| **上下文被压缩 / 记不清字段或命令**                               | 重读 `SKILL.md` 命令索引 + 当次任务 reference                                                                                                                                 |\n| **CLI 返回 400 / 字段对不上**                                     | 回到对应 reference 核对参数名与口径，**勿猜**                                                                                                                                 |\n\n所有 ID、命令 flags、业务数值以**当次 Read 的文档 + 当次 CLI 输出**为准；数值只来自本次 stdout 或脚本读盘结果，不引用对话记忆里的示例值。\n\n---\n\n## 二、数据处理协议（最高优先级，防工具死循环）\n\n读取/列表/检索/详情类命令（`list-accounts`、`account-group list`、`persona list`、`rag list/query`、`report fetch/records`、`planning enterprises/content-types/list/get`、`task list/detail/comment list`、`list-members`）都支持 **`--json-out <路径>`**：业务数据落盘为唯一真相源，stdout 只回**一行摘要 + agentHint**。每条 `--json-out` 命令成功后**必须按顺序**处理，不要跳步：\n\n1. **解析 stdout 一行摘要 JSON**：拿到 `outlineFile`、`writtenFiles[0]`、`manifestFile`、`agentHint`。摘要里**没有** `total` / `items` 等业务字段——**禁止对 stdout 写翻页循环**，业务数据只在 `writtenFiles[0]` 落盘文件里；**不要**硬编码 `<section>.json` 文件名，以摘要里的 `writtenFiles[]` / `manifestFile` 为准。\n2. **【outline 门禁·先读完再动手】Read 当次产出的每个 `*.outline.txt`**（schema-only，通常 <2KB）确认字段树后**才可**写脚本。类型字面量是**最后一个不以 `//` 开头的行**（提取写法 `outlineRaw.trimEnd().split('\\n').filter(l => !l.startsWith('//')).pop()`）。outline 是结构描述，**不是数据**，勿当 JSON `require`、勿贴给用户。**字段真相源 = 当次 outline**；SKILL.md / reference 里出现的字段名都是说明性示例，凡 outline 未确认的字段路径**禁止**凭印象写进脚本。\n3. **编写并执行脚本**（`node -e` / `.mjs` / `python`）`readFileSync` / `require` 读 `writtenFiles[0]` 做筛选、聚合、计算；**永远不得**用宿主 Read / `cat` / `type` / `Get-Content` 打开落盘业务 `*.json`（可能 MB 级，会撑爆上下文）。\n4. **交付物用代码写出**；向用户展示的数字须来自**脚本 stdout**，不在对话里手填、改数、心算汇总。\n\n| 允许 Read 的文件                        | 必须用代码读取的文件                       |\n| --------------------------------------- | ------------------------------------------ |\n| `references/**/*.md`（Skill 文档）      | 所有 `--json-out` 业务 `*.json`            |\n| 当次 `*.outline.txt`                    | manifest 中的路径索引（脚本 `JSON.parse`） |\n| stdout 一行摘要、你刚写出的最终产物文件 | 用户提供的同构大 JSON                      |\n\n**已有 JSON 不重跑**：用户已保存输出，或只问「怎么从一坨 JSON 里筛字段」时，**直接读本地文件**喂给脚本，不必为示例再执行业务命令。\n\n**无结果即停**：用户指定的账号 / 知识库 / 任务 ID 查无结果时，**如实告知用户并停止**，禁止翻页 grep 自行换 ID 或反复重跑命令（会导致报错户、死循环）。\n\n**中间结果一律落盘**：跨步骤数据不靠对话记忆；Windows 避免管道传 JSON，优先 `--json-out` + `node -e` 读文件。\n\n---\n\n## 三、`--json` 已移除\n\n为杜绝整坨 JSON 打到 stdout 引发的翻页死循环，数据命令的 `--json` **已移除**，统一改用 `--json-out <目录或 *.json 文件>`。若仍传 `--json`，CLI 会 exit 1 并提示改用 `--json-out`（`workflow validate` 例外，其输出小、保留 `--json`）。写入/动作类命令（`publish`、`upload`、`persona create`、`account-group create/update/delete/...`、`task start/stop/...`、`planning generate/regenerate/...`）只输出简洁人类可读确认，无需 `--json-out`。\n\n---\n\n## 四、执行流程与交付自检\n\n**计划 → 确认 → 执行 → 验证 → 预测**：\n\n1. 按 §一 Read 当次任务 reference → 用 `-h` 确认命令 → 向用户输出操作计划。\n2. 涉及写入/修改/删除的操作**必须先与用户确认**。\n3. 按计划执行，说明每步意图。\n4. 用成对的读命令复核写入结果；异步任务（`planning watch`、`task` 发布）按提示轮询直到完成/失败。\n5. 报告 / 含数字话术交付前，**亲自 Read 最终产物**核对：数字来自脚本 stdout、账号 ID 与用户给定一致、无模板占位残留、空数据章节明确标注（禁止编造数字填坑）。\n6. 全部完成后预测用户下一步操作。\n\nFile v1.1.44:references/core/knowledge-base-resolution.md\n\n# 知识库确定（通用）\n\n> **唯一真相源**：凡任务需要锁定「用哪个企业知识库」（RAG 的 `--folder-id`、规划的 `--enterprise-id` / `--enterprise-name`、三库写稿前的 RAG 等），**先读本文件**，再决定是否调用 `rag list` / `planning enterprises`。\n>\n> 数据处理纪律见 `references/core/agent-conventions.md`。RAG 检索策略见 `references/rag.md`。规划域「知识库企业 ID vs 组织归属 ID」见 `references/planning.md`「两种企业 ID 勿混用」。\n\n---\n\n## `<knowledge_base_selection>` 是什么\n\nDeerFlow / CSO 宿主在对话 system prompt 中注入的 XML 块，表达本轮知识库状态。可能是两种语义之一：\n\n### A. 已选具体库（可用）\n\n用户**已在界面「知识库」popover 选定具体企业知识库**（非「全部」、非「关闭」）。\n\n典型一行内容类似：\n\n```text\nThe user has selected a specific enterprise knowledge base for this turn: 「品牌资料库」(comid=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx).\n```\n\n从该段可解析：\n\n| 字段  | 来源            | 含义                                                                                                   |\n| ----- | --------------- | ------------------------------------------------------------------------------------------------------ |\n| comid | `comid=…`       | 知识库企业目录 ID（与 `rag list` 的 `id`、`planning enterprises` 的 `id` / `folders[].id` **同口径**） |\n| 库名  | 「…」中的展示名 | 向用户确认摘要、对话中称呼该库时用                                                                     |\n\n> **术语**：业务上常叫 comid / 知识库企业 ID / folder id——在本 Skill 中指向**同一 UUID**，只是不同 CLI 命令的参数名不同（见下文映射表）。\n\n### B. 知识库未开启（不可用）\n\n块内出现类似文案（中英文皆可）：\n\n```text\n知识库功能未开启，不可使用。Do NOT call any enterprise KB tools …\n```\n\n表示本轮**知识库能力未开启**，**不可**走 RAG / 企业知识库检索路径。见下方「知识库未开启时」。\n\n---\n\n## 知识库未开启时（selection 含「不可使用」提示）\n\n**识别**：`<knowledge_base_selection>` 存在，且内容含「知识库功能未开启」「不可使用」或等价英文（`Do NOT call any enterprise KB tools` 等）。\n\n**强制动作**：\n\n1. **禁止**调用一切 RAG / 知识库相关 CLI，包括但不限于：\n   - `siluzan-cso rag list` / `rag query`\n   - `siluzan-cso planning enterprises`（以及依赖企业知识库 ID 的 planning 检索路径）\n   - 其他会打企业知识库 / KB 工具的命令\n2. **先向用户说明**：本轮知识库不可用（界面未开启或未选库），因此无法做贴库检索 / 无法按知识库锁定企业。\n3. **再按任务是否依赖知识库分支**：\n\n| 任务性质       | 判定示例                                                                                           | 动作                                                                                                           |\n| -------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- |\n| **必须知识库** | 用户明确要求按知识库作答、三库写稿须贴库拆素材、品牌事实必须以 RAG 为准、planning 必须锁定企业库等 | **终止**当前依赖知识库的步骤；告知用户需在界面开启并选定知识库后重试；**禁止**用联网搜索、模型通识或猜 ID 顶替 |\n| **非必须**     | 纯文案润色、人设闲聊、发布/账号操作、不依赖企业素材的通用问答等                                    | 告知知识库不可用后，**继续**用不依赖 RAG 的路径完成任务                                                        |\n\n**禁止**：把「未开启」当成「无已选库」去走 `rag list` / 全库检索回退；也禁止静默跳过而不告知用户。\n\n---\n\n## 默认动作（有已选库且可用时）\n\n仅当 selection 为 **A（含 `comid=`）** 时适用：\n\n1. **直接使用**解析出的 `comid` 与库名。\n2. **跳过**列表解析命令：\n   - RAG → **跳过** `rag list`（不要再说「请先选知识库」或按名称重新匹配 ID）\n   - 规划 → **跳过** `planning enterprises`（不要再说「请先选企业」）\n3. **禁止**：声称用户未选择、反复索要 comid、或按名称重解析 ID（用户明确要换库时除外，见「例外」）。\n\n---\n\n## 语义对齐\n\n- 用户说「我选的知识库 / 这个知识库 / the knowledge base I picked」→ **始终指** `<knowledge_base_selection>` 里**这一条**库（仅 A 态）。\n- 用户**已经选过**；勿与「全部知识库检索」（无 selection、RAG 不传 `--folder-id`）混淆。\n- 若为 **B 态（未开启）**，即使用户口头说「查知识库」，也按「知识库未开启时」处理，不可假装已选库。\n\n---\n\n## 无已选库时的回退\n\n**触发条件**（满足其一即走回退；**不含**「未开启」B 态——B 态走上一节，禁止回退到 list）：\n\n- 上下文中**没有** `<knowledge_base_selection>`，且用户也**未**给出可核验的知识库 ID（comid / folder id / enterprise-id）；或\n- 用户只给了企业/库**名称**、未给 ID。\n\n此时按场景解析：\n\n| 场景     | 命令                                                       | 产出用途                                             |\n| -------- | ---------------------------------------------------------- | ---------------------------------------------------- |\n| RAG 检索 | `siluzan-cso rag list --rag-only --json-out ./snap-cso`    | 按名称语义匹配 → `--folder-id`                       |\n| 内容规划 | `siluzan-cso planning enterprises [--json-out ./snap-cso]` | 按名称匹配 → `--enterprise-id` + `--enterprise-name` |\n\n**匹配规则**：语义近似 > 包含关键词；多个近似匹配时让用户选择；**无匹配时如实说明并停止，禁止猜测 ID**（见 `agent-conventions.md`「无结果即停」）。\n\nRAG **全库检索**（不传 `--folder-id`）仅当用户意图明确为跨库/公共素材且**未**指定品牌时。\n\n### 人设默认知识库（写稿场景兜底）\n\n三库写稿前解析 `--folder-id` 时，若**没有** `<knowledge_base_selection>`、用户本轮也**未**指定知识库，但当前已加载人设的 `knowledgeBaseId` 字段非空 → **默认用它作 `--folder-id`**（该字段即知识库 comid，与本文件其他 ID 同口径），无需再 `rag list`。\n\n- 若 selection 为 **B 态（未开启）** → **不适用**本兜底：仍按「知识库未开启时」处理（写稿贴库属必须知识库时终止）。\n- 用户本轮明确指定了别的库 / 明确要换库 → 以用户为准，忽略人设默认。\n- 人设 `knowledgeBaseId` 为空 → 回到上方按名称 `rag list` / 全库检索的常规回退。\n\n---\n\n## 仍须 list / enterprises 的例外\n\n| 情况                                                      | 动作                                                                                                                    |\n| --------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------- |\n| 用户**明确要换**另一家企业/库，与已选不一致               | 重新 `rag list` 或 `planning enterprises` 解析新目标                                                                    |\n| selection 里只有 `comid=`、无库名，且对话中也取不到展示名 | 只读 `planning enterprises --json-out` 或 `rag list --json-out` **核对名称**（ID 仍用 selection 的 comid，勿重解析 ID） |\n| 无 `<knowledge_base_selection>`，用户只给了名称、未给 ID  | **必须**走上方「回退」列表命令                                                                                          |\n| selection 含「知识库功能未开启 / 不可使用」               | **禁止** list / query；告知用户后按是否必须知识库继续或终止（见「知识库未开启时」）                                     |\n\n---\n\n## CLI 参数映射\n\n| 从 selection / list 取得 | RAG（`rag query`）    | 规划（`planning generate` / `list` / …） |\n| ------------------------ | --------------------- | ---------------------------------------- |\n| comid（知识库企业 ID）   | `--folder-id <comid>` | `--enterprise-id <comid>`                |\n| 库名 / list 的 `name`    | 向用户确认摘要时用    | `--enterprise-name`                      |\n\n**禁止混用**：组织 `belong-to-id`、RAG 查询链路上的 `belongToId` / `companyId` **不是** `--enterprise-id` 或 `--folder-id`；规划域细节见 `references/planning.md`「两种企业 ID 勿混用」。\n\n---\n\n## 决策流程（速查）\n\n```text\n上下文有 <knowledge_base_selection>？\n  ├─ 是 → 内容含「未开启 / 不可使用」？\n  │       ├─ 是 → 禁止 rag / KB 相关命令 → 告知用户知识库不可用\n  │       │       ├─ 任务必须知识库 → 终止依赖步骤，请用户开启并选定后再试\n  │       │       └─ 任务非必须 → 用不依赖 RAG 的路径继续\n  │       └─ 否（含 comid=）→ 取 comid + 库名 → 映射到 --folder-id / --enterprise-id+name → 跳过 list/enterprises\n  │               └─ 用户明确换库？→ 是：走 list/enterprises 解析新目标\n  └─ 否 → 用户给了可核验 ID？\n          ├─ 是：直接用\n          └─ 否 →（写稿场景）当前人设 knowledgeBaseId 非空？\n                  ├─ 是：用它作 --folder-id\n                  └─ 否：rag list 或 planning enterprises 按名称解析 → 无匹配则停止\n```\n\nFile v1.1.44:references/core/tips.md\n\n# CLI 脚本食谱：`--json-out` 落盘 + Node.js 精准查询\n\n> 通用纪律（加载纪律、数据处理协议「摘要 → outline → 脚本读 JSON」、防死循环、交付自检）**只在** `references/core/agent-conventions.md` 维护，本文件是配套**脚本示例集**。\n> 核心约定一句话：凡需结构化数据，一律 **`--json-out <路径>`** 落盘，**用 `node -e` / 脚本**读 JSON 筛选聚合；**禁止**用宿主 Read 工具打开落盘业务 `*.json`；唯一允许 Read 的数据结构文件是 `*.outline.txt`。\n\n---\n\n## 落盘产物与命名\n\n一条 `--json-out` 命令成功后，目标目录下会生成三类文件，stdout 回一行摘要 JSON：\n\n- 业务数据：`<section>[-<查询id>].json`（如 `list-accounts-youtube.json`、`task-detail-<publishId>.json`）\n- 结构描述：同名 `<section>[-<查询id>].outline.txt`（schema-only，**先读它**）\n- 索引清单：`cli-manifest[-<查询id>].json`（`artifacts[].file` 指向业务 JSON）\n\n**读文件以 stdout 摘要里的 `writtenFiles[]` / `manifestFile` 为准**，不要把 `<section>.json` 当成不变的硬编码。若传入的是 `*.json` 文件路径（而非目录），业务数据写入该文件，outline 为同名 `*.outline.txt`。\n\n### outline 文件格式\n\n- 前几行为 `//` 注释（schema-only 声明、用法、类型推断口径）。\n- **类型字面量**是最后一个不以 `//` 开头的行；提取写法：`outlineRaw.trimEnd().split('\\n').filter(l => !l.startsWith('//')).pop()`。\n- outline 是结构描述，**不是数据**：勿 `require` 当 JSON，勿贴给用户。\n\n---\n\n## 基础模式：`--json-out` + 读文件 + `node -e`\n\n约定示例目录 **`./snap-cso`**（可换任意空目录）。文件名以当次摘要 `writtenFiles[0]` / `cli-manifest*.json` → `artifacts[].file` 为准。\n\n### 1. 账户列表提取特定账号 ID\n\n```bash\nmkdir -p ./snap-cso\nsiluzan-cso list-accounts --media-type YouTube --json-out ./snap-cso\nnode -e \"\nconst d = require('./snap-cso/list-accounts-youtube.json');\nconst rows = Array.isArray(d.accounts) ? d.accounts : [];\nrows.forEach((a) => console.log(a.mediaCustomerId, a.mediaCustomerName));\n\"\n```\n\nWindows PowerShell（避免管道传 JSON）：\n\n```powershell\n$SNAP = \".\\snap-cso\"; New-Item -ItemType Directory -Force -Path $SNAP | Out-Null\nsiluzan-cso list-accounts --media-type YouTube --json-out $SNAP\nnode -e \"const d=require('./snap-cso/list-accounts-youtube.json'); (d.accounts||[]).forEach(a=>console.log(a.mediaCustomerId, a.mediaCustomerName));\"\n```\n\n### 2. RAG 检索结果按 score 取 TopN\n\n```bash\nsiluzan-cso rag query -q \"产品核心卖点 用户使用场景\" --folder-id <id> --partition wiki --top-k 12 --json-out ./snap-cso\nnode -e \"\nconst fs = require('fs'), path = require('path');\nconst man = JSON.parse(fs.readFileSync('./snap-cso/cli-manifest.json','utf8'));\nconst art = man.artifacts.find(a => a.section.startsWith('rag-query')) || man.artifacts[0];\nconst d = require(path.join('./snap-cso', art.file));\nconst hits = d.output || [];\nhits.slice().sort((a,b)=>(b.score??0)-(a.score??0)).slice(0,8)\n  .forEach(h => console.log((h.score??0).toFixed(3), String(h.fields?.content||'').slice(0,60)));\n\"\n```\n\n### 3. 人设列表查 styleGuide 字符数 / 取指定人设 id\n\n`persona list` 落盘含 `styleGuide`（通常很长）；脚本只打印需要的字段，避免把长文吐进对话：\n\n```bash\nsiluzan-cso persona list --json-out ./snap-cso\nnode -e \"\nconst d = require('./snap-cso/persona-list.json');\nconst rows = d.results || [];\nrows.forEach(p => {\n  const len = p.styleGuideChars ?? String(p.styleGuide || '').length;\n  console.log(p.id, p.personaName, '(styleGuide', len, 'chars)');\n});\n\"\n```\n\n### 4. 任务列表筛异常项 / 汇总状态\n\n```bash\nsiluzan-cso task list --failed-only --json-out ./snap-cso\nnode -e \"\nconst d = require('./snap-cso/task-list.json');\nconst list = d.list || [];\nconsole.log('共', d.total, '条异常任务');\nlist.forEach(t => console.log(' ', t.publishId, t.taskName));\n\"\n```\n\n任务级状态筛选（`0` 执行中 · `1` 已完成 · `2` 已中止）示例：\n\n```bash\nsiluzan-cso task list --status 2 --json-out ./snap-cso\nnode -e \"\nconst d = require('./snap-cso/task-list.json');\nconsole.log('共', d.total, '条已中止任务');\n(d.list || []).forEach(t => console.log(' ', t.publishId, t.taskName));\n\"\n```\n\n### 5. 运营报表汇总\n\n```bash\nsiluzan-cso report fetch --media Douyin --days 7 --json-out ./snap-cso\nnode -e \"\nconst fs = require('fs'), path = require('path');\nconst manFile = fs.readdirSync('./snap-cso').find(f => f.startsWith('cli-manifest') && f.endsWith('.json'));\nconst man = JSON.parse(fs.readFileSync(path.join('./snap-cso', manFile), 'utf8'));\nconst art = man.artifacts.find(a => a.section.startsWith('report-fetch')) || man.artifacts[0];\nconst d = require(path.join('./snap-cso', art.file));\nconsole.log('keys:', Object.keys(d));\nconsole.log('sections:', Object.keys(d.sections || {}));\n\"\n```\n\n---\n\n## 调试技巧\n\n### 查看原始 API 响应（`--verbose` 打到 stderr）\n\n```bash\nsiluzan-cso list-accounts --media-type YouTube --json-out ./snap-cso --verbose 2> ./snap-cso/verbose.log\n```\n\n### 验证快照 JSON 结构\n\n```bash\nsiluzan-cso list-accounts --media-type YouTube --json-out ./snap-cso\nnode -e \"\nconst d = require('./snap-cso/list-accounts-youtube.json');\nconsole.log('keys:', Object.keys(d));\nconsole.log('accountCount:', (d.accounts||[]).length, 'sample:', d.accounts && d.accounts[0] && Object.keys(d.accounts[0]));\n\"\n```\n\n---\n\n## 脚本编写小贴士\n\n- **用 `process.stdout.write` 而不是 `console.log` 提取单个值**：前者不带换行符，方便直接赋给 shell 变量。\n- **节点代码复杂时拆分写法**：不要写超过 10 行的 `node -e` 单行，改用 `.mjs` 脚本文件。\n- **不确定文件名时**先看 stdout 摘要的 `manifestFile`，再读 `cli-manifest*.json` 的 `artifacts[]` 找到业务 `*.json`。\n\nFile v1.1.44:references/extract-cover.md\n\n# extract-cover — 视频封面截取\n\n> 从视频中截取指定时间点的帧，按目标平台规格裁剪缩放，可选自动上传到素材库。\n> 需要本机安装 **ffmpeg**，命令会自动检测，未安装时报错提示。\n\n---\n\n## 用法\n\n```bash\n# 查看所有平台规格\nsiluzan-cso extract-cover --list-platforms\n\n# 截取第 3 秒的帧，按 YouTube 规格输出\nsiluzan-cso extract-cover -f video.mp4 -p youtube -t 3\n\n# 截取多个时间点（输出多张备选封面）\nsiluzan-cso extract-cover -f video.mp4 -p tiktok -t 1 5 10\n\n# 截取后自动上传到素材库（输出 sourceImageId，可直接填入发布配置）\nsiluzan-cso extract-cover -f video.mp4 -p youtube -t 3 --upload\n\n# 指定输出目录\nsiluzan-cso extract-cover -f video.mp4 -p youtube -t 3 -o /path/to/output/\n```\n\n---\n\n## 平台规格速查\n\n| 平台 ID（`-p` 参数） | 平台名称           | 尺寸      | 比例 |\n| -------------------- | ------------------ | --------- | ---- |\n| `youtube`            | YouTube            | 1280×720  | 16:9 |\n| `youtube-shorts`     | YouTube Shorts     | 1080×1920 | 9:16 |\n| `tiktok`             | TikTok             | 1080×1920 | 9:16 |\n| `twitter`            | Twitter / X        | 1280×720  | 16:9 |\n| `facebook`           | Facebook           | 1280×720  | 16:9 |\n| `instagram`          | Instagram          | 1080×1080 | 1:1  |\n| `instagram-portrait` | Instagram Portrait | 1080×1350 | 4:5  |\n| `douyin`             | 抖音 (Douyin)      | 1080×1920 | 9:16 |\n| `channel`            | 微信视频号         | 1080×1440 | 3:4  |\n\n> 完整规格（含文件大小限制等）运行 `siluzan-cso extract-cover --list-platforms` 查看。\n\n---\n\n## `--upload` 输出字段\n\n加 `--upload` 后自动上传，输出：\n\n| 字段            | 用途                           |\n| --------------- | ------------------------------ |\n| `sourceImageId` | 发布配置 `cover.sourceImageId` |\n| `imageUrl`      | 发布配置 `cover.imageUrl`      |\n\n---\n\n## 交叉引用\n\n- 上传封面到素材库（不截取，直接上传已有图片）→ 参见 `references/upload.md`\n- 获取封面后提交发布 → 参见 `references/publish.md`\n\nFile v1.1.44:references/list-accounts.md\n\n# list-accounts — 媒体账号列表\n\n> 账号 ID（entityId / mediaCustomerId）是发布配置和数据查询的基础字段，使用 `publish` 或 `report` 前通常需要先运行本命令。\n\n---\n\n## 常用场景速查\n\n| 用户意图                                 | 命令                                                                                   |\n| ---------------------------------------- | -------------------------------------------------------------------------------------- |\n| 查所有账号总览（粉丝/播放/获赞横向对比） | `siluzan-cso list-accounts`                                                            |\n| 按平台筛选账号                           | `siluzan-cso list-accounts --media-type <平台>`                                        |\n| 按名称搜索账号                           | `siluzan-cso list-accounts --name \"账号名\"`                                            |\n| 获取账号完整字段（用于发布配置或脚本）   | `siluzan-cso list-accounts --json-out ./snap-cso`                                      |\n| 精准定位单个账号（名称 + 平台）          | `siluzan-cso list-accounts --name \"账号名\" --media-type YouTube --json-out ./snap-cso` |\n| 只看异常/过期账号                        | `siluzan-cso list-accounts --state abnormal`                                           |\n| 只展示基础信息（隐藏总览数据）           | `siluzan-cso list-accounts --no-overview`                                              |\n\n---\n\n## 平台名称对照表\n\n| 用户常说                                    | `--media-type` 参数值   |\n| ------------------------------------------- | ----------------------- |\n| 抖音                                        | `Douyin`                |\n| TikTok                                      | `TikTokBusinessAccount` |\n| YouTube                                     | `YouTube`               |\n| 微信视频号 / 视频号                         | `Wechat`                |\n| Instagram / IG                              | `Instagram`             |\n| Facebook / FB                               | `Facebook`              |\n| Twitter / X（同一平台，Twitter 已更名为 X） | `Twitter`               |\n| Kwai / 快手                                 | `Kwai`                  |\n\n> 同一平台名称在 `--media-type`（list-accounts）和 `report fetch --media` 中通用。\n\n---\n\n## JSON 输出字段说明\n\n`--json-out` 落盘的每个账号对象中，常用字段如下（处理落盘 JSON 前先读同名 `*.outline.txt`，见 `references/core/agent-conventions.md`）：\n\n| 字段                          | 用途                                                                   |\n| ----------------------------- | ---------------------------------------------------------------------- |\n| `entityId`                    | 发布配置 `accounts[].entityId`（UUID 格式）                            |\n| `mediaCustomerId`             | `report fetch --maids <id>` 的参数；也用于账号分组                     |\n| `mediaAccountType`            | 发布配置 `accounts[].mediaAccountType`；`--media-type` 参数值          |\n| `mediaCustomerName`           | 发布配置 `accounts[].mediaCustomerName`                                |\n| `externalMediaAccountTokenId` | 发布配置 `accounts[].externalMediaAccountTokenId`（UUID 格式）         |\n| `invalidOAuthToken`           | `true` 表示 Token 已失效，需重新授权（参见 `references/authorize.md`） |\n| `expiresOn`                   | Token 到期时间                                                         |\n| `overview.fansCount`          | 当前粉丝数                                                             |\n| `overview.videoCount`         | 发布作品总数                                                           |\n| `overview.playCount`          | 历史总播放数                                                           |\n\n---\n\n## 示例\n\n```bash\n# 查所有账号总览\nsiluzan-cso list-accounts\n\n# 只看 TikTok 平台\nsiluzan-cso list-accounts --media-type TikTokBusinessAccount\n\n# 精准定位 + 获取完整字段（用于填写发布配置），落盘后用脚本读盘（见 references/core/tips.md）\nsiluzan-cso list-accounts --name \"品牌账号\" --media-type YouTube --json-out ./snap-cso\n\n# 搜索所有平台中名称包含关键词的账号\nsiluzan-cso list-accounts --name \"品牌名\" --json-out ./snap-cso\n\n# 只看异常账号（Token 过期等）\nsiluzan-cso list-accounts --state abnormal\n```\n\n---\n\n## AI 行为规则\n\n- 用户要找一个具体账号时，**优先用 `--name` + `--media-type` 双重过滤**，通常可直接得到唯一结果。\n- 找到账号后，`entityId` + `externalMediaAccountTokenId` + `mediaCustomerId` 即可直接填入发布配置，无需再次询问用户。\n- 账号 `overview` 字段已包含粉丝数/播放数等基本数据，找到账号后无需再单独调用 `report fetch`。\n- `invalidOAuthToken: true` 的账号需先重新授权，再发布（参见 `references/authorize.md`）。\n\n---\n\n## 交叉引用\n\n- 发布时需要账号字段 → 参见 `references/publish.md`\n- 用账号 ID 查运营数据 → 参见 `references/report.md`\n- 将账号加入分组 → 参见 `references/account-group.md`\n- 账号 Token 失效需重授权 → 参见 `references/authorize.md`\n\nFile v1.1.44:references/persona.md\n\n# persona：人设查询与保存（GetPersonas / AddPersona）\n\n对应 Web / MarkAI `getPersonas()`、`addPersona()`：\n\n- 列表：`POST {csoBaseUrl}/cso/v1/platformdata/GetPersonas`，请求体 `{}`\n- 新建：`POST {csoBaseUrl}/cso/v1/platformdata/AddPersona`，请求体 `{ personaName, styleGuide, materials: [] }`（可选带 `mediaType`（运营平台）、`knowledgeBaseId`（默认知识库 id），仅在传入时携带）\n\n返回人设含 **`styleGuide`**（Markdown 风格指南）、`materials`、`taskStatus` 等，供文案与三库工作流使用。\n\n## 命令一：查询人设列表\n\n```text\nsiluzan-cso persona list [选项]\n```\n\n| 选项                  | 说明                                                                                      |\n| --------------------- | ----------------------------------------------------------------------------------------- |\n| `-t, --token <token>` | 凭据（可选，默认读 `~/.siluzan/config.json`）                                             |\n| `--id <id>`           | 只显示指定人设 id                                                                         |\n| `--name <text>`       | 按人设名称子串过滤（客户端过滤）                                                          |\n| `--json-out <path>`   | 将完整人设（含 `styleGuide`）落盘到目录或 \\*.json 文件，stdout 仅一行摘要（防工具死循环） |\n| `--no-style-guide`    | 搭配 `--json-out`：省略 `styleGuide`，改输出 `styleGuideChars`（字符数）                  |\n| `--unicode`           | 表格使用 Unicode 线框                                                                     |\n| `--verbose`           | 打印详细错误                                                                              |\n\n终端表格仅展示 `styleGuide` 摘要；需要全文时用 `--json-out` 落盘后脚本读盘。\n\n> **【硬规范·执行前必读】调用 `persona list` 前，必须先 Read `references/core/tips.md`（例 #3 为人设专用「`--json-out` 落盘 + `node -e` 读盘」脚本）。** `styleGuide` 通常每条数千字，一律落盘后用脚本读取需要的字段，**禁止**把全文吐到 stdout（会被宿主 bash 工具截断、丢记录、触发翻页死循环）。未读 tips.md、直接对 stdout 处理 `styleGuide` 视为违规。\n\n> **⚠️ 列全量列表用 `--json-out` 落盘即可（不再有截断风险）。** `styleGuide` 通常每条数千字，旧 `--json` 直吐到 stdout 动辄数万字符、\n> 极易被宿主 bash 工具从中间截断丢记录——这正是 `--json` 被移除、改 `--json-out` 落盘的原因。\n> 正确姿势：先 `persona list --json-out ./snap-cso --no-style-guide` 落盘精简列表（仅含 `styleGuideChars` 长度提示），脚本读盘选中目标后再用\n> `persona list --id <id> --json-out ./snap-cso` 单独落盘那一条的完整 `styleGuide`。\n\n`--no-style-guide` 模式下每条记录形如（去掉 `styleGuide`，新增 `styleGuideChars`）：\n\n```json\n{\n  \"id\": \"...\",\n  \"personaName\": \"...\",\n  \"taskStatus\": 3,\n  \"materials\": [],\n  \"styleGuideChars\": 5837\n}\n```\n\n## 命令二：保存人设到平台\n\n```text\nsiluzan-cso persona create --name <名称> ( --style-guide <markdown> | --style-guide-file <path> ) [选项]\n```\n\n| 选项                        | 说明                                                                                                          |\n| --------------------------- | ------------------------------------------------------------------------------------------------------------- |\n| `--name <name>`             | **必填**。人设名称，长度上限 60 字符                                                                          |\n| `--style-guide <markdown>`  | 直接传入 styleGuide markdown 内容（与 `--style-guide-file` 二选一）                                           |\n| `--style-guide-file <path>` | 从本地 markdown 文件读取 styleGuide（长文推荐用文件，与 `--style-guide` 二选一）                              |\n| `--platform <platform>`     | 可选。运营平台（如 `douyin` / `wechat_mp` 等），映射到请求体 `mediaType`，仅在传入时携带                      |\n| `--kb-id <id>`              | 可选。默认知识库 id（从知识库创建人设时传入对应知识库 comid），映射到请求体 `knowledgeBaseId`，仅在传入时携带 |\n| `-t, --token <token>`       | 凭据（可选）                                                                                                  |\n| `--verbose`                 | 打印详细错误                                                                                                  |\n\n> `--platform` → CSO `AddPersona` 的 `mediaType`（社媒平台），`--kb-id` → `knowledgeBaseId`（默认知识库 id）。二者均为可选，仅在你显式传值时才带上。\n\n> **建卡可选绑库**：非从知识库反推创建人设时，可先 `siluzan-cso rag list` 让用户选一个默认知识库绑定（用户可不绑），保存时带 `--kb-id`；从知识库合成的人设直接用合成所用库的 comid。详见 `three-lib-content-workflow/persona-onboarding.md`。\n\n> `persona create` 为写入命令，仅输出简洁人类可读确认（含新建人设 `id`），不再支持 JSON 输出。\n\n> **CLI 不会替你生成 styleGuide**。AI 助手在调用本命令前，应先按\n> `three-lib-content-workflow/persona-reverse-sop.md` 的 SOP 把 styleGuide 写好（Markdown 格式），再用\n> `--style-guide-file` 把文件喂给 CLI。这样保持 CLI 只做平台持久化、不依赖外部 LLM 的设计。\n\n### 典型用法\n\n1. AI 助手先把 styleGuide 写到临时文件，如 `./tmp-persona.md`\n2. 调命令保存：\n   ```text\n   siluzan-cso persona create --name \"外贸老炮\" --style-guide-file ./tmp-persona.md\n   ```\n3. 拿到回包里的 `id`，后续写稿时用 `siluzan-cso persona list --id <id> --json-out ./snap-cso` 落盘后脚本读全文复核。\n   （若是「先浏览全部人设再挑一个」，先 `persona list --json-out ./snap-cso --no-style-guide` 落盘精简列表，再按 `--id` 取全文。）\n\n## 字段说明\n\n| 字段                  | 含义                                                       |\n| --------------------- | ---------------------------------------------------------- |\n| `personaName`         | 人设名称                                                   |\n| `styleGuide`          | 风格指南正文（Markdown）                                   |\n| `materials`           | 参考素材（文件名、URL 等），新建时固定传空数组             |\n| `mediaType`           | 运营平台 / 社媒平台（可选，仅新建时透传）                  |\n| `knowledgeBaseId`     | 默认知识库 id（可选，仅新建时透传）                        |\n| `taskStatus`          | `1` 待生成 · `2` 生成中 · `0`或`3` 生成完成 · `4` 生成失败 |\n| `createdDateTime`     | **UTC** 时间字符串                                         |\n| `lastChangedDateTime` | **UTC** 时间字符串                                         |\n\n> 时间字段展示前必须做时区转换，详见 SKILL.md 「时间字段输出约定（全局）」。\n\n> **`knowledgeBaseId` 的写稿用途**：拿到目标人设后，若其 `knowledgeBaseId` 非空、且用户本轮未另行指定知识库、上下文也无当前已选库，写稿检索默认以该 id 作 `rag query --folder-id`（它就是知识库 comid）。优先级详见 `references/core/knowledge-base-resolution.md`。\n\n## 与 Skill 的关系\n\n编写口播/成稿前应先拿到目标人设的 `styleGuide`，再结合 `three-lib-content-workflow/` 中的 SOP。\n若用户要求「新建一个人设」，先按 `persona-reverse-sop.md` 反推风格指南、确认无误后再用 `persona create` 写回平台。\n详见上级 `SKILL.md`「三库内容工作流」。\n\nFile v1.1.44:references/planning.md\n\n# planning — AI 内容规划\n\n> 对应 CSO Web 端 `/planning` 页面。基于企业知识库生成、查看、再生成和导出**月度内容规划**——含依据知识库、发布频次、规划逻辑以及图文/视频分表的可评审方案。\n>\n> 通用数据纪律（`--json-out`、写入确认、交付自检）见 `references/core/agent-conventions.md`。\n> 知识库确定（`<knowledge_base_selection>`、跳过 list/enterprises）见 `references/core/knowledge-base-resolution.md`。\n\n---\n\n## 判断任务类型\n\n**先读本节，再决定读哪一章。** 不要把只读查询误当成生成流程。\n\n| 用户意图                           | 动作                                                                                                                                                                                  | 阅读范围                                                                        |\n| ---------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------- |\n| 生成或再生成规划                   | 执行完整生成工作流；生成、再生成、取消或删除均为**写入操作**，执行前取得明确确认                                                                                                      | 本章 + 下方 **[生成工作流](#生成工作流)** 全章                                  |\n| 只查看已有规划、任务状态或企业列表 | 只读查询，无需额外确认                                                                                                                                                                | **跳过 [生成工作流](#生成工作流)**；按需读 [命令速查](#命令速查) 与对应命令小节 |\n| 讨论产品方案、字段或示例           | 仅输出方案，不调用生成命令                                                                                                                                                            | **跳过 [生成工作流](#生成工作流)**                                              |\n| 指定某个知识库文件夹或文件         | 说明原生规划按企业 ID 读取企业知识，不能在 `planning generate` 中指定 `folder-id` 或 `source-id`；只有用户明确要求限定或核验素材来源时，才另行使用 RAG 检索（见 `references/rag.md`） | 视情况读 RAG 文档；**不进入生成工作流**                                         |\n\n---\n\n## 生成工作流\n\n> **门禁**：仅当上一节判定为「生成或再生成规划」时阅读本章。**只读查询、导出已有规划、讨论方案**等任务**不得**阅读本章，也**不得**执行 `planning generate` / `planning regenerate`。\n\n### 目标与固定链路\n\n**上下文中已有 `<knowledge_base_selection>`（用户已选具体知识库，见 `references/core/knowledge-base-resolution.md`）时：**\n\n```\n收集月份 / 类型 / 频次 → 确认摘要 → generate [--watch] → 验证结果\n```\n\n**尚未确定知识库企业 ID 时：**\n\n```\n用户选择企业 → 解析知识库企业 ID → 收集月份 / 类型 / 频次 → 确认摘要 → generate [--watch] → 验证结果\n```\n\n界面和对话中向用户展示**企业名称**；调用接口时使用**知识库企业 ID**（`comid`，与 `planning enterprises` 返回的 `id` / `folders[].id` 同口径）。不要把组织 `belong-to-id` 当作知识库企业 ID。\n\n### 用户已选知识库\n\n见 **`references/core/knowledge-base-resolution.md`**（解析 `<knowledge_base_selection>`、默认跳过 `planning enterprises`、语义对齐、例外与 ID 映射）。\n\n规划域：`comid=` → `--enterprise-id`，库名 → `--enterprise-name`。无已选库时走下方「解析企业」与 `planning enterprises`。\n\n### 生成前收集信息\n\n#### 必填\n\n1. **知识库企业**：按 `references/core/knowledge-base-resolution.md` 确定 ID 与名称；无已选库时优先接收企业名称，再经 `planning enterprises` 解析。\n2. **规划月份**：格式 `YYYY-MM`。\n3. **内容类型**：`post`（图文）和/或 `video`（视频）。\n4. **发布频次**：每周几条或每月几条。\n\n#### 选填\n\n- 营销目标\n- 核心产品\n- 目标市场\n- 关键节点或活动\n- 内容语调\n- 合作总月数（6 / 12 / 24）及合作开始月份\n\n缺少选填项时允许由企业知识库与模型推断，**不要阻塞生成**。缺少必填项时，只询问尚缺的信息。\n\n### 两种「企业 ID」勿混用\n\n业务上都叫「企业 ID」，CLI 里对应**两个不同字段**，混用会导致查不到企业或生成失败。\n\n| 名称              | 出现位置                                                                      | 含义                                                           | 用于                                                                 |\n| ----------------- | ----------------------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------------- |\n| **知识库企业 ID** | `<knowledge_base_selection>` 中的 `comid=`；或 `planning enterprises` 的 `id` | 知识库里的企业目录 ID（**comid**）                             | `planning generate --enterprise-id`、`planning list --enterprise-id` |\n| **组织归属 ID**   | `planning enterprises --belong-to-id`                                         | 当前登录账号所属组织（类似 RAG 的 `belongToId` / `companyId`） | **仅**查询企业目录时的筛选参数                                       |\n\n**需要解析企业时（无 `<knowledge_base_selection>`）：**\n\n1. 跑 `planning enterprises`（一般**不要**传 `--belong-to-id`，除非明确要按组织筛选）。\n2. 从输出表格列「知识库企业ID」/「企业名称」，或 `--json-out` 落盘数据的 `folders[].id` / `folders[].name`，取 ID 与名称。\n3. 将二者分别填入 `planning generate --enterprise-id` 与 `--enterprise-name`。\n\n**禁止：** 把 `--belong-to-id`、RAG 用的 `belongToId` / `companyId` 当作 `--enterprise-id`。\n\n### TaskID 与 PlanID\n\n| 标识       | 来源                                                                                                                                | 用途                                                                   |\n| ---------- | ----------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------- |\n| **TaskID** | `planning generate` / `planning regenerate` stdout；`planning list` 表格「TaskID」列                                                | `planning watch`、`planning task cancel/retry/delete`                  |\n| **PlanID** | `planning watch` 或 `generate/regenerate --watch` 完成时 stdout「规划ID」；`planning list --json-out` 落盘数据中的 `list[].plan.id` | `planning get`、`planning regenerate`、`planning export txt --plan-id` |\n\n`planning list` **表格只显示 TaskID**，不显示 PlanID。未加 `--watch` 时，需 `planning watch <taskId>` 等到完成后从 stdout 取 PlanID，或对 list 使用 `--json-out` 读 `plan.id`。\n\n### 执行步骤\n\n**CLI 命令链：**\n\n```\n[可选 enterprises] → generate [--watch] → get → export txt\n                       └─ 或 generate 后 planning watch <taskId>\n```\n\n**Agent 步骤：**\n\n1. **检查环境**：确认 `siluzan-cso` 已安装；401 时引导 `siluzan-cso login`（见 `references/setup.md`）。不要展示或记录令牌。\n2. **确定企业**：按 `references/core/knowledge-base-resolution.md`；无已选库时跑 `planning enterprises` 按名称匹配（`--json-out` 落盘、多个近似匹配让用户选、无匹配则停止且禁止猜 ID）。\n3. **确认生成摘要**：写入前展示一行摘要并取得明确确认，例如：\n\n   > 海科佳｜2026-07｜图文 + 视频｜每周 2 条｜目标：获取海外询盘｜重点产品：智能挂面生产线\n\n   同时说明系统将根据所选知识库企业 ID 读取该企业知识并生成规划。\n\n4. **生成并监控**：把每周频次映射为 `--freq-unit week --freq-count N`，每月频次映射为 `--freq-unit month --freq-count N`（**须同时提供**）。只传用户提供或已明确确认的选填参数，**不要把空字符串作为参数传入**。\n5. **验证结果**：从 watch 完成输出或 `planning get <planId> --json-out` 核对（见下文「验证清单」）。未通过时先说明具体问题，征得确认后执行 `planning regenerate <planId> --watch`。\n\n### 示例：生成月度规划\n\n```bash\n# Step 1（无已选库时）：见 references/core/knowledge-base-resolution.md → planning enterprises\n# 有 <knowledge_base_selection> 时跳过本步，comid/库名取自该段\nsiluzan-cso planning enterprises\n# 可选：按组织筛选目录（勿将此值用于 generate）\n# siluzan-cso planning enterprises --belong-to-id <组织归属ID>\n\n# Step 2：发起生成任务（id/name 来自 <knowledge_base_selection>，或 Step 1）\nsiluzan-cso planning generate \\\n  --enterprise-id <comid> \\\n  --enterprise-name \"<企业名称>\" \\\n  --year-month 2026-07 \\\n  --content-types post,video \\\n  --freq-unit week \\\n  --freq-count 2 \\\n  --marketing-goal \"获取海外询盘\" \\\n  --key-products \"智能挂面生产线\" \\\n  --target-markets 中亚,东南亚 \\\n  --partnership-total-months 12 \\\n  --watch\n\n# Step 3：监控生成进度（未加 --watch 时；TaskID 来自 generate stdout）\nsiluzan-cso planning watch <taskId>\n# 完成后 stdout 会打印「规划ID: <planId>」\n\n# Step 4：查看规划详情（PlanID 来自 Step 3 完成输出，或 generate --watch 完成输出）\nsiluzan-cso planning get <planId>\n# 需要完整 JSON 时加 --json-out <目录或 *.json>\n\n# Step 5：导出为 TXT 文件（--plan-id 与 --input 二选一；-o/--output 可省略则自动命名）\nsiluzan-cso planning export txt --plan-id <planId> -o plan.txt\n```\n\n### 验证清单\n\n生成完成后核对：\n\n- 企业与月份正确。\n- 所选图文/视频类型完整。\n- 条数与频次一致。\n- 内容确实体现该企业的产品、行业、应用场景、客户或展会信息，而非通用空话。\n- 不编造知识库没有支持的认证、参数、客户或案例。\n- 规划逻辑体现企业所属行业及 B2B 决策特点。\n\n### 输出结构（面向用户交付）\n\n#### 规划总体信息\n\n- 企业\n- 规划月份\n- 内容类型\n- 发布频次\n- **依据知识库**：概括本次实际使用的企业资料类型（官网、品牌手册、产品特性、应用场景、展会或客户案例等）。不要宣称使用了未验证的资料。\n- **规划逻辑**：优先说明企业行业、目标受众和 B2B 决策特征，再说明「建立认知 → 强化专业与信任 → 引导合作」的内容节奏。\n\n#### 单条内容字段\n\n图文和视频分别成表，每条包含：\n\n| 字段     | 要求                                               |\n| -------- | -------------------------------------------------- |\n| 周次     | 每周 2 条时使用「第一周-1、第一周-2」等格式        |\n| 方向分类 | 如品牌认知、产品价值、专业知识、案例背书           |\n| 主题     | 可直接用于评审的选题标题                           |\n| 内容方向 | 说明该主题具体讲什么，不写「结合知识库」等内部措辞 |\n| 目标受众 | 明确到工厂老板、采购经理、经销商、技术负责人等     |\n\n不要增加平台列；平台分发不属于当前规划维度。图文与视频均被选择时必须分成两张表。\n\n### 内容质量规则\n\n- 把规划定位为供企业内部运营或代运营团队评审的**月度半成品**，规划到主题和方向，不直接扩写整篇文案或完整脚本。\n- 用企业真实名称、真实业务和真实产品，避免「企业 A」「某产品」等占位表达。\n- 让图文侧重专业解释、选型和决策支持；让视频侧重流程、场景、设备运转和直观传播。\n- 避免每条内容重复同一个卖点；覆盖认知、专业、信任和转化阶段。\n- 对外可见的「内容方向」中**不得**出现「根据知识库」「结合知识库」「AI 生成」等内部过程词。\n- 当知识不足时明确指出缺口，不用行业常识冒充企业事实。\n\n---\n\n## 命令速查\n\n| 命令                            | 说明                                                             |\n| ------------------------------- | ---------------------------------------------------------------- |\n| `planning enterprises`          | 查询企业目录（无 `<knowledge_base_selection>` 时生成前先选企业） |\n| `planning content-types`        | 查询可用内容类型（post / video）                                 |\n| `planning generate`             | 创建规划生成任务                                                 |\n| `planning watch <taskId>`       | 监听生成任务进度（SSE 实时推送）                                 |\n| `planning list`                 | 查询规划任务列表                                                 |\n| `planning get <planId>`         | 获取规划详情                                                     |\n| `planning regenerate <planId>`  | 对已有规划重新生成                                               |\n| `planning task cancel <taskId>` | 取消任务                                                         |\n| `planning task retry <taskId>`  | 重试失败/取消的任务                                              |\n| `planning task delete <taskId>` | 删除任务                                                         |\n| `planning export txt`           | 导出规划为 TXT（Markdown 表格格式）                              |\n\n---\n\n## planning enterprises — 查询企业目录\n\n```bash\n# 默认：列出可选企业（取输出 id 用于 generate）\nsiluzan-cso planning enterprises\n\n# 落盘完整数据（id 在 folders[].id），脚本读盘见 references/core/tips.md\nsiluzan-cso planning enterprises --json-out ./snap-cso\n\n# 按组织归属筛选（高级用法；该 ID 不可用于 generate）\nsiluzan-cso planning enterprises --belong-to-id <组织归属ID>\n```\n\n| 参数             | 说明                                                                                     |\n| ---------------- | ---------------------------------------------------------------------------------------- |\n| `--belong-to-id` | 组织归属 ID（`companyId`），仅传给素材库 querylist 做筛选；**不是** generate 用的企业 ID |\n| `--page-size`    | 目录条数上限（默认 100）                                                                 |\n\n> 上下文中已有 `<knowledge_base_selection>` 时，生成流程**不必**调用本命令；仅在没有已选库或需核对名称时使用。\n\n---\n\n## generate 主要参数\n\n| 参数                             | 必填 | 说明                                                                                                                       |\n| -------------------------------- | ---- | -------------------------------------------------------------------------------------------------------------------------- |\n| `--enterprise-id`                | ✅   | 知识库企业 ID（`<knowledge_base_selection>` 中的 `comid=`，或 `planning enterprises` 的 `id`；**不是** `--belong-to-id`）  |\n| `--enterprise-name`              | ✅   | 企业名称（`<knowledge_base_selection>` 中的库名，或 `planning enterprises` 的 `name`，须与 `--enterprise-id` 配套）        |\n| `--year-month`                   | ✅   | 规划月份，格式 `YYYY-MM`                                                                                                   |\n| `--content-types`                | ✅   | 内容类型，支持逗号或空格：`post`（图文）/ `video`（视频）                                                                  |\n| `--freq-unit`                    | —    | 发布频率单位：`week` / `month`；与 `--freq-count` **须同时提供**（只传其一 CLI 报错）                                      |\n| `--freq-count`                   | —    | 发布频率数量（正整数）；与 `--freq-unit` **须同时提供**                                                                    |\n\n\nArchive v1.1.43: 41 files, 147355 bytes\n\nFiles: _meta.json (131b), assets/publish-config-image.example.json (1153b), assets/publish-config.example.json (2244b), assets/three-lib-content-workflow.example.md (2601b), references/account-group.md (5519b), references/authorize.md (3357b), references/core/agent-conventions.md (6824b), references/core/knowledge-base-resolution.md (10064b), references/core/tips.md (5953b), references/extract-cover.md (2187b), references/list-accounts.md (5417b), references/persona.md (7987b), references/planning.md (26936b), references/platforms/douyin.md (8292b), references/platforms/linkedin.md (7621b), references/platforms/platform-rules.md (2846b), references/platforms/tiktok.md (4601b), references/platforms/wechat.md (10213b), references/platforms/youtube.md (5518b), references/publish.md (7715b), references/rag.md (17923b), references/report.md (4595b), references/setup.md (7696b), references/task.md (3901b), references/upload.md (1941b), references/validate-content.md (5745b), references/web-pages.md (5763b), scripts/install.ps1 (11187b), scripts/install.sh (6098b), skill-card.md (2468b), SKILL.md (26231b), three-lib-content-workflow/collaboration.md (4406b), three-lib-content-workflow/content-writer.workflow.md (16092b), three-lib-content-workflow/multi-track.md (8963b), three-lib-content-workflow/persona-onboarding.md (9338b), three-lib-content-workflow/persona-reverse-sop.md (21289b), three-lib-content-workflow/persona-schema.md (9344b), three-lib-content-workflow/sop.md (17602b), three-lib-content-workflow/topic-selection.md (17185b), three-lib-content-workflow/video-script-final.workflow.md (10295b), three-lib-content-workflow/wechat-article.workflow.md (16026b)\n\nArchive v1.1.42: 35 files, 128620 bytes\n\nFiles: _meta.json (131b), assets/publish-config-image.example.json (1153b), assets/publish-config.example.json (2244b), assets/three-lib-content-workflow.example.md (2601b), references/account-group.md (5519b), references/authorize.md (3357b), references/core/agent-conventions.md (6824b), references/core/knowledge-base-resolution.md (10064b), references/core/tips.md (5953b), references/extract-cover.md (2187b), references/list-accounts.md (5417b), references/persona.md (7987b), references/planning.md (26936b), references/publish.md (7715b), references/rag.md (17923b), references/report.md (4595b), references/setup.md (7696b), references/task.md (3901b), references/upload.md (1941b), references/validate-content.md (5745b), references/web-pages.md (5763b), scripts/install.ps1 (11187b), scripts/install.sh (6098b), skill-card.md (3221b), SKILL.md (25727b), three-lib-content-workflow/collaboration.md (4406b), three-lib-content-workflow/content-writer.workflow.md (14123b), three-lib-content-workflow/multi-track.md (8963b), three-lib-content-workflow/persona-onboarding.md (9338b), three-lib-content-workflow/persona-reverse-sop.md (21289b), three-lib-content-workflow/persona-schema.md (9344b), three-lib-content-workflow/sop.md (17602b), three-lib-content-workflow/topic-selection.md (17185b), three-lib-content-workflow/video-script-final.workflow.md (9164b), three-lib-content-workflow/wechat-article.workflow.md (16026b)\n\nArchive v1.1.41: 35 files, 127754 bytes\n\nFiles: _meta.json (131b), assets/publish-config-image.example.json (1153b), assets/publish-config.example.json (2244b), assets/three-lib-content-workflow.example.md (2601b), references/account-group.md (5519b), references/authorize.md (3357b), references/core/agent-conventions.md (6824b), references/core/knowledge-base-resolution.md (10064b), references/core/tips.md (5953b), references/extract-cover.md (2187b), references/list-accounts.md (5417b), references/persona.md (7987b), references/planning.md (26936b), references/publish.md (7715b), references/rag.md (17923b), references/report.md (4595b), references/setup.md (7696b), references/task.md (3901b), references/upload.md (1941b), references/validate-content.md (5745b), references/web-pages.md (5763b), scripts/install.ps1 (11187b), scripts/install.sh (6098b), skill-card.md (2704b), SKILL.md (25727b), three-lib-content-workflow/collaboration.md (4406b), three-lib-content-workflow/content-writer.workflow.md (14123b), three-lib-content-workflow/multi-track.md (8963b), three-lib-content-workflow/persona-onboarding.md (9338b), three-lib-content-workflow/persona-reverse-sop.md (21289b), three-lib-content-workflow/persona-schema.md (9344b), three-lib-content-workflow/sop.md (17602b), three-lib-content-workflow/topic-selection.md (17185b), three-lib-content-workflow/video-script-final.workflow.md (7661b), three-lib-content-workflow/wechat-article.workflow.md (16026b)\n\nArchive v1.1.40: 34 files, 123849 bytes\n\nFiles: _meta.json (131b), assets/publish-config-image.example.json (1153b), assets/publish-config.example.json (2244b), assets/three-lib-content-workflow.example.md (2601b), references/account-group.md (5519b), references/authorize.md (3357b), references/core/agent-conventions.md (6824b), references/core/knowledge-base-resolution.md (10064b), references/core/tips.md (5953b), references/extract-cover.md (2187b), references/list-accounts.md (5417b), references/persona.md (7987b), references/planning.md (26936b), references/publish.md (7715b), references/rag.md (17923b), references/report.md (4595b), references/setup.md (7696b), references/task.md (3901b), references/upload.md (1941b), references/validate-content.md (5745b), references/web-pages.md (5763b), scripts/install.ps1 (11187b), scripts/install.sh (6098b), skill-card.md (3661b), SKILL.md (25727b), three-lib-content-workflow/collaboration.md (4406b), three-lib-content-workflow/content-writer.workflow.md (13750b), three-lib-content-workflow/multi-track.md (8963b), three-lib-content-workflow/persona-onboarding.md (9338b), three-lib-content-workflow/persona-reverse-sop.md (21289b), three-lib-content-workflow/persona-schema.md (9344b), three-lib-content-workflow/sop.md (17602b), three-lib-content-workflow/topic-selection.md (17185b), three-lib-content-workflow/wechat-article.workflow.md (15258b)\n\nArchive v1.1.33: 33 files, 116337 bytes\n\nFiles: _meta.json (131b), assets/publish-config-image.example.json (1153b), assets/publish-config.example.json (2244b), assets/three-lib-content-workflow.example.md (2601b), references/account-group.md (5519b), references/authorize.md (3357b), references/core/agent-conventions.md (6824b), references/core/knowledge-base-resolution.md (10064b), references/core/tips.md (5953b), references/extract-cover.md (2187b), references/list-accounts.md (5417b), references/persona.md (7987b), references/planning.md (26936b), references/publish.md (7715b), references/rag.md (17923b), references/report.md (4595b), references/setup....","readmeExcerpt":"Skill: Siluzan CSO Owner: sigedev01-bit Summary: 丝路赞内容运营平台（CSO）。**凡涉及以下任一类业务，必须先加载并使用本 skill**。 (1) **文案生成与改稿**：选题、爆款拆解、新写成稿（公众号、小红书、**视频口播/字幕/配音/分镜脚本**、博客、改稿润色、评论区回复等）须走 three-lib-content-workflow/content-writer.workflow.md；**热点/资讯生成选题**见 topic-selection.md；**单轨 / 多轨**（多轨默认 2 篇、可增减，可主动推断）见 multi-track.md；**禁止**直接成稿或聊天润色。 **视频脚本 vs 发布 Caption**：口播/字幕/分镜走 content-writer；上传发布框 Caption 走 overseas-b2b-social-post。 (2) **","codeSnippets":[],"executableExamples":[{"language":"bash","snippet":"bash <(curl -fsSL https://unpkg.com/siluzan-cso-cli@latest/dist/skill/scripts/install.sh)"},{"language":"powershell","snippet":"irm https://unpkg.com/siluzan-cso-cli@latest/dist/skill/scripts/install.ps1 | iex"},{"language":"text","snippet":"publish ──需要账号字段──► list-accounts\npublish ──需要素材 ID──► upload ──需要封面──► extract-cover\npublish ──提交后查状态──► task ──失败重授权──► authorize\n\nreport ──需要 mediaCustomerId──► list-accounts\naccount-group ──需要 mediaCustomerId──► list-accounts\n\nrag query ──需要知识库 ID──► rag list（按用户意图自动选择）"},{"language":"bash","snippet":"# 列出所有已建索引的根级知识库（落盘后用脚本读 id，见 references/core/tips.md）\nsiluzan-cso rag list --rag-only --json-out ./snap-cso\n\n# 若根级库下还有子文件夹，可钻取查看\nsiluzan-cso rag list --folder-id <父文件夹id> --rag-only --json-out ./snap-cso"},{"language":"bash","snippet":"# 默认不传 --tags = 全量检索（适用于绝大多数场景）\n# 推荐：同一库、同一标签策略下，用空格一次传多词，CLI 会分检合并排序\nsiluzan-cso rag query -q \"产品核心卖点 用户使用场景 品牌差异优势\" --folder-id <id> --partition wiki --top-k 12\n\n# 证据仍不足时再补 default（按需执行）\n# siluzan-cso rag query -q \"产品核心卖点 用户使用场景 品牌差异优势\" --folder-id <id> --partition default --top-k 8\n\n# 仍可用多轮独立 -q（例如需要分步查看或参数不同）\n# siluzan-cso rag query -q \"产品核心卖点\" --folder-id <id> --partition wiki --top-k 12\n# siluzan-cso rag query -q \"用户使用场景\" --folder-id <id> --partition wiki --top-k 12\n\n# 仅当知识库已按标签打标，且需要精确筛选时才传 --tags（不同标签需多条命令；`--partition` 规则同上）\nsiluzan-cso rag query -q \"抖音 爆款 钩子\" --tags \"流量因子库\" --partition wiki --top-k 12\nsiluzan-cso rag query -q \"产品 卖点 故事\" --tags \"产品资产库\" --partition wiki --top-k 12"},{"language":"bash","snippet":"# Step 1：拿到账号的 mediaCustomerId（落盘后脚本读盘，见 references/core/tips.md）\nsiluzan-cso list-accounts --name \"账号名\" --json-out ./snap-cso\n# 从落盘 JSON 中取 \"mediaCustomerId\" 字段值\n\n# Step 2：用 mediaCustomerId 操作分组\nsiluzan-cso account-group create --name \"分组名\" --accounts \"mediaCustomerId1,mediaCustomerId2\""}],"parameters":null,"dependencies":[],"permissions":[],"extractedFiles":[{"path":"SKILL.md","content":"---\nname: siluzan-cso\ndescription: >-\n  丝路赞内容运营平台（CSO）。**凡涉及以下任一类业务，必须先加载并使用本 skill**。\n  (1) **文案生成与改稿**：选题、爆款拆解、新写成稿（公众号、小红书、**视频口播/字幕/配音/分镜脚本**、博客、改稿润色、评论区回复等）须走 `three-lib-content-workflow/content-writer.workflow.md`；**热点/资讯生成选题**见 `topic-selection.md`；**单轨 / 多轨**（多轨默认 2 篇、可增减，可主动推断）见 `multi-track.md`；**禁止**直接成稿或聊天润色。\n  **视频脚本 vs 发布 Caption**：口播/字幕/分镜走 content-writer；上传发布框 Caption 走 `overseas-b2b-social-post`。\n  (2) **人设管理**：运营账号人设卡（styleGuide）；反推/查询/保存。\n  (3) **发布与运营**（YouTube/TikTok/Instagram/LinkedIn/X/Facebook）：OAuth、**账号分组**、发布、任务/重试、upload、**extract-cover**、planning、报表。\n  (4) **RAG 知识库**：品牌/产品问答与写稿事实依据。\n  **海外 B2B 社媒贴文/Caption**：走独立 skill `overseas-b2b-social-post`，不在本 skill 文案流程内。\n  **高频误路由**：写文案禁联网代替 rag query；发布/截封面须调 CLI。\n  **账号不明先问**：仅运营媒体账号；广告账户走 siluzan-tso。\nlicense: MIT\nallowed-tools: Bash(siluzan-cso:*) Read Write\nmetadata:\n  requires: nodejs,siluzan-cso-cli\n  cli: siluzan-cso\n  product: CSO\n  exclude_skill: siluzan-tso\n  platforms: YouTube,TikTok,Instagram,LinkedIn,X,Facebook\n  domains: copywriting,persona,publish,account-ops,rag,planning,reporting\n  trigger_keywords: >-\n    写文案,写稿,内容创作,出内容,脚本,口播,公众号,博客,外链,引流页,配文,标题,选题,爆款,改稿,润色,\n    两版,双版本,多版,多轨,AB稿,对比稿,差异化,各出一版,几个方向,审稿,\n    口语化,保留原意,太生硬,优化表达,帮我改改,优化这段,\n    人设,styleGuide,人设卡,反推人设,persona,三库,\n    发布,publish,上传,upload,封面,extract-cover,截取封面,任务,task,重试,失败,\n    账号分组,运营账号,媒体账号,OAuth,authorize,list-accounts,绑定,授权过期,Token失效,\n    评论区,回复文案,页面链接,web-pages,任务管理,\n    RAG,知识库,rag,素材库,绩效,粉丝,播放,report,planning,内容规划,站内信\n  not_for: >-\n    广告账户,广告投放,余额,消耗,统计,开户,关键词出价,Google Ads,Bing Ads,Yandex,TSO,siluzan-tso,MCC,BC,BM;\n    海外 B2B 社媒贴文/Caption（走 overseas-b2b-social-post）\n  when_to_use: >-\n    用户要在丝路赞 CSO 写内容、管人设 styleGuide、向社交媒体运营账号发布、查企业 RAG、\n    上传素材/截封面、查发布任务或运营报表、管理账号分组时使用。\n  anti_patterns: >-\n    写文案/视频脚本：须 Read content-writer.workflow.md；禁止 web_search 代替 rag query。\n    海外社媒贴文/Caption：勿进 content-writer，用 overseas-b2b-social-post。\n    发布：禁止只讲 App/网页操作；须 Read publish.md 并执行 list-accounts→upload→publish→task。\n  high_risk_tasks: copywriting,publish\ncompatibility: Requires siluzan-cso-cli installed and authenticated via `siluzan-cso login`\n---\n\n# siluzan-cso\n\n## 一键安装\n\n如果 CLI 尚未安装，直接帮用户执行对应平台的安装脚本：\n\n- **macOS / Linux / WSL：**\n  ```bash\n  bash <(curl -fsSL https://unpkg.com/siluzan-cso-cli@latest/dist/skill/scripts/install.sh)\n  ```\n- **Windows PowerShell：**\n  ```powershell\n  irm https://unpkg.com/siluzan-cso-cli@latest/dist/skill/scripts/install.ps1 | iex\n  ```\n\nWindows 注意：部分 Agent 客户端通过 PowerShell / cmd 代执行命令时存在兼容性问题。若上述命令异常失败，请先安装 [Git for Windows](https://git-scm.com/download/win)，然后在 Git Bash 中执行 macOS / Linux / WSL 的 Bash 安装命令。\n\n脚本会自动完成 Node.js 检测/安装、CLI 安装、Skill 全局注册，并引导用户配置 API Key。无需选择，本脚本专为 siluzan-cso-cli 定制。\n\n---\n\n## 可执行的操作范围\n\n- **只读**：查询媒体账号列表、账号分组、运营报表、发布任务状态、人设列表、RAG 知识库检索、AI 内容规划详情\n- **写入**（需用户确认）：上传素材、提交发布任务、创建/更新账号分组、生成 AI 内容规划、站内信回复\n- **本地文件操作**：`extract-cover` 在本地截取视频帧并输出图片文件；`workflow validate` 在本地校验文案文件（字数限制 / 内部内容泄漏）；`init` 将 Skill 文件写入 AI 助手目录\n\n---\n\n## 可选环境变量\n\n| 变量          "},{"path":"_meta.json","content":"{\n  \"ownerId\": \"kn7fvww6xcwp6e93b3qgnjy7s183jy5k\",\n  \"slug\": \"siluzan-cso\",\n  \"version\": \"1.1.45\",\n  \"publishedAt\": 1788856919897\n}"},{"path":"references/account-group.md","content":"# account-group — 账号分组管理\n\n> 将媒体账号归类到分组，便于发布时按组批量指定目标账号。\n\n---\n\n## ⚠️ 必读：用哪个 ID？\n\n`--accounts` 参数**只接受 `mediaCustomerId`**，这是账号在媒体平台上的原生 ID。\n\n`list-accounts --json-out` 落盘的每个账号对象中有多个 ID 字段，**极易混淆**：\n\n| 字段                          | 示例值                                | 用途                                                            |\n| ----------------------------- | ------------------------------------- | --------------------------------------------------------------- |\n| `mediaCustomerId`             | `UCg3_FESu2sADBKq4WKGozug`            | ✅ **account-group 的 `--accounts` 参数用这个**                 |\n| `entityId`                    | `a2ace2a2-00c1-478d-a991-...`（UUID） | 发布配置 `accounts[].entityId`，**不是这个**                    |\n| `externalMediaAccountTokenId` | `f4f687..`（UUID）                    | 发布配置 `accounts[].externalMediaAccountTokenId`，**不是这个** |\n\n**操作流程：**\n\n```bash\n# Step 1：拿到账号的 mediaCustomerId（落盘后脚本读盘，见 references/core/tips.md）\nsiluzan-cso list-accounts --name \"账号名\" --json-out ./snap-cso\n# 从落盘 JSON 中取 \"mediaCustomerId\" 字段值\n\n# Step 2：用 mediaCustomerId 操作分组\nsiluzan-cso account-group create --name \"分组名\" --accounts \"mediaCustomerId1,mediaCustomerId2\"\n```\n\n---\n\n## 常用场景速查\n\n| 用户意图                                 | 命令                                                                             |\n| ---------------------------------------- | -------------------------------------------------------------------------------- |\n| 查看所有分组                             | `siluzan-cso account-group list`                                                 |\n| 查某分组内有哪些账号                     | `siluzan-cso account-group list --json-out ./snap-cso`                           |\n| 新建空分组                               | `siluzan-cso account-group create --name <名称>`                                 |\n| 新建分组并添加账号                       | `siluzan-cso account-group create --name <名称> --accounts <id1,id2>`            |\n| **向已有分组追加账号（不影响其他账号）** | `siluzan-cso account-group add-accounts --id <groupId> --accounts <ids>`         |\n| **从分组移除指定账号（不影响其他账号）** | `siluzan-cso account-group remove-accounts --id <groupId> --accounts <ids>`      |\n| 全量替换分组账号列表                     | `siluzan-cso account-group update --id <groupId> --name <名称> --accounts <ids>` |\n| 删除分组                                 | `siluzan-cso account-group delete --id <groupId>`                                |\n\n---\n\n## 命令详解\n\n### list — 查询分组列表\n\n```bash\n# 默认表格展示（分组 ID / 名称 / 账号数 / 创建时间）\nsiluzan-cso account-group list\n\n# 落盘完整数据（含 mediaAccountInfos，可获取各账号 mediaCustomerId），脚本读盘见 references/core/tips.md\nsiluzan-cso account-group list --json-out ./snap-cso\n```\n\n> `id === \"未分组\"` 是系统虚拟分组，不可编辑或删除。\n\n---\n\n### create — 新建分组\n\n```bash\n# 新建空分组\nsiluzan-cso account-group create --name \"海外品牌账号\"\n\n# 新建并同时添加账号（mediaCustomerId，逗号分隔，可含空格）\nsiluzan-cso account-group create --name \"TikTok 主账号\" --accounts \"id1,id2,id3\"\n```\n\n成功后输出新分组 ID，可用于后续 update / delete。\n\n---\n\n### add-accounts — 追加账号（推荐）\n\n```bash\n# 向分组追加一个或多个账号，已在组内的账号自动跳过（幂等）\nsiluzan-cso acc"},{"path":"references/authorize.md","content":"# authorize — 媒体账号 OAuth 授权\n\n> 为尚未绑定或 Token 已失效的媒体账号发起 OAuth 授权，在浏览器中完成授权后自动跳回账号管理页。\n\n---\n\n## 用法\n\n```bash\nsiluzan-cso authorize --media-type YouTube\nsiluzan-cso authorize --media-type TikTokBusinessAccount   # TikTok（注意不是 TikTok）\nsiluzan-cso authorize --media-type Instagram\nsiluzan-cso authorize --media-type Facebook\nsiluzan-cso authorize --media-type LinkedIn\nsiluzan-cso authorize --media-type Twitter    # X（推特）\n```\n\n命令执行后 CLI 会打印授权链接，并尝试在系统默认浏览器中打开授权页面；用户在浏览器完成授权后会自动跳转回账号管理页。\n\n**当前若运行在受限的 API/工具环境（如沙箱、容器、远程 Agent 等无法自动唤起本地浏览器的场景），必须将 CLI 输出的完整授权链接展示给用户，由其手动复制到浏览器打开**\n\n> ⚠️ 链接显示规范（必须遵守，否则可能会出现 URL 溢出容器、被强制折行、排版错乱）：\n>\n> - **必须**使用独立的围栏代码块（三个反引号 ` ``` `）展示链接，并指定语言为 `text`，让链接独占一整块、可横向滚动；\n> - **不要**使用单反引号的行内代码（` `...` `）包裹长 URL —— 行内代码不会横向滚动，会被强制折行；\n> - **不要**使用 Markdown 链接语法 `[文本](https://...)` —— 用户复制时容易漏掉字符；\n> - 链接前后各保留一行空行，避免与正文挤在一起。\n>\n> ✅ 正确示例（向用户呈现的内容）：\n>\n> 请在浏览器中打开下面的授权链接完成授权：\n>\n> ```text\n> https://accounts.google.com/o/oauth2/auth?access_type=offline&state=...&client_id=...&redirect_uri=...&scope=...&prompt=consent\n> ```\n\n---\n\n## 支持的平台\n\n| 用户说法                         | `--media-type` 参数值   | 备注                                                           |\n| -------------------------------- | ----------------------- | -------------------------------------------------------------- |\n| YouTube                          | `YouTube`               |                                                                |\n| TikTok                           | `TikTokBusinessAccount` | ⚠️ 必须用这个值，传 `TikTok` 会跳到错误的授权页                |\n| Instagram / IG                   | `Instagram`             |                                                                |\n| Facebook / FB                    | `Facebook`              |                                                                |\n| LinkedIn                         | `LinkedIn`              |                                                                |\n| Twitter（即 X / 推特，同一平台） | `Twitter`               | Twitter 已更名为 X，前端显示为\"X\"，但 API 参数固定为 `Twitter` |\n\n---\n\n## 何时需要重新授权\n\n以下情况需要对账号重新执行 `authorize`：\n\n- `list-accounts --json-out` 落盘数据中 `invalidOAuthToken: true`\n- `list-accounts` 显示账号状态为\"异常\"或\"已过期\"\n- 发布任务失败，错误原因为 Token 失效\n\n---\n\n## 交叉引用\n\n- 查看账号 Token 状态 → 参见 `references/list-accounts.md`\n- 重新发布失败的任务项 → 参见 `references/task.md`"},{"path":"references/core/agent-conventions.md","content":"# Agent 执行规范（数据处理纪律唯一真相源）\n\n> 本文件是 siluzan-cso Skill 下 AI 助手的**通用数据纪律**：加载纪律、数据处理协议、防工具死循环、交付自检。\n> 各域 reference（`references/*.md`）只讲命令参数与字段口径，**不再重复**这些规则，需要处单行指向本文件。\n> **知识库确定**（`<knowledge_base_selection>`、何时跳过 `rag list` / `planning enterprises`）见 `references/core/knowledge-base-resolution.md`。\n> 脚本示例（`--json-out` + `node -e` 读盘）见 `references/core/tips.md`。\n\n---\n\n## 一、文档加载纪律\n\n本 Skill 采用 **SKILL 路由 + references 按需加载**；**「按需」= 每个用户任务都要按需，不是整段对话只读一次**。\n\n| 触发                                                              | 动作                                                                                                                                                                          |\n| ----------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| **任务需锁定企业知识库**（RAG、planning、三库写稿涉及品牌事实等） | **Read** `references/core/knowledge-base-resolution.md`，再读当次域 reference                                                                                                 |\n| **新的用户任务 / 同对话内换话题**（新账号、新平台、新报表/规划）  | 按 `SKILL.md` 命令索引 **重新 Read** 该任务对应的 `references/<域>.md` 后再执行 CLI；**禁止**沿用上一任务的参数记忆——对话会被压缩，「读过」≠ 当前上下文仍含正确字段名与 flags |\n| **上下文被压缩 / 记不清字段或命令**                               | 重读 `SKILL.md` 命令索引 + 当次任务 reference                                                                                                                                 |\n| **CLI 返回 400 / 字段对不上**                                     | 回到对应 reference 核对参数名与口径，**勿猜**                                                                                                                                 |\n\n所有 ID、命令 flags、业务数值以**当次 Read 的文档 + 当次 CLI 输出**为准；数值只来自本次 stdout 或脚本读盘结果，不引用对话记忆里的示例值。\n\n---\n\n## 二、数据处理协议（最高优先级，防工具死循环）\n\n读取/列表/检索/详情类命令（`list-accounts`、`account-group list`、`persona list`、`rag list/query`、`report fetch/records`、`planning enterprises/content-types/list/get`、`task list/detail/comment list`、`list-members`）都支持 **`--json-out <路径>`**：业务数据落盘为唯一真相源，stdout 只回**一行摘要 + agentHint**。每条 `--json-out` 命令成功后**必须按顺序**处理，不要跳步：\n\n1. **解析 stdout 一行摘要 JSON**：拿到 `outlineFile`、`writtenFiles[0]`、`manifestFile`、`agentHint`。摘要里**没有** `total` / `items` 等业务字段——**禁止对 stdout 写翻页循环**，业务数据只在 `writtenFiles[0]` 落盘文件里；**不要**硬编码 `<section>.json` 文件名，以摘要里的 `writtenFiles[]` / `manifestFile` 为准。\n2. **【outline 门禁·先读完再动手】Read 当次产出的每个 `*.outline.txt`**（schema-only，通常 <2KB）确认字段树后**才可**写脚本。类型字面量是**最后一个不以 `//` 开头的行**（提取写法 `outlineRaw.trimEnd().split('\\n').filter(l => !l.startsWith('//')).pop()`）。outline 是结构描述，**不是数据**，勿当 JSON `require`、勿贴给用户。**字段真相源 = 当次 outline**；SKILL.md / reference 里出现的字段名都是说明性示例，凡 outline 未确认的字段路径**禁止**凭印象写进脚本。\n3. **编写并执行脚本**（`node -e` / `.mjs` / `python`）`readFileSync` / `require` 读 `writtenFiles[0]` 做筛选、聚合、计算；**永远不得**用宿主 Read / `cat` / `type` / `Get-Content` 打开落盘业务 `*.json`（可能 MB 级，会撑爆上下文）。\n4. **交付物用代码写出**；向用户展示的数字须来自**"}],"languages":[],"docsSourceLabel":"CLAWHUB","editorialOverview":"丝路赞内容运营平台（CSO）。**凡涉及以下任一类业务，必须先加载并使用本 skill**。 (1) **文案生成与改稿**：选题、爆款拆解、新写成稿（公众号、小红书、**视频口播/字幕/配音/分镜脚本**、博客、改稿润色、评论区回复等）须走 `three-lib-content-workflow/content-writer.workflow.md`；**热点/资讯生成选题**见 `topic-selection.md`；**单轨 / 多轨**（多轨默认 2 篇、可增减，可主动推断）见 `multi-track.md`；**禁止**直接成稿或聊天润色。 **视频脚本 vs 发布 Caption**：口播/字幕/分镜走 content-writer；上传发布框 Caption 走 `overseas-b2b-social-post`。 (2) **人设管理**：运营账号人设卡（styleGuide）；反推/查询/保存。 (3) **发布与运营**（YouTube/TikTok/Instagram/LinkedIn/X/Facebook）：OAuth、**账号分组**、发布、任务/重试、upload、**extract-cover**、planning、报表。 (4) **RAG 知识库**：品牌/产品问答与写稿事实依据。 **海外 B2B 社媒贴文/Caption**：走独立 skill `overseas-b2b-social-post`，不在本 skill 文案流程内。 **高频误路由**：写文案禁联网代替 rag query；发布/截封面须调 CLI。 **账号不明先问**：仅运营媒体账号；广告账户走 siluzan-tso。 Skill: Siluzan CSO Owner: sigedev01-bit Summary: 丝路赞内容运营平台（CSO）。**凡涉及以下任一类业务，必须先加载并使用本 skill**。 (1) **文案生成与改稿**：选题、爆款拆解、新写成稿（公众号、小红书、**视频口播/字幕/配音/分镜脚本**、博客、改稿润色、评论区回复等）须走 three-lib-content-workflow/content-writer.workflow.md；**热点/资讯生成选题**见 topic-selection.md；**单轨 / 多轨**（多轨默认 2 篇、可增减，可主动推断）见 multi-track.md；**禁止**直接成稿或聊天润色。 **视频脚本 vs 发布 Caption**：口播/字幕/分镜走 content-writer；上传发布框 Caption 走 overseas-b2b-social-post。 (2) **","editorialQuality":{"score":100,"threshold":65,"status":"ready","wordCount":1149,"uniquenessScore":46,"reasons":[]}},"media":{"evidence":{"source":"no-media","verified":false,"confidence":"low","updatedAt":"2026-10-09T12:40:50.600Z","emptyReason":"No screenshots, media assets, or demo links are available."},"primaryImageUrl":null,"mediaAssetCount":0,"assets":[],"demoUrl":null},"ownerResources":{"evidence":{"source":"unclaimed","verified":false,"confidence":"low","updatedAt":"2026-10-09T12:40:50.600Z","emptyReason":"This page has not been claimed by the agent owner."},"hasCustomPage":false,"customPageUpdatedAt":null,"customLinks":[],"structuredLinks":{"docsUrl":null,"demoUrl":null,"supportUrl":null,"pricingUrl":null,"statusUrl":null},"customPage":null},"relatedAgents":{"evidence":{"source":"protocol-neighbors","verified":false,"confidence":"medium","updatedAt":"2026-10-09T14:24:47.820Z","emptyReason":null},"items":[{"id":"b917f68a-ebff-438e-84f8-3f4b2494c0bc","entityType":"agent","canonicalPath":"/agent/activepieces-activepieces","slug":"activepieces-activepieces","name":"activepieces","description":"AI Agents & MCPs & AI Workflow Automation • (~400 MCP servers for AI agents) • AI Automation / AI Agent with MCPs • AI Workflows & AI Agents • MCPs for AI Agents","url":"https://github.com/activepieces/activepieces","homepage":"https://www.activepieces.com","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-15T02:22:12.426Z","createdAt":"2026-02-25T03:38:12.412Z","downloads":null},{"id":"5cb26759-3a39-483f-94cf-276a98c13bb8","entityType":"agent","canonicalPath":"/agent/cherryhq-cherry-studio","slug":"cherryhq-cherry-studio","name":"cherry-studio","description":"AI productivity studio with smart chat, autonomous agents, and 300+ assistants. Unified access to frontier LLMs","url":"https://github.com/CherryHQ/cherry-studio","homepage":"https://cherry-ai.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-11T14:38:40.986Z","createdAt":"2026-02-25T03:38:19.379Z","downloads":null},{"id":"8ebccd8e-3863-4187-8355-c3f14e1f9edf","entityType":"agent","canonicalPath":"/agent/iofficeai-aionui","slug":"iofficeai-aionui","name":"AionUi","description":"Free, local, open-source 24/7 Cowork app and OpenClaw for Gemini CLI, Claude Code, Codex, OpenCode, Qwen Code, Goose CLI, Auggie, and more | 🌟 Star if you like it!","url":"https://github.com/iOfficeAI/AionUi","homepage":"https://www.aionui.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-10T18:48:31.762Z","createdAt":"2026-02-25T03:38:16.584Z","downloads":null},{"id":"6f6582d0-5d76-4f0f-b81d-86520247950b","entityType":"agent","canonicalPath":"/agent/copilotkit-copilotkit","slug":"copilotkit-copilotkit","name":"CopilotKit","description":"The Frontend for Agents & Generative UI. React + Angular","url":"https://github.com/CopilotKit/CopilotKit","homepage":"https://docs.copilotkit.ai","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-03-25T09:50:57.846Z","createdAt":"2026-02-25T03:39:14.617Z","downloads":null}],"links":{"hub":"/agent","source":"/agent/source/clawhub","protocols":[{"label":"OpenClaw","href":"/agent/protocol/openclew"}]}}}