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:
1 parent
13ab7cfa63
commit
bde1bbc44a
13 files changed
+35
-35
No files matched your search
@@ -12,9 +12,9 @@
|
||||
|
||||
| # | 功能入口 | 按钮 | label | 技能(skills_json) | 前缀常量 | prompt 边界要点 | 代码位置 |
|
||||
|---|---------|------|-------|------------------|---------|----------------|---------|
|
||||
| 1 | 账号列表(#/accounts)弹窗 | AI创作 | 创作指令 | `['短视频脚本创作']` | `SKILL_HINT_CREATE` | 完整人设卡(剔非创作章节)+选题方向;未解析先解析再创作 | data-pages.js confirmAiScript ~L386 |
|
||||
| 2 | 账号详情(#/account/:id)视频列表 | AI创作 | 创作指令 | `['短视频脚本创作']` | `SKILL_HINT_CREATE` | 人设卡+视频选题块(topic/content/未解析三分支) | data-pages.js renderAccountDetail ~L720 |
|
||||
| 3 | AI写脚本(#/rewrites)视频列表 | AI创作 | 创作指令 | `['短视频脚本创作']` | `SKILL_HINT_CREATE` | 同 2 | data-pages.js renderRewrites ~L929 |
|
||||
| 1 | 账号列表(#/accounts)弹窗 | AI创作 | 创作指令 | `['短视频工作台']` | `SKILL_HINT_CREATE` | 完整人设卡(剔非创作章节)+选题方向;未解析先解析再创作 | data-pages.js confirmAiScript ~L386 |
|
||||
| 2 | 账号详情(#/account/:id)视频列表 | AI创作 | 创作指令 | `['短视频工作台']` | `SKILL_HINT_CREATE` | 人设卡+视频选题块(topic/content/未解析三分支) | data-pages.js renderAccountDetail ~L720 |
|
||||
| 3 | AI写脚本(#/rewrites)视频列表 | AI创作 | 创作指令 | `['短视频工作台']` | `SKILL_HINT_CREATE` | 同 2 | data-pages.js renderRewrites ~L929 |
|
||||
| 4 | 账号详情(#/account/:id) | 提炼账号设定 | 提炼指令 | `['mcn-dou-analysis']` | `SKILL_HINT_EXTRACT` | 功能三提炼;仅基于库中已有解析数据,**禁数据抓取字样**(防 BROWSER_HINT 误注入) | data-pages.js ~L732 |
|
||||
| 5 | 脚本对比弹窗 | 生成分镜 / 重新生成 | 分镜指令 | `['短视频分镜脚本']` | `SKILL_HINT_STORYBOARD` | F4 生成分镜;只产出分镜提示词不改写脚本 | data-pages.js openRewriteCompare fireGenSb ~L1007 |
|
||||
| 6 | AI脚本诊断(#/reviews) | 复盘 / 更新 | 复盘指令 | `['脚本复盘']` | `SKILL_HINT_REVIEW` | 独立会话一脚本一上下文;按有无源脚本动态分支(三模式 vs 独立10维) | data-pages.js startReview ~L1130 |
|
||||
|
||||
@@ -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>
|
||||
@@ -536,7 +536,7 @@ const server = http.createServer((req, res) => {
|
||||
const { prompt, name, skills } = JSON.parse(body || '{}');
|
||||
if (!prompt || typeof prompt !== 'string' || !prompt.trim()) return sendErr(400, 'prompt 不能为空');
|
||||
// 09-01 参数级技能挂载:skills_json 是 automations 表原生字段(default '[]'),
|
||||
// 客户端调度器创建会话时按该字段挂载技能;前端传技能名数组(如 ['短视频脚本创作'])即完成任务级技能绑定
|
||||
// 客户端调度器创建会话时按该字段挂载技能;前端传技能名数组(如 ['短视频工作台'])即完成任务级技能绑定
|
||||
// 09-03 模型跟随用户选择:原 model_id 钉死 'deepseek-v4-flash'(绕过用户模型选择,全任务跑 flash)。
|
||||
// 已改为动态读取最近活跃手动会话的 model(下方 modelRow/modelId,跟随用户在 UI 的 auto/flash/pro 选择);
|
||||
// 兜底 'auto' = 系统按任务复杂度自动路由。实证:调度器 model_id 有值 → setSessionModel 强制指定会话模型,
|
||||
|
||||
@@ -78,7 +78,7 @@ for r in db.execute(\"SELECT automation_id,status,metadata_json FROM automation_
|
||||
> 背景:用户要求"前3条重写"时,曾误在会话内直接手写脚本草稿(影子脚本:不入库、不在左侧会话栏、不走技能会话)。根因=没有先判定执行方式。正确姿势如下:
|
||||
|
||||
1. **取原任务 prompt**:从 `~/.workbuddy/workbuddy.db` 的 `automations` 表按任务 id 读取完整 prompt(含人设卡+视频选题+创作要求+落库字段)
|
||||
2. **组装并提交**:`POST /api/run`,body 含 `{ prompt: <原prompt>(可按需附注"执行最新技能版本"), name: '重写-...', skills: ['短视频脚本创作'] }`——`skills_json` 让客户端会话挂载指定技能,任务自动应用当前技能版本(含最新优化)
|
||||
2. **组装并提交**:`POST /api/run`,body 含 `{ prompt: <原prompt>(可按需附注"执行最新技能版本"), name: '重写-...', skills: ['短视频工作台'] }`——`skills_json` 让客户端会话挂载指定技能,任务自动应用当前技能版本(含最新优化)
|
||||
3. **轮询状态**:`GET /api/run/status?id=<新任务id>`(queued/pending/running/done/error/review)
|
||||
4. **验证落库**:任务完成后查 `mcn-plugin.db` 的 `rewrite_log` 表,确认 `video_id/script_text/status='done'` 已更新;前端在 AI写脚本页可见
|
||||
5. **不重复建任务**:同一"重写"诉求只提交一次;若用户要"改一版",也是新任务而非改原任务
|
||||
|
||||
Reference in new issue
Block a user