contentrain
用于contenttrain的CLI。
从这里开始:
contentrain 是contenttrain项目的本地操作面:
- 初始化
.contentrain/在现有的回购中 - 检查项目运行状况和验证状态
- 生成类型化
#contentrainSDK客户机 - 回顾等待
cr/*分支机构 - 运行本地审核UI
- 通过Studio (IDE代理)或HTTP (Studio、CI、远程驱动程序)公开MCP服务器
这个包是人性化的伴侣:
@contentrain/mcp用于确定性内容操作@contentrain/query对于生成的运行时查询@contentrain/rules和@contentrain/skills用于代理指导
安装
使用 npx:
npx contentrain init
或全局安装:
pnpm add -g contentrain
contentrain status
要求:
- node . js 22 +
- 在
PATH
全球旗帜
| 国旗 | Env var | 描述 |
|---|---|---|
--debug | CONTENTRAIN_DEBUG=1 | 详细调试日志记录到stderr(适用于每个子命令) |
例子: contentrain --debug status 或 CONTENTRAIN_DEBUG=1 contentrain validate。
命令
| 命令 | 目的 |
|---|---|
contentrain init | 初始化 .contentrain/, git工作流,模板和IDE规则 |
contentrain import <source> | 导入WordPress站点(WXR导出文件或REST URL)到 .contentrain 商店 |
contentrain status | 显示项目概述、模型、分支压力和验证摘要 |
contentrain doctor | 检查设置运行状况、SDK新鲜度、孤立内容和分支限制 |
contentrain validate | 根据模式验证内容,可以选择创建审查分支修复 |
contentrain generate | 生成 .contentrain/client/ 和 #contentrain 包进口 |
contentrain diff | 检查和合并或拒绝挂起 cr/* 分支交互 |
contentrain merge <branch> | 合并一个待处理的 cr/* 非交互式分支(CI/agents);删除其远程副本 |
contentrain reconcile | 发散内容的有内容意识的三向合并↔基对(干式计划,交互式决策) |
contentrain prune | 删除合并 cr/* 本地和远程分支(排空积压) |
contentrain describe <model> | 检查模型的模式、状态和导入片段 |
contentrain delta <delta.json> --dry-run | 针对存储计划一个WordPress源增量:位置,字段更改,冲突,墓碑,重定向(仅计划) |
contentrain describe-format | 打印contenttrain内容格式规范 |
contentrain scaffold --template | 应用模板(blog, landing, docs, ecommerce, saas, i18n, mobile) |
contentrain setup <agent|--all> | 为IDE配置MCP服务器+ AI规则(Claude Code, Cursor, Windsurf, VSCode, Copilot, Codex) |
contentrain skills | 安装、更新或列出contenttrain AI技能和IDE规则 |
contentrain serve | 启动本地评审UI (REST + WS), MCP工作室服务器(--stdio),或MCP HTTP服务器(--mcpHttp) |
contentrain studio connect | 将存储库连接到Studio项目 |
contentrain studio login | 使用contenttrain Studio进行认证 |
contentrain studio logout | 退出Studio |
contentrain studio whoami | 显示当前认证状态 |
contentrain studio status | 从Studio显示项目概述 |
contentrain studio activity | 显示最近的活动提要 |
contentrain studio usage | 显示工作区使用指标 |
contentrain studio branches | 管理远程内容分支 |
contentrain studio cdn-init | 为内容分发设置CDN |
contentrain studio cdn-build | 触发CDN重建 |
contentrain studio webhooks | 管理的人 |
contentrain studio submissions | 管理表单提交 |
国旗矩阵
每个读命令都支持 --json 供CI使用;写命令界面 --watch 或 --yes 它们适用于:
| 命令 | 显著的标志 |
|---|---|
init | --yes, --locales <csv> (默认 en), --domains <csv> (默认 marketing,blog,system) |
import | --out <dir>, --auth <user>, --force, --include-emails, --json |
status | --json |
doctor | --json, --usage -失败时非零退出;包括一个遥控器 cr/* 部门检查 |
validate | --json, --fix, --interactive, --watch, --model <id> |
generate | --json, --watch, --published, --at <ISO timestamp>, --require-status, --mediaBaseUrl <url> |
diff | --json |
merge | --yes (不确定) |
reconcile | --yes (在没有提示的情况下执行一个清晰的计划) --json (管制计划) |
prune | --dry-run, --yes, --json (只与 --yes) |
delta | --dry-run (必需的;没有应用模式), --incoming <dir>, --store <dir>, --taxonomy <csv>, --json |
describe | --sample, --locale, --json |
describe-format | --json |
scaffold | --template <id>, --locales <csv>, --no-sample, --json |
serve | --port 3333年(默认), --host (默认主机), --no-open, --demo, --stdio, --mcpHttp, --authToken |
典型的流
初始化项目:
contentrain init
检查项目状态(CI使用可选JSON):
contentrain status
contentrain status --json
contentrain doctor
contentrain doctor --json
contentrain doctor --usage # Analyze content key usage
生成类型SDK客户端:
contentrain generate
contentrain generate --watch # Watch for changes
contentrain generate --json # CI-friendly JSON output
验证内容并创建评审分支修复:
contentrain validate
contentrain validate --fix
contentrain validate --watch # Live validation in dev mode
contentrain validate --json # CI output
审查未完成的更改:
contentrain diff
contentrain diff --json # CI integration
打开本地UI:
contentrain serve
contentrain serve --demo # Start with a temporary demo project
启用详细日志记录:
contentrain --debug status
CONTENTRAIN_DEBUG=1 contentrain validate # Via environment variable
serve 模式
contentrain serve 有三个角色。
本地评审UI(默认)
contentrain serve
contentrain serve --port 3333 --host localhost
contentrain serve --demo # Temporary project (no setup needed)
为状态/内容/验证/分支/ normalize /医生/ description -format / preview-merge提供REST端点,为实时更新提供WebSocket流,以及嵌入式Vue serve-ui 应用程序与CLI捆绑在一起。
WebSocket事件类型: connected, config:changed, context:changed, meta:changed, model:changed, content:changed, branch:created, branch:merged, branch:rejected, branch:merge-conflict, sync:warning, validation:updated, normalize:plan-updated, file-watch:error。
MCP工作室(IDE代理)
contentrain serve --stdio
当连接Claude Code, Cursor, Windsurf或其他MCP客户端到本地项目时,使用stdio模式。
MCP HTTP (Studio、CI、远程驱动程序)
contentrain serve --mcpHttp --authToken $(openssl rand -hex 32)
contentrain serve --mcpHttp --port 3333 --host 0.0.0.0 --authToken $TOKEN
向上旋转 可流式HTTP MCP 服务器在 POST /mcp. 持票人认证 要求 在非环回绑定上:像审查UI一样,CLI拒绝在任何主机上启动 localhost / 127.0.0.1 / ::1 没有 --authToken (或 CONTENTRAIN_AUTH_TOKEN). 在以下情况下使用HTTP模式:
- 工作室的代理远程驱动MCP
- CI运行器需要确定性的内容操作
- 另一台机器上的代理协调内容更改
HTTP会话使用相同的方法 LocalProvider 后台是演播室——传输不同,行为不变。远程git-host提供程序(GitHubProvider, GitLabProvider)由嵌入式程序构建,嵌入式程序以编程方式实例化MCP服务器;请参阅MCP包文档了解该流程。
要让外部代理操作连接的Studio项目而无需自己运行服务器,请使用托管端点, Studio MCP Cloud。
generate 和 #contentrain
contentrain generate 将类型化客户端写入 .contentrain/client/ 和注入 #contentrain 导入到 package.json。
又一代:
import { query, singleton, dictionary, document } from '#contentrain'
在本地模型/内容工作期间以手表模式运行:
contentrain generate --watch
IDE设置和AI技能
配置你的IDE使用contenttrain的MCP服务器和AI代理规则:
contentrain setup claude-code
contentrain setup cursor
contentrain setup vscode
contentrain setup --all # Configure all detected IDEs
安装或更新AI代理技能和IDE规则:
contentrain skills
contentrain skills --update # Force update
contentrain skills --list # List installed skills
这个安装:
- 内容训练代理技能(Claude, Cursor等的任务指导)
- IDE规则文件:
.claude/rules/,.cursor/rules/,.windsurf/rules/,.github/copilot-instructions.md,AGENTS.md为食品
评审工作流程
大多数写操作都是从专用对象创建特性分支的 contentrain 分支。在评审模式下,这些分支被推送到远程进行团队评审。在自动合并模式下,它们被合并到 contentrain branch和baseBranch是通过update-ref升级的。
当baseBranch分叉时(提交) contentrain 缺乏(双域迁移PR留下的状态),写是一个 部分成功:它落在 contentrain 和报告 base_advance: "blocked_diverged" 而不是失败。 contentrain status 表示两个方向的关系; contentrain reconcile 合并分支内容感知(双亲合并提交),以便快速前进再次工作。
合并一个审查分支(通过) contentrain merge, contentrain diff(service UI,或MCP工具)也会删除它的远程副本,因此合并的分支永远不会堆积成等待审查的幻影。这同样适用于被拒绝/删除的草案。这是尽最大努力—脱机或权限失败只会产生警告—并且可以使用 remoteBranchCleanup: false 在 config.json. 在本地模式下("git": { "push": false } 在 config.json,或 CONTENTRAIN_NO_PUSH=1)在远程上没有推送或删除任何内容,并且 merge/prune 打印他们跳过了。注意,删除推送的分支会关闭其上所有打开的PR/MR。
使用:
contentrain status
contentrain diff
contentrain prune --dry-run # preview merged local/remote leftovers, then run with --yes
理解:
- 有多少活动
cr/*审查分支存在于contentrain分支(和远程)contentrain doctor) - 分支运行状况是否阻止新的写操作(警告为50,阻塞为80)
- 在合并或删除分支之前更改了什么
Studio集成
这个 studio 命令组用于连接CLI Contentrain工作室,受治理内容的团队操作界面。
验证和连接:
contentrain studio login
contentrain studio whoami
contentrain studio connect
这个 connect 命令将本地存储库链接到Studio项目。它检测git远程,验证GitHub应用程序安装,扫描 .contentrain/ 配置,并创建项目-所有这些都在一个交互流程中。
contentrain studio connect --workspace ws-123
设置CDN内容分发:
contentrain studio cdn-init
contentrain studio cdn-build --wait
监控项目活动和使用情况;
contentrain studio status
contentrain studio activity --limit 10
contentrain studio usage
管理分支、webhook和表单提交:
contentrain studio branches
contentrain studio webhooks
contentrain studio submissions --form contact-form
中安全地存储凭据 ~/.contentrain/credentials.json 与 0o600 权限。使用 CONTENTRAIN_STUDIO_TOKEN 用于CI/CD的环境变量。
contentrain import
导入WordPress站点到 .contentrain 内容库:
contentrain import export.xml # WXR export file (highest offline fidelity)
contentrain import https://site.example # public REST
contentrain import https://site.example --auth editor # authenticated REST: prompts for the Application Password
CONTENTRAIN_WP_APP_PASSWORD=… contentrain import https://site.example --auth editor
CONTENTRAIN_WP_AUTH=editor:… contentrain import https://site.example
contentrain import export.xml --include-emails # also write author/commenter e-mails
写入规范存储加号 import-report.json, entry-source-map.json (WP id→条目地址)和-当源有注释时- comments-export.json (contentrain-comments@1,准备接受评论服务)。现有的 .contentrain 只是被 --force. 由 @contentrain/wp-import。
个人数据。 该商店保存作者姓名和登录名、评论者姓名、网站url和评论文本。WXR导出还携带作者和评论者的电子邮件地址;他们被排除在商店之外 comments-export.json 除非你通过 --include-emails. 评论ip,用户代理和头像url(包括Akismet的评论元)从来没有写。默认情况下,电子邮件不会出现,因为存储通常以git(有时是公开的repo)结束。REST路径永远不会看到它们。
凭证。 读取应用程序密码 CONTENTRAIN_WP_APP_PASSWORD (与 --auth <user>),从 CONTENTRAIN_WP_AUTH=user:password,或从隐藏的提示符。 --auth user:password 仍然可以工作,但已弃用并警告:argv进入shell历史和进程列表。
contentrain delta
计划一下WordPress更新对已经交付的商店意味着什么:
contentrain delta bridge-delta.json --incoming ./next-export --dry-run # report
contentrain delta bridge-delta.json --incoming ./next-export --dry-run --json # the planned SourceDeltaPlan
该命令读取存储(--store(默认:当前目录)及其 entry-source-map.json,从存储根或从 bridge/. 它以同样的方式读取新导出。对于每条记录,它报告它在存储中的位置,哪些字段不同,哪些地址移动(每条记录都变成301)。垃圾和清除的删除是分开保存的。在存储库中也编辑过的记录是冲突的,并且它不会被覆盖。没有应用模式:without --dry-run 指挥部拒绝了,因为实施计划要经过审查。分类法来自于桥 inventory.json 当它在出口旁边时;给其他人命名 --taxonomy。
公共静态构建
contentrain generate --published 排除其之外的草稿和内容
publish_at/expire_at 窗口。 --at 2026-10-01T12:00:00Z 修复了公共建筑
时钟可重复的测试和暗示 --published。 --require-status 也
排除在meta中没有状态的条目,对于每个条目都有状态的项目
(WordPress导入);这意味着 --published. 没有这些旗帜,
编辑生成保持其现有行为。观察模式观察元数据
编辑;计划的静态发布仍然需要构建/部署触发器。
文档
完整文件载于 ai.contentrain.io /包/ cli。
发展
源自monorepo词根:
pnpm --filter contentrain test -- --run
pnpm --filter contentrain exec tsc --noEmit
pnpm --filter contentrain build
内容列车生态系统的一部分
contenttrain是团队和人工智能代理的内容治理生态系统;代理通过 MCP服务器. 这个命令行是 开源工具 (文档). 工作室 在同一存储库上添加团队审阅和角色; 迁移 将WordPress网站移动到Astro,并且 桥 是一个免费的WordPress插件,可以将网站导出为内容仓库。
许可证
麻省理工学院