为 DeepSeek Harness 提供本地内容工作台,把每条视频对应到一个本地文件夹,从选题、脚本到字幕、封面、发布状态统一管理。
- 语言
- TypeScript
- License
- MIT
- 分支
- main
安装
$ dsh plugin --profile web add github:oil-oil/dsh-oil-creator在终端中运行以上命令,通过 dsh CLI 安装此插件。可在右上角切换 Profile。 第一次用 dsh?看这篇新手教程
一句话定位
为 DeepSeek Harness 装上的本地内容工作台插件:把"一条视频"映射成"内容目录里的一个文件夹",让 AI 在选题、写脚本、剪辑等待、字幕、封面、多平台发布和数据回收的每一步都跟着真实文件走,而不是再造一份私有数据库。
核心能力
- 把每条内容实体化成磁盘上的
日期_可读标题子文件夹,AI 与插件都按文件而不是私有数据来协作 - 通过侧栏、检查器和设置卡查看每条内容的阶段、工程绑定、字幕、封面、文章、发布状态
- 支持自定义长期脚本规则(语气、结构、禁忌、目标观众),AI 写或改
script.md前会自动复用 - 启动字幕转录、预览、烧录以及三画幅封面生成后立即返回,由工作台继续跟踪文件和任务状态
- 一键整理旧文件夹名称(仅改名、不会删除文件),并在改名前先预览
- 通过 Ego Browser 从已登录的创作者后台同步播放量、点赞、评论、作品链接并写回 overlay
- 内置
creator-workbenchSkill,让 AI 自举完成首次体检、目录选位和配置预览(先看再保存)
技术实现
- 语言: TypeScript(含 Zod / Schemastery Schema)
- 关键依赖:
@deepseek-ai/cordis(插件生命周期)、@deepseek-ai/dsh-tools(Tool 框架)、@deepseek-ai/dsh-typert-protocol(Host 与 Client 通信)、@deepseek-ai/dsh-settings(设置命名空间)、@deepseek-ai/schemastery(Config Schema) - 架构模式: 通过 Cordis
apply()注入 settings / tools / systemPrompt / skills 四个上下文;自身维护~/.dsh-oil-creator/overlay.json作为状态真源;通过cordis.patch.yml关闭官方侧栏并挂入自定义 "内容" 标签 - 入口文件: Host 入口
src/index.ts:14,Client 入口src/client/index.tsx:107,配置 Schemasrc/config.ts:59,核心服务src/service.ts:128,工具注册src/tools.ts:31
适用场景
独立创作者或小团队在 DeepSeek Harness 之外需要一个不会被某一台应用绑死的本地片库,并且希望 AI 助手在浏览选题、推进进度、生成资产时把每一步落到真实文件;插件不替你做录制和最终发布,但在状态推进、字幕和封面脚本调度、发布数据回收等机械环节都能代劳。
前置依赖与兼容性
| 依赖 | 最低版本 | 说明 |
|---|---|---|
| DeepSeek Harness | 0.1.0-rc.6 / 0.1.0-rc.7 | 同时声明在 dependencies 与 peerDependencies,0.1.0-rc.6 与 0.1.0-rc.7 兼容 |
| Node.js | >=22.19.0 | package.json#engines.node 强制;@types/node 锁在 22.x |
| 平台 | macOS / Windows / Linux | 跨平台;Screen Studio 工程绑定和打开、Ego Browser 发布与数据同步仅 macOS,其余能力在三平台均可使用 |
| 原生模块 | 无 | 插件本体不依赖 node-gyp / native binding;不调用 child_process 执行原生二进制(外部 skill 自行负责 Python / FFmpeg) |
安装方式
dsh plugin --profile web add github:oil-oil/dsh-oil-creator
配置项
| 配置 | 类型 | 说明 | 默认值 |
|---|---|---|---|
内容目录(libraryRoot) | 字符串,绝对路径 | 存放所有内容子文件夹的根目录;每个直接子文件夹代表一条视频/节目 | macOS: ~/Movies/视频项目;其他系统: ~/Videos/视频项目 |
数据目录(dataDir) | 字符串,绝对路径 | 存放插件的状态文件(overlay.json、回收缓存、preview 注册表) | ~/.dsh-oil-creator |
字幕工具路径(subtitleSkillDir) | 字符串,留空走自动发现 | oil-subtitle 技能的安装位置;为空时按 ~/.claude/skills、~/.codex/skills、~/.agents/skills、~/.grok/skills 顺序查找 | 空 |
封面工具路径(coverSkillDir) | 字符串,留空走自动发现 | oil-cover 技能的安装位置;查找顺序同上一项 | 空 |
已启用发布平台(overlay profile.enabledPlatforms) | 枚举数组 | 允许参与自动发布与数据回收的平台;可在设置页或 oil_creator_profile 修改;全空时两项动作都不执行 | 小红书、抖音、B 站、视频号 |
脚本规则(overlay scriptRules) | 自由文本 | 长期人设:语气、结构、禁忌、目标观众;写或改 script.md 之前 AI 会自动读取;空串表示清除 | 不设置 |
常见问题
Q: 安装后还需要额外配置吗?
A: 默认无需复杂配置。首次使用时只需选择一个内容目录,其它能力(字幕、封面、发布同步)都会在设置页统一显示状态,缺哪一项只关闭对应环节,不会阻断片库核心功能。
Q: 没有 Screen Studio、字幕、封面、发布工具也能用吗?
A: 可以。核心片库不依赖这些外部工具;Screen Studio、oil-subtitle、oil-cover、video-publisher、Ego Browser 都按可选依赖处理,缺一项时仅降级对应环节,其它能力照常工作。
Q: 正文和状态存在哪里?会不会被复制一份藏起来?
A: 成片、字幕、封面、发布包、公众号文章都保存在你选择的内容目录下;插件只把阶段、工程绑定、手写发布标记、同步数据和任务状态存进 ~/.dsh-oil-creator/overlay.json,不会把正文复制一份藏起来。
Q: API Key 会回显到聊天或页面吗?
A: 不会。字幕和封面 Key 通过 Harness 官方凭据服务保存,设置页只显示"已配置 / 未配置",不会被读回对话、设置页或会话日志。
Q: Screen Studio 和多平台数据同步支持哪些平台?
A: Screen Studio 工程绑定和打开、Ego Browser 自动发布和数据回收都仅限 macOS;其他内容管理能力在 macOS、Windows、Linux 上都能使用。
Q: 卸载或更新配置后需要做什么?
A: 用 dsh plugin --profile web remove dsh-oil-creator 卸载,或更新配置后都需要重启 dsh web profile,让插件重新装配侧栏。旧版本曾手写进 ~/.dsh/profiles/web/cordis.patch.yml 的 ui-sidebar disabled: true 需要手动删除,否则官方侧栏仍被关闭。
Q: 长任务调用后会一直阻塞到结束吗?
A: 不会。字幕生成、烧录和封面生成都设计成"立即返回、由后台观察",例如 oil_wait_export 启动观察后立刻返回,成片稳定落盘或超时(默认 2 小时)才更新状态;不要把这类调用当作同步操作。
Q: 能自动跑剪辑或自动发布吗?
A: 不能。剪屏仍由人在 Screen Studio 或 screen-studio-editor skill 里完成,最终发表按钮也由人按;插件只负责盯导出落盘、烧字幕、准备平台草稿和回收已发布数据。
上手难度
入门 — 设置页把内容目录选好、给 AI 一句自然语言指令即可走第一条内容;字幕和封面等可选能力有缺失时设置卡会直接指出,不会让人被安装步骤卡住。
已知问题与限制
- 自动剪辑不会被插件调度,仍需在对话里让
screen-studio-editor技能介入(docs/implementation.md:51) - 导出开始后同时启动字幕和封面的并行编排目前没有串成自动流水(
docs/implementation.md:52) - 字幕生成不会自动改专有名词,校对仍由人在油条字幕预览编辑器里完成(
docs/implementation.md:53) - 封面主标题必须由调用方按 oil-cover 规则提炼后再传入,插件不会自己拆标题或验错别字(
docs/implementation.md:54、src/service.ts:798) - 4 平台长文案、视频上传、
oil-video-article公众号成稿三类自动化尚未集成,插件只展示已有状态不调度执行(docs/implementation.md:55-57) - 历史已发布作品如果本地没有对应文件夹,
oil_sync_publish不会自动创建目录,只在已存在条目里回填播放/赞/评(docs/implementation.md:58) - Screen Studio 工程绑定和打开仅在 macOS 上可用,Windows / Linux 用户仍可正常使用片库、字幕、封面和发布状态记录(
src/capabilities.ts:60-66、src/service.ts:920-922)
DeepSeek Harness 上的本地内容工作台。
从选题、脚本、录屏工程到字幕、封面和发布状态,一条片子始终对应一个本地文件夹。
[!NOTE] 当前兼容 Node.js 22.19+、DeepSeek Harness
0.1.0-rc.6/0.1.0-rc.7。核心片库可独立使用;Screen Studio、字幕、封面、公众号和发布能力均可按需安装。
一条片子,就是一个文件夹
插件不建立封闭的内容数据库。正文和产物仍是普通文件,任何编辑器和 AI 文件工具都能读取:
~/Movies/视频项目/
└── 2026-08-19_DeepSeek Harness 上手/
├── topic.md
├── script.md
├── DeepSeek Harness 上手.mp4
├── DeepSeek Harness 上手.srt
├── DeepSeek Harness 上手_subtitled.mp4
├── DeepSeek Harness 上手_3x4.png
├── DeepSeek Harness 上手_4x3.png
├── DeepSeek Harness 上手_16x9.png
├── publish-package.json
└── 公众号文章/
插件只把工程绑定、手写发布标记、同步到的播放数据和生成任务等工作台状态存进 ~/.dsh-oil-creator/overlay.json,不会把正文复制一份藏起来。
一条片子如何向前推进
| 阶段 | AI 与插件可以做什么 | 仍由人确认什么 |
|---|---|---|
| 选题与脚本 | 新建规范目录,读写 topic.md / script.md,遵守长期脚本规则 | 选题方向和最终表达 |
| 录制与剪辑 | 绑定并打开 Screen Studio 工程,等待导出文件稳定落盘 | 录制、时间线剪辑和导出 |
| 字幕与封面 | 启动字幕工作流,打开预览,烧录字幕,生成三种画幅封面 | 专有名词、标题和错别字 |
| 发布 | 把本地材料交给 video-publisher 准备多平台草稿 | 各平台最终“发表”按钮 |
| 数据回收 | 通过 Ego Browser 同步已发布作品的播放、赞、评和链接 | 登录状态和异常匹配结果 |
工作台不会假装替人完成录制、剪辑或最终发布。它负责把每一步需要的文件、状态和下一步动作放在同一个上下文里。
开始使用
1. 安装插件
使用 DeepSeek Harness 自带的插件管理命令:
npx @deepseek-ai/dsh plugin --profile web add github:oil-oil/dsh-oil-creator
重启 web profile 后即可使用。插件会登记到配置里,不需要手改 Harness 配置。已经全局安装 dsh 时,可以去掉命令里的 npx @deepseek-ai/dsh。
Harness 从 GitHub 安装时生成的构建包包含 README 引用的最终 assets/readme/hero.svg,不会包含 assets/readme/source/ 下的源素材。
从源码安装
git clone https://github.com/oil-oil/dsh-oil-creator.git
cd dsh-oil-creator
pnpm install --frozen-lockfile
pnpm build
npx @deepseek-ai/dsh plugin --profile web add "$PWD"
npx @deepseek-ai/dsh web
如果 pnpm 明确提示安装期构建被阻止,再带 --allow-build 重试;正常安装不需要这一步:
npx @deepseek-ai/dsh plugin --profile web add --allow-build=dsh-oil-creator github:oil-oil/dsh-oil-creator
2. 让 AI 完成首次配置
推荐选择 Harness 的 standard 或 code Agent preset,然后直接说:
检查并配置内容工作台,找到适合的内容目录,并告诉我还缺哪些能力。
内置 creator-workbench Skill 会先调用只读的 oil_creator_setup:
- 寻找已有的内容目录。
- 检查 Screen Studio、字幕、封面和 Ego Browser 等可选能力。
- 只报告凭据是否已配置,不把 API Key 读回对话。
- 先预览配置变化,得到确认后才保存。
候选目录不存在时,AI 会先展示准备创建的完整路径;确认创建后再重新预览配置。minimal preset 不包含 Skill 和文件工具,不适合首次配置或自动整理目录。
3. 做第一条内容
可以直接对 AI 说:
今天做一期 DeepSeek Harness 安装上手。新建内容目录,把选题写进笔记,再给我一个脚本初稿。
随后继续说“绑定刚才的 Screen Studio 工程”“等待成片后生成字幕和封面”或“这条还缺什么”。工作台会根据文件夹里的真实产物推进阶段。
核心能力
- 本地片库:按
日期_可读标题扫描目录,展示阶段、成片、字幕、封面、文章和发布状态。 - 对话上下文:通过
@当前详情、内容搜索或/current content把目标文件夹交给 AI。 - AI 自举配置:自动发现标准安装路径,缺少能力时给出明确安装方式,写入前必须预览和确认。
- 长期脚本规则:保存语气、结构、禁忌和目标观众,之后写或修改
script.md时复用。 - 长任务追踪:字幕、封面和烧录启动后立即返回,由工作台继续观察文件产物和任务状态。
- 目录整理:预览并修正旧文件夹名称;默认不执行、不删除文件。
- 可选发布闭环:准备平台草稿后由人最终发表,再同步播放、点赞、评论和作品链接。
完整工具列表和逐步示例见 使用说明。
可选能力
核心片库和脚本管理不依赖下表中的外部工具。缺少某项时,只关闭对应环节。
| 能力 | 可选依赖 | 说明 |
|---|---|---|
| 字幕转录、排版、预览和烧录 | oil-subtitle + DASHSCOPE_API_KEY | 首次 clone 后必须运行 bash ~/.agents/skills/oil-subtitle/setup.sh;Key 在百炼控制台申请 |
| 三画幅封面 | oil-cover + ZENMUX_API_KEY | Key 在 ZenMux 申请 |
| Screen Studio 自动剪辑 | screen-studio-editor | 仅 macOS;录制和导出仍在 Screen Studio 完成 |
| 多平台草稿与数据回收 | Ego Lite + video-publisher | 仅 macOS;需要提前登录各平台创作者后台 |
| 公众号图文 | oil-video-article | 独立工作流,工作台负责展示已有文章 |
字幕和封面 Skill 留空时,插件会依次从 ~/.claude/skills、~/.codex/skills、~/.agents/skills 自动发现;只有非标准安装位置才需要填写高级路径。
配置原则
设置入口位于 设置 → 插件 → 内容工作台。设置页只保留需要人决定的信息,例如内容目录、脚本规则和可选能力凭据;可以通过系统检查发现的路径不重复暴露。
- API Key 使用 Harness 官方凭据服务保存。页面只显示“已配置 / 未配置”,不会回显明文。
- 内容目录可以换成任意已有的绝对路径,每个直接子文件夹代表一条内容。
enabledPlatforms默认全开,包含小红书、抖音、B 站和视频号。关闭的平台不会参与 AI 发布或数据同步;全部关闭时不执行这两项操作。- 脚本规则既可以在设置页修改,也可以让 AI 通过
oil_script_rules记录和更新。 - Cordis 高级配置仍保留
libraryRoot、dataDir、subtitleSkillDir和coverSkillDir,用于自动发现无法覆盖的特殊环境。
数据与权限边界
- 正文、视频、字幕、封面和文章保存在用户选择的本地目录。
- 插件不会自动上传内容;上传只在用户明确调用发布 Skill 后发生,并停在最终发表前。
- 字幕、封面和平台同步会访问各自的外部服务;不安装、不配置就不会启用。
- 目录创建、配置保存和批量重命名都遵循“先预览、再确认、后执行”。
卸载
npx @deepseek-ai/dsh plugin --profile web remove dsh-oil-creator
安装、卸载或更新配置后重启 dsh web。不要手动修改 ~/.dsh/profiles/web/package.json,也不要把项目的 cordis.patch.yml 复制到用户 profile;插件自己的 bundle patch 会负责装配和清理侧栏。
如果旧版本曾在 profile 的 cordis.patch.yml 里手动加入以下内容,迁移后应删除,避免卸载插件后官方侧栏仍被关闭:
- id: ui-sidebar
disabled: true
开发与验证
pnpm install --frozen-lockfile
pnpm check
pnpm check 会依次运行 TypeScript 检查、Vitest 测试和 Host / Client 构建。欢迎提交 Issue 或 Pull Request;涉及文件格式、配置兼容或外部能力时,请同时补充对应测试和文档。
准备推送开源提交或创建 GitHub tag 前运行 pnpm release:check。它会先拒绝脏工作树、未跟踪的关键文件或缺失的 origin,再验证测试、构建和 GitHub 安装包内容;不会发布到 npm。
文档
使用问题
安装或使用过程中遇到问题,可以到 oiloil.org 联系我。代码缺陷和功能建议仍然欢迎提交 Issue。