# Content Adapt

> 根据视频内容分析结果，生成适合目标平台发布的标题、描述、标签等信息。纯提示驱动，无需执行脚本。

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

---


## 功能概述

把 Agent 对视频内容的理解，转换成符合具体平台要求的发布信息（标题、描述、标签 / 话题）。

本技能没有可执行脚本，完全由 Agent 按照下面规则生成结果。

## 上下游数据约定

### 输入（来自 video-analyze）

| 字段 | 是否必需 | 说明 |
|------|----------|------|
| `scene_type` | 是 | 视频场景类型：`commercial_ad / tutorial / lifestyle / knowledge_sharing / other` |
| `summary` | 是 | Agent 对视频内容的一句话总结 |
| `transcript` | 否 | ASR 文本；如果为空或判断为 BGM，则忽略 |
| `frames` | 否 | 帧图路径列表；Agent 已读取并理解视觉内容 |

输入也可以直接来自用户描述（即跳过 video-analyze 的情况）。

### 输出（传给 douyin-upload）

生成完成后，Agent 输出如下结构。用户确认后，可直接传给上传命令：

```json
{
  "platform": "douyin",
  "title": "<30字以内标题>",
  "desc": "<100字以内描述>",
  "tags": "<tag1,tag2,tag3 —— 不带 #，最多 5 个>"
}
```

## 前置条件

Agent 必须已经理解视频内容（视觉内容 + 是否有正常旁白 / 是否只是 BGM）。
这个理解可以来自 `video-analyze` 的输出，也可以来自用户直接描述。

## 调用方式

Agent 内部执行：读取本文件规则 → 基于视频内容理解 + 平台规则生成结构化结果。

## 平台规则

### 抖音

#### 字段定义

| 字段 | douyin CLI 参数 | 约束 | 说明 |
|------|-----------------|------|------|
| 标题 | `--title` | ≤30 字 | 视频标题，独立输入框 |
| 描述 | `--desc` | ≤100 字 | 视频文案，显示在描述区域 |
| 标签 | `--tags` | 最多 5 个，逗号分隔，不带 `#` | 代码输入时会自动在描述区补 `#` |

#### 生成规则

⛔ **必须先根据视频场景类型选择策略，再生成内容。** 场景类型来自 `video-analyze` 第 4a 步输出。

---

##### 通用约束（所有场景都必须遵守）

- **标题：** ≤30 字
- **描述：** ≤100 字
- **标签：** 最多 5 个，逗号分隔，不带 `#`

---

##### 场景：商业广告 / 产品推广

目标：让用户产生兴趣，并推动下载 / 购买 / 进一步了解。

**标题策略：**
- 突出产品核心卖点或用户痛点，不要堆产品名
- 以前置收益为主，例如“XX 分钟做完 XX”“再也不用 XX”
- 尽量数字化，例如“3 万本书随时看”“节省 80% 时间”

示例：
- `15 分钟读完一本书？这个 App 真能做到` ✅
- `LeapAhead App 功能介绍` ❌（没有吸引力）

**描述策略：**
- 补充产品差异化优势或适用场景
- 可以加轻量行动引导，例如“评论区告诉我你最想看的书”
- 不要机械重复标题

**标签策略：**
- 产品所在赛道 + 目标人群 + 使用场景
- 示例：`阅读软件,高效阅读,知识付费,自我提升,书单推荐`

---

##### 场景：教程 / 演示 / 操作教学

目标：让用户觉得“这个我能学会”，并愿意收藏。

**标题策略：**
- 明确“教什么 + 达成什么结果”
- 可以用数字拆步骤，例如“3 步学会”“5 分钟搞定”
- 可以用问题句建立共鸣，例如“你还在手动做 XX 吗？”

示例：
- `3 步搞定 Excel 自动填表，告别加班` ✅
- `Excel 教程分享` ❌（过于空泛）

**描述策略：**
- 简要说明步骤或适用场景
- 降低门槛，例如“零基础也能跟着做”
- 可加入互动，例如“做完可以来评论区交作业”

**标签策略：**
- 工具名 + 技能方向 + 用户人群
- 示例：`excel教程,自动化办公,效率工具,办公技巧,数据处理`

---

##### 场景：生活记录 / Vlog

目标：建立情绪共鸣，让用户觉得“我也想这样生活 / 我也有同感”。

**标题策略：**
- 突出情绪、反差、某个瞬间感受，避免流水账式标题
- 可以用第一人称增强代入感

示例：
- `在这个小城生活的第 30 天，我开始不想回去了` ✅
- `我的日常记录` ❌（没有情绪抓手）

**描述策略：**
- 增加故事背景、心情、感受
- 语气轻松自然，像朋友聊天
- 可以加互动，例如“你们那边也是这样吗？”

**标签策略：**
- 场景词 + 生活方式 + 情绪词
- 示例：`小城生活,慢节奏,治愈日常,独居生活,生活碎片`

---

##### 场景：知识分享 / 对镜表达 / 观点输出

目标：建立可信度，让用户觉得“这个人讲得有东西”。

**标题策略：**
- 直接抛观点，或挑战用户惯性认知
- 适合用“你以为是 X，其实是 Y”这类结构

示例：
- `90% 的人都不知道，真正省钱最快的方法不是少花钱` ✅
- `关于理财的一些想法` ❌（太平）

**描述策略：**
- 补充核心论点或列出关键结论
- 如果适合，可加入经验背书
- 引导讨论，例如“你同意吗？评论区聊聊”

**标签策略：**
- 知识领域 + 核心观点 + 目标人群
- 示例：`理财思维,省钱技巧,财务自由,认知升级,实用知识`

---

##### 场景：其他 / 无法明确归类

如果视频不属于以上任一类型：

**标题策略：**
- 围绕画面中最核心、出现频率最高、面积最大的主体来写
- 优先使用提问句或对比句，制造一点好奇心

**描述策略：**
- 客观描述画面主内容 + 一个轻量互动点

**标签策略：**
- 根据视觉主体所属领域，选较通用但相关的标签

## 输出格式

生成完成后，直接把 JSON 展示给用户确认：

```json
{
  "platform": "douyin",
  "title": "3 步搞定 Excel 自动化数据处理",
  "desc": "一步步教你用自动化工具批量处理表格数据，彻底告别重复劳动",
  "tags": "excel教程,自动化办公,效率工具,办公技巧,数据处理"
}
```

## 与 douyin-upload 的衔接

用户确认后，可直接传入上传命令：

```bash
cd skills/douyin-upload/scripts && uv run douyin upload-video \
  --account <account> \
  --file <视频路径> \
  --title "3 步搞定 Excel 自动化数据处理" \
  --desc "一步步教你用自动化工具批量处理表格数据，彻底告别重复劳动" \
  --tags "excel教程,自动化办公,效率工具,办公技巧,数据处理"
```

## ⛔ BGM 干扰防御规则（通用于所有平台）

如果 `video-analyze` 的 ASR 文本被判断为歌词 / BGM：

1. 标题 / 描述 / 标签 **必须完全基于视觉内容生成**
2. **禁止**引用歌词中的词句
3. **禁止**生成与歌曲 / 歌手 / 音乐类型相关的标签
4. 内部应标记为“音频为 BGM，已忽略”

## 用户确认流程

生成完成后，向用户展示结果并等待确认：

```text
📋 视频发布信息（抖音）：

标题：3 步搞定 Excel 自动化数据处理
描述：一步步教你用自动化工具批量处理表格数据，彻底告别重复劳动
标签：#excel教程 #自动化办公 #效率工具 #办公技巧 #数据处理

确认使用这组信息上传吗？如果要改标题、描述或标签，也可以直接告诉我。
```

⛔ **未经用户确认，不要直接上传。**

用户可能会：
- 直接确认 → 继续上传
- 要求修改标题 / 描述 / 标签 → 按要求调整后再次确认
- 要求重新分析 → 返回 `video-analyze` 重新执行

