Tools
Creator Studio
General-purpose OpenClaw plugin for evidence-backed articles, independent review, version-bound human approval and portable exports.
Install
openclaw plugins install git:github.com/izillionways/openclaw-creator-studio@v0.1.0
Configuration Example
{
"plugins": {
"entries": {
"creator-studio": {
"enabled": true,
"config": {
"allowedAgents": ["writer"],
"enableReview": false,
"timeZone": "Asia/Shanghai",
"approvers": [
{
"agentId": "writer",
"channel": "YOUR_CHANNEL_ID",
"accountId": "YOUR_CHANNEL_ACCOUNT_ID",
"senderId": "YOUR_HUMAN_SENDER_ID"
}
]
}
}
}
},
"agents": {
"entries": {
"writer": {
"tools": {
"alsoAllow": ["creator-studio"]
}
}
}
}
}
README
# OpenClaw Creator Studio
A general-purpose OpenClaw plugin for evidence-backed articles, independent editorial review, version-bound human approval and portable exports.
面向任意主题、语言和发布平台的原生插件。获准的 Agent 负责研究与写作,插件保存版本并执行审核、人工审批和导出规则。微信公众号可以作为使用场景,系统不绑定公众号、钉钉、模型供应商或特定 Agent。
## 首版范围
- 研究、图文创作、内容审核三个配套 Skill,复用宿主已有的搜索、Browser、模型和消息渠道。
- 结构化稿件、来源与论据关联、正文配图、主题去重、定时运行幂等键。
- 本地规则检查 + 无写作会话历史的独立审核 completion;人工审批绑定文章 ID、版本和内容 SHA-256。
- Markdown、HTML、来源元数据和本地图片导出,供人手动导入发布平台。
- 可选的认证预览和固定收件人通知,默认关闭。
不包含自动发表、公众号 API 写入、图片生成服务、搜索服务或公网托管。没有可信候选时应返回原因,不能为了日更编造文章。独立审核读取稿件和所附证据文本,不会重新访问来源,也不会检查图片像素;它不能证明作者实际操作过工具。
## 环境与安装
当前验证环境:OpenClaw **2026.10.10**、Node.js **24.22.2**、macOS arm64。使用该版本的原生插件工具上下文 v2、SQLite 和 isolated completion 接口;更早的 OpenClaw 不在兼容范围内。Node 范围为 `>=24.16.0 <25 || >=26.1.0`;其他系统和版本尚未实机验证。运行时没有第三方 npm 依赖。
审核代码后安装固定版本:
```sh
openclaw plugins install git:github.com/izillionways/openclaw-creator-studio@v0.1.0 --no-enable
```
也可以下载 GitHub Release 中的安装包后执行:
```sh
openclaw plugins install npm-pack:./openclaw-creator-studio-0.1.0.tgz --no-enable
```
这两个命令会安装到执行者的 OpenClaw 环境。非交互安装新来源时,OpenClaw 可能要求 `--force`;应先检查代码和来源。发布在 GitHub,未发布到 npm 或 ClawHub。
插件 ID 是 `creator-studio`,npm 包名是 `openclaw-creator-studio`。安装后合并下方配置,再按宿主的插件管理流程启用:
```sh
openclaw plugins enable creator-studio
openclaw plugins inspect creator-studio --runtime --json
openclaw skills list --agent writer --json
```
若设置了 `plugins.allow`,保留原有条目并包含 `creator-studio`。官方安装命令会处理相应允许列表。CLI inspect 证明该 CLI 进程能加载插件;实际 Gateway 的工具、原生命令与渠道仍需在自己的环境验收。
## 最小配置
将以下片段**合并**到宿主配置,不要替换现有 Agent、工具或渠道配置。示例 `writer` 必须是已有 Agent;审批人的 channel、accountId、senderId 应取自宿主可信的入站消息元数据,不能让模型提供。
```json
{
"plugins": {
"entries": {
"creator-studio": {
"enabled": true,
"config": {
"allowedAgents": ["writer"],
"enableReview": false,
"timeZone": "Asia/Shanghai",
"approvers": [
{
"agentId": "writer",
"channel": "YOUR_CHANNEL_ID",
"accountId": "YOUR_CHANNEL_ACCOUNT_ID",
"senderId": "YOUR_HUMAN_SENDER_ID"
}
]
}
}
}
},
"agents": {
"entries": {
"writer": {
"tools": {
"alsoAllow": ["creator-studio"]
}
}
}
}
}
```
默认没有获准 Agent、没有审批人,模型审核、通知和预览均关闭。原生工具策略与插件的 `allowedAgents` 同时生效;后者不会授予搜索、文件写入、Browser 或其他能力。每篇文章由创建它的 Agent 所有,其他 Agent 不能通过这些工具读写它;多 Agent 可分别使用自己的稿件。
默认数据位置为宿主 state 目录下的 `creator-studio/`,图片导入范围为宿主 state 下的 `media/`。可设置绝对路径 `dataDir`、`assetRoots`,但不要把数据目录放在源码仓库或 Agent 工作区内。目录必须为私有真实目录(0700);数据库及输出文件为 0600。导入仅支持每张不超过 8 MiB 的 PNG/JPEG/WebP,最多 12 张,拒绝允许范围之外的路径和符号链接逃逸。
所有配置字段见 [openclaw.plugin.json](openclaw.plugin.json)。主要默认限制:每 Agent 每天 1 篇新稿、4 次模型审核,每版本最多 2 次审核;正文为 600–30000 个非空白 Unicode 字符,至少一个主来源和一张正文配图。字数不含代码、参考资料,封面不算正文图。可按语言、平台调整长度,例如中文公众号设置 `minBodyChars: 1500`、`maxBodyChars: 2500`。
## 启用独立审核与费用
只有运营者明确同意模型用量后,才设置 `enableReview: true`。审核复用写作 Agent 默认模型的宿主路由,但使用独立、无工具的 completion,不携带写作对话历史。无需另建常驻审核 Agent。
宿主模型必须配置明确的、支持无工具隔离 completion 的 **model-scoped** `agentRuntime.id`。例如在已经配置好供应商和模型的环境中:
```json
{
"agents": {
"entries": {
"writer": {
"model": "YOUR_PROVIDER/YOUR_MODEL",
"models": {
"YOUR_PROVIDER/YOUR_MODEL": {
"agentRuntime": { "id": "codex" }
}
}
}
}
}
}
```
默认允许 `codex`、`claude-cli` runtime owner。不要把 `agentRuntime` 写在 Agent 顶层,也不要使用 `auto`:插件会在调用前拒绝不明确的路由,并在调用后核对实际隔离模式和 owner。其他 runtime 需由运营者验证其无工具隔离契约后再加入 `reviewRuntimeOwners`。
规则检查失败时不调用模型。失败、取消或过期的模型请求也计入审核次数,避免自动重试失控。默认超时 90 秒,输出请求上限 4000 tokens;runtime 可能将 token 限制视为提示,**次数限制不是金额硬上限**。费用取决于你的供应商和订阅,插件没有固定模型价格,也不增加独立订阅费。写作、搜索、Browser、图片生成、消息渠道和外网代理的用量由各宿主服务单独计费。插件不代为启用这些服务。
## 工具与稿件流程
| 工具 | 用途 |
| --- | --- |
| `creator_article` | `create`、`revise`、`get`、`list`;修订必须提交当前版本 |
| `creator_review` | 检查并独立审核指定文章和当前版本 |
| `creator_submit` | 返回预览地址;仅在启用固定渠道后发送通知 |
| `creator_export` | 仅导出人工批准的当前版本 |
三个 Skill 分别是 `creator-topic-research`、`creator-article-creator`、`creator-editorial-review`。正常使用时向获准 Agent 描述主题、读者、语言、平台、长度与费用权限即可;宿主应已提供所需的研究和图片工具。
稿件使用结构化文档,字段和完整 schema 见 [src/tools.js](src/tools.js):
- `title`、`summary`、`language`、可选的 `platform`。
- `blocks`:`heading`、`paragraph`、`list`、`code`、`image`。文字按纯文本保存,不能嵌入 HTML;图片块通过 `assetId` 引用图片。
- `sources`:唯一 `id`、公共 `url`、`title`、实际 `checkedAt`、`kind`(primary/secondary)和短证据 `excerpt`。
- `claims`:重要论断 `text` 及对应 `sourceIds`。保存引用关系不等于已证明论断真实,审核人仍需检查。
- `assets`:唯一 `id`、允许目录中的绝对 `path`、`alt`、`kind`(screenshot/illustration)、可选 `role`(body/cover)。截图另需已有 `sourceId` 和实际 `capturedAt`;示意图会被明确标注。
创建时传稳定的 `topicKey`;同一 Agent 不能重复创建这个选题。定时任务另传稳定 `runKey`,例如任务名与日期的组合。同键同初稿返回已有文章,不同内容会被拒绝并提示恢复已有文章,不能以重试为由新增稿件。修订重新提交完整文档,图片仍使用允许目录内的导入路径。
状态依次为 `draft` → `pending_human_review` → `approved_for_manual_publish` → `manually_published`。检查失败进入 `qa_failed`;人可拒绝或要求修改。修订生成新版本并使旧批准失效;正文、标题和图片变化都参与内容哈希。审核失败、取消、版本变化或人工拒绝不会被当成通过。
## 人工审批与发布
在已配置审批人且支持原生插件命令的渠道中,由真人发送:
```text
/creator status ARTICLE_ID
/creator status ARTICLE_ID VERSION
/creator approve ARTICLE_ID VERSION
/creator reject ARTICLE_ID VERSION 原因
/creator revise ARTICLE_ID VERSION 必须修改的内容
/creator published ARTICLE_ID VERSION
```
`ARTICLE_ID` 使用工具返回的 `cs-...` 值。除查询状态外必须指定版本;命令不能只批准“最新一篇”。只有主机认证且匹配审批人 channel/account/sender 的消息可以更改人工状态;工具参数不提供批准入口。被拒绝的文章必须先由人请求修订才能继续。
批准后让 Agent 调用 `creator_export`,返回导出目录,含 `article.html`、`article.md`、`article.json` 和 `assets/`。已有导出若被手工改动会保留并报冲突;不要覆盖它再声称是原批准稿。将内容与图片手动导入公众号或其他平台,检查排版并人工发表,之后才发送 `published` 确认。平台可能过滤 HTML、要求重新上传图片或使用不同粘贴规则;预览里的私有图片地址不能直接当作公众号图片地址。
版本哈希用于发现内容变化,不是数字签名。本插件和其他 OpenClaw 插件共享宿主权限;有任意 shell 或数据库写入权限的 Agent/用户可以绕过应用层约束。对不可信 Agent 应限制原始文件、shell 和宿主配置权限,不要把本地数据库当作对抗同机管理员的安全边界。
## 可选的手机预览与通知
预览只监听 `127.0.0.1`,页面和每张图片都要求 HTTP Basic 认证,页面不执行脚本,不提供批准按钮。口令从 Gateway 进程环境读取,至少 24 字符;在系统密钥/服务环境中设置 `CREATOR_STUDIO_PREVIEW_PASSWORD`,不要写进配置文件、仓库、URL 或聊天记录。仅在 Codex 终端设置变量不代表现有 Gateway 能读取它。
以下片段合并到插件的 `config`:
```json
{
"preview": {
"enabled": true,
"port": 18890,
"username": "reviewer",
"passwordEnv": "CREATOR_STUDIO_PREVIEW_PASSWORD",
"publicBaseUrl": "https://YOUR_PRIVATE_PREVIEW_DOMAIN"
},
"notification": {
"enabled": true,
"channel": "YOUR_CHANNEL_ID",
"accountId": "YOUR_CHANNEL_ACCOUNT_ID",
"to": "YOUR_FIXED_RECIPIENT"
}
}
```
`publicBaseUrl` 必须替换为真实 HTTPS 域名的 origin,不含路径、查询参数或凭据。插件不会创建这个域名或代理。外网访问需由你部署 HTTPS 反向代理/私有隧道到 loopback 端口,保留 Authorization 头并关闭缓存和访问日志中的敏感信息;Basic 凭据不能通过公网明文 HTTP 传输。私有网络方案也可使用,但域名仍需 HTTPS。公开 URL 本身不授予读取权限。
通知只调用已安装渠道的原生 outbound 适配器,收件人固定在运营者配置中,Agent 不能重定向。钉钉可作为其中一种渠道,但具体插件须提供兼容的 outbound 和可信原生命令元数据。返回正常回执后才记录为 `sent`;超时、进程中断或缺回执会成为 `unknown`,重启后也不会自动重发。遇到 unknown,应人工核对目标会话和文章版本;首版不提供强制重发入口。
不开预览时,`creator_submit` 仍可返回稿件标识和 notification=disabled,不能生成手机可访问的链接。若只在本机检查页面,可启用预览而不设置外部地址;通知需同时具备外部 HTTPS 地址和明确渠道路由。
## 可选的原生定时任务
插件不创建定时任务,优先使用 OpenClaw 原生 Cron。以下是**需自行审核后执行**的禁用状态示例,不会立即运行:
```sh
openclaw cron add \
--name creator-daily --agent writer \
--cron '0 9 * * *' --tz Asia/Shanghai \
--session isolated --timeout-seconds 1800 --no-deliver --disabled \
--message 'Use the three Creator Studio skills for one useful article in the requested editorial brief. Use a stable topicKey and a runKey combining creator-daily with today in Asia/Shanghai. Research within the authorized budget. If evidence is insufficient, report no_candidate and its reason. Review at most twice, then submit for human review. Never approve or publish.'
```
先补全编辑目标、权限、宿主研究工具和预算,人工验收一次运行后再启用。`--no-deliver` 避免与插件固定通知重复投递。调度幂等依赖稳定 `runKey`,不是对所有写作、搜索成本的去重保障。
## 开发与验证
```sh
npm test
npm run test:host
npm run pack:check
```
`npm test` 使用临时 SQLite、合成测试文档/图片和模拟模型/渠道,覆盖版本、审批、去重、限额、竞态、导出、文件边界、HTML/Markdown 转义和真实 loopback HTTP 认证。无需付费密钥;执行环境需允许监听临时本机端口。
`npm run test:host` 需要已安装的 OpenClaw,在临时配置与 state 目录中运行真实加载器,核对 4 个工具和 3 个可用 Skill 后清理。可用 `node test/host-smoke.js /absolute/path/to/unpacked/package` 验证解包产物。它不启动 Gateway,不运行模型、渠道或真实 Cron,也不验证线上 Gateway 已生效。
首版未执行真实模型审核、渠道发送、公众号导入或外网代理部署。这些验收需在使用者自己的账户和授权下完成。使用 Node 内置 SQLite,首次加载可能显示其上游 experimental warning。
MIT License,见 [LICENSE](LICENSE)。
tools
Comments
Sign in to leave a comment