Agent skill

Videodevour Desktop

by datawhalechina in datawhalechina/video-devour

VideoDevour 桌面客户端(macOS .app / Windows 安装包)的打包、签名、发版与热更新。当用户要求"打包客户端"、"构建/出安装包"、"发版/发布 release"、"实现热更新或自动更新"、"客户端装不上/打开报错/签名问题"时使用;也用于排查打包特有的故障——应用被判"已损坏"、功能在开发模式正常但客户端里失效、模块缺失(No module named…

Apache-2.0Auto-check passed

Install Videodevour Desktop

skills CLI
$ npx skills add datawhalechina/video-devour --skill videodevour-desktop -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install datawhalechina/video-devour videodevour-desktop --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/datawhalechina/video-devour.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/videodevour-desktop .claude/skills/videodevour-desktop && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
videodevour-desktop
GitHub stars
157
Token cost
~1.1k tokens
SKILL.md length
268 words
Files
6 (incl. scripts, references)
Skills in repo
2
Repo updated
First seen
Licence
Apache-2.0

At a glance

VideoDevour 桌面客户端(macOS .app / Windows 安装包)的打包、签名、发版与热更新。当用户要求"打包客户端"、"构建/出安装包"、"发版/发布 release"、"实现热更新或自动更新"、"客户端装不上/打开报错/签名问题"时使用;也用于排查打包特有的故障——应用被判"已损坏"、功能在开发模式正常但客户端里失效、模块缺失(No module named…

  • Works in 4 steps: 升版本号(pyproject.toml +… → 从 CI artifacts 取产物(macOS artifact 是内层… → 打 annotated tag → gh release create 上传 4… → …
  • SKILL.md covers Goal, 硬约束(踩过坑,务必先读), 构建环境 and 常用操作, plus 3 more sections
  • Runs Shell scripts from its folder; calls uv, bash and gh

What it does

Videodevour Desktop is an agent skill from datawhalechina/video-devour. VideoDevour 桌面客户端(macOS .app / Windows 安装包)的打包、签名、发版与热更新。当用户要求"打包客户端"、"构建/出安装包"、"发版/发布 release"、"实现热更新或自动更新"、"客户端装不上/打开报错/签名问题"时使用;也用于排查打包特有的故障——应用被判"已损坏"、功能在开发模式正常但客户端里失效、模块缺失(No module named ...)、下载没反应或白屏、进程残留、架构不匹配。

Its SKILL.md is about 1.1k tokens, which your agent loads only when the skill is triggered. The skill folder holds 7 other files, including scripts and reference files (for example `README.md`, `references/pitfalls.md` and `references/release-checklist.md`). Compatibility notes: 需要 macOS 构建机(macOS 版必须);轻量依赖环境 .venv-lite(arm64) / .venv-x64(Intel);Windows 包由 CI 构建,不能跨平台本地构建

It works with macOS. The repository describes itself as: 🚀 基于 ASR + VLM 技术的智能视频笔记工具,能够将任何视频"吞噬"并生成包含图文内容和视频剪影的结构化笔记报告. The licence is Apache-2.0.

Example prompts

  • “构建/出安装包”
  • “发版/发布 release”
  • “实现热更新或自动更新”
  • “/videodevour-desktop”

Requirements

  • Python 3
  • A Bash shell
  • Compatibility (from SKILL.md): 需要 macOS 构建机(macOS 版必须);轻量依赖环境 .venv-lite(arm64) / .venv-x64(Intel);Windows 包由 CI 构建,不能跨平台本地构建

Workflow steps

4 steps, taken from the first numbered list in SKILL.md.

  1. 升版本号(pyproject.toml + desktop/installer.iss)→ PR → 合并触发 CI
  2. 从 CI artifacts 取产物(macOS artifact 是内层 zip,需解开一层)
  3. 打 annotated tag → gh release create 上传 4 个资产
  4. 验证公开下载链接返回 200

What it can do on your machine

Read from SKILL.md and the folder at commit 487eddf. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Ships 1 file in scripts/ (Shell), which the agent can run.

    Shell commands in SKILL.md call:

    • uv
    • bash
    • gh

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md. Its commands use uv and gh, which can reach the network depending on how they are called.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

  • Compatibility

    需要 macOS 构建机(macOS 版必须);轻量依赖环境 .venv-lite(arm64) / .venv-x64(Intel);Windows 包由 CI 构建,不能跨平台本地构建

    From compatibility in the SKILL.md frontmatter.

Context cost

Videodevour Desktop loads about 1.1k tokens when it runs, and up to ~7.8k if it reads all its reference files. Until then it costs about 60 tokens; SKILL.md has 268 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~60
When it runs · the whole SKILL.md, loaded when a task matches
~1.1k
With references · SKILL.md plus every file in references/, read only if the agent opens them
~7.8k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); the scripts in this folder are not scanned.

SKILL.md

The full file from datawhalechina/video-devour at commit 487eddf, republished under its Apache-2.0 licence (© datawhalechina). 268 words, ~1,072 tokens.

Download SKILL.mdSave it as .claude/skills/videodevour-desktop/SKILL.md (or your agent's skills folder). This skill also uses 5 other files; get the full folder from GitHub.
name
videodevour-desktop
description
VideoDevour 桌面客户端(macOS .app / Windows 安装包)的打包、签名、发版与热更新。当用户要求"打包客户端"、"构建/出安装包"、"发版/发布 release"、"实现热更新或自动更新"、"客户端装不上/打开报错/签名问题"时使用;也用于排查打包特有的故障——应用被判"已损坏"、功能在开发模式正常但客户端里失效、模块缺失(No module named ...)、下载没反应或白屏、进程残留、架构不匹配。
compatibility
需要 macOS 构建机(macOS 版必须);轻量依赖环境 .venv-lite(arm64) / .venv-x64(Intel);Windows 包由 CI 构建,不能跨平台本地构建
license
Apache-2.0

VideoDevour 桌面客户端:打包 · 发版 · 热更新

Goal

维护 VideoDevour 的桌面客户端分发:本地/CI 构建 → 签名与校验 → 发布 Release → 组件热更新。

核心事实:客户端是 PyInstaller onedir 冻结包 + pywebview 壳,与开发模式的行为差异极大—— 大量 bug 只在冻结环境出现。任何"开发模式正常"都不能作为客户端可用的证据。

硬约束(踩过坑,务必先读)

#约束违反的后果
1macOS 产物禁止在签名后修改 bundle 内任何文件签名 seal 失效 → 用户看到 "已损坏,无法打开",xattr -cr 也救不了
2分发的 macOS 产物必须用 ditto -c -k 打 zipupload-artifact / 普通 zip 会丢 symlink(~109 个)→ 同样"已损坏"
3spec 收集项目模块不能用 collect_submodules("backend")backend/ 无 __init__.py(命名空间包),该调用只收到 5 个模块 → 功能静默缺失
4项目内导入一律用绝对路径 backend.algorithm.x裸导入(from vlm_handler import)在冻结包中失效(代码在 PYZ 内,sys.path 插入无效)
5传给 js_api 的对象,其公开属性会被 pywebview 递归内省把 window 等原生对象存成公开属性 → 无限递归 → 窗口卡死(Windows 实测)
6签名/校验失败绝不能被 || true、2>/dev/null 吞掉坏包静默流出,用户端才发现

详细现象与修法见 references/pitfalls.md(20 项,按现象索引)。

构建环境

bash
# arm64(Apple Silicon 本机)
uv venv .venv-lite --python 3.12
uv pip install --python .venv-lite/bin/python -r requirements-lite.txt pyinstaller pywebview

# x86_64(在 Apple Silicon 上经 uv 安装 Intel Python,Rosetta 构建)
uv python install cpython-3.12.13-macos-x86_64-none
uv venv .venv-x64 --python cpython-3.12.13-macos-x86_64-none
uv pip install --python .venv-x64/bin/python -r requirements-lite.txt pyinstaller pywebview

# 各架构静态 ffmpeg(按 <target>/ 分目录,双架构可共存)
./desktop/fetch_binaries.sh --all-macos

版本号单一来源:pyproject.toml。build_mac.sh 与 installer.iss 的 AppVersion 需同步手改。

常用操作

打包(macOS)
bash
PYTHON_ARM64=$PWD/.venv-lite/bin/python \
PYTHON_X64=$PWD/.venv-x64/bin/python \
  ./desktop/build_mac.sh --both --sign     # 或 --arm64 / --x64

# 打分发 zip(保留 symlink,等价 CI 流程)
cd desktop/dist/arm64 && ditto -c -k --keepParent --sequesterRsrc VideoDevour.app VideoDevour-macos-arm64.zip

脚本内置签名与 codesign --verify 校验,失败即退出。

校验产物(发版前必做)
bash
bash .agents/skills/videodevour-desktop/scripts/verify_bundle.sh desktop/dist/arm64/VideoDevour.app

检查项:签名 seal、symlink 数量、架构一致性、捆绑二进制、关键模块是否收录。

发版

见 references/release-checklist.md。要点:

  1. 升版本号(pyproject.toml + desktop/installer.iss)→ PR → 合并触发 CI
  2. 从 CI artifacts 取产物(macOS artifact 是内层 zip,需解开一层)
  3. 打 annotated tag → gh release create 上传 4 个资产
  4. 验证公开下载链接返回 200
热更新设计

见 references/update-design.md。结论速览:

  • 禁止拉取仓库源码运行(需构建、无原子性、公共仓库 HEAD = 全量 RCE 风险)
  • 三层可行性:前端 ✅ / 纯 Python ⚠️ / 依赖与原生 ❌(只能整包)
  • 整包自动更新在代码签名落地前不要做——用户点更新会再吃一次"已损坏"
  • 优先做 yt-dlp 组件热更(平台反爬一改,旧客户端全废;纯 Python、体积小)
  • 弹窗:前端渲染 + 壳执行(只有壳能重启进程、写 bundle 外文件),两段式(静默下载 → 就绪后提示)

排错索引

按现象查 references/pitfalls.md:

现象先查
macOS 报"已损坏,无法打开"约束 1/2;pitfalls「分发」组
Windows 一点击就卡死、终端刷满 recursionjs_api 公开属性(约束 5)
报告没有配图 / 功能静默降级模块未收录(约束 3/4)
客户端报 No module named X函数内导入的依赖未收集
下载 .md 白屏 / 点了没反应ALLOW_DOWNLOADS 默认 False
应用启动后无窗口、无日志即退出console=False(必须 console=True)
关闭应用后进程残留父进程监测 / 信号处理
换了架构后功能失效(如在线 ASR)二进制 wheel 链接方式差异(cryptography 案例)
CI 打包步骤失败编码(PowerShell/Python 写文件需注意 BOM)

关键设计(改代码前必读)

设计原因
单可执行双角色:VideoDevour(壳) / VideoDevour --backend-only(后端)避免 .app 内查找第二个 EXE 的路径与签名复杂度
端口握手用文件,不用 stdoutmacOS 窗口模式(console=False 时)stdout 不可用
console=True(后端 EXE)窗口模式的 runw 引导器不保留标准文件描述符,uvicorn 会静默退出
绑定 socket 后交给 uvicorn禁止"探测端口→关闭→再绑定"(存在竞争窗口)
data_root 四级优先级--data-dir → VIDEO_DEVOUR_DATA_DIR → 平台默认 → 源码根(开发模式行为不变)
后端监测父进程需 --parent-pid 显式传入按 os.getppid() 推断会误杀独立启动/CI 场景

边界

  • Windows 包只能由 CI 构建(PyInstaller 不支持交叉编译)
  • 当前为 ad-hoc 签名(未公证):用户需 xattr -cr,且不能做整包自动更新
  • 轻量包不含本地 ML 依赖(torch/funasr/sentence-transformers),离线 ASR 是增强版能力

© datawhalechina, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 5 other files (scripts, references) in .agents/skills/videodevour-desktop of datawhalechina/video-devour.

  • SKILL.md
  • README.md
  • references/pitfalls.md
  • references/release-checklist.md
  • references/update-design.md
  • scripts/verify_bundle.sh

Open the folder on GitHubat commit 487eddf

Compare with similar skills

Videodevour Desktop next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Videodevour Desktop compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Videodevour Desktop this skilldatawhalechina/video-devour157—~1.1kAutomated safety check: PassApache-2.0
Site ArchitectureAvdLee/RocketSimApp80511 repos~3.3kAutomated safety check: PassCustom licence
Engine Whats Newflutter/flutter179k—~978Automated safety check: PassBSD-3-Clause
macOS Spm App PackagingDimillian/Skills4k5 repos~1.2kAutomated safety check: PassMIT
Openclaw Live Updateropenclaw/openclaw392k—~3.7kAutomated safety check: PassMIT
Orca iOS Simulator Controlstablyai/orca89k1 repos~584Automated safety check: PassApache-2.0

Similar skills

  • Site Architecture

    AvdLee/RocketSimApp

    When the user wants to plan, map, or restructure their website's page hierarchy, navigation, URL structure, or internal linking.

    805 GitHub starsUsed in 11 repos~3.3k tokens
    Marketing & SEOAuto-check passed
  • Engine Whats New

    flutter/flutter

    Generates the "what's new" release summary and diff file for changes in the Flutter engine (//engine/src/flutter) between two releases (e.g., 3.47 vs 3.44).

    179k GitHub stars~978 tokensUpdated today
    MobileAuto-check passed
  • macOS Spm App Packaging

    Dimillian/Skills

    Scaffold, build, and package SwiftPM-based macOS apps without an Xcode project.

    4k GitHub starsUsed in 5 repos~1.2k tokens
    MobileAuto-check passed
  • Openclaw Live Updater

    openclaw/openclaw

    Maintain the canonical live OpenClaw main checkout, macOS LaunchAgent-managed Gateway, local macOS app, exact-head main CI, and recurring full release validation.

    392k GitHub stars~3.7k tokensUpdated today
    DevOps & CloudAuto-check passed
  • iOS Simulator control from inside Orca, with the live device view in Orca's emulator pane. Use when driving a booted Apple Simulator on macOS: taps, gestures…

    89k GitHub starsUsed in 1 repo~584 tokens
    MobileAuto-check passed
  • A catalog of recurring bug shapes in the Mole Mac cleaner, used to review safety-sensitive diffs for deletion safety, unbounded commands, shell traps and weak tests.

    70k GitHub stars~2k tokensUpdated today
    DevelopmentAuto-check passed

More from datawhalechina/video-devour

  • Videodevour

    datawhalechina/video-devour

    使用 VideoDevour 把视频(B站/YouTube/抖音/X 链接、微信视频号分享链接或本地文件)处理成中文图文报告。当用户要求"处理这个视频"、"视频转笔记/报告/图文大纲"、"下载并总结B站/YouTube/抖音/X/视频号视频"时使用。支持搜索视频、查询链接信息、一键生成带关键帧的图文报告(精简/详细),改写成量子速读/公众号文章/小红书笔记、导出…

    157 GitHub stars~3k tokensUpdated 19 days ago
    Auto-check passed

Works with

Questions about Videodevour Desktop

What does Videodevour Desktop do?

VideoDevour 桌面客户端(macOS .app / Windows 安装包)的打包、签名、发版与热更新。当用户要求"打包客户端"、"构建/出安装包"、"发版/发布 release"、"实现热更新或自动更新"、"客户端装不上/打开报错/签名问题"时使用;也用于排查打包特有的故障——应用被判"已损坏"、功能在开发模式正常但客户端里失效、模块缺失(No module named…. Videodevour Desktop is an agent skill from datawhalechina/video-devour.

How do I install Videodevour Desktop in Claude Code?

Run `npx skills add datawhalechina/video-devour --skill videodevour-desktop -a claude-code`. Or copy the skill folder (.agents/skills/videodevour-desktop in datawhalechina/video-devour) into .claude/skills/videodevour-desktop in your project. Claude Code loads it when a task matches its description.

How do I install Videodevour Desktop in Codex?

Run `npx skills add datawhalechina/video-devour --skill videodevour-desktop -a codex`. Or copy the skill folder (.agents/skills/videodevour-desktop in datawhalechina/video-devour) into .agents/skills/videodevour-desktop in your project. Codex loads it when a task matches its description.

Can I use Videodevour Desktop in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add datawhalechina/video-devour --skill videodevour-desktop -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/videodevour-desktop, .gemini/skills/videodevour-desktop, .github/skills/videodevour-desktop and .opencode/skills/videodevour-desktop in your project.

What does Videodevour Desktop need to run?

Going by SKILL.md and its folder, Videodevour Desktop needs a shell for the scripts in its folder and the command-line tools its instructions call (uv, bash and gh). Our summary lists: Python 3; A Bash shell. Compatibility (from SKILL.md): 需要 macOS 构建机(macOS 版必须);轻量依赖环境 .venv-lite(arm64) / .venv-x64(Intel);Windows 包由 CI 构建,不能跨平台本地构建.

Does Videodevour Desktop access the network?

SKILL.md contains no URLs. Its commands use uv and gh, which can reach the network depending on how they are called. This is read from the text; nothing was executed.

Is Videodevour Desktop safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.

What licence does Videodevour Desktop use?

Videodevour Desktop is published under the Apache-2.0 licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Videodevour Desktop use?

About 1.1k tokens (SKILL.md is roughly 4.3k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 6.7k tokens, read only when the agent opens those files.

What are the alternatives to Videodevour Desktop?

Skills that share tags, products or a category with Videodevour Desktop: Site Architecture (AvdLee/RocketSimApp, 805 stars), Engine Whats New (flutter/flutter, 179k stars), macOS Spm App Packaging (Dimillian/Skills, 4k stars) and Openclaw Live Updater (openclaw/openclaw, 392k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Videodevour Desktop?

datawhalechina (a GitHub organization) maintains it in datawhalechina/video-devour, which has 157 GitHub stars. The repository holds 2 skills in this directory. The repository was last updated on September 21, 2026.

Source: datawhalechina/video-devour on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.