R32: 技能更名 短视频脚本创作→短视频工作台(对外统一名)

- frontmatter name:V1.0=短视频工作台、Lite1.0=短视频工作台 Lite(含标题/帮助文档/last_change)
- 工作台 JS:data-pages.js skills 参数 3 处+SKILL_HINT_CREATE 加载名+5 常量路径段、app.js SKILL_HINT_ACCOUNT、server.js 注释 → ~/.workbuddy/skills/短视频工作台/
- 文档一致性:dou-analysis SKILL.md L51/L60 主技能指称、浏览器操作规范 2 处、script-review Scope、docs 契约表+调度机制 skills 示例
- repo 目录 project/短视频脚本创作/ 保留原名(工程结构),仅改注册/显示名;流程术语与产品历史文档保留
- 版本 ?v=20260903r;注册 junction 已重建为 短视频工作台
This commit is contained in:
maogeigei committed 2026-09-03 16:43:21 +08:00
1 parent 13ab7cfa63
commit bde1bbc44a
13 files changed
+35 -35

No files matched your search

@@ -23,8 +23,8 @@ const EXT_ICON = { md: 'file-text', json: 'file-code', xlsx: 'table', csv: 'tabl
→ 轮询 /api/run/status 直到任务完成(done/error)→ 按钮恢复 */
/* 账号分析技能指令(09-01 修复:F1/F2 入口任务必须按「mcn-dou-analysis」技能执行,与提炼账号设定入口统一。
定位方式跨环境:优先用 Skill 工具按技能名加载;技能位于用户技能目录 ~/.workbuddy/skills/短视频脚本创作/subskills/mcn-dou-analysis/(部署到用户环境时同此标准位),不写死机器绝对路径 */
const SKILL_HINT_ACCOUNT = '请调用 Skill 工具加载「mcn-dou-analysis」技能(技能根目录 = 用户技能目录 ~/.workbuddy/skills/短视频脚本创作/subskills/mcn-dou-analysis/,先读取其 SKILL.md 及 references 规范;若 Skill 工具无法加载,请直接读取该目录下的 SKILL.md 文件)。严格按技能工作流执行(获取账号信息 → 视频列表抓取 → 登记达人账号表 15 列规范),遵守技能红线:TOP6 筛选、≥60 条停止、账号身份标识(sec_uid/抖音号/地址)必须由浏览器获取、禁止从数据库回填。';
定位方式跨环境:优先用 Skill 工具按技能名加载;技能位于用户技能目录 ~/.workbuddy/skills/短视频工作台/subskills/mcn-dou-analysis/(部署到用户环境时同此标准位),不写死机器绝对路径 */
const SKILL_HINT_ACCOUNT = '请调用 Skill 工具加载「mcn-dou-analysis」技能(技能根目录 = 用户技能目录 ~/.workbuddy/skills/短视频工作台/subskills/mcn-dou-analysis/,先读取其 SKILL.md 及 references 规范;若 Skill 工具无法加载,请直接读取该目录下的 SKILL.md 文件)。严格按技能工作流执行(获取账号信息 → 视频列表抓取 → 登记达人账号表 15 列规范),遵守技能红线:TOP6 筛选、≥60 条停止、账号身份标识(sec_uid/抖音号/地址)必须由浏览器获取、禁止从数据库回填。';
// 任务完成后自动刷新当前数据页(无需手动刷新即可看到最新数据)
function refreshCurrentPage() {
@@ -2,21 +2,21 @@
依赖 app.js 暴露的工具:esc/api/renderMarkdown/copyText/showToast/fmtSize */
'use strict';
/* AI创作技能指令(09-01 修复:任务必须按「短视频脚本创作」技能执行,禁止模型自由发挥导致分镜表格/TXT/MD 格式混杂。
定位方式跨环境:优先用 Skill 工具按技能名加载;技能位于用户技能目录 ~/.workbuddy/skills/短视频脚本创作/(部署到用户环境时同此标准位),不写死机器绝对路径 */
const SKILL_HINT_CREATE = '请调用 Skill 工具加载「短视频脚本创作」技能(技能根目录 = 用户技能目录 ~/.workbuddy/skills/短视频脚本创作/,先读取其 SKILL.md 及 references 规范;若 Skill 工具无法加载,请直接读取该目录下的 SKILL.md 文件)。本任务以技能 ⚡自动模式 执行:严格按 SKILL.md 的 S1-S11 步骤顺序逐步走完完整创作流程(选题→框架→大纲→情绪→结构→脚本)——中间步骤后台静默 = 各步产物在对话上下文中按序完整产出但不逐个展示,禁止跳过或合并中间步骤一步直出成品。最终输出 S9 标准脚本格式(按场次+对白组织,画面标注【景别|环境|光线|场景|场景元素】),禁止输出分镜头表格、禁止偏离脚本格式。创作时必须逐条读取并严格执行 SKILL.md 的「开场钩子铁律」与【账号设定】的「内容规则」(如果…则…)——二者为硬约束,不得自由发挥、不得跳过,具体标准一律以 SKILL.md 与内容规则原文为准。';
/* AI创作技能指令(09-01 修复:任务必须按「短视频工作台」技能执行,禁止模型自由发挥导致分镜表格/TXT/MD 格式混杂。
定位方式跨环境:优先用 Skill 工具按技能名加载;技能位于用户技能目录 ~/.workbuddy/skills/短视频工作台/(部署到用户环境时同此标准位),不写死机器绝对路径 */
const SKILL_HINT_CREATE = '请调用 Skill 工具加载「短视频工作台」技能(技能根目录 = 用户技能目录 ~/.workbuddy/skills/短视频工作台/,先读取其 SKILL.md 及 references 规范;若 Skill 工具无法加载,请直接读取该目录下的 SKILL.md 文件)。本任务以技能 ⚡自动模式 执行:严格按 SKILL.md 的 S1-S11 步骤顺序逐步走完完整创作流程(选题→框架→大纲→情绪→结构→脚本)——中间步骤后台静默 = 各步产物在对话上下文中按序完整产出但不逐个展示,禁止跳过或合并中间步骤一步直出成品。最终输出 S9 标准脚本格式(按场次+对白组织,画面标注【景别|环境|光线|场景|场景元素】),禁止输出分镜头表格、禁止偏离脚本格式。创作时必须逐条读取并严格执行 SKILL.md 的「开场钩子铁律」与【账号设定】的「内容规则」(如果…则…)——二者为硬约束,不得自由发挥、不得跳过,具体标准一律以 SKILL.md 与内容规则原文为准。';
/* 提炼账号设定技能声明(09-02 修复:原为裸 prompt,且不可复用 SKILL_HINT_ACCOUNT——后者写死 F1/F2 浏览器抓取流程,
提炼是 mcn-dou-analysis 功能三「基于视频解析生成人设卡」,复用会把任务带偏去执行浏览器流程) */
const SKILL_HINT_EXTRACT = '请调用 Skill 工具加载「mcn-dou-analysis」技能(技能根目录 = 用户技能目录 ~/.workbuddy/skills/短视频脚本创作/subskills/mcn-dou-analysis/,先读取其 SKILL.md 及 references 规范;若 Skill 工具无法加载,请直接读取该目录下的 SKILL.md 文件)。本任务为技能功能三「提炼账号设定」:先读 SKILL.md「功能总览」定位功能三,再按 references/feature/03_提炼账号设定.md 与 references/人设卡生成方法.md 执行——先判定账号类型,基于该账号已有的视频 MCP 解析数据,按人设卡统一 12 段结构生成账号设定(聚焦内容创作维度:内容基因/打法/情绪/视听/规则/差异化壁垒,不含商业化变现分析;数据复用遵循技能「已有数据处理规则」)。技能边界:产出止步于账号设定人设卡文件({达人昵称}账号设定.md);禁止生成或改写脚本(属「短视频脚本创作」技能 S1-S11 流程);本任务不执行任何数据抓取流程,仅基于库中已有解析数据做分析提炼。';
const SKILL_HINT_EXTRACT = '请调用 Skill 工具加载「mcn-dou-analysis」技能(技能根目录 = 用户技能目录 ~/.workbuddy/skills/短视频工作台/subskills/mcn-dou-analysis/,先读取其 SKILL.md 及 references 规范;若 Skill 工具无法加载,请直接读取该目录下的 SKILL.md 文件)。本任务为技能功能三「提炼账号设定」:先读 SKILL.md「功能总览」定位功能三,再按 references/feature/03_提炼账号设定.md 与 references/人设卡生成方法.md 执行——先判定账号类型,基于该账号已有的视频 MCP 解析数据,按人设卡统一 12 段结构生成账号设定(聚焦内容创作维度:内容基因/打法/情绪/视听/规则/差异化壁垒,不含商业化变现分析;数据复用遵循技能「已有数据处理规则」)。技能边界:产出止步于账号设定人设卡文件({达人昵称}账号设定.md);禁止生成或改写脚本(属「短视频工作台」技能 S1-S11 流程);本任务不执行任何数据抓取流程,仅基于库中已有解析数据做分析提炼。';
/* 生成分镜提示词技能声明(09-02 修复:原为裸 prompt 且表述模糊「按分镜技能生成镜头级描述」,无技能加载指令,
模型可能自创格式;分镜技能 F4 有严格时间戳分段/实体绑定/6层结构规则) */
const SKILL_HINT_STORYBOARD = '请调用 Skill 工具加载「短视频分镜脚本」技能(技能根目录 = 用户技能目录 ~/.workbuddy/skills/短视频脚本创作/subskills/mcn-video-prompt/,先读取其 SKILL.md 及 references 规范;若 Skill 工具无法加载,请直接读取该目录下的 SKILL.md 文件)。本任务为技能 F4「生成分镜提示词」(脚本→分镜):严格按技能 F4 流程与输出格式执行(references/制作流程:时间戳分段+智能分段策略;实体绑定属性跟随实体、独立字段只放全局项;6 层结构),产出分镜提示词序列。技能边界:只产出分镜提示词,禁止改写/重写输入的脚本正文,禁止输出脚本本身。';
const SKILL_HINT_STORYBOARD = '请调用 Skill 工具加载「短视频分镜脚本」技能(技能根目录 = 用户技能目录 ~/.workbuddy/skills/短视频工作台/subskills/mcn-video-prompt/,先读取其 SKILL.md 及 references 规范;若 Skill 工具无法加载,请直接读取该目录下的 SKILL.md 文件)。本任务为技能 F4「生成分镜提示词」(脚本→分镜):严格按技能 F4 流程与输出格式执行(references/制作流程:时间戳分段+智能分段策略;实体绑定属性跟随实体、独立字段只放全局项;6 层结构),产出分镜提示词序列。技能边界:只产出分镜提示词,禁止改写/重写输入的脚本正文,禁止输出脚本本身。';
/* 脚本复盘技能声明(09-02 修复:原技能声明混写在业务 prompt 字符串内,拆出独立前缀统一管理;
复盘技能=只分析不改写,且工作台复盘必须独立会话一条脚本一上下文) */
const SKILL_HINT_REVIEW = '请调用 Skill 工具加载「脚本复盘」技能(技能根目录 = 用户技能目录 ~/.workbuddy/skills/短视频脚本创作/subskills/mcn-script-review/,先读取其 SKILL.md 及 references 规范;若 Skill 工具无法加载,请直接读取该目录下的 SKILL.md 文件)。本任务为工作台复盘任务:严格按技能执行方式判定与复盘流程执行(评分式复盘/对比分析模式由任务说明指定;一条脚本=一个独立上下文,禁止混审多条脚本)。技能边界:只做分析与建议,不修改脚本、不触发创作流程、不改动任何技能文件。';
const SKILL_HINT_REVIEW = '请调用 Skill 工具加载「脚本复盘」技能(技能根目录 = 用户技能目录 ~/.workbuddy/skills/短视频工作台/subskills/mcn-script-review/,先读取其 SKILL.md 及 references 规范;若 Skill 工具无法加载,请直接读取该目录下的 SKILL.md 文件)。本任务为工作台复盘任务:严格按技能执行方式判定与复盘流程执行(评分式复盘/对比分析模式由任务说明指定;一条脚本=一个独立上下文,禁止混审多条脚本)。技能边界:只做分析与建议,不修改脚本、不触发创作流程、不改动任何技能文件。';
/* 视频解析技能声明(09-03 R28:视频详情页「解析/刷新」按钮=单视频 MCP 解析,任务必须按 mcn-dou-analysis 功能五执行,
一次性产出「视频脚本」(content 分镜头表)与「视频拆解」(analysis 结构化拆解)两个数据源 */
const SKILL_HINT_VIDEO_PARSE = '请调用 Skill 工具加载「mcn-dou-analysis」技能(技能根目录 = 用户技能目录 ~/.workbuddy/skills/短视频脚本创作/subskills/mcn-dou-analysis/,先读取其 SKILL.md 及 references 规范;若 Skill 工具无法加载,请直接读取该目录下的 SKILL.md 文件)。本任务为技能功能五「解析视频」:对单条抖音视频做 MCP 内容解析。按 references/feature/05_解析视频.md 流程执行:① 调用 MCP 工具 upload_douyin_video 提交视频链接(share_text=该视频抖音链接)获取 detailId;② 等待解析完成(新视频约 3-5 分钟,用 sleep 等待后查询,content 已出而 analysis 未出时稍后重试);③ 用 short_video_detail 查询解析结果 content(视频脚本/分镜头表)与 analysis(视频拆解/结构化JSON);④ 按 references/解析结果格式规范.md 用 scripts/json_tool.py 将 content.json 与 analysis.json 保存到产出目录对应视频文件夹;⑤ 解析结果入库:工作台环境(本机 http://localhost:8900)产物落盘后调用 POST /api/import/account(body {"account":"{达人昵称}"})同步入库,接口不可用则跳过不影响保存。完成后汇报 detailId、content/analysis 是否齐备与保存路径。技能边界:只做该单视频解析,不抓取账号信息、不提炼账号设定、不创作/改写脚本。';
const SKILL_HINT_VIDEO_PARSE = '请调用 Skill 工具加载「mcn-dou-analysis」技能(技能根目录 = 用户技能目录 ~/.workbuddy/skills/短视频工作台/subskills/mcn-dou-analysis/,先读取其 SKILL.md 及 references 规范;若 Skill 工具无法加载,请直接读取该目录下的 SKILL.md 文件)。本任务为技能功能五「解析视频」:对单条抖音视频做 MCP 内容解析。按 references/feature/05_解析视频.md 流程执行:① 调用 MCP 工具 upload_douyin_video 提交视频链接(share_text=该视频抖音链接)获取 detailId;② 等待解析完成(新视频约 3-5 分钟,用 sleep 等待后查询,content 已出而 analysis 未出时稍后重试);③ 用 short_video_detail 查询解析结果 content(视频脚本/分镜头表)与 analysis(视频拆解/结构化JSON);④ 按 references/解析结果格式规范.md 用 scripts/json_tool.py 将 content.json 与 analysis.json 保存到产出目录对应视频文件夹;⑤ 解析结果入库:工作台环境(本机 http://localhost:8900)产物落盘后调用 POST /api/import/account(body {"account":"{达人昵称}"})同步入库,接口不可用则跳过不影响保存。完成后汇报 detailId、content/analysis 是否齐备与保存路径。技能边界:只做该单视频解析,不抓取账号信息、不提炼账号设定、不创作/改写脚本。';
/* 09-02 v25:AI创作任务完成后的写库回调指令——否则脚本只落会话/产出目录,工作台「AI写脚本」列表看不到。
参考选题创作(有原视频,如视频行 AI创作):传 videoId/awemeId → rewrite_log.video_id 关联原视频;
自定义选题创作(无原视频,如账号列表 AI创作 弹窗):不传 videoId → video_id 留空,归「自定义选题创作」tab。
@@ -494,7 +494,7 @@ async function confirmAiScript(accountName, btn) {
rm();
const prompt = `${SKILL_HINT_CREATE}\n${buildCreatePrompt(accountName, w, personaBlock(), pHas, attach.text)}${saveHintOf({ accountId: accId })}`;
close();
executeTask({ prompt, label: '创作指令', btn, skills: ['短视频脚本创作'] });
executeTask({ prompt, label: '创作指令', btn, skills: ['短视频工作台'] });
});
document.body.appendChild(ck);
});
@@ -989,7 +989,7 @@ async function renderAccountDetail(view, id) {
target: `达人「${r.name}」|选题《${r.title}》`,
prompt: basePrompt + saveHintOf({ videoId: r.id, awemeId: r.aweme, accountId: id }),
label: '创作指令',
skills: ['短视频脚本创作'],
skills: ['短视频工作台'],
btn: b,
});
}));
@@ -1303,7 +1303,7 @@ async function renderRewrites(view, initAccount) { /* v22:initAccount=账号
? `${SKILL_HINT_CREATE}\n请为达人「${r.name}」创作一条全新的短视频故事脚本。${personaBlock}${noPersonaNote}${tb.block}${createTail}${saveHint}`
: `${SKILL_HINT_CREATE}\n请为达人「${r.name}」创作一条全新的短视频故事脚本。${personaBlock}${noPersonaNote}\n该视频尚未解析,请先解析这个抖音视频并做拆解分析(${r.url ? '视频地址:' + r.url + '\n' : ''}视频标题:《${r.title}》),再基于账号设定与提炼出的选题,创作完整故事脚本。${saveHint}`,
label: '创作指令',
skills: ['短视频脚本创作'],
skills: ['短视频工作台'],
btn: b,
});
}
@@ -41,7 +41,7 @@
</div>
</div>
<script src="app.js?v=20260903q"></script>
<script src="data-pages.js?v=20260903q"></script>
<script src="app.js?v=20260903r"></script>
<script src="data-pages.js?v=20260903r"></script>
</body>
</html>