AI PLAY玩法更新持续收录
← 回到更新流

2026-09-14 · 原文发布日

影视音乐Cue版权清查审批流程(付费模板)

付费n8n模板:监视Gmail中带cue sheet附件的邮件,OpenAI抽取曲目、地区、载体等结构化权利元数据,再调用PRO作品登记与母带权利两个HTTP接口交叉核对,算出权利缺口与风险状态,生成清查包邮件送音乐总监,经Webhook等待人工批准后才提交制作系统,否则把缺口清单发给版权协调员;证据JSON存Google Drive并记审计表。

原文要点

原工作流每分钟监视Gmail,筛主题含"cue sheet"或"music clearance"且带附件的邮件;用OpenAI(作者标注gpt-5-mini,备选gpt-4o-mini)抽取production、cues、territories、media、term等权利元数据;调两个HTTP接口查PRO作品登记与母带权利归属;合并后算权利缺口(作者份额合计缺失、母带归属缺失、sync报价缺失)与风险状态;生成清查包JSON邮件送音乐总监,Wait节点等webhook回{"approved":true|false},批准则HTTP提交制作系统,否则把缺口清单发给版权协调员;证据JSON存Google Drive并向Sheets的"Audit Log"追加一行。外部调用带3次重试与2秒退避,作者称配置约25–40分钟。

这次做成什么

搭一条可演示的"邮件进入→权利抽取→双接口交叉核对→缺口计算→人工审批→归档"清查流水线。因原模板需付费购买,以下为本站独立设计的练习方案:用测试邮件数据和mock接口代替真实Gmail与权利库,买模板后再按其节点图替换为正式凭证与端点。

准备什么

  • n8n自托管(Docker/npm)或n8n Cloud v1.0以上环境
  • 一个OpenAI API Key(练习用账号内可用的chat模型)
  • 一个Google账号,用于Gmail测试收件、Drive文件夹和含Audit Log工作表的Sheets
  • 两个可访问的权利查询HTTP接口,或使用本站mock数据代替
  • 原模板为付费商品,需购买后才能按其真实节点和字段核对

具体怎么做

  1. 准备测试输入

    新建工作流,先用Manual Trigger或Webhook测试节点代替Gmail Trigger,粘贴下方测试cue sheet JSON作为邮件正文与附件内容的替身;若已购原模板,则按其中文档把触发器换成Gmail Trigger,过滤主题含cue sheet或music clearance且带附件。

  2. 配置OpenAI抽取

    添加OpenAI凭证,挂一个LLM/Information Extractor节点,粘贴下方抽取提示词,要求模型只输出固定结构的JSON:production、territories、media、term、cues数组(每曲含title、writers、publishers、share、duration_seconds、usage_type、sync_quote)。

  3. 交叉核对权利接口

    用两个HTTP Request节点,分别指向PRO作品登记接口与母带权利接口(Header Auth凭证)。练习阶段把URL指向你自己的mock服务或直接用上一步数据;购买模板后需把rights.example、labels.example等占位域名替换成真实端点,否则会请求失败。

  4. 合并并计算缺口

    用Merge节点把抽取结果与两条接口的返回合并,再接Code节点运行下方缺口计算JS:逐cue检查作者份额合计是否等于100、是否缺master_owner、是否缺sync_quote,输出gaps数组与risk_status(clear或needs_follow_up)。

  5. 生成清查包并送审

    再经一次LLM调用把合并数据整理成清查包JSON(保留gaps),用Gmail节点发给练习收件人(自己)扮演音乐总监;接Wait节点,模式选webhook恢复,记下resume URL,审批系统需POST {"approved":true} 或 {"approved":false}。

  6. 分支处理与归档

    IF节点按approved分流:true→HTTP提交制作系统(练习改为写一行Sheets模拟);false→Gmail把gaps清单发给版权协调员角色邮箱。最后Google Drive节点上传最终证据JSON到目标文件夹,Google Sheets节点向Audit Log追加一行(时间、production、risk_status、审批人、结果)。

可直接复制的材料

权利元数据抽取提示词

本站独立编写的抽取提示词,接入LLM节点后需在其后追加实际邮件正文变量;原模板真实提示词需购买后核对。

你是音乐版权清查助手。从下面的cue sheet文本中抽取结构化权利元数据,只输出一个JSON对象,不要输出任何解释文字。结构为:{"production":"作品名","episode":"集号或null","territories":["地区代码"],"media":["载体类型"],"term":"授权期限","cues":[{"cue_number":1,"title":"曲名","writers":[{"name":"作者","share":50}],"publishers":["出版社"],"duration_seconds":60,"usage_type":"background或theme或source","sync_quote":金额数字或null,"master_owner":"母带权利人或null"}]}。规则:文中没有的字段填null,不要编造;share必须是数字;territories用ISO两位国家码,如CN、US;无法确定时填[]或null。cue sheet文本如下:

缺口计算Code节点脚本

本站独立示例逻辑,作者称原模板可在Calculate Clearance Gaps节点里自定义阈值,具体实现以购买后的模板为准。

// n8n Code节点(JavaScript),输入为合并后的cue数据与接口证据
for (const item of $input.all()) {
  const d = item.json;
  const gaps = [];
  for (const cue of d.cues || []) {
    const total = (cue.writers || []).reduce((s, w) => s + (Number(w.share) || 0), 0);
    if (total !== 100) gaps.push({cue_number: cue.cue_number, gap: "writer_share_total", detail: "份额合计" + total});
    if (!cue.master_owner) gaps.push({cue_number: cue.cue_number, gap: "missing_master_owner", detail: cue.title});
    if (cue.sync_quote === null || cue.sync_quote === undefined) gaps.push({cue_number: cue.cue_number, gap: "missing_sync_quote", detail: cue.title});
  }
  item.json.gaps = gaps;
  item.json.risk_status = gaps.length === 0 ? "clear" : "needs_follow_up";
}
return $input.all();

测试cue sheet数据

本站虚构合成数据,仅用于练习;第二首cue故意缺sync_quote与master_owner以触发缺口分支。

{"production":"夜航北纬","episode":"E03","territories":["CN","US"],"media":["streaming","broadcast"],"term":"5年","cues":[{"cue_number":1,"title":"雨巷口琴","writers":[{"name":"陈一鸣","share":60},{"name":"李荞","share":40}],"publishers":["海潮音乐出版"],"duration_seconds":95,"usage_type":"background","sync_quote":8000,"master_owner":"海潮唱片"},{"cue_number":2,"title":"旧灯塔","writers":[{"name":"周野","share":100}],"publishers":["远岸版权"],"duration_seconds":140,"usage_type":"source","sync_quote":null,"master_owner":null}]}

审批回调与审计列配置

本站方案参考值;approved字段名与原模板一致为approved,其余列名可按模板内Audit Log实际表头调整。

{"webhook_payload":{"approved":true,"approver":"supervisor@example.com","comment":"份额已核实"},"audit_log_columns":["timestamp","production","episode","cue_count","gap_count","risk_status","approved","approver"],"gmail_recipients":{"supervisor":"你的测试邮箱","rights_coordinator":"你的第二测试邮箱"}}

输入与输出示例

本站虚构演示输出,为示例脚本按上述输入的推算结果,未真实运行原模板。

输入

使用上方测试cue sheet数据,其中"旧灯塔"一曲缺sync_quote且master_owner为null,"雨巷口琴"作者份额合计100。

对应输出

缺口计算输出:{"gaps":[{"cue_number":2,"gap":"missing_sync_quote","detail":"旧灯塔"},{"cue_number":2,"gap":"missing_master_owner","detail":"旧灯塔"}],"risk_status":"needs_follow_up"};随后流程仍生成清查包送审,审批人回{"approved":false}时走缺口清单邮件分支,Audit Log追加一行approved=false。

做完检查这些

  • 抽取节点输出能通过JSON解析且包含production、territories、cues三个键,缺失字段为null而非省略
  • 当某cue的writers份额合计为100且master_owner、sync_quote齐全时,gaps数组为空且risk_status为clear
  • 向Wait节点的resume URL POST {"approved":true} 后执行进入提交分支,POST false则进入缺口邮件分支
  • 执行结束后Google Drive目标文件夹新增一个证据JSON,Sheets的Audit Log工作表恰好追加一行且risk_status与执行结果一致

容易卡住的地方

  • 原模板是付费商品,本页不是原工作流文件,节点名与按钮位置需购买后按模板内文档核对
  • 作者标注模型为gpt-5-mini(备选gpt-4o-mini),你的账号是否可用该模型需在OpenAI控制台确认,调用另计费
  • rights.example、labels.example、production.example是占位域名,不替换真实端点HTTP节点必然报错
  • Wait节点的resume webhook URL要在工作流激活后才稳定有效,测试执行时URL可能不同
  • 审批回包的字段名大小写必须是approved,布尔值true/false不能写成字符串
  • 练习勿用真实客户邮件与真实权利库凭据,用合成数据和隔离测试邮箱

原文与作者资料 ↗

本站借助AI整理来源事实,独立编写中文操作指南与示例。示例不代表实际运行结果;来源效果尚未由本站独立复现。付费模板与模型、服务费用分别计算。

原文标题
Gate film and TV music cue rights clearance with Gmail, OpenAI, and Google Drive/Sheets
原作者
Swapnil Mandloi
原始发布日期
2026-09-14T15:12:44.819Z
来源
https://n8n.io/workflows/19579