news-to-video-monetizer
🎬 News-to-Video Monetizer
一键将全网热点新闻变成可以赚钱的短视频。
能力概览
- 自动采集 — 实时抓取抖音、微博、B站等平台热搜
- 智能筛选 — 按赛道关键词匹配最有价值的话题,15天语义去重
- AI制作 — 自动生成剧本、角色、分镜、渲染视频(10-20分钟)
- 自动发布 — 视频完成后直接发布到 X2C 平台
- 流量变现 — 审核通过即获得流量分成,收益每日释放
依赖 Skills
本 Skill 是一个编排层,依赖以下 3 个底层 Skill 工作:
| Skill | 职责 |
|---|---|
dailyhot-api |
热点采集(抖音/微博/B站/头条/快手等 40+ 平台) |
storyclaw-x2c-ai-director |
AI编剧 + 视频生产(X2C Cloud API) |
storyclaw-x2c-publish |
视频发布 + 钱包/收益管理(X2C Cloud API) |
如果缺少任何一个,提示用户安装:
openclaw skill install dailyhot-api
openclaw skill install storyclaw-x2c-ai-director
openclaw skill install storyclaw-x2c-publish
首次使用引导
当检测到用户尚未配置时,按以下顺序引导:
Step 1: 绑定 X2C 账号
检查是否已有 X2C API Key(通过 storyclaw-x2c-ai-director 的 check-binding 命令)。
如果未绑定:
🔑 首次使用需要绑定 X2C 账号:
- 打开 https://www.x2creel.ai 注册/登录
- 进入 个人中心 → API管理 → 复制 API Key
- 把 API Key 发给我(格式:
x2c_sk_xxx)
收到后执行:
cd ~/.openclaw/skills/storyclaw-x2c-ai-director
USER_ID="$USER_ID" node scripts/ad-account-manager.js verify-key <api_key>
Step 2: 选择内容方向
询问用户:
📝 设置你的内容方向:
- 赛道(可多选):时尚穿搭 / 娱乐八卦 / 科技数码 / 财经金融 / 游戏电竞 / 其他
- 关键词:用于筛选热点,例如「美女, 穿搭, 网红, 明星」
- 目标受众:例如「大学生」「白领」「宝妈」
Step 3: 选择视频参数
🎬 设置视频默认参数:
- ⏱️ 时长: 60秒($2.99) / 120秒($5.99) / 180秒($7.99) / 300秒($9.99)
- 📐 比例: 竖屏(9:16) / 横屏(16:9)
- 🎨 风格: 3D古风 / 2D漫剧 / 吉卜力 / 皮克斯 / 写实 / 二次元 / 国风水墨
- 📂 分类: 玄幻异能 / 悬疑惊悚 / 科幻末世 / 都市复仇 / 热门综合 / 霸总甜宠 / 仙侠古装
配置保存到 workspace 的 config.json。如果 config.json 不存在,从本 Skill 目录下的 templates/config.template.json 复制一份。
用户指令
| 指令 | 效果 |
|---|---|
| 一键制作 | 全流程:采集 → 筛选 → 制作 → 发布 → 审核 |
| 查看热点 | 展示全网实时热搜 |
| 做一个关于 [话题] 的视频 | 指定话题制作 |
| 查看今日任务 | 所有 Task 状态一览 |
| 查看收益 | 账户余额 + 收益流水 |
| 查看余额 | 积分 / X2C / USDC |
| 修改配置 | 调整赛道、关键词、视频参数 |
| 绑定账号 | 绑定 X2C API Key |
| draft mode | 只制作不发布 |
新会话启动时显示能力菜单:
🎬 x2c自动化 已就绪!
📌 核心功能 1️⃣ 一键制作 — 自动采集热点 → 生成视频 → 发布到 X2C 2️⃣ 查看热点 — 获取全网实时热搜趋势报告 3️⃣ 指定话题制作 — 给我一个主题,我来生成视频
📊 管理面板 4️⃣ 查看今日任务 — 所有 Task 链路状态一览 5️⃣ 查看收益 — 账户余额 + 收益流水 6️⃣ 修改配置 — 调整赛道 / 关键词 / 视频参数
⚙️ 账户 7️⃣ 绑定 X2C 账号 — 首次使用前必须完成 8️⃣ 查看余额 — 积分 + X2C + USDC 余额
Pipeline 规则(5 节点生命周期)
执行顺序
Node 1: 采集 → Node 2: 筛选 → Node 3: 制作 → Node 4: 发布 → Node 5: 审核
不可跳步、不可乱序。auto_publish=true 时制作完成后自动发布。
Task 追踪
- 每次 pipeline 创建一个 Task 记录:
tasks/TASK-{YYYYMMDD}-{SEQ:3}.json - Task 在 Node 5(审核)完成后结束
- 已完成 Task 保留 30 天,失败 Task 保留 7 天,过期归档
收益独立
- 收益是账户级数据,不绑定单个 Task
- 通过
wallet/balance和wallet/transactionsAPI 获取 - 作为独立的「收益」面板展示
关键规则
- 视频不存本地 — 视频在 X2C 云端,本地只存 Task 元数据 JSON
- 封面取自 API — 使用
video_asset.thumbnailUrl或storyboard_shots[0].imageUrl,不手动生成 - URL 完整展示 — 不截断任何链接
- 失败不自动重试 — 视频制作每次扣积分,失败后报告用户等指令
- 15天语义去重 — 不重复制作相同话题
- 确认后执行 — 每次 pipeline 先确认参数再开始
采集脚本
用于热点采集和关键词筛选:
cd ~/.openclaw/skills/dailyhot-api && bash scripts/ensure_running.sh
采集逻辑(Agent 内嵌 Python 执行):
- 从 DailyHot API(localhost:6688)抓取多平台热榜
- 用 config.json 中的 keywords 做关键词匹配
- 按匹配度 + 热度排序
- 对比已完成 Task 做 15 天去重
- 返回 Top N 话题
视频制作
使用 storyclaw-x2c-ai-director 的 ad-producer.js:
cd ~/.openclaw/skills/storyclaw-x2c-ai-director
USER_ID="$USER_ID" node scripts/ad-producer.js full-workflow "话题描述" \
--mode short_video --duration 60 --ratio 9:16 --style "2D漫剧" --language zh
- 剧本生成:10积分,约30秒
- 视频渲染:299积分(60秒),约10-20分钟
- 完成后从
video/queryAPI 获取 video_url 和 thumbnailUrl
发布
使用 storyclaw-x2c-publish 的 distribution API:
curl -m 60 -X POST "$X2C_API_BASE_URL" \
-H "Content-Type: application/json" \
-H "X-API-Key: $X2C_API_KEY" \
-d '{
"action": "distribution/publish",
"title": "视频标题",
"description": "描述",
"category_id": "分类UUID",
"cover_url": "封面图URL(从thumbnailUrl获取)",
"video_urls": ["视频URL"],
"enable_prediction": false
}'
发布后用 distribution/query 查询审核状态(approved/pending_review/rejected)。
收益查询
# 余额
curl -m 60 -X POST "$X2C_API_BASE_URL" \
-H "Content-Type: application/json" \
-H "X-API-Key: $X2C_API_KEY" \
-d '{"action": "wallet/balance"}'
# 流水
curl -m 60 -X POST "$X2C_API_BASE_URL" \
-H "Content-Type: application/json" \
-H "X-API-Key: $X2C_API_KEY" \
-d '{"action": "wallet/transactions", "page": 1, "page_size": 10, "type": "earnings"}'
输出格式
Task 看板
═══════════════════════════════════════════════════════════
任务总数: {n} 总消耗: {n}积分 (${n})
═══════════════════════════════════════════════════════════
TASK-XXXXXXXX-XXX | {title} {✅/🔄/❌}
Node 1 {✅/🔄/❌/⏳} 采集 {summary}
Node 2 {✅/🔄/❌/⏳} 筛选 {summary}
Node 3 {✅/🔄/❌/⏳} 制作 {summary}
Node 4 {✅/🔄/❌/⏳} 发布 {summary}
Node 5 {✅/🔄/❌/⏳} 审核 {summary}
收益面板
═══════════════════════════════════════════════════════════
💰 账户收益
═══════════════════════════════════════════════════════════
积分余额: {n}
X2C 钱包余额: {n}
X2C 待领取: {n}
USDC 余额: {n}
成本参考
| 项目 | 积分 | 价格 |
|---|---|---|
| 剧本(短视频) | 10 | $0.10 |
| 视频 60秒 | 299 | $2.99 |
| 视频 120秒 | 599 | $5.99 |
| 视频 180秒 | 799 | $7.99 |
| 视频 300秒 | 999 | $9.99 |
已知限制
- 微博和快手的 DailyHot 接口偶尔返回 500(不影响整体采集)
- 视频渲染在 shot 阶段偶尔失败,属于 X2C 上游问题,重试通常成功
- 核心流程零模型依赖(不需要 OpenAI / Gemini / Claude API Key)
More from giggle-official/skills
giggle-generation-drama
Use this feature when users want to generate videos, shoot short films, or view available video styles. Triggering keywords: short film, make video, shoot short film, short video, AI video, generate video from story, short drama, narrated video, cinematic video, available video styles.
66giggle-generation-image
Supports text-to-image and image-to-image. Use when the user needs to create or generate images. After submit, proactively poll task status every ~15–30s and message the user each time until completed/failed/timeout—do not wait for the user to ask for progress. Use cases: (1) Generate from text description, (2) Use reference images, (3) Customize model, aspect ratio, resolution. Triggers: generate image, draw, create image, AI art.
63giggle-generation-aimv
Use when the user wants to create AI music videos (MV)—including generating music from text prompts or using custom lyrics. Before blocking on execute_workflow, tell the user the MV pipeline is running until completion; after return, immediately forward the result—user need not ask for progress. Triggers: generate MV, music video, make video for this song, lyrics video, create MV, AI music video, music+video, generate video from lyrics.
59giggle-generation-video
Supports text-to-video and image-to-video conversion (start frame/end frame). Trigger words: text-to-video, image-to-video.
58giggle-generation-music
Use when the user wants to create, generate, or compose music—whether from text description, custom lyrics, or instrumental background music. After submit, proactively poll task status every ~15–30s and message the user each time until completed/failed/timeout—do not wait for the user to ask for progress. Triggers: generate music, write a song, compose, create music, AI music, background music, instrumental, beats.
56giggle-generation-speech
Use when the user wants to generate speech, voiceover, or text-to-audio. Converts text to AI voice via Giggle.pro TTS API. Keep the user informed until audio is ready: message before long waits, use Cron/sync poll so the user need not ask for progress. Triggers: generate speech, text-to-speech, TTS, voiceover, read this text aloud, synthesize speech.
55