@casatwy/deyo 0.2.0 → 0.2.1
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 +3 -3
- package/deyo.mjs +3 -4
- package/package.json +1 -1
- package/skill-manager.mjs +12 -10
package/README.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
`deyo` 是 [https://deyo.miaobi.fun](https://deyo.miaobi.fun) 的命令行工具。你可以直接在终端里提交音视频链接或本地音视频文件进行转写,并把结果输出到终端或保存到本地文件。
|
|
4
4
|
|
|
5
|
-
CLI `0.2.
|
|
5
|
+
CLI `0.2.1` 在保留可选稳定正文事件的同时,改为在省略 `--language` 时请求服务端自动检测转写语言;只有用户明确指定语言时,CLI 才会把 `language` 字段发送给链接或本地文件任务。默认不会把正文写入进度日志;只有显式使用 `--stream-transcript --progress-format jsonl`,且最终格式为 `text` 时,才会在 stderr JSONL 中输出稳定的 Whisper 正文增量。stdout 或 `-O` 始终只接收最终 Whisper 原稿,CLI 本身不做 AI 整理。
|
|
6
6
|
|
|
7
7
|
当前支持 8 类链接来源 + 本地音视频上传。链接来源包括小宇宙单集、喜马拉雅单集(含 `xima.tv` 短链)、B 站单视频、抖音单视频、小红书单视频笔记、YouTube 单视频、Apple Podcasts 单集和 Twitter/X 单条推文。其中 YouTube 如果命中可直接使用的字幕,会直接输出字幕或文本结果,不进入完整转写、不扣分钟;喜马拉雅合集链接会返回 422 并提示选择单集,不会扣分钟或创建转写任务;抖音图文内容、小红书图文笔记、Twitter/X 文本或图片推文会返回不支持转写的提示。B 站支持普通 BV 链接、`b23.tv` 短链、带 `bvid` 的 `player.bilibili.com/player.html` 嵌入播放器链接,以及可由 Whisper 解出 BV 页面的 `bilibili://video/...` App 分享视频链接;CLI 会识别并透传 App 链接,不在本地解码或推导 BV。
|
|
8
8
|
|
|
@@ -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 要求 CLI 至少为 `0.2.1`。
|
|
32
32
|
|
|
33
33
|
先确认 CLI 版本,再交给 Deyo CLI 调用各平台的原生管理器安装 Skill:
|
|
34
34
|
|
|
@@ -246,7 +246,7 @@ deyo --api-key 'deyo_sk_other' 'https://www.youtube.com/watch?v=xxxx'
|
|
|
246
246
|
|
|
247
247
|
`--language <value>`
|
|
248
248
|
|
|
249
|
-
|
|
249
|
+
显式指定转写语言,例如 `zh` 或 `en`。省略该参数时,CLI 不会在链接任务或本地文件任务的请求体里发送 `language` 字段,由服务端和 Whisper 自动检测;不要根据终端语言或内容标题自行推断。
|
|
250
250
|
|
|
251
251
|
`-O, --output <path>`
|
|
252
252
|
|
package/deyo.mjs
CHANGED
|
@@ -11,7 +11,6 @@ import { handleSkillCommand } from './skill-manager.mjs'
|
|
|
11
11
|
const CLI_VERSION = createRequire(import.meta.url)('./package.json').version
|
|
12
12
|
|
|
13
13
|
const DEFAULT_BASE_URL = 'https://deyo.miaobi.fun'
|
|
14
|
-
const DEFAULT_LANGUAGE = 'zh'
|
|
15
14
|
const POLL_INTERVAL_MS = 1500
|
|
16
15
|
const SSE_RECONNECT_DELAYS_MS = [1000, 2000, 4000]
|
|
17
16
|
const SSE_RECOVERY_INTERVAL_MS = 15000
|
|
@@ -91,7 +90,7 @@ function printUsage() {
|
|
|
91
90
|
--source <name> 可选,显式指定来源:xiaoyuzhou | ximalaya | bilibili | douyin | xiaohongshu | youtube | apple-podcasts | twitter
|
|
92
91
|
--file <path> 可选,显式指定本地单个音视频文件
|
|
93
92
|
--mime-type <type> 可选,上传本地文件时显式指定 MIME,例如 audio/mpeg 或 video/mp4
|
|
94
|
-
--language <value>
|
|
93
|
+
--language <value> 可选,显式指定转写语言;省略时自动检测
|
|
95
94
|
--format <value> 可选,text | srt | vtt | json | verbose_json
|
|
96
95
|
--progress-format <v> 可选,auto | text | jsonl,默认 auto
|
|
97
96
|
--stream-transcript 可选,通过 stderr JSONL 输出稳定正文;仅支持 text 且必须搭配 --progress-format jsonl
|
|
@@ -2085,7 +2084,7 @@ async function uploadLocalFile(fileInput, args, baseUrl, apiKey, reporter, runCo
|
|
|
2085
2084
|
retry: true,
|
|
2086
2085
|
body: {
|
|
2087
2086
|
uploadId,
|
|
2088
|
-
language: args.language
|
|
2087
|
+
...(args.language ? { language: args.language } : {}),
|
|
2089
2088
|
},
|
|
2090
2089
|
})
|
|
2091
2090
|
const checkedTask = getUploadTaskFromCheckResult(checkResult)
|
|
@@ -2192,7 +2191,7 @@ async function handleAuthCommand(argv) {
|
|
|
2192
2191
|
function buildUrlTaskCreatePayload(args, input) {
|
|
2193
2192
|
const createPayload = {
|
|
2194
2193
|
url: input.url,
|
|
2195
|
-
language: args.language
|
|
2194
|
+
...(args.language ? { language: args.language } : {}),
|
|
2196
2195
|
}
|
|
2197
2196
|
|
|
2198
2197
|
if (args.source) {
|
package/package.json
CHANGED
package/skill-manager.mjs
CHANGED
|
@@ -25,6 +25,8 @@ const PLUGIN_ID = `deyo@${MARKETPLACE_NAME}`
|
|
|
25
25
|
const GITHUB_REPOSITORY = 'casatwy/deyo-skill'
|
|
26
26
|
const GIT_SOURCE_URL = 'https://github.com/casatwy/deyo-skill.git'
|
|
27
27
|
const OPENCLAW_SKILL = '@casatwy/deyo'
|
|
28
|
+
const OPENCLAW_REGISTRY = 'https://clawhub.ai'
|
|
29
|
+
const STABLE_SEMVER = /^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)$/
|
|
28
30
|
|
|
29
31
|
const DEFAULT_SCOPES = {
|
|
30
32
|
codex: 'user',
|
|
@@ -1010,15 +1012,15 @@ function getOpenClawSkillPath(scope) {
|
|
|
1010
1012
|
|
|
1011
1013
|
function isOfficialOpenClawOrigin(origin) {
|
|
1012
1014
|
if (!isPlainObject(origin)) return false
|
|
1013
|
-
|
|
1014
|
-
|
|
1015
|
-
|
|
1016
|
-
|
|
1017
|
-
|
|
1018
|
-
|
|
1019
|
-
|
|
1020
|
-
|
|
1021
|
-
&&
|
|
1015
|
+
const registry = typeof origin.registry === 'string' ? origin.registry.replace(/\/+$/, '') : ''
|
|
1016
|
+
return origin.version === 1
|
|
1017
|
+
&& registry === OPENCLAW_REGISTRY
|
|
1018
|
+
&& String(origin.ownerHandle || '').replace(/^@/, '').toLowerCase() === 'casatwy'
|
|
1019
|
+
&& String(origin.slug || '').replace(/^@casatwy\//, '').toLowerCase() === 'deyo'
|
|
1020
|
+
&& typeof origin.installedVersion === 'string'
|
|
1021
|
+
&& STABLE_SEMVER.test(origin.installedVersion)
|
|
1022
|
+
&& Number.isFinite(origin.installedAt)
|
|
1023
|
+
&& /^[a-f0-9]{64}$/.test(origin.fingerprint || '')
|
|
1022
1024
|
}
|
|
1023
1025
|
|
|
1024
1026
|
async function inspectOpenClawSkill(scope) {
|
|
@@ -1055,7 +1057,7 @@ async function inspectOpenClawSkill(scope) {
|
|
|
1055
1057
|
managed: metadata.exists,
|
|
1056
1058
|
officialSource: metadata.safe && isOfficialOpenClawOrigin(origin),
|
|
1057
1059
|
origin,
|
|
1058
|
-
version: origin
|
|
1060
|
+
version: isOfficialOpenClawOrigin(origin) ? origin.installedVersion : null,
|
|
1059
1061
|
safe: metadata.safe,
|
|
1060
1062
|
}
|
|
1061
1063
|
}
|