Files
mcn-short-video/project/短视频脚本创作/V1.0/mcn-work-shop/submit-review-tasks.cjs
T

59 lines
2.8 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/* submit-review-tasks.cjs — 对俊希最新的 AI 脚本逐条提交复盘任务(与诊断页「复盘」按钮一致 + 落库 script_review 指令)
用法: node submit-review-tasks.cjs [rewriteId1,rewriteId2,...] (不传则自动取 account_id=3 的最新 done 记录) */
const { DatabaseSync } = require('node:sqlite');
const path = require('path');
const DB = path.join(__dirname, 'mcn-plugin.db');
const API = 'http://localhost:8900/api/run';
const ACCOUNT_ID = 3;
const db = new DatabaseSync(DB, { readOnly: true });
let ids = process.argv.slice(2).map(Number).filter(Boolean);
if (!ids.length) {
ids = db.prepare("SELECT id FROM rewrite_log WHERE account_id=? AND status='done' AND script_text IS NOT NULL AND script_text <> '' ORDER BY id DESC LIMIT 20").all(ACCOUNT_ID).map((r) => r.id);
}
const rows = [];
for (const id of ids) {
const r = db.prepare('SELECT rl.id, rl.video_id, rl.title, v.video_title FROM rewrite_log rl LEFT JOIN account_videos v ON v.id=rl.video_id WHERE rl.id=?').get(id);
if (r) rows.push(r);
}
db.close();
if (!rows.length) { console.log('NO REWRITES TO REVIEW'); process.exit(1); }
const sleep = (ms) => new Promise((r) => setTimeout(r, ms));
(async () => {
for (const r of rows) {
const prompt = `请对这条 AI 脚本做复盘评分(AI脚本 / 原视频脚本 / 对比分析三种模式),按 mcn-script-review(脚本复盘)技能执行。
脚本标题:《${r.title || r.video_title || ''}》(rewrite_log.id=${r.id},video_id=${r.video_id})
【任务完成后必须执行】
将复盘结果保存到工作台数据库 mcn-plugin.db 的 script_review 表(数据库路径:D:\\AgentSkill\\mcn-video-script\\project\\短视频脚本创作\\V1.0\\mcn-work-shop\\mcn-plugin.db),字段:
- type='ai'
- rewrite_id=${r.id}
- video_id=${r.video_id}
- dims_json=各维度评分 JSON(设定承接/框架节奏/钩子设置/叙事逻辑/极致事件/共鸣和共情/格式规范性/台词口语化/内容合规/教程完整链/其他)
- total=总分(数字)
- verdict=结论
- issues_json=问题清单 JSON
- content=复盘完整内容
- summary=摘要
- status='done'
(用 node:sqlite 或 sqlite3 写入;若该表不存在则创建后再写)
完成后回复:评分 + 是否已保存。`;
try {
const resp = await fetch(API, {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ prompt, name: '复盘指令', skills: ['脚本复盘'] }),
});
const d = await resp.json();
console.log(`SUBMIT review rw${r.id} →`, d.ok ? ('id=' + d.id) : ('ERR ' + d.error));
} catch (e) {
console.log(`SUBMIT review rw${r.id} → EXCEPTION ${e.message}`);
}
await sleep(3000);
}
console.log('ALL REVIEW TASKS SUBMITTED');
})();