# Douyin

> 抖音平台策略与发布子技能：对已核验内容资产完成抖音平台筛选、短视频改编、受控发布与核验。Use when Codex needs to adapt, publish, or review content specifically for Douyin. Source retrieval, downloads, account data, and asset paths belong to media-core external records and local configuration. Do not use for credentials or unverified claims.

- Skill: `askairo/douyin` (Agent Skill)
- Install (CLI): `npx skillmds@latest add askairo/douyin`
- Raw SKILL.md: https://api.skillmd.com/api/skills/askairo/douyin/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: askairo (https://skillmd.com/u/askairo)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/askairo/douyin

---


# Douyin

本技能处理抖音平台筛选、改编、发布和核验。`media-loop` 可以在供给不足时提出生产请求，`media-core` 负责来源发现、下载、资源验收、版权、去重、游标和 ready 资产，`media-ops` 负责重新扫描并传入已验收资产、目标账号和本机策略。本技能不获取来源、不下载第三方媒体、不维护账号、来源组、资源路径或游标，也不把生产请求直接视为可上传资产。

## Assess platform fit

- 根据资产的媒体形态、事实边界、编辑主线和目标账号的本机策略，判断是否适合音乐现场、知识口播、生活方式或其他短视频表达；不以全站热度替代适配度。
- 记录前三秒清晰度、完播潜力、画面/字幕可执行性、信息密度、互动入口和可加入的原创解释；来源、授权、去重和资源可用性以已核验资产为前提。

## Select and score candidates

- 先过硬门禁：核心事实可回溯、来源和日期明确、音频/画面可合法使用、没有未处理的隐私或高风险主张；任一失败都不进入脚本。
- 在 `media-ops` 通用分之外保留抖音专属判断：前三秒清晰度、完播潜力、画面/字幕可执行性、信息密度、评论话题和系列延展性。
- 绝对播放量、点赞量和热搜位置只作规模信号。优先选择能让陌生用户快速理解、看完有收获、愿意评论或收藏的主题；不要把“更高播放”写成“更适合账号”。
- 同一事件的转载、剪辑和评论聚为一个候选，优先引用最早或最权威来源；记录淘汰理由，不能为了凑数量降低事实或版权标准。

## Adapt into a short video

- 默认交付一份可拍摄脚本：标题/封面文案、时长目标、前三秒钩子、分镜、口播、屏幕字幕、画面素材、来源卡和结尾互动。
- 标题先读取账号平台风格中的模板；没有账号模板时，音乐现场默认使用“可搜索信息 + 可感知现场”的结构，不把所有作品写成同一个流量标题。
- 音乐现场标题通常按“艺人 live《歌名》｜现场亮点/情绪钩子｜活动名称 城市/站点 年份”组织；如果没有可核实的现场亮点，退回“艺人 live《歌名》｜现场版｜活动名称 城市/站点 年份”。
- 同一账号的音乐系列必须轮换情绪钩子：优先从歌曲主题、演唱细节、现场环境、听众反应或具体画面提炼，不要把同一句“让人慢下来”或同一套安静形容词复制到连续作品。
- 生成标题和正文前读取目标账号最近至少 5 条已发布/已提交成稿；比较开场句、信息顺序、核心谓语、署名句和标签组合。连续两条不得复用同一正文骨架，最近 5 条中不得出现仅替换歌名的模板化文案；若具体事实不足以写出新角度，使用克制的“作者 + 曲名 + 演唱/画面事实”短文案，不补造情绪、故事或现场氛围。
- 不根据源标题、文件名或标签中的 `original` / `原创` 自动宣称作品原创。只有 canonical asset 的 `factBoundary` 含独立核验的作者或词曲归属证据时，才可使用“原创歌曲”“原作者”“词曲作者”等表述；证据不足时使用“演唱《歌名》”“这首《歌名》”或“Frank 的一段吉他演唱”等中性表达，且标签不得使用 `#原创音乐`。
- “现场版”和“音乐实录”不必同时出现；标签通常按“艺人 → 歌名 → 活动/现场特征”排列，控制数量并避免重复标题正文。
- 现场亮点必须真实出现在视频中，例如全场合唱、雨中演出、观众互动、乐手独奏或明显的情绪变化；不得为了提高点击虚构氛围。
- 知识/科技口播优先采用“具体变化 → 证据 → 为什么重要 → 对普通人的影响 → 一个问题或动作”；每条视频只解决一个问题。
- 每个镜头写清画面、口播、字幕和来源。数字、专有名词、限定条件和“不确定”应直接上屏，避免只靠配音传递关键事实。
- 钩子必须具体且与正文兑现，不用“惊天内幕”“赶紧转发”等虚假紧迫感；不能把预测、营销话术或个人推断写成已发生事实。
- 口播先写可自然朗读的短句，再压缩字幕信息；字幕不得遮挡主体，画面变化要服务理解，不用无关素材填充时长。
- 结尾只设置一个具体互动入口，例如“你更在意速度还是成本？”或“要不要做下一集实测？”；系列内容要说明下一集解决什么问题。

## Produce and review

- 发布前检查：视频比例和时长、前三秒是否独立成立、口播是否能在目标时长内完成、字幕是否可读、关键事实是否有来源卡、音乐/画面/肖像是否有权限、账号身份是否正确。
- 只接受 `media-core` 已验收、可追溯的媒体资产进入上传；上传前确认文件可播放、时长与资产记录一致、视频轨存在；音乐视频还必须确认音频轨存在且预览能听到声音。只看到“下载完成”或“上传成功”不能替代音视频验收。
- 供给恢复后必须重新读取 canonical asset 与 distribution target：只有 `lifecycleState: ready`、目标未完成且 `plannedAt` / `preferredWindow` 已到期时才进入上传。`productionRequest`、候选记录、下载完成事件或资源目录中孤立文件都不是上传依据。
- 若上传后的预览无声、时长异常、黑屏或画面与候选不符，立即停止发布；重新取得媒体后，通过“替换视频”重新上传，并等待新的上传成功状态和预览刷新后再次验收。不得用静音版本试发。
- 文件选择器失败时，先检查浏览器对本地文件访问和文件选择器的权限，再使用页面可见的上传/替换入口触发文件选择器；不要通过页面脚本提取或拼接受保护的第三方直链。文件在选择器中高亮只代表“已选中”，不代表已上传：必须继续点击可见的“打开”/“Open”按钮提交选择，等待选择器关闭和上传进度完成，再重新读取上传页、预览、时长及音视频轨状态；若“打开”未生效，重新读取当前选择器状态后再通过可访问名称定位的可见按钮完成同一动作，不得把停留在选择器或 `.crdownload` 当作上传成功。上传恢复后重新走完整媒体验收。
- 来源 URL、授权范围、下载记录和作者署名由内容资产及其来源协议保留。公开字段如何呈现署名、来源或商业披露，由目标账号的本机策略决定；不得暗示与作者或原平台官方存在未获确认的合作关系。
- 对商业合作、产品体验、股票或高影响主题，补齐必要披露，并把事实、推断和建议分开；不提供投资、医疗或法律结论。
- 发布后记录播放、完播/平均观看、互动、收藏、分享、关注转化和负向反馈，并按内容支柱、时长、首句、媒体形态和互动入口复盘。单条爆款不能单独证明某种模板稳定有效。

## Publish

- 新版运行时若通过 Unified Computer Use 暴露 `family: chrome`、`type: extension` browser，先用 `cua.getState()` 找到该 browser，再用 `cua.getTab(...)` 接管抖音创作者中心 Tab；这属于 Chrome MCP 通道，不是 Computer Use 回退。不得改用 `cua.getApp("Google Chrome")`、原生窗口、桌面坐标或截图点击。旧版独立工具名不存在但 Chrome extension browser 和抖音 Tab 可见时，不得返回 `profile_route_missing`。
- 通过受控登录会话发布时，先核对当前抖音账号与配置中的公开身份一致，再创建草稿。
- 若 `media-ops` 传入 `browserProfileRef`，先确认当前 Chrome Profile 已完成路由；Profile 路由缺失、切换失败或抖音公开身份不一致时停止，不创建草稿。
- 使用已声明的 `chrome-mcp` 或 `playwright-mcp` 操作 Chrome 时，进入抖音发布页、作品管理页和发布结果核验前，先通过该通道重新读取当前 Tab 的 DOM/可访问页面状态；不得依赖桌面布局、窗口坐标或旧快照判断控件存在。
- 作品管理页的核验必须显式确认“全部作品”/作品标签组、作品总数或搜索作品控件可见。若这些控件缺失、被折叠到溢出菜单、只显示导航壳或页面布局异常，先等待页面重排并重新读取当前浏览器 MCP state，再定位控件；不要直接把旧作品列表或导航壳当作刷新结果。
- 发布后核验优先在当前浏览器 MCP 读取的作品管理页使用可见的“全部作品”或“搜索作品”控件检索本条标题，再同时匹配标题、正文和时长；最多进行配置允许的刷新次数。没有看到“全部作品”按钮不构成发布失败证据，也不允许因此随机导航或再次点击发布。
- 若内容管理可读、但 `creator-micro/content/upload` 只剩浏览器外壳或持续空白，先判定为页面运行时故障而不是账号、素材或发布失败：只关闭本轮失效的抖音 Tab，从 `https://creator.douyin.com/` 新建干净 Tab 并重新进入发布入口。若 Chrome 明确显示“网站无法正常运行”且建议允许第三方 Cookie，可在已授权的当前 Profile 中仅为 `creator.douyin.com` 打开站点级第三方 Cookie、让页面自动重载，再重新核对账号和上传控件；不得修改全局 Cookie 策略。若仍空白或当前浏览器 MCP 无法取得页面状态，保留 ready 目标、媒体和游标，记录具体阻塞，不把它写成 `publish_failed`，也不重复下载或重选。
- 创建草稿前完成近期文案去重并在运行记录中保存 `recentCopyRefs`、本条采用的表达角度和被避开的重复骨架。若不能读取近期至少 5 条成稿，或无法确认本条不是仅替换歌名的重复文案，停止自动发布并记录 `recent_copy_window_unverifiable`。
- 读取 `media-ops` 当前账号 `styleRef` 对应的 `copyContract`，先生成机器可校验的 `copyPlan`：`title`、`caption`、`selectedAngle`、`recentCopyRefs`、`avoidedPatterns`。合同缺失或字段不完整时记录 `copy_contract_missing` 并停止，不自行发明另一套格式。
- 对半支麦的 Frank 系列，标题必须符合配置合同的 `Frank《歌名》｜演绎角度` 结构并通过字符上限；正文必须按合同包含作者、歌名、中性演唱动作和一个来源/画面可支持的具体事实。正文不得只复述平台自动生成的英文标题，也不得只替换歌名复用旧骨架。
- 创建草稿后重新读取标题、完整文案、媒体预览/时长/声音、可见范围、定位/话题和发布按钮状态；以这次读取结果为准，不凭记忆恢复用户删除的文案行或标签。若编辑器会追加而不是替换文本，标题可用 set_value；富文本正文不得对非空字段直接 set_value。
- 富文本简介必须使用低自由度编辑协议：通过当前已声明浏览器 MCP 获取新页面 state → 聚焦正文 → 全选清空 → 重新读取确认正文为空且计数为 0 → 通过同一通道一次性写入纯文本 → 同时复读正文、计数和预览。若自动生成的旧文案重新出现、正文追加、截断、输入法残留或可访问值与预览不一致，立即停止最终发布；丢弃未提交草稿或重建，不用连续局部替换修补错误文本。
- 最终发布前必须把页面实读值与 `copyPlan` 逐字段比较；缺少作者、歌名、中性演唱动作、支持事实、近期引用或避重记录时，不得点击发布。
- 抖音发布默认关闭“允许下载”（等价于选择“不允许下载”）。在点击最终发布按钮前，必须重新读取该开关的实际状态；如果仍处于允许下载、控件状态不明，或页面没有可确认的不允许下载状态，立即停止并不得点击发布。无人值守运行也不得跳过这项门禁。
- 抖音公开字段发布前检查 `http://`、`https://`、`www.` 和原始来源 URL；除非用户或配置明确允许，否则标题、正文、话题和置顶评论都不得携带外部链接。来源链接只留在证据卡、审计记录和顺序状态中。
- 发布前确认最终发布按钮的精确可访问名称、可见实例数为 1 且处于可用状态；若按钮数量不唯一或状态不明则停止。最终发布按钮只点击一次。点击后不要因页面跳转、按钮消失或短暂无提示而再次点击。
- 发布后等待页面完成跳转和异步刷新，再按证据强度核验：优先在作品时间线或管理页搜索并同时匹配本候选的“标题 + 正文 + 时长”；其次看作品总数是否增加且该新条目状态为“已发布”或“审核中”，最后才使用 toast/作品 URL 作为辅助证据。若跳到与本候选无关的历史作品详情，视为 `publish_unconfirmed`，不是成功证据；最多做配置允许的两次刷新/只读核验，不得继续随机导航或再次点击发布。
- 若作品时间线尚未刷新，先等待并重新读取页面；若仍无明确成功、审核中或错误状态，报告“已提交但结果待确认”，保留结果页，不盲目重试。只有明确失败且页面仍处于可编辑草稿状态时，才允许回到草稿修复后重新发布。
- 只有明确看到发布成功/审核中并能将其与本候选关联时，才把候选 ID、平台状态和时间回传给 `media-ops` / `media-core`；顺序游标及 `nextVideoId` 只由 `media-core` 按来源协议推进。结果不确定时保留状态为待确认，不推进、不删除唯一副本。
- 交互式运行在最终发布前必须展示完整成稿并等待针对该账号和该内容的明确确认；已被有效无人值守调度调用的 `scheduled_run` 按 `media-ops` 门禁执行，不重复要求逐条确认。
- 将发布结果交给 `media-ops` 完成外部文档回写；回写成功后由 `media-ops` 统一关闭本次运行创建的编辑器和结果页。结果不明确或草稿待修复时，保留必要页面，不得先关页。

