@devmotion/cli

中文文档
1.9.4发布于 2026/11/10SEE LICENSE IN LICENSEES Module近 30 天下载 3021

DevMotion本地工作室:项目文件夹上的DevMotion编辑器,渲染器和MCP服务器.

中文使用文档
文档目录12 节
  1. 安装
  2. 图标
  3. 你的计划
  4. 目标与锁
  5. 项目文件夹
  6. 共享文件夹
  7. 编辑器支持
  8. 记录一个应用程序
  9. 代理人(MCP和技能)
  10. 云层特征
  11. 聊天
  12. 许可证

@ devmotion/ cli (英语)

DevMotion本地工作室. DevMotion 编辑器、渲染器和 MCP 服务器,运行在一个 机器上的工程文件夹 。 生成(语音、图像、视频、音乐、字幕、, {\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}DevMotion的聊天在Devmotion上进行 {\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}我还得说 应用与您的账户; 聊天也可以 驱动您已经安装的 Claude 代码或代码 .

The Local Studio open on a project while its scene files change on disk: each edit lands on the canvas as it is saved

npx @devmotion/cli init my-video
cd my-video
npx @devmotion/cli          # opens the Studio in your browser

安装

npm i -g @devmotion/cli     # then: devmotion …
# or without installing
npx @devmotion/cli <command>

要求数 节点.js 20带货包的ffmpeg船(@ffmpeg-installer/ffmpeg),以及 (单位:千美元) postinstall 步骤下载 Playwright Chromium(~150 MB,一次)用于渲染. 跳过它 与 DEVMOTION_SKIP_POSTINSTALL=1· ; devmotion render 先用取来.


图标

命令目的
devmotion在此文件夹中打开工程工作室( 或显示帮助)
devmotion init [dir] [--name] [--size 1920x1080] [--fps 30]创建一个项目, .gitignore 和代理设置( e)--no-agent 跳过)
devmotion studio [dir] [--port 4747] [--no-open]运行工作室:编辑器、渲染器和 MCP 服务器(别名) preview(中文(简体) )
devmotion render [dir] [-o file.mp4] [--port]调整到 renders/ (使用运行的工作室或启动一个)
devmotion record <tour.mjs> [-p dir] 编号 : --check在一个巡回演唱时记录一个应用程序; -p 编辑它为工程
devmotion record init [url]写一个首个巡回演唱会
devmotion beats <script.txt> -w <words.json> [-o take.json]放置一个描述 {beat} 语音定时词上的标记(离线)
devmotion skill install [--global] 编号 : skill print给 Claude 代码、 Codex 或 Cursor 演示技能
devmotion login 编号 : logout 编号 : whoami您的 devmotion.app账户: 世代信用和云聊天
devmotion doctor检查ffmpeg, Chromium, 登录, 服务器兼容性和本地代理

| devmotion render --changed [-c config] QQ 仅显示/ 丢失/ 修改目标, 更新锁定QQ | devmotion render --all 编号 : --target a,b 编号 : --watch QQ 将每个/ 选择的目标渲染; 当目标更改后重放 QQ | devmotion check [-c config] QQ 不渲染: 退出 1 列出 stale, 缺少或修改的目标 QQ | devmotion lock [-c config] QQ 在锁中记录当前输出而不渲染QQ | devmotion studio -c config [--target id] QQ 打开目标项目, 或选择一个配置项目 QQ

工作室听着 127.0.0.1:4747 默认情况下——一个端口,一个项目. 运行一秒钟 与 --port在包含几个项目(每个语言一个)的回购中 目标文件的工作室 : devmotion studio -c videos/devmotion.config.json 列出其 并询问要打开哪个项目,以及 --target intro.it 打开目标的项目 直接( 没有终端可以请求, --target (见e/cn.4/sub.2/2003/l.10。).


你的计划

在你的机器上的渲染(devmotion render 每个模式,工作室的导出,MCP render_project (b) 遵循与CLI登录的账户计划 规则作为 devmotion.app的导出:没有出口干净的计划,视频带有 DevMotion徽章,每个计划在其出口分辨率上都封住大小. 一个更大的项目是 它的布局没有改变。 当地土地不计算,也不使用信贷. 当一个纹身带有徽章或被缩小时, devmotion render 说一次和名字 提拔它的计划驳回.申请/定价);工作室的 显示渲染器将携带的徽章.

这个计划是来自虔诚的 应用,当你在一天之内完成和记住 (单位:千美元)~/.config/devmotion/plan.json)),所以离线渲染保留了最后已知的计划. 未登录 或者没有答案 也不记得了 自由计划 在CI中,设置 DEVMOTION_API_KEY 键 计划出口干净的账户;没有这种账户,CI会携带徽章。 账户 在下面的渲染锁中不播放任何角色: devmotion check 是否给出同样的答案 钥匙.


目标与锁

宣布产出一次 devmotion.config.json (路径相对于文件). 若干目标 可共享项目; 变体是一个目标 values 或者说 range。 。 。 .

{
  "version": 1,
  "lock": "devmotion.lock.json",
  "targets": {
    "intro": {
      "source": "videos/intro",
      "values": { "headline": "Hello" },
      "range": { "start": 0, "end": 8 },
      "audio": false,
      "encode": { "crf": 23, "maxCrf": 35, "maxBytes": 1572864 },
      "output": "public/intro.mp4",
      "poster": { "path": "public/intro.jpg", "time": 5 }
    }
  }
}

devmotion render --changed 摧毁每一个目标,只让那些需要它的人。 目标 sourceHash 是其项目文件上的sha256; renders/, (中文(简体) ), .devmotion/, (中文(简体) ), node_modules/ (不包括), values, (中文(简体) ), range, (中文(简体) ), audio, (中文(简体) ), encode,海报时间和渲染器 版本(CLI major.minor). devmotion.lock.json 承诺:

{
  "lockVersion": 1,
  "renderer": "1.1",
  "targets": {
    "intro": {
      "sourceHash": "<sha256>",
      "outputs": { "public/intro.mp4": { "sha256": "<sha256>", "bytes": 123456 } }
    }
  }
}

目标在散列不同或没有被锁定时会停滞,在输出消失时会丢失,以及 当输出的校验和与锁不同时修改. devmotion check 在 CI 中运行, 无 已安装了渲染器 。 在小的 CLI 升级后运行 devmotion render --changed (或 devmotion lock 如果产出不变).

程序用途 : import { loadConfig, readLock, checkTargets, recordTarget, writeLock } from '@devmotion/cli' (与 @devmotion/cli/lock) (中文(简体) ).


项目文件夹

my-video/
├── project.json        # the project (the same JSON devmotion.app stores)
├── scenes/<layerId>/   # HTML / CSS / script sources of scripted scenes
├── assets/             # your media, referenced as /local-assets/<path>
├── renders/            # rendered MP4s
└── .devmotion/         # local state (chat history, cloud cache) — not versioned

在工作室中编辑,使用代理,或用手:当文件更改时工作室会重新加载. 场景 来源为普通文件( r)index.html, (中文(简体) ), style.css, (中文(简体) ), script-<n>.js页:1 project.json 作为 { "$file": "scenes/<layerId>/index.html" }。当 工作室保存,不管它叫什么.

共享文件夹

文件使用多个工程(一个工具箱,一个场景的逻辑,声音效果)一次直播,在任意 项目。 相对于它自己的文件夹的工程名称 :

{
  "shared": { "kit": "../../kit", "scene": "../shared" },
  "layers": [
    {
      "type": "html",
      "props": {
        "scripts": [
          { "src": "/local-shared/kit/world.js" },
          { "src": "/local-shared/scene/scene.js" }
        ]
      }
    },
    { "type": "audio", "props": { "src": "/local-shared/kit/sfx/tick.wav" } }
  ]
}

工作室为他们服务 /local-shared/<name>/<path> 当他们变换时,他们将重新加载 将文件与项目本身的: 换套装,每个使用它的项目都僵化。 每个语言一个项目,分享场景, 使每种语言都有自己的声音、时间和长度.

编辑器支持

init 点 project.json 在创建它的CLI版本的JSON Schema:

{ "$schema": "https://unpkg.com/@devmotion/cli@<version>/schema/project.schema.json" }

它来自工作室自己的计划, 层道具每类型包含, 所以一个编辑器 验证并完成文件. devmotion.config.json 还有一个: https://unpkg.com/@devmotion/cli@<version>/schema/config.schema.json。 。 。 .


记录一个应用程序

A take edited by devmotion record: the camera closes in as a click lands on Render video, a ring spreads from it, then the camera pulls back

devmotion record 在脚本驱动时记录一个真实的应用程序,即Screen Studio记录的方式 个人:网站,电子应用(VS代码,Cursor,Slack.)或桌面应用,被该软件捕获 操作系统在60英尺处有一个软物理指针,加上每个动作的音轨,点击和 键.

// my-app.tour.mjs
export default {
  app: { kind: 'browser', url: 'https://example.com' },
  async run(D) {
    await D.click('text=Get started');
    await D.click({ describe: 'The email field of the sign-up form' });
    await D.type('[email protected]');
    await D.key('Meta+Enter');
  }
};
devmotion record --check                     # permissions, helpers and login on this machine
devmotion record init https://example.com    # a starter tour: example.tour.mjs
devmotion record my-app.tour.mjs             # recordings/my-app.mp4 + my-app.track.json
devmotion record my-app.tour.mjs -p demo     # … edited into the project ./demo

record init [url] 写一个第一部作品的巡演:它等待,向下滚动 后,并单击页面头的首个链接,只有选择器. --name <name> 命名文件( r)<name>.tour.mjs,默认从站点), --app electron (VS代码由 默认)或 --app native (默认计算器)开始一个应用的巡演取而代之. 从来没有 覆盖文件,并打印记录巡演的命令.

导演: D.move, (中文(简体) ), D.click, (中文(简体) ), D.type, (中文(简体) ), D.key, (中文(简体) ), D.scroll, (中文(简体) ), D.drag, (中文(简体) ), D.show (一秒钟) 值得仔细观察, D.skip(work) (切出视频的慢步), D.at 编号 : D.wait (拍打声). 一个目标是一个选择器,一个点,或者一个要点击的描述.

--project <dir> 在已编辑的工程中登陆所带( 文件夹的创建方式如下 ) devmotion init 当它没有项目时:一个自动相机,每点击一次就关闭, 键入字段并显示目标,然后向后拉;每次点击时取出一个环;每次取出一个芯片 键盘快捷键( e)⌘⇧P); 视频没有指针时为鼠标层. 这一切都很平淡 您可以在工作室中更改层和键框。 再次录制同样的巡回演唱会,它的拍摄是 替换到原地,其余项目没有被改变:新发行只需新买. 在巡演中说:

edit: { camera: { maxZoom: 1.6, hold: 1.2 }, ripple: true, keystrokes: 'shortcuts' }
// camera: false for the whole screen throughout; keystrokes: 'all' | 'none'

叙事: devmotion beats。 。 。 . 给一次巡回演唱会的时间 给它打个记号 脚本为 {name} 一言为定 beats 声音的定时词:工作室的 转换音频动作( T)action_transcribe_audio, (中文(简体) ), { text, language, words: [{ word, start, end }] })或(或) [word, start, end] 三发. 它在下线后写下:

devmotion beats script.txt --words transcription.json --out take.json
# script.txt: # lines are notes, [tags] and *accents* are ignored, {end} is reserved
[warm] {open}Open the *editor*. {render}Then render it.
{ "words": [["Open", 0.1, 0.4], …], "beats": { "open": 0.1, "render": 1.4, "end": 2.3 } }

每拍子是声速数秒的开始, end 最后一个词的结尾(a) 重音单词包含第四个元素, 1) (中文(简体) ). 单词对齐大小写 数字(2 编号 : two),其音译所不言出失命令而取名. 单位 参观, await D.at(take.beats.render) 等待那节拍.

macOS 14+ (Screen Recording perference; 可访问驱动桌面应用程序); Linux X11 是 实验和未经测试。 用文字描述的目标(和每个桌面应用程序)在 由 DevMotion 绘制的截图并使用您的 AI 信用值: 登录到第一个( D)devmotion login) (中文(简体) ). a 之前,一个 拿着它, record 印出价钱和余额,当您不在时停止 登录入或出入入入. 选择者和点数是免费的,不需要账号.


代理人(MCP和技能)

工作室为DevMotion MCP服务器服务 http://127.0.0.1:4747/mcp: 与 devmotion.app (英语:get_design_guide, (中文(简体) ), get_project, (中文(简体) ), upsert_layer, (中文(简体) ), write_layer_source, (中文(简体) ), instantiate_block, (中文(简体) ), inspect_frames, (中文(简体) ), action_*,写入项目文件夹。 留着 工作室在工作时运行. devmotion init 写入 Claude 代码的 MCP 配置 (单位:千美元).mcp.json)和 Codex ((.codex/config.toml),外加减速技巧.

该技能告诉一个代理人如何使用CLI:项目文件夹,工作室及其MCP工具, 制造和制造目标, record,账户, 以及完整的文件在哪里。 装入 任何存储器,或每个项目:

devmotion skill install                  # this folder, for Claude Code, Codex and Cursor
devmotion skill install --global         # every project of this user (your home folder)
devmotion skill install --agent cursor   # one agent: claude, codex or cursor
devmotion skill print                    # print it, for any other agent

默认情况下它会写 .claude/skills/devmotion/SKILL.md (法规)和 .agents/skills/devmotion/SKILL.md (代码;光标同时读取); --agent cursor 独自写作 .cursor/skills/devmotion/SKILL.md。更新后再运行它。 同一文件已经送达 https://devmotion.app/skills/devmotion/SKILL.md 一个特工说要读它.


云层特征

devmotion login 打开 devmotion.app为此机器创建 API 密钥( 存储于 ~/.config/devmotion/credentials.json) (中文(简体) ). 然后所有在工作室和 MCP 磁共振 action_* 工具运行于 devmotion。 应用与您的计划信用; 输入一次上传 并下载结果到 assets/generated/. . 您的项目留在本地.

环境覆盖 : DEVMOTION_API_KEY (使用此键)和 DEVMOTION_API_URL (另一个) DevMotion 服务器).

聊天

聊天板提供 减号云 模型(需要登录)以及安装和 登录在你的机器上, 克劳德代码 财务报告和审定财务报表 代码:工作室运行他们与自己的 MCP服务器,编辑器跟随他们的编辑活性.


许可证

专有和封闭源码:使用须遵守 变动服务条件。见 LICENSE; 第三方许可证 THIRD_PARTY_LICENSES.txt。 。 。 .

版本与发布记录

@devmotion/cli 共发布 29 个版本,首次发布于 2026/05/28;过去 12 个月发布了 29 个版本。

版本发布日期距今
1.9.4latest2026/11/101 天前
1.9.32026/11/083 天前
1.9.22026/11/057 天前
1.9.12026/11/057 天前
1.9.02026/11/057 天前
1.8.02026/10/2815 天前

关于 @devmotion/cli 的常见问题

@devmotion/cli 是什么?

DevMotion本地工作室:项目文件夹上的DevMotion编辑器,渲染器和MCP服务器.

如何安装 @devmotion/cli?

在项目目录运行 npm install @devmotion/cli,或使用 pnpm add / yarn add / bun add。它还提供命令行工具 devmotion,可以用 npx devmotion 直接运行。

@devmotion/cli 支持 TypeScript 吗?

该包的 package.json 没有声明类型入口。需要类型提示时,可以在 npm 上查找社区维护的 @types/devmotion__cli 是否存在。

@devmotion/cli 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

@devmotion/cli 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js >=20。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

@devmotion/cli 可以商用吗?

@devmotion/cli 使用 SEE LICENSE IN LICENSE 许可。许可条款写在包内的独立文件中,请阅读该文件确认可否商用。以上为概括,不构成法律意见,请以许可原文为准。

@devmotion/cli 的下载量有多少?

根据 npm 官方下载统计,@devmotion/cli 在 2026/10/12 – 2026/11/10 这 30 天内被下载 3,021 次,日均约 101 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@devmotion/cli 还在维护吗?

最新版本 1.9.4 发布于 2026/11/10(1 天前);至今共发布 29 个版本,其中过去 12 个月发布了 29 个;首次发布于 2026/05/28。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。