Dayward AI
Week 2 · D11About 6 hours

Quality Control and Compliance: Machine Review, Content Safety, Generated-Content Labeling, and Copyright Boundaries

Use a vision model to automatically catch flaws in a finished cut, put content-safety checks into the pipeline, and land the two hard lines — generated-content labeling and copyright — in the export step.

Today's goals 0/3

Sign in to tick these off and save your progress.

Today's Goals

  1. Run a judgeable quality check on generated output with a vision model, and automatically bounce failing shots back for redo
  2. Explain how many content-safety review passes belong in the pipeline and where each one goes
  3. Explain the explicit and implicit requirements for generated-content labeling, and implement them in the export step

Yesterday's console let a human find flaws; today we hand the machine-checkable part to the machine and add the two hard lines that must be cleared before publishing. When you finish, scroll back up and tick the three goals off.

Plain-Language Walkthrough

QC and submission: what a machine can review

Productions have two processes outsiders often conflate. Quality control asks "did we shoot it badly"; submission for review asks "may this be broadcast." The first is done by the producer and editor themselves; the second must pass external rules. Their criteria differ completely — a shot with a broken frame fails QC and is irrelevant to submission, while a beautiful shot containing a real celebrity's face scores full marks on QC and is killed outright on submission.

A generative pipeline must do both, and both must be automated, because the volume is too large. Five episodes and two hundred shots cannot be checked frame by frame by a person.

Start with QC. What a machine can review today splits into "measurable locally" and "requires the model to look," and that split is today's most important idea:

Measurable locally (objective items): is the resolution right, how many milliseconds apart are audio and video, does a subtitle fit on one screen, does the voice loudness sit in a reasonable band. Those four come from ffprobe plus a few lines of arithmetic, need no model, and never give two different answers on two runs.

Requires the model to look (subjective items): character consistency and visual breakdown (extra hands or fingers, structural nonsense, obvious blur). There is no reliable local proxy for these — people have tried approximating character consistency with mean color distance, and measurement shows the noise makes it useless; it does not measure a face, it measures a lighting change.

The value of the split is that the accounting stays clean: objective results are deterministic, so a problem means the file really is defective; subjective results carry uncertainty, so a problem may just be the model misreading. Merge the two into one score and, when an incident arrives, you cannot tell whether to fix the file or the prompt.

Making the review judgeable

"Is this shot any good" cannot be judged automatically, because it is not a proposition with a truth value. Machine review always starts by decomposing it into scoreable checks, each satisfying three conditions: a defined thing to measure, a defined threshold, and a defined corrective action.

The third is the one most often missed, and it is the crucial one. A check that fails but cannot say what to do about it is decoration — all you can do is log a line and continue.

Take subtitles. Decompose "will the subtitle overflow" into two measurable quantities: characters per cue, and characters read per second. A vertical short-drama screen holds roughly twenty CJK characters, and the eye comfortably reads about six per second. Those thresholds are this course's, not an industry standard; tune them to your font size and audience. And the corrective action is very concrete: trim the line.

qc.js
// Character ceilings: what fits one vertical screen, and what the eye reads in a second.
// Tune both to your font size.
const MAX_SUBTITLE_CHARS = 20
const MAX_CHARS_PER_SECOND = 6
 
// Three bands: pass 5, borderline 3, fail 1. Below 3 is sent back.
const scoreOf = (ok, near) => (ok ? 5 : near ? 3 : 1)
 
function checkSubtitleFit(text, durationSec) {
  const perSecond = Number((text.length / Math.max(1, durationSec)).toFixed(2))
  const ok = text.length <= MAX_SUBTITLE_CHARS && perSecond <= MAX_CHARS_PER_SECOND
  const near = text.length <= MAX_SUBTITLE_CHARS + 4 && perSecond <= MAX_CHARS_PER_SECOND + 2
  return {
    id: 'subtitle-fit',
    score: scoreOf(ok, near),
    objective: true,
    detail: `${text.length} chars / ${durationSec}s = ${perSecond} chars per second`,
  }
}

When a subjective item goes to the model, one rule is absolute: demand a single structured verdict, and never treat an unparseable answer as a pass.

A model fails to answer in many shapes — two extra sentences of pleasantry, JSON missing a brace, a score given as "four to five." The correct handling marks the item "no verdict, needs a human," not a default pass. Conflating "the model said it is fine" with "the model did not answer" is the easiest accident to bake into automated QC: your report goes green everywhere, and the genuinely broken shots are precisely the ones that confused the model.

reviewer.js
async function review(shot, facts) {
  const prompt = [
    'You are a short-drama QC reviewer. Output only one JSON object of the form {"score":integer 1 to 5,"detail":"one sentence"}.',
    `Visual: ${shot.visual}; camera: ${shot.camera}`,
    `Already measured locally: ${facts.map((f) => `${f.id}=${f.score}`).join(', ')}`,
    'Score character consistency and whether the frame has broken down.',
  ].join('\n')
 
  const r = await text.complete({ user: prompt, temperature: 0 })
  try {
    const parsed = JSON.parse(r.text.slice(r.text.indexOf('{'), r.text.lastIndexOf('}') + 1))
    const score = Number(parsed.score)
    if (!Number.isInteger(score) || score < 1 || score > 5) throw new Error('score out of 1 to 5')
    return { id: 'visual-integrity', score, objective: false, detail: String(parsed.detail ?? '') }
  } catch {
    // Key point: unparseable means no verdict and needs a human. It is never a pass.
    return { id: 'visual-integrity', score: 0, objective: false, detail: 'the model gave no parseable score' }
  }
}

One pass before, one pass after

How many content-safety passes belong in the pipeline? Two, and they guard against completely different things.

The pass before checks the prompt you are about to send. It saves money and your account: a non-compliant prompt at best gets rejected by the vendor's moderation (MiniMax returns 1026 or 1027 here), wasting a round; at worst it trips risk controls. The pre-check is a local word list plus rules, a few milliseconds, and every block saves a call.

The point is that a block must offer an alternative rather than throwing an exception that halts the pipeline. The lab replaces the matched fragment with safe phrasing, prints it, lets the flow continue, and records the interception in the report, so a human can later see which line was changed and to what.

The pass after checks the cut the vendor gave back. It matters more than the first, for a blunt reason: a clean prompt does not mean a clean result. Generative models improvise; you write "outside a convenience store" and it may fill a whole shelf with branded packaging. The pre-check only proves you did not ask for it; the post-check is what proves what the audience sees is fine.

The post-check covers three things: run the cut's subtitle text through the word list again, verify the implicit label was written, and verify the explicit label is present. The last two are the next section.

Generated-content labeling: explicit and implicit

This is the only section of the chapter with a hard legal constraint, so the wording follows the official text strictly.

The Measures for Labeling AI-Generated Synthetic Content were jointly issued by four departments and took effect on 1 September 2025. They define two kinds of label, verbatim:

An explicit label is a label "added within the generated synthetic content or the interactive interface, presented as text, sound, graphics or similar, and clearly perceivable by the user."

An implicit label is a label "added by technical means within the file data of the generated synthetic content, and not readily perceivable by the user."

Two points must be remembered. First, a service provider shall add an implicit label in the file metadata of generated synthetic content. Second, both explicit and implicit labels are required; it is not a choice between them. Additionally, no organization or individual may maliciously delete, alter, forge or conceal a label.

The accompanying mandatory national standard is GB 45438-2025, Cybersecurity technology — Labeling method for AI-generated synthetic content, effective the same day.

Implementing the implicit label is easy — write it into the container metadata, with -c copy avoiding a re-encode, in tens of milliseconds:

BashBash
ffmpeg -v error -i joined.mp4 -i episode-1.srt \
  -c copy -c:s mov_text -metadata:s:s:0 language=eng \
  -metadata "comment={\"generatedBy\":\"ai\",\"runId\":\"run-20260907-001\"}" \
  -metadata "title=AI-generated synthetic content" \
  episode-1.mp4

Then read it back to verify, because written but never read is the same as not written:

BashBash
ffprobe -v error -show_entries format_tags=comment \
  -of default=noprint_wrappers=1:nokey=1 episode-1.mp4

The explicit label has an engineering trap: the most robust approach burns "this piece is AI-generated synthetic content" into the picture, and burning text requires ffmpeg built with libfreetype, that is, the drawtext filter. Many minimal builds lack it. So the program must probe the capability and degrade:

BashBash
ffmpeg -hide_banner -filters | grep -w drawtext

Found: burn it in. Not found: emit the label as the first subtitle cue, and print the degradation explicitly rather than quietly doing one less compliance action. The subtitle route is visible in many playback contexts, but it can be turned off and is therefore not fully equivalent — before formal release it must be replaced with the burned-in version. This is the same pattern as D6's capability probing.

One broadcast-regulator requirement in passing: online micro-dramas are tiered into key, ordinary and other categories for review by investment amount, and a license number or filing number must be shown at the head of the piece before it goes live. That is separate from the AI label above; both are required.

Beyond labeling, three lines must not be crossed, each sufficient to get a whole piece taken down.

One: likeness rights. Do not generate the likeness of a real person. This is the easiest to step on unintentionally in a prompt — phrasing like "make the lead look like so-and-so" must be blocked by the pre-check. It is the first entry in the lab's rule table.

Two: music. Background music draws the most complaints in short drama, because it is so easy to grab casually. The criterion is simple: unless you can produce a license, do not use it. The viable routes are commercial licenses from a proper library, material explicitly marked for commercial use, or generating it yourself with a model — and for that last one, read the terms of service on commercial use carefully.

Three: material provenance. If reference images, look tests or set images come from a casual web search, you have inherited someone else's copyright problem. Every asset in this course is generated or shot ourselves. That is not fastidiousness; it keeps the risk out at the source.

What these three share is that none is a technical problem, and every one must be implemented by technical means — written into the pre-check's rule table, into the asset library's provenance field, into the pre-export checklist. Relying on people to remember does not work.

The stop-loss point: after how many redos do you call a human

One last thing, and the place automated QC most easily runs away: if failing means redo, how many redos are enough?

First a judgment that must be in the code: a bounce-back is not the same input run again. The same input redone ten times gives the same result, especially with temperature at zero or a fixed seed. So every failed item must map to a concrete corrective action: subtitle over the limit means trim the line, audio-video desync means write the shot duration back from the line's length. A check with no corrective action turns redo into pure spending.

Then the ceiling. This course sets it at two, because video is the most expensive thing on this line and the cost of a third redo already exceeds the cost of a human glance. Past the ceiling the answer is neither to keep trying nor to pass it, but to mark the shot "needs a human" and write it — with its scores, its redo count and each item's specific verdict — into the report and push it to yesterday's review console.

stoploss.js
const PASS_SCORE = 3
const MAX_REDO = 2
 
function summarize(shotId, scores, redo) {
  const min = Math.min(...scores.map((s) => s.score))
  const passed = min >= PASS_SCORE
  // Three verdicts: passed, send back for redo, or stop at the ceiling and hand to a human
  const verdict = passed ? 'pass' : redo >= MAX_REDO ? 'needs-human' : 'redo'
  return { shotId, scores, min, passed, redo, verdict }
}
 
// A bounce-back carries a corrective action, or every redo gives the same result
function autoFix(shot, qc) {
  for (const c of qc.scores) {
    if (c.score >= PASS_SCORE) continue
    if (c.id === 'subtitle-fit') shot.dialogue[0].text = shot.dialogue[0].text.slice(0, 20)
    if (c.id === 'av-sync') shot.durationSec = Math.round(shot.dialogue[0].text.length * 0.22)
  }
}

What threshold matches human judgment? That is where yesterday's structured review records earn their keep: back-test against the shots a human gave a verdict to, and see which threshold maximizes agreement between machine and human. Without that data, the threshold is a guess.

Source Reading

Hands-On Lab

🧪 D11 lab: automated QC and compliance labeling, with automatic bounce-back of failing shots

Code location: labs/ai-drama-pipeline/day-11-qc-compliance

Acceptance criteria:

  1. Three shots each get 5 scores (4 local objective measurements plus 1 model review), written to qc-report.json.
  2. Running with INJECT=lowscore bounces back the shot with an over-long line, which is corrected, re-run and eventually passes.
  3. In that same run, the high-breakdown-risk shot still fails at the redo ceiling and is marked as needing a human rather than retried forever.
  4. The pre-check blocks a description like "looks exactly like a real celebrity," prints an alternative phrasing, and continues after rewriting.
  5. ffprobe can read the implicit label out of the cut; the explicit label lands according to the drawtext capability probe, with a printed notice on degradation.

Fault injection uses the course-wide INJECT variable, with one value today:

BashBash
MOCK=1 pnpm start                    # happy path: all three shots pass
INJECT=lowscore MOCK=1 pnpm start    # shot two's line is too long, shot three is high risk

Injection changes only those two shots' inputs; QC, bounce-back, stop-loss and labeling all run normally. The starter leaves four exercises, and running it with injection shows five of seven checks failing. Afterwards, verify the cut yourself with the ffprobe command above and confirm by hand that the label really is in the file.

  1. Run the solution with INJECT=lowscore first and see which path each of the three shots takes: one straight pass, one pass after a bounce-back, one handed to a human at the ceiling.
  2. Implement the subtitle-overflow check and watch that shot go from full marks to failing and being sent back.
  3. Add the stop-loss decision and confirm the high-risk shot is marked as needing a human after two redos rather than being let through.
  4. Implement the prompt pre-check and watch it block the non-compliant description and print an alternative.
  5. Implement writing the implicit label, read it back with ffprobe, and confirm the post-check no longer reports a missing label.

Interview Questions

Today's three questions are in the question bank below, focused on turning subjective quality into judgeable checks, the division of labor between pre- and post-review, and how generated-content labeling is implemented. Read the analysis before the key points — practicing the derivation beats memorizing them. The cn / global labels let you pick by target market.

Checklist and Tomorrow

  • I can run a judgeable quality check on generated output with a vision model, and automatically bounce failing shots back for redo
  • I can explain how many content-safety review passes belong in the pipeline and where each one goes
  • I can explain the explicit and implicit requirements for generated-content labeling, and implement them in the export step
  • I can distinguish locally measurable objective items from model-dependent subjective ones, and say why they are accounted for separately
  • I can explain why a bounce-back must carry a corrective action, and why a stop-loss point must exist
  • All 5 lab acceptance criteria pass
  • I can answer at least 2 of the 3 interview questions without looking at the key points

Tomorrow (D12) we open the books: split cost by stage, give each stage a model-routing policy, push spend down with caching and degradation, and fit every run with a budget circuit breaker that actually brakes. The order is deliberate — we just gave the pipeline the ability to redo work automatically, and automatic redo is the mechanism most likely to burn through a budget; with QC in place first, you know which redo the money went to.

Interview questions

  • How do you turn a subjective judgment like visual quality into an automatable check?怎么把画面质量这种主观判断变成可自动判定的检查?
    Common in ChinaCommon overseasIntermediate#quality-check#evaluation#multimodal

    How to reason about it · think before answering

    1. This tests decomposition. Answering just use a multimodal model to score it covers only the lazy half; the interviewer wants to see you turn a non-falsifiable statement into checkable ones.
    2. Step one is classification: split checks into locally measurable and must-be-seen-by-a-model. Resolution, audio-video duration delta, subtitle length and reading rate, and loudness all have deterministic answers from ffprobe plus arithmetic. Character consistency and visual breakdown have no reliable local proxy.
    3. The classification pays off in accounting: a failing objective check means the file really is wrong, while a failing subjective one might just mean the model misread. Merge them into one score and you cannot tell whether to fix the file or the prompt.
    4. Step two gives every check three things: what is measured, the threshold, and the corrective action. The third is the one people skip and the one that matters, because a check that fails without a prescribed fix is decoration.
    5. Step three handles model-side uncertainty: demand a structured verdict, and when it cannot be parsed mark the item as no-conclusion, needs-human, never as a pass. Conflating the model said fine with the model did not answer is the classic automated-QC incident.
    6. Expected follow-up: how to set thresholds. Backtest against human-reviewed samples and pick the threshold where machine and human verdicts agree most. Without that data you are guessing.

    分析过程 · 先想清楚再作答

    1. 这题在考拆解能力。直接答「让多模态模型打分」只答了一半,而且是偷懒的那一半——面试官想看你怎么把一个不可判真假的命题拆成可判定的。
    2. 第一步是分类:把检查项分成「本地量得出来的」和「必须让模型看图的」。分辨率、音画时长差、字幕字数与每秒字数、配音响度,这四类用 ffprobe 加几行算术就有确定答案;角色一致性、画面崩坏则本地没有可靠代理指标。
    3. 分类的价值是账算得清:客观项出问题一定是文件真有毛病,主观项出问题可能是模型看错了。混成一个总分,事故来的时候分不清该修文件还是修提示词。
    4. 第二步是给每一项配齐三样:测量对象、阈值、**修正动作**。第三样最容易漏也最关键——一项检查不合格却说不出该怎么办,它就是摆设,你只能记一行日志继续往下走。
    5. 第三步是处理模型那一侧的不确定性:要求它只返回结构化结论,并且**解析不出来时标成无结论、需人工,绝不当成通过**。把「模型说没问题」和「模型没答上来」混为一谈,是自动质检里最常见的事故。
    6. 可预期的追问是「阈值怎么定」。用人工审核攒下来的带结论的样本回测,看阈值定在几分时机器结论与人的重合度最高;没有这份数据就只能拍脑袋。

    Key points

    • Classify first: objective local measurements (resolution, av delta, subtitle density, loudness) versus model-only judgments (character consistency, visual breakdown).
    • Give every check a measurement, a threshold and a corrective action; a check with no action is decoration.
    • Require a structured verdict from the model, and treat unparseable output as needs-human, never as a pass.
    • Set thresholds by backtesting against human-reviewed samples.
    • An objective failure means the file is wrong; a subjective failure may mean the model misread. That split drives triage.

    答题要点

    • 先分类:本地量得出来的客观项(分辨率、音画差、字幕密度、响度)与必须看图的主观项(角色一致性、画面崩坏)分开记账。
    • 每一项配齐三样:测量对象、阈值、修正动作;没有修正动作的检查项是摆设。
    • 模型评审要求返回结构化结论,解析失败标成需人工,绝不默认通过。
    • 阈值靠人工审核样本回测确定,不拍脑袋。
    • 客观项失败说明文件有问题,主观项失败可能是模型看错——这个区分决定了排查方向。
  • Should content safety checks run before generation or after? Why both?内容安全审核放在生成前还是生成后?为什么两边都要有?
    Common in ChinaCommon overseasBasic#content-safety#moderation#pipeline-design

    How to reason about it · think before answering

    1. The answer is both, but the marks come from explaining that the two gates defend against different things. Saying defense in depth is safer earns nothing.
    2. The pre-check inspects the prompt you are about to send, and it saves money and account standing: a violating prompt gets rejected by the vendor's own moderation (1026 or 1027 at MiniMax), wasting a round trip, and repeated hits can trip risk controls. It is a local word list plus rules, milliseconds, and each catch saves a call.
    3. The post-check inspects what the vendor returned, and it matters more, because a clean prompt does not imply a clean result. Generative models improvise: you ask for a convenience store and get a shelf of branded packaging. The pre-check only proves you did not ask for it; the post-check protects the viewer.
    4. When the pre-check fires, do not just throw. Offer a replacement and keep going: swap the matched fragment for safe wording, print it, and record it so a human can see which line was changed and how.
    5. Call out the common misconception: vendor moderation does not replace yours. The vendor moderates its own risk, with different boundaries, and publishing liability sits with you.
    6. Expected follow-up: what to do when the post-check fails. Triage by severity: auto-fixable issues get fixed and only that node reruns; anything else blocks publishing and goes to a human. Never wave it through because the money is already spent.

    分析过程 · 先想清楚再作答

    1. 这题的正确答案是「两边都要」,但拿分的关键不在结论,而在你能不能说清两道关**防的是不同的事**。答成「双重保险更稳妥」就是没答。
    2. 前置那道查的是你要发出去的提示词,省的是钱和账号:违规提示词发过去会命中厂商审核被拒(MiniMax 这边返回 1026 或 1027),白等一轮,严重的会触发风控。它是一层本地词表加规则,几毫秒,拦一条省一次调用。
    3. 后置那道查的是厂商还给你的成片,它更重要,理由是**提示词干净不代表结果干净**——生成模型会自己加戏,你写便利店门口,它可能给你摆一整面货架的品牌包装。前置只保证你没主动要,后置才保证观众看到的没问题。
    4. 前置被拦下之后不能只抛异常,要给替代方案并让流程继续:把命中片段替换成安全表述、打印出来、记进报告,人回头能看到哪一句被改成了什么。
    5. 还要点破一个常见误解:**厂商的审核不能替代你的审核**。厂商审的是它自己的合规风险,边界跟你的业务不同;而且发布责任在你,出事找的是发布者。
    6. 可预期的追问是「后置发现问题怎么办」。按严重程度分流:能自动修的(比如字幕里的词)就修完重跑那一个节点,修不了的直接拦住不许发布并推给人工,绝不能因为已经花了钱就放行。

    Key points

    • Both, because they defend different things: the pre-check saves spend and account standing, the post-check protects viewers and compliance.
    • The pre-check is a local rule pass in milliseconds; on a hit, substitute safe wording instead of throwing and halting the line.
    • The post-check matters more, because a clean prompt does not guarantee a clean result.
    • Vendor moderation covers the vendor's risk, not yours; publishing liability stays with you.
    • Triage post-check failures: auto-fix and rerun that node, or hard-block and escalate.

    答题要点

    • 两道都要,因为防的事不同:前置省钱与账号,后置保护观众与合规。
    • 前置是本地词表加规则,几毫秒,拦下一条就省一次调用;命中要给替代写法而不是抛异常停线。
    • 后置更重要:提示词干净不代表结果干净,模型会自己加戏。
    • 厂商的审核只兜它自己的风险,不能替代你的,发布责任在你。
    • 后置发现问题按严重度分流:能自动修的修完重跑该节点,修不了的硬拦并推人工。
  • Before publishing AI-generated video, what compliance work is mandatory?AI 生成的视频对外发布,合规上你必须做哪几件事?
    Common in ChinaDeep dive#compliance#labeling#copyright

    How to reason about it · think before answering

    1. In China-market roles this is a hard requirement, and missing the explicit-plus-implicit labeling pair usually ends the interview. It also tests whether you read the source text rather than someone's summary.
    2. Give the legal coordinates: the Measures for Labeling AI-Generated Synthetic Content, issued jointly by four authorities, in force from 1 September 2025, with the mandatory national standard GB 45438-2025 on labeling methods taking effect the same day.
    3. Then define both labels close to the source text. An explicit label is added in the content or the interaction interface, presented as text, sound or graphics, and clearly perceivable by the user. An implicit label is added by technical means into the content file data and is not easily perceivable. Both are required, not either-or, and providers are expected to add the implicit label in file metadata.
    4. Show you can ship it: write the implicit label into container metadata with ffmpeg's metadata option and read it back with ffprobe, because writing without verifying is the same as not writing. The explicit label is safest burned into the picture, but burning text needs ffmpeg's drawtext filter, which minimal builds often lack, so detect the capability, degrade deliberately, and log the degradation.
    5. Add the three items beyond labeling: do not maliciously delete, alter, forge or hide labels; do not generate the likeness of real people; and keep licensed sources for background music and reference assets. Short-form drama additionally needs tiered review by budget, with the license or filing number shown in the opening.
    6. Expected follow-up: which metadata fields exactly. The honest answer is to follow the GB 45438-2025 text itself rather than field names circulating in third-party summaries, and that answer scores far better than inventing a schema.

    分析过程 · 先想清楚再作答

    1. 这题在国内岗位上是硬考点,答不出「显式与隐式两类标识」基本就出局了。它同时也在考你是不是真读过原文,而不是转述别人的解读。
    2. 先给法规坐标:《人工智能生成合成内容标识办法》由四部门联合发布,自 2025 年 9 月 1 日起施行;配套的强制性国标是 GB 45438-2025《网络安全技术 人工智能生成合成内容标识方法》,同日实施。
    3. 然后给两类标识的定义,尽量贴原文:显式标识是在生成合成内容或者交互场景界面中添加的、以文字声音图形等方式呈现并可以被用户明显感知到的标识;隐式标识是采取技术措施在生成合成内容文件数据中添加的、不易被用户明显感知到的标识。**两者都要做,不是二选一**,并且服务提供者应当在文件元数据中添加隐式标识。
    4. 落地上要能说出具体做法:隐式标识写进容器元数据,用 ffmpeg 的 metadata 参数写、用 ffprobe 读回来验证,写了不读等于没写;显式标识最稳是烧进画面,但烧字依赖 ffmpeg 的 drawtext 滤镜,很多最小编译版本没有,所以要先探测能力再降级,并且把降级这件事明确打印出来。
    5. 还要补上标识之外的三条:不得恶意删除篡改伪造隐匿标识;不得生成真实人物形象;背景音乐与参考素材必须有授权来源。做微短剧还要按投资额分级审核,上线前片头标注许可证号或备案号。
    6. 可预期的追问是「元数据具体写哪些字段」。诚实的回答是以 GB 45438-2025 正式文本为准,第三方解读里流传的字段名不能直接照抄——这个回答比编一串字段名得分高得多。

    Key points

    • The labeling Measures take effect 1 September 2025, alongside mandatory national standard GB 45438-2025.
    • Explicit labels are clearly perceivable by users; implicit labels live in the file data. Both are required.
    • Providers add the implicit label into the content file metadata, and nobody may maliciously delete, alter, forge or hide labels.
    • In practice: verify metadata by reading it back, prefer burned-in explicit labels, and log any capability-driven degradation.
    • Also: no likenesses of real people, licensed music and source assets, and for short-form drama tiered review plus a license or filing number in the opening.

    答题要点

    • 《人工智能生成合成内容标识办法》2025 年 9 月 1 日起施行,配套强制性国标 GB 45438-2025 同日实施。
    • 显式标识是用户能明显感知到的(文字声音图形),隐式标识加在文件数据里,两者都要做。
    • 服务提供者应当在生成合成内容的文件元数据中添加隐式标识;不得恶意删除篡改伪造隐匿标识。
    • 落地:元数据写入后必须读回验证;显式标识优先烧录,能力不足时降级并明确记录。
    • 另外三条:不得生成真实人物形象、背景音乐与素材要有授权、微短剧按投资额分级审核且片头标注许可证号或备案号。

Comments