feat: Add complete Agentic Compaction & Pipeline System
- 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
This commit is contained in:
198
skills/podcast-generate/SKILL.md
Executable file
198
skills/podcast-generate/SKILL.md
Executable file
@@ -0,0 +1,198 @@
|
||||
---
|
||||
name: Podcast Generate
|
||||
description: Generate podcast episodes from user-provided content or by searching the web for specified topics. If user uploads a text file/article, creates a dual-host dialogue podcast (or single-host upon request). If no content is provided, searches the web for information about the user-specified topic and generates a podcast. Duration scales with content size (3-20 minutes, ~240 chars/min). Uses z-ai-web-dev-sdk for LLM script generation and TTS audio synthesis. Outputs both a podcast script (Markdown) and a complete audio file (WAV).
|
||||
license: MIT
|
||||
---
|
||||
|
||||
# Podcast Generate Skill(TypeScript 版本)
|
||||
|
||||
根据用户提供的资料或联网搜索结果,自动生成播客脚本与音频。
|
||||
|
||||
该 Skill 适用于:
|
||||
- 长文内容的快速理解和播客化
|
||||
- 知识型内容的音频化呈现
|
||||
- 热点话题的深度解读和讨论
|
||||
- 实时信息的搜索和播客制作
|
||||
|
||||
---
|
||||
|
||||
## 能力说明
|
||||
|
||||
### 本 Skill 可以做什么
|
||||
- **从文件生成**:接收一篇资料(txt/md/docx/pdf等文本格式),生成对谈播客脚本和音频
|
||||
- **联网搜索生成**:根据用户指定的主题,联网搜索最新信息,生成播客脚本和音频
|
||||
- 自动控制时长,根据内容长度自动调整(3-20 分钟)
|
||||
- 生成 Markdown 格式的播客脚本(可人工编辑)
|
||||
- 使用 z-ai TTS 合成高质量音频并拼接为最终播客
|
||||
|
||||
### 本 Skill 当前不做什么
|
||||
- 不生成 mp3 / 字幕 / 时间戳
|
||||
- 不支持三人及以上播客角色
|
||||
- 不加入背景音乐或音效
|
||||
|
||||
---
|
||||
|
||||
## 文件与职责说明
|
||||
|
||||
本 Skill 由以下文件组成:
|
||||
|
||||
- `generate.ts`
|
||||
统一入口(支持文件模式和搜索模式)
|
||||
- **文件模式**:读取用户上传的文本文件 → 生成播客
|
||||
- **搜索模式**:调用 web-search skill 获取资料 → 生成播客
|
||||
- 使用 z-ai-web-dev-sdk 进行 LLM 脚本生成
|
||||
- 使用 z-ai-web-dev-sdk 进行 TTS 音频生成
|
||||
- 自动拼接音频片段
|
||||
- 只输出最终文件
|
||||
|
||||
- `readme.md`
|
||||
使用说明文档
|
||||
|
||||
- `SKILL.md`
|
||||
当前文件,描述 Skill 能力、边界与使用约定
|
||||
|
||||
- `package.json`
|
||||
Node.js 项目配置与依赖
|
||||
|
||||
- `tsconfig.json`
|
||||
TypeScript 编译配置
|
||||
|
||||
---
|
||||
|
||||
## 输入与输出约定
|
||||
|
||||
### 输入(二选一)
|
||||
|
||||
**方式 1:文件上传**
|
||||
- 一篇资料文件(txt / md / docx / pdf 等文本格式)
|
||||
- 资料长度不限,Skill 会自动压缩为合适长度
|
||||
|
||||
**方式 2:联网搜索**
|
||||
- 用户指定一个搜索主题
|
||||
- 自动调用 web-search skill 获取相关内容
|
||||
- 整合多个搜索结果作为资料来源
|
||||
|
||||
### 输出(只输出 2 个文件)
|
||||
|
||||
- `podcast_script.md`
|
||||
播客脚本(Markdown 格式,可人工编辑)
|
||||
|
||||
- `podcast.wav`
|
||||
最终拼接完成的播客音频
|
||||
|
||||
**不输出中间文件**(如 segments.jsonl、meta.json 等)
|
||||
|
||||
---
|
||||
|
||||
## 运行方式
|
||||
|
||||
### 依赖环境
|
||||
- Node.js 18+
|
||||
- z-ai-web-dev-sdk(已安装)
|
||||
- web-search skill(用于联网搜索模式)
|
||||
|
||||
**不需要** z-ai CLI
|
||||
|
||||
### 安装依赖
|
||||
```bash
|
||||
npm install
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 使用示例
|
||||
|
||||
### 从文件生成播客
|
||||
|
||||
```bash
|
||||
npm run generate -- --input=test_data/material.txt --out_dir=out
|
||||
```
|
||||
|
||||
### 联网搜索生成播客
|
||||
|
||||
```bash
|
||||
# 根据主题搜索并生成播客
|
||||
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
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 参数说明
|
||||
|
||||
| 参数 | 说明 | 默认值 |
|
||||
|------|------|--------|
|
||||
| `--input` | 输入资料文件路径(与 --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 |
|
||||
|
||||
---
|
||||
|
||||
## 可用音色
|
||||
|
||||
| 音色 | 特点 |
|
||||
|------|------|
|
||||
| xiaochen | 沉稳专业 |
|
||||
| chuichui | 活泼可爱 |
|
||||
| tongtong | 温暖亲切 |
|
||||
| jam | 英音绅士 |
|
||||
| kazi | 清晰标准 |
|
||||
| douji | 自然流畅 |
|
||||
| luodo | 富有感染力 |
|
||||
|
||||
---
|
||||
|
||||
## 技术架构
|
||||
|
||||
### generate.ts(统一入口)
|
||||
- **文件模式**:读取用户上传文件 → 生成播客
|
||||
- **搜索模式**:调用 web-search skill → 获取资料 → 生成播客
|
||||
- **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 片段
|
||||
- 临时文件自动清理
|
||||
|
||||
---
|
||||
|
||||
## 输出示例
|
||||
|
||||
### podcast_script.md(片段)
|
||||
```markdown
|
||||
**小谱**:大家好,欢迎收听今天的播客。今天我们来聊一个有趣的话题……
|
||||
|
||||
**锤锤**:是啊,这个话题真的很有意思。我最近也在关注……
|
||||
|
||||
**小谱**:说到这里,我想给大家举个例子……
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## License
|
||||
|
||||
MIT
|
||||
Reference in New Issue
Block a user