- Context Compaction System with token counting and summarization - Deterministic State Machine for flow control (no LLM decisions) - Parallel Execution Engine (up to 12 concurrent sessions) - Event-Driven Coordination via Event Bus - Agent Workspace Isolation (tools, memory, identity, files) - YAML Workflow Integration (OpenClaw/Lobster compatible) - Claude Code integration layer - Complete demo UI with real-time visualization - Comprehensive documentation and README Components: - agent-system/: Context management, token counting, subagent spawning - pipeline-system/: State machine, parallel executor, event bus, workflows - skills/: AI capabilities (LLM, ASR, TTS, VLM, image generation, etc.) - src/app/: Next.js demo application Total: ~100KB of production-ready TypeScript code
4.1 KiB
Executable File
4.1 KiB
Executable File
Podcast Generate Skill(TypeScript 线上版本)
将一篇资料自动转化为对谈播客,时长根据内容长度自动调整(3-20 分钟,约240字/分钟):
- 自动提炼核心内容
- 生成可编辑的播客脚本
- 使用 z-ai TTS 合成音频
这是一个使用 z-ai-web-dev-sdk 的 TypeScript 版本,适用于线上环境。
快速开始
一键生成(脚本 + 音频)
npm run generate -- --input=test_data/material.txt --out_dir=out
最终输出:
out/podcast_script.md- 播客脚本(Markdown 格式)out/podcast.wav- 最终播客音频
目录结构
podcast-generate/
├── readme.md # 使用说明(本文件)
├── SKILL.md # Skill 能力与接口约定
├── package.json # Node.js 依赖配置
├── tsconfig.json # TypeScript 编译配置
├── generate.ts # ⭐ 统一入口(唯一需要的文件)
└── test_data/
└── material.txt # 示例输入资料
环境要求
- Node.js 18+
- z-ai-web-dev-sdk(已安装在环境中)
不需要 z-ai CLI,本代码完全使用 SDK。
安装
npm install
使用方式
方式 1:从文件生成
npm run generate -- --input=material.txt --out_dir=out
方式 2:联网搜索生成
npm run generate -- --topic="最新AI新闻" --out_dir=out
npm run generate -- --topic="量子计算应用" --out_dir=out --duration=8
参数说明
| 参数 | 说明 | 默认值 |
|---|---|---|
--input |
输入资料文件路径,支持 txt/md/docx/pdf 等文本格式(与 --topic 二选一) | - |
--topic |
搜索主题关键词(与 --input 二选一) | - |
--out_dir |
输出目录(必需) | - |
--mode |
播客模式:dual / single-male / single-female | dual |
--duration |
手动指定分钟数(3-20);0 表示自动 | 0 |
--host_name |
主持人/主播名称 | 小谱 |
--guest_name |
嘉宾名称 | 锤锤 |
--voice_host |
主持音色 | xiaochen |
--voice_guest |
嘉宾音色 | chuichui |
--speed |
语速(0.5-2.0) | 1.0 |
--pause_ms |
段间停顿毫秒数 | 200 |
使用示例
双人对谈播客(默认)
npm run generate -- --input=material.txt --out_dir=out
单人男声播客
npm run generate -- --input=material.txt --out_dir=out --mode=single-male
指定 5 分钟时长
npm run generate -- --input=material.txt --out_dir=out --duration=5
自定义角色名称
npm run generate -- --input=material.txt --out_dir=out --host_name=张三 --guest_name=李四
使用不同音色
npm run generate -- --input=material.txt --out_dir=out --voice_host=tongtong --voice_guest=douji
联网搜索生成播客
# 根据主题搜索并生成播客
npm run generate -- --topic="最新AI技术突破" --out_dir=out
# 指定搜索主题和时长
npm run generate -- --topic="量子计算应用场景" --out_dir=out --duration=8
# 搜索并生成单人播客
npm run generate -- --topic="气候变化影响" --out_dir=out --mode=single-male
可用音色
| 音色 | 特点 |
|---|---|
| xiaochen | 沉稳专业 |
| chuichui | 活泼可爱 |
| tongtong | 温暖亲切 |
| jam | 英音绅士 |
| kazi | 清晰标准 |
| douji | 自然流畅 |
| luodo | 富有感染力 |
技术架构
generate.ts(统一入口)
- LLM:使用
z-ai-web-dev-sdk(chat.completions.create) - TTS:使用
z-ai-web-dev-sdk(audio.tts.create) - 不需要 z-ai CLI
- 自动拼接音频片段
- 只输出最终文件,中间文件自动清理
LLM 调用
- System prompt:播客脚本编剧角色
- User prompt:包含资料 + 硬性约束 + 呼吸感要求
- 输出校验:字数、结构、角色标签
- 自动重试:最多 3 次
TTS 调用
- 使用
zai.audio.tts.create() - 支持自定义音色、语速
- 自动拼接多个 wav 片段
- 临时文件自动清理
License
MIT