@casatwy/deyo 0.2.1 → 0.2.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +39 -8
- package/deyo.mjs +295 -115
- package/openclaw-skill-update.mjs +794 -0
- package/package.json +3 -2
- package/skill-manager.mjs +111 -16
package/README.md
CHANGED
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
|
|
3
3
|
`deyo` 是 [https://deyo.miaobi.fun](https://deyo.miaobi.fun) 的命令行工具。你可以直接在终端里提交音视频链接或本地音视频文件进行转写,并把结果输出到终端或保存到本地文件。
|
|
4
4
|
|
|
5
|
-
CLI `0.2.
|
|
5
|
+
CLI `0.2.4` 保留省略 `--language` 时的自动检测和可选稳定正文事件,以及由 npm CLI 管理的 OpenClaw 更新登记、离线状态与显式确认流程。本地文件选定后会直接初始化并分片上传,不再预先计算文件 SHA-256。默认不会把正文写入进度日志;只有显式使用 `--stream-transcript --progress-format jsonl`,且最终格式为 `text` 时,才会在 stderr JSONL 中输出稳定的 Whisper 正文增量。stdout 或 `-O` 始终只接收最终 Whisper 原稿,CLI 本身不做 AI 整理。
|
|
6
6
|
|
|
7
|
-
当前支持
|
|
7
|
+
当前支持 11 类平台链接 + 音频/视频文件链接 + 本地音视频上传。可转写链接包括小宇宙单集、喜马拉雅单集(含 `xima.tv` 短链)、B 站具体视频、抖音单视频、小红书单视频笔记、YouTube 单视频、Apple Podcasts 单集、Twitter/X 视频推文、TikTok 单条公开视频、看看新闻单条视频、微信视频号公开单视频,以及未知平台的 HTTPS 音频/视频直链(无需以常见媒体扩展名结尾)。其中 YouTube 如果命中可直接使用的字幕,会直接输出字幕或文本结果,不进入完整转写、不扣分钟;喜马拉雅合集、Apple Podcasts 节目主页、小宇宙播客主页和 B 站 Bangumi / UGC 合集会返回 422 并提示选择具体单集或视频,不会扣分钟或创建转写任务;抖音图文内容、小红书图文笔记、Twitter/X 文本或图片推文以及 TikTok 图集也会返回不支持转写的提示。TikTok 支持标准、移动端和 vm/vt 单条短链;账号页、搜索页、直播、私密或地区受限内容不在支持范围,文字稿来自音轨 ASR。看看新闻支持 hostname 中包含 `kankanews.com` 的 HTTPS 视频页面。B 站的普通 BV、分 P、`b23.tv` 短链、带 `bvid` 的 `player.bilibili.com/player.html`、可由 Whisper 解出 BV 页面的 `bilibili://video/...` App 分享视频链接,以及 Bangumi `ep` 都保持具体视频流程;CLI 会识别并透传 App 链接,不在本地解码或推导 BV。B站专属视频会先进行无任务、无扣费的预检,展示完整与可转写时长;只有交互式终端明确确认后才转写试看部分并按可转写时长扣分钟,拒绝或非 TTY 环境会直接退出。
|
|
8
8
|
|
|
9
9
|
本地文件转写只支持单个普通音频或视频文件,固定作为 `upload` 来源提交。你可以直接传文件路径,也可以显式使用 `--file`;如果文件扩展名或系统识别不可靠,可以用 `--mime-type` 指定媒体类型。当前不支持目录、glob、stdin、批量队列或断点续传。
|
|
10
10
|
|
|
@@ -28,7 +28,7 @@ deyo --help
|
|
|
28
28
|
|
|
29
29
|
## 安装 Deyo Skill
|
|
30
30
|
|
|
31
|
-
Deyo CLI 和 Deyo Skill 是两个独立产物:CLI 负责登录、上传、转写、结构化进度和 Whisper 原稿;Skill 负责让 Codex、Claude、Gemini 或 OpenClaw 正确调用 CLI,并在普通 text
|
|
31
|
+
Deyo CLI 和 Deyo Skill 是两个独立产物:CLI 负责登录、上传、转写、结构化进度和 Whisper 原稿;Skill 负责让 Codex、Claude、Gemini 或 OpenClaw 正确调用 CLI,并在普通 text 场景按约束整理正文。它们独立安装、独立版本、独立更新,版本号不要求相同。Skill `1.0.11` 要求 CLI 至少为 `0.2.2`。
|
|
32
32
|
|
|
33
33
|
先确认 CLI 版本,再交给 Deyo CLI 调用各平台的原生管理器安装 Skill:
|
|
34
34
|
|
|
@@ -47,7 +47,7 @@ deyo skill install --platform openclaw
|
|
|
47
47
|
- Codex:添加 `casatwy/deyo-skill` Git marketplace 并安装 `deyo@deyo-official`;新会话生效,后续由宿主刷新 marketplace。
|
|
48
48
|
- Claude:合并同名官方 marketplace 配置、设置 `autoUpdate: true`,再安装 `deyo@deyo-official`;运行 `/reload-plugins` 或开始新会话后生效。
|
|
49
49
|
- Gemini:从 Deyo 官方 Git 仓库安装 extension 并启用 `--auto-update`;不会添加固定 `--ref` 或跳过来源确认的 `--consent`,更新后重启 Gemini CLI。
|
|
50
|
-
- OpenClaw:使用 owner-qualified 的 `@casatwy/deyo
|
|
50
|
+
- OpenClaw:使用 owner-qualified 的 `@casatwy/deyo`;fresh install 成功后严格回读官方 managed origin 并登记调用时检查,已有官方 managed 安装只登记、不在安装命令中更新。直接运行 OpenClaw 原生命令安装的副本不会被自动登记。
|
|
51
51
|
|
|
52
52
|
离线查看本地安装状态:
|
|
53
53
|
|
|
@@ -59,6 +59,15 @@ deyo skill status --platform claude --json
|
|
|
59
59
|
|
|
60
60
|
`status` 只读取本地设置、安装 metadata 和 manifest;它不会启动平台 CLI、访问网络或触发更新。
|
|
61
61
|
|
|
62
|
+
OpenClaw 的调用时检查默认每 24 小时至多验证一次 owner-qualified `latest` 候选,只接受稳定版本、`resolvedFrom: tag`、`tag: latest` 和 security `pass/clean`,不会直接安装。发现候选后,Skill 会先展示候选、来源和安全结果并询问 `是否现在更新Deyo到latest`。只有本轮得到明确同意后,才执行:
|
|
63
|
+
|
|
64
|
+
```bash
|
|
65
|
+
deyo skill update --platform openclaw --scope global \
|
|
66
|
+
--confirm-latest 'update @casatwy/deyo to latest now'
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
workspace 登记必须把 scope 改为 `workspace`。更新前 CLI 会重新验证 `latest`;候选变化时旧确认立即失效并要求重新确认。成功、origin 变化或结果不确定时要求重新调用 `/deyo`,已知失败且 origin 未变化时继续使用旧版。所有原生管理器输出都与转写 stdout、JSONL、raw 和 cleaned 文件隔离;流程不会使用 `--all`、`--force`、`--force-install` 或风险确认绕过,也不会创建 Cron。设置 `DEYO_OPENCLAW_AUTO_UPDATE=0` 可退出调用时检查。
|
|
70
|
+
|
|
62
71
|
如果检测到旧版手工复制的 `deyo` Skill 目录,安装会停止并显示完整目录树 SHA-256。只有目录路径、文件、内容、类型、模式和 symlink 都与已知官方历史版本完全一致时,才允许把该摘要原样传回:
|
|
63
72
|
|
|
64
73
|
```bash
|
|
@@ -153,6 +162,8 @@ deyo --file ./audio.mp3 --mime-type audio/mpeg -O ./audio.txt
|
|
|
153
162
|
deyo -O ./episode.txt 'https://www.xiaoyuzhoufm.com/episode/xxxx'
|
|
154
163
|
```
|
|
155
164
|
|
|
165
|
+
小宇宙 `/podcast/:id` 播客主页不是具体单集。CLI 会在创建任务、复用结果或扣减分钟之前返回 422,并提示打开具体 `/episode/` 链接后重新提交。
|
|
166
|
+
|
|
156
167
|
处理喜马拉雅单集并保存为文本:
|
|
157
168
|
|
|
158
169
|
```bash
|
|
@@ -161,6 +172,8 @@ deyo -O ./ximalaya.txt 'https://www.ximalaya.com/sound/963656969'
|
|
|
161
172
|
|
|
162
173
|
也可以传入会跳转到单集页的 `xima.tv` 短链;合集链接会直接提示需要选择具体单集链接后再提交。
|
|
163
174
|
|
|
175
|
+
Apple Podcasts 带有效 `?i=` 的单集链接保持原转写流程;节目 `id<digits>` 主页会返回 422,并提示选择具体单集。
|
|
176
|
+
|
|
164
177
|
处理 Twitter/X 视频推文并保存为文本:
|
|
165
178
|
|
|
166
179
|
```bash
|
|
@@ -169,6 +182,16 @@ deyo --source twitter -O ./tweet.txt 'https://x.com/historyinmemes/status/179063
|
|
|
169
182
|
|
|
170
183
|
如果传入 Twitter/X 文本或图片推文,CLI 会提示当前不支持转写;这类内容不会进入支付或分钟扣减链路。
|
|
171
184
|
|
|
185
|
+
处理微信视频号公开单视频并保存为文本:
|
|
186
|
+
|
|
187
|
+
```bash
|
|
188
|
+
deyo --source wechat_channels -O ./wechat.txt 'https://channels.weixin.qq.com/finder-preview/pages/sph?id=sphxxxx'
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
共享视频号凭据有效时,CLI 会直接沿用普通任务流程。需要扫码时,CLI 会打印只含公开规范链接的 Deyo HTTPS 页面地址并尝试用系统浏览器打开;无桌面的服务器可把打印出的地址复制到其他设备。CLI 只轮询安全的有效/待授权状态,授权成功后仅重放原任务请求一次,因此继续复用服务端原解析记录、订单和幂等扣费逻辑。
|
|
192
|
+
|
|
193
|
+
视频号 Cookie、凭据 generation、媒体直链及其签名不得通过 CLI 参数、stdin、环境变量、本地配置或剪贴板提供;CLI 也不会在文本、JSON 或 JSONL 输出中返回这些材料。API Key 只用于把请求映射到 Deyo 用户,不会把共享视频号凭据绑定到该用户。
|
|
194
|
+
|
|
172
195
|
处理本地音频文件并保存为文本:
|
|
173
196
|
|
|
174
197
|
```bash
|
|
@@ -208,6 +231,10 @@ deyo -O ./bilibili.txt 'https://player.bilibili.com/player.html?bvid=BVxxxx&page
|
|
|
208
231
|
deyo -O ./bilibili-app.txt 'bilibili://video/BVxxxx?page=2'
|
|
209
232
|
```
|
|
210
233
|
|
|
234
|
+
Bangumi `ep` 仍按具体视频处理。Bangumi `ss` / `md`、受支持的 UGC season / series 合集入口会返回 422,并提示选择具体视频;CLI 不会枚举或输出合集视频清单。
|
|
235
|
+
|
|
236
|
+
如果 B站具体视频被识别为B站专属视频,CLI 会先显示“这是B站专属视频,Deyo 只能转写试看部分”、完整时长、可转写时长和预计扣除分钟,并询问是否继续。输入 `y` 才会创建转写任务;其他输入、拒绝或非交互式终端都会退出,不创建任务也不扣分钟。完全没有可用试看媒体的付费 / 充电专属视频仍返回 422。
|
|
237
|
+
|
|
211
238
|
导出为 `srt` 字幕文件:
|
|
212
239
|
|
|
213
240
|
```bash
|
|
@@ -246,7 +273,7 @@ deyo --api-key 'deyo_sk_other' 'https://www.youtube.com/watch?v=xxxx'
|
|
|
246
273
|
|
|
247
274
|
`--language <value>`
|
|
248
275
|
|
|
249
|
-
显式指定转写语言,例如 `zh` 或 `en`。省略该参数时,CLI
|
|
276
|
+
显式指定转写语言,例如 `zh` 或 `en`。省略该参数时,CLI 会在链接、预检和本地文件请求体里省略 `language` 字段,由服务端和 Whisper 自动检测;不要根据终端语言或内容标题自行推断。
|
|
250
277
|
|
|
251
278
|
`-O, --output <path>`
|
|
252
279
|
|
|
@@ -295,7 +322,7 @@ deyo --api-key 'deyo_sk_other' 'https://www.youtube.com/watch?v=xxxx'
|
|
|
295
322
|
|
|
296
323
|
如果你希望 AI 或脚本稳定读取进度事件,建议使用 `--progress-format jsonl`。此时 CLI 会继续把最终结果输出到 stdout 或文件,只把进度事件按 JSON Lines 写到 stderr。AI 代跑上传或长转写任务时,应读取 JSONL 后用自然语言转述上传百分比、媒体检查、任务创建、状态变化和关键转写百分比,不要把原始 JSONL 直接贴给用户。
|
|
297
324
|
|
|
298
|
-
本地文件上传会额外输出这些上传事件:`upload.
|
|
325
|
+
本地文件上传会额外输出这些上传事件:`upload.started`、`upload.progress`、`upload.completed`、`upload.checking`、`upload.ready`、`upload.aborted`、`upload.failed`。文件选定后直接进入 `upload.started`,不计算或发送文件 hash;事件也不会包含签名 URL 或分片 ETag。
|
|
299
326
|
|
|
300
327
|
任务阶段会输出这些事件:`task.created`、`task.status_changed`、`task.progress`、`task.completed`、`task.failed`、`task.cancelled`、`task.result_written`、`task.notice`。如果 `task.created` 里出现 `mode: "subtitles"` 或 `resultReady: true`,通常表示命中字幕直出,不需要等待长时间完整转写。
|
|
301
328
|
|
|
@@ -331,11 +358,13 @@ deyo --api-key 'deyo_sk_other' 'https://www.youtube.com/watch?v=xxxx'
|
|
|
331
358
|
|
|
332
359
|
## 能力边界
|
|
333
360
|
|
|
334
|
-
- 支持输入:
|
|
361
|
+
- 支持输入:11 类平台链接来源、未知平台 HTTPS 音频/视频文件直链,或一个本地音频/视频文件;转写对象仍是具体单集、视频或单条内容。
|
|
335
362
|
- 不支持输入:目录、glob、stdin、多个文件批量队列、断点续传。
|
|
336
363
|
- 本地文件固定作为 `upload` 来源提交,不需要传 `--source`;如果强行传其他来源,CLI 会直接报错。
|
|
337
364
|
- API key 是 CLI 鉴权入口;没有 API key 时不能创建任务。
|
|
338
|
-
-
|
|
365
|
+
- 微信视频号扫码由 Deyo HTTPS 页面完成;CLI 不接收、保存或输出 Cookie、凭据 generation 和签名媒体直链。扫码完成后原任务最多自动重放一次。
|
|
366
|
+
- 完整转写会按账号分钟余额扣减;B站专属视频只按可转写时长向下取整计算分钟。YouTube 字幕直出、喜马拉雅合集、Apple Podcasts 节目主页、小宇宙播客主页、B 站 Bangumi / UGC 合集、抖音图文、小红书图文、Twitter/X 文本 / 图片推文等不进入完整转写的分支不会扣分钟或创建转写任务。
|
|
367
|
+
- Apple Podcasts 节目主页、小宇宙播客主页和 B 站合集的 422 会发生在任务复用、余额检查和分钟扣减之前;CLI/API 不会把它们当作可付费的整套转写任务。网页解析页可以展示这些入口的摘要,但 CLI 不返回单集或视频清单。
|
|
339
368
|
|
|
340
369
|
`-v, --version`
|
|
341
370
|
|
|
@@ -346,11 +375,13 @@ deyo --api-key 'deyo_sk_other' 'https://www.youtube.com/watch?v=xxxx'
|
|
|
346
375
|
- `缺少 API key。请传 --api-key、设置 DEYO_API_KEY,或先执行 deyo auth login`:先在 `https://deyo.miaobi.fun/me/api-keys` 创建 key,再执行 `deyo auth login --api-key '...'`。
|
|
347
376
|
- `API key 无效或不存在`:重新创建新的 API key 后再登录。
|
|
348
377
|
- `剩余分钟不足`:完整转写会扣减分钟余额,需要先补充分钟包;YouTube 字幕直出不会走完整转写扣减。
|
|
378
|
+
- Apple Podcasts 节目主页、小宇宙播客主页或 B 站合集返回 422:请在原平台打开具体单集或视频,再把对应链接提交给 CLI;不要尝试把整套节目或合集作为一个任务重试。
|
|
349
379
|
- 本地文件无法识别 MIME:确认是单个普通音频或视频文件;必要时用 `--mime-type audio/mpeg`、`--mime-type video/mp4` 这类 `audio/*` 或 `video/*` 类型覆盖。
|
|
350
380
|
- 媒体检查失败、没有音频轨、ffprobe 失败:换一个包含可转写音轨的普通音视频文件后重试。
|
|
351
381
|
- 上传分片遇到签名过期或 403:CLI 会重新请求签名并重试;如果持续失败,重新运行命令。
|
|
352
382
|
- 任务创建后中断本地 CLI:这只会停止本地等待,不等于取消服务端转写任务;稍后可通过同一任务或历史记录继续查看结果。
|
|
353
383
|
- `--stream-transcript` 组合错误:确认最终格式是 `text`,并同时传入 `--progress-format jsonl`;SRT、VTT、JSON 和 `verbose_json` 不支持正文事件。
|
|
384
|
+
- 视频号提示扫码:桌面环境会尝试自动打开 Deyo 授权页;headless 环境请复制终端打印的 HTTPS 地址到浏览器完成扫码。如果扫码后仍提示授权状态变化,请重新执行一次原命令。
|
|
354
385
|
|
|
355
386
|
## 在 AI 工具中使用
|
|
356
387
|
|