Install
openclaw skills install @thcjp/podcast-chapteringopenclaw skills install @thcjp/podcast-chaptering核心功能: 本技能提供中文交互、化工作流场景等能力。
核心功能: 本技能提供:中英日韩等、主流播客平台、与人工校对流程等能力。
| 能力 | 免费版 | 付费版 |
|---|---|---|
| 基础功能 | 支持 | 支持 |
| 播客章节工具专业版支持批量处理 | 不支持 | 支持 |
| 高清分辨率与无损输出 | 不支持 | 支持 |
| 批量生成与风格预设 | 不支持 | 支持 |
| 自定义模型微调 | 不支持 | 支持 |
| 商用版权授权 | 不支持 | 支持 |
| 能力 | 免费版 | 专业版 | 增量价值 |
|---|---|---|---|
| 章节标记 | 支持 | 支持 | - |
| 高光片段 | 支持 | 支持 | - |
| 节目笔记 | 草稿 | AI 精炼 | 质量提升 |
| 音频/文字稿输入 | 支持 | 支持 | - |
| 批量处理 | 不支持 | 目录递归 + 队列 | 生产力 |
| 社媒文案 | 不支持 | 自动生成 | 一体化 |
| 多格式输出 | Markdown | MD/JSON/SRT/VTT/ID3 | 全平台 |
| API 集成 | 不支持 | FastAPI 服务 | 远程调用 |
| AI 智能章节 | 启发式 | 语义理解 | 准确度 90%+ |
| 多语言 | 中英 | 30+ 语言 | 全球化 |
| 质量评估 | 不支持 | 置信度分析 | 质控 |
| 自动发布 | 不支持 | 平台集成 | 自动化 |
详细的输入输出格式请参考下方章节说明。
处理整个播客目录,批量生成章节与笔记.
import os
import glob
import json
from pathlib import Path
# ...
class BatchChapterGenerator:
"""批量章节生成器"""
# ...
def __init__(self, input_dir, output_dir, format="markdown"):
self.input_dir = Path(input_dir)
self.output_dir = Path(output_dir)
self.format = format
self.output_dir.mkdir(parents=True, exist_ok=True)
# ...
def process_all(self):
"""处理目录下所有文字稿"""
transcripts = glob.glob(str(self.input_dir / "*.json"))
results = []
# ...
for transcript_path in sorted(transcripts):
episode_id = Path(transcript_path).stem
print(f"处理: {episode_id}")
# ...
with open(transcript_path, "r", encoding="utf-8") as f:
transcript = json.load(f)
# ...
# 生成章节
chapters = self.generate_chapters(transcript)
# 生成高光
highlights = self.extract_highlights(transcript)
# 生成笔记
show_notes = self.generate_show_notes(transcript, chapters, highlights)
# 生成社媒文案
social_captions = self.generate_social_captions(highlights)
# ...
# 多格式输出
self.save_output(episode_id, chapters, highlights,
show_notes, social_captions)
# ...
results.append({
"episode": episode_id,
"chapters_count": len(chapters),
"highlights_count": len(highlights),
"duration": transcript["segments"][-1]["end"]
})
# ...
# 生成汇总报告
self.save_summary(results)
return results
# ...
def save_output(self, episode_id, chapters, highlights, notes, captions):
"""多格式输出"""
base = self.output_dir / episode_id
base.mkdir(parents=True, exist_ok=True)
# ...
# Markdown 格式
with open(base / "chapters.md", "w", encoding="utf-8") as f:
f.write(self.to_markdown(chapters, highlights, notes))
# ...
# JSON 格式(程序处理)
json", "w", encoding="utf-8") as f:
json.dump({"chapters": chapters, "highlights": highlights},
f, ensure_ascii=False, indent=2)
# ...
# SRT 格式(字幕)
srt", "w", encoding="utf-8") as f:
f.write(self.to_srt(chapters))
# ...
# ID3 标签(MP3 章节)
id3", "w", encoding="utf-8") as f:
f.write(self.to_id3(chapters))
# ...
# 社媒文案
with open(base / "social-captions.md", "w", encoding="utf-8") as f:
f.write(captions)
# ...
generator = BatchChapterGenerator(
input_dir="./transcripts",
output_dir="./output"
)
generator.process_all()
基于语义理解的精准章节划分.
import os
from openai import OpenAI
# ...
client = OpenAI()
# ...
def ai_smart_chapters(transcript, target_chapters=6):
"""AI 语义分析生成章节
# ...
Args:
transcript: 带时间戳的文字稿
target_chapters: 目标章节数
"""
# 准备上下文
segments_text = "\n".join([
f"[{seg['start']:.1f}s] {seg['text']}"
for seg in transcript["segments"]
])
# ...
response = client.chat.completions.create(
model="gpt-4o",
messages=[
{"role": "system", "content": f"""你是播客章节编辑专家.
基于文字稿进行语义分析,将内容划分为 {target_chapters} 个左右的章节.
# ...
输出 JSON 格式:
podcast-chaptering
],
"highlights": [
podcast-chaptering
]
}}"""},
{"role": "user", "content": f"文字稿:\n{segments_text[:12000]}"}
],
response_format={"type": "json_object"}
)
# ...
return json.loads(response.choices[0].message.content)
# ...
# 使用
result = ai_smart_chapters(transcript)
for ch in result["chapters"]:
mins, secs = divmod(int(ch["start"]), 60)
print(f"{mins:02d}:{secs:02d} {ch['title']} - {ch['summary']}")
将章节生成封装为 API 服务.
from fastapi import FastAPI, UploadFile, File, BackgroundTasks
from fastapi.responses import JSONResponse
import tempfile
import os
# ...
app = FastAPI(title="播客章节服务", version="1.0.0")
# ...
@app.post("/api/v1/chapters")
async def generate_chapters(
file: UploadFile = File(...),
format: str = "json",
target_chapters: int = 6,
language: str = "auto"
):
"""生成章节标记
# ...
- 接受文字稿 JSON 文件
- 返回章节、高光与社媒文案
"""
content = await file.read()
# ...
with tempfile.NamedTemporaryFile(delete=False, suffix=".json") as tmp:
tmp.write(content)
tmp_path = tmp.name
# ...
try:
import json
with open(tmp_path, "r", encoding="utf-8") as f:
# ...
result = ai_smart_chapters(transcript, target_chapters)
# ...
return JSONResponse({
"status": "success",
"data": result,
"meta": {
"duration": transcript["segments"][-1]["end"],
"segments_count": len(transcript["segments"]),
"language": language
}
})
finally:
os.unlink(tmp_path)
# ...
@app.post("/api/v1/batch")
async def batch_process(
background_tasks: BackgroundTasks,
input_dir: str,
output_dir: str
):
"""批量处理(异步)"""
background_tasks.add_task(
BatchChapterGenerator(input_dir, output_dir).process_all
)
return {"status": "accepted", "message": "批量任务已启动"}
# ...
# 启动: uvicorn server:app --host 0.0.0.0 --port 8000
| 依赖项 | 类型 | 是否必需 | 获取方式 |
|---|---|---|---|
| openai | Python 库 | 必需(AI 功能) | pip install openai |
| fastapi | Python 库 | 可选(API 服务) | pip install fastapi uvicorn |
| python-multipart | Python 库 | 可选(文件上传) | pip install python-multipart |
| Python 3.9+ | 运行时 | 必需 | python.org 下载 |
| LLM API | API | 必需 | 由Agent内置LLM提供 |
OPENAI_API_KEYexport API_KEY="${API_KEY:?请设置环境变量}"
配置后需重启会话或开启新终端生效。API Key应妥善保管,避免泄露到版本控制系统.
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| content | string | 否 | 处理的内容输入 |
| mode | string | 否 | 处理模式, 可选值: json/text/markdown |
| style | string | 否 | 输出风格, 参考 references/style.md |
{
"success": true,
"data": {
"result": "处理结果",
"status": "success",
"metadata": {
"metadata": {
"template_used": "reviewer",
"word_count": 0,
"style": "专业"
}
},
"error": null
}
输出模板参考: assets/output.json
| 错误场景 | 原因 | 处理方式 |
|---|---|---|
| 配置错误 | 参数缺失或格式错误 | 检查依赖说明中的配置要求 |
| 运行时错误 | 运行环境不满足 | 确认运行环境符合依赖说明 |
| 网络错误 | 连接超时或不可达 |
| 依赖项 | 类型 | 必需 | 说明 |
|---|---|---|---|
| LLM | 模型 | 是 | 需要LLM进行内容生成, 推荐GPT-4/智谱GLM-4/DeepSeek |
| API Key | 凭证 | 否 | 使用云端LLM时需要, 本地LLM不需要 |
| 国内替代方案: |
# chaptering-config.yaml
batch:
input_dir: "./transcripts"
output_dir: "./output"
formats: ["markdown", "json", "srt", "id3"]
ai_model: "gpt-4o"
target_chapters: 6
language: "auto"
generate_social: true
generate_highlights: true
max_workers: 3
skip_existing: true
| 格式 | 用途 | 特点 |
|---|---|---|
| Markdown | 节目笔记 | 人类可读,平台通用 |
| JSON | 程序处理 | 结构化,含完整元数据 |
| SRT | 视频字幕 | 播放器兼容 |
| VTT | Web 字幕 | HTML5 兼容 |
| ID3 | MP3 章节 | 嵌入音频文件 |
基于 GPT-4o 语义分析,准确度可达 90%+。影响准确度的因素:文字稿质量、话题转换清晰度、专业术语密度。建议人工快速校对边界.
skip_existing 跳过已处理文件通过 prompt 指定:
AI 模型支持 30+ 语言,包括中英日韩法德西等。文字稿语言自动检测,章节标题按原文语言生成。如需翻译,可附加翻译步骤.
零迁移成本。专业版是免费版的超集,输入输出格式兼容。升级后原有流程自动受益于 AI 增强,新特性按需启用.
支持通过 API 集成到发布流程。但发布操作需明确授权,默认仅生成内容不自动发布,确保人工审核.
| 错误场景(续) | 原因 | 处理方式 |
|---|---|---|
| LLM响应超时或无响应 | 网络延迟或模型负载过高 | 请求重试;确认Agent平台LLM服务正常 |
| 输入内容格式不正确 | 用户输入不符合skill预期格式 | 检查输入是否符合skill使用说明中的格式要求,参考示例章节 |
| 执行结果与预期不符 | 指令描述不够明确或上下文不足 | 提供更详细的指令描述,补充必要的上下文信息 |
| 命令执行失败 | 运行环境不满足要求或权限不足 | 确认运行环境符合依赖说明中的要求;检查命令权限设置 |
| 操作步骤 | 手动耗时 | 自动化耗时 | 时间节约 | 准确率提升 |
|---|---|---|---|---|
| 章节标记 | 1小时/篇 | 3分钟/篇 | 57分钟/篇 | 95% |
| 高光片段提取 | 30分钟/篇 | 5分钟/篇 | 25分钟/篇 | 98% |
| 节目笔记整理 | 2小时/篇 | 10分钟/篇 | 1小时50分钟/篇 | 97% |
| 社媒文案生成 | 1小时/篇 | 5分钟/篇 | 55分钟/篇 | 100% |
| 多格式输出 | 30分钟/篇 | 2分钟/篇 | 28分钟/篇 | 100% |
| 对比维度 | 本技能 | 手动操作 | Python脚本 | 专业软件 |
|---|---|---|---|---|
| 功能全面性 | 全面支持章节标记、高光片段、节目笔记等 | 功能单一,需逐项操作 | 部分功能支持,需编写脚本 | 功能全面,但操作复杂,学习成本高 |
| 批量处理能力 | 支持目录级递归批量处理 | 逐个处理,效率低 | 可通过脚本批量处理,但灵活性较差 | 支持批量处理,但操作复杂 |
| 自动化程度 | 自动化程度高,减少人工操作 | 人工操作,效率低 | 需编写脚本,自动化程度有限 | 自动化程度高,但学习成本高 |
| 用户体验 | 操作简便,易于上手 | 操作复杂,易出错 | 需编写脚本,学习成本高 | 操作复杂,学习成本高 |
| 成本效益 | 成本效益高,性价比高 | 成本高,效率低 | 成本高,效率低 | 成本高,效率高 |
| 痛点 | 描述 | 影响范围 | 解决方案 | 量化效果 |
|---|---|---|---|---|
| 章节标记效率低 | 手动标记章节耗时,影响播客制作效率 | 播客制作效率 | 自动化章节标记,提高效率 | 时间节约57分钟/篇 |
| 高光片段提取困难 | 手动提取高光片段耗时,影响用户体验 | 用户体验 | 自动提取高光片段,提升用户体验 | 准确率提升98% |
| 节目笔记整理复杂 | 手动整理节目笔记耗时,影响内容质量 | 内容质量 | 自动整理节目笔记,提高内容质量 | 准确率提升97% |
| 错误现象 | 可能原因 | 诊断步骤 | 解决方案 |
|---|---|---|---|
| 无法启动工具 | 环境配置错误 | 检查环境配置,确保依赖项安装正确 | 重新安装依赖项,配置环境 |
| 输入数据格式错误 | 输入数据格式不正确 | 检查输入数据格式,确保符合要求 | 修正输入数据格式 |
| 输出结果缺失 | 输出结果不完整 | 检查输出路径,确保输出文件未被覆盖或删除 | 检查输出路径,确保输出文件正确生成 |
| 批量处理失败 | 任务队列配置错误 | 检查任务队列配置,确保任务正确调度 | 重新配置任务队列,确保任务正确调度 |
| API调用失败 | API服务不可用 | 检查API服务状态,确保服务正常运行 | 重启API服务,确保服务正常运行 |
| 风险项 | 等级 | 防护措施 | 验证方法 |
|---|---|---|---|
| API密钥泄露 | 高 | 通过环境变量配置,禁止硬编码 | 定期检查代码和配置文件 |
| 命令执行风险 | 高 | 仅执行白名单命令,避免拼接用户输入 | 使用沙箱环境测试 |
| 网络通信安全 | 中 | 使用HTTPS协议,验证SSL证书 | 定期检查证书有效期 |
| 敏感数据暴露 | 高 | 输出结果中不包含密钥、令牌等敏感信息 | 日志脱敏审查 |
| 未授权访问 | 中 | 限制访问权限,实施认证机制 | 定期审计访问日志 |