← Back to Skills Marketplace
oywq00008-cell

Breaking News

by KevinChan · GitHub ↗ · v1.0.0 · MIT-0
cross-platform ⚠ suspicious
31
Downloads
0
Stars
1
Active Installs
1
Versions
Install in OpenClaw
/install breaking-news
Description
Single-topic breaking news video for Douyin. Triggered manually when the user sends a breaking news alert from WeChat or webchat. Covers: deep search → scrip...
README (SKILL.md)

Breaking News Video Pipeline

Architecture

User Trigger (微信/webchat: "突发:xxx")
  │
Phase 1: Spawn sub-agent (DeepSeek V4 Flash, thinking=high)
  │  deep search (24h freshness) → data cleaning → output ~100 char script
  ▼
Phase 2: Main agent review (char count / date / relevance)
  │  Pass → launch TTS (edge-tts, background)
  ▼
Phase 3: Exaggerated title + topic.json + info card PNG
  │
Phase 4: Assembly + subtitle line-breaking (>10 chars wrap)
  │  Output: final.mp4
  ▼
Phase 5: Browser Restart (强制,防 CDP 断连)
  │
Phase 6: Douyin Upload (upload_douyin.py)
  │
Phase 7: WeChat Delivery → user review → publish
     wechat_send.py + wechat_screenshot.py

Differences from bi-daily

Dimension bi-daily breaking-news
Topics 10 1
Trigger cron manual
Search sub-agent pipeline sub-agent (V4 Flash)
Script 1900-2100 chars ~100 chars
Info cards 12 1 (metric)
Video duration 6-7 min 15-30 sec
Aspect ratio 16:9 (1920x1080) 9:16 (1080x1920)
Freshness 48h 24h
Subtitle wrap none >10 chars → wrap

Phase 1: Deep Search + Script (Sub-Agent)

Spawn a V4 Flash sub-agent to handle search and first-draft script writing.

sessions_spawn with:
  task: \x3Csee prompt template below>
  model: "volcengine-plan/deepseek-v4-flash"
  mode: "run"
  thinking: "high"

Prompt Template

Replace [keyword] with the breaking event keyword from the user's message.

你是一个突发新闻编辑。请按以下步骤执行:

1. 使用 web_search 对关键词"[keyword]"进行深度搜索
   - 强制要求:只浏览 24 小时内的报道(使用 date_after 参数)
   - 至少搜索 3 次不同角度(如:事件本身、各方反应、影响分析)
   - 阅读搜索结果获取详细内容

2. 清洗数据:
   - 排除重复信息
   - 排除未经验证的传言
   - 保留关键事实:时间、地点、人物、数字、后果

3. 撰写一条 100 字左右的短视频口播文案(中文):
   - 开头有冲击力,直击核心
   - 不换行,正确使用中文标点(。,、)
   - 涉及"台湾"一律使用"台湾省"
   - 涉及中国领导人加职位称呼
   - 仅输出文案本身,不要任何解释

只输出文案,不要输出其他任何内容。

Output: The sub-agent returns the script text directly. Save to 突发新闻/突发\x3Cdate>/文案/script.txt.


Phase 2: Main Agent Review + TTS

2a. Review Gate (MANDATORY)

Before TTS, the main agent MUST verify:

  • 字数审查: 中文字符 80-120 字。超出 → 手动裁剪。不足 → 补充关键事实。
  • 日期核查: web_search 交叉验证事件日期,确认 ≤24h
  • 关联度核查: 文案内容与用户触发关键词紧密相关,无偏题
  • 合规审查: 无禁止类别内容(娱乐/影视/短剧/游戏/电商/采访/访谈/评论/宗教/迷信/超自然/新车上市/地方政务)

If fails: fix and re-save script.txt before proceeding.

2b. TTS + Subtitles

After review passes, launch edge-tts (can run in background, no dependency on Phase 3):

mkdir -p 突发新闻/突发\x3Cdate>/音频 && \
cd ~/.openclaw/workspace && \
edge-tts --voice zh-CN-YunjianNeural --rate=+30% \
  -f 脚本/\x3Cdate>_breaking/script.txt \
  --write-media 音频/\x3Cdate>_breaking/audio.mp3 \
  --write-subtitles 突发新闻/突发\x3Cdate>/音频/out.vtt

VTT post-processing (de-punctuation + de-overlap):

python3 skills/breaking-news/scripts/check_vtt.py 突发新闻/突发\x3Cdate>/音频/out.vtt

Phase 3: Title + Info Card

3a. Exaggerated Title(夸张标题)

From the final script, create a clickbait-style title (≤30 chars for Douyin):

  • 提取最具冲击力的关键词
  • 使用感叹号、问号、省略号等吸引点击
  • 示例: "突发!俄无人机撞入北约大楼" / "刚刚!美伊达成停火协议"

Save to 突发新闻/标题/标题\x3Cdate>.txt:

[夸张标题]
#新闻 #突发 #时事

3b. Info Card (topic.json + gen_cards.py)

Extract from the final script + search results:

{
  "category": "国际",
  "title": "俄罗斯无人机袭击罗马尼亚公寓楼",
  "big_value": "2人受伤",
  "unit": "俄无人机坠入北约领土",
  "note": "罗马尼亚驱逐俄外交官并关闭领事馆,北约启动第四条款紧急磋商",
  "source": "NYT / NPR / euronews"
}

字段约束

  • title ≤17 中文字符,超长自动截断加省略号
  • big_value ≤6 中文字符
  • note ≤28 中文字符,超过 14 字自动换行
  • source 列出主要信源,用 / 分隔
python3 skills/breaking-news/scripts/gen_cards.py \
  突发新闻/突发\x3Cdate>/信息卡/topic.json \
  突发新闻/突发\x3Cdate>/信息卡/

Output: s00.png (1080x1920).


Phase 4: Assembly + Subtitle Wrapping

4a. Subtitle Line-Breaking

After VTT is ready, wrap any subtitle line >10 CJK characters:

python3 skills/breaking-news/scripts/wrap_vtt.py 突发新闻/突发\x3Cdate>/音频/out.vtt 13

This inserts \ break points every 10 CJK characters. Only counts CJK codepoints — punctuation and numbers are ignored. Original file backed up as .bak.

4b. Video Assembly

Single card PNG looped for audio duration, with subtitles burned:

cd ~/.openclaw/workspace && bash 视频制作/scripts/build_breaking.sh \x3Cdate>

build_breaking.sh:

  1. Detect audio duration via ffprobe
  2. Convert s00.png → s00.mp4 (loop for audio duration)
  3. ffmpeg single-pass: card + audio + subtitles at 1080x1920
  4. Output: 导出/final_\x3Cdate>_breaking.mp4

Phase 5: Browser Restart

强制 — 每次上传前必须重启浏览器,防 CDP 端口堆积 Worker 导致断连。

browser action=stop
sleep 3
browser action=start

Phase 6: Douyin Upload

cd skills/breaking-news/scripts/upload
PYTHONUNBUFFERED=1 .venv/bin/python upload_douyin.py \x3Cdate>

Phase 7: WeChat Delivery → Publish

Step 1 — Send:

python3 skills/breaking-news/scripts/wechat_send.py \x3Cdate> --breaking

Step 2 — Screenshot verify:

python3 skills/breaking-news/scripts/wechat_screenshot.py

Step 3 — Wait for user confirmation: "可以发布"

Step 4 — Publish: Browser tool (same as bi-daily Phase 9).


Scripts

Script Purpose
scripts/gen_cards.py Info card generation (vertical, single card)
scripts/wrap_vtt.py VTT subtitle line-breaking (>13 CJK chars)
scripts/check_vtt.py VTT auto-fix (de-punctuation + de-overlap)
scripts/upload/upload_douyin.py Upload to Douyin
scripts/wechat_send.py WeChat 3-piece delivery
scripts/wechat_screenshot.py WeChat delivery verification
scripts/cover_base.png Cover template base

External Scripts

Script Location Purpose
build_breaking.sh 视频制作/scripts/ Vertical ffmpeg assembly

Directory Structure

突发新闻/
├── 标题/
│   └── 标题\x3Cdate>.txt
├── 封面/
│   └── cover.png
├── 突发\x3Cdate>/                  ← one folder per event
│   ├── 文案/script.txt
│   ├── 信息卡/
│   │   ├── topic.json
│   │   └── s00.png
│   ├── 音频/
│   │   ├── audio.mp3
│   │   └── out.vtt
│   └── 导出/final.mp4
└── 突发\x3Cdate2>/
    └── ...
Usage Guidance
Install only if you are comfortable letting the skill drive a logged-in Douyin browser session and a live WeChat desktop session. Review the hard-coded WeChat recipient, the fixed screenshot path, and the Douyin synchronization toggle before use, and prefer running it in a dedicated account or isolated environment where accidental sends or cross-posts are low impact.
Capability Assessment
Purpose & Capability
The Douyin upload and WeChat delivery workflow is purpose-aligned, but it controls logged-in Douyin and WeChat sessions and can distribute media through real accounts; the Douyin sync-toggle code also appears to enable a third-party synchronization option despite a comment saying it disables it.
Instruction Scope
The skill discloses an end-to-end upload, WeChat delivery, screenshot, and final publish workflow, but it does not clearly warn that WeChat steps use global keystrokes, cursor clicks, clipboard access, and automatic message sending to a hard-coded contact.
Install Mechanism
The package is a normal skill artifact with markdown instructions and Python helper scripts; no installer, dependency confusion signal, startup hook, or hidden install-time execution was evident.
Credentials
For a news production workflow, using the browser and local files is expected, but OS-level WeChat GUI automation and a logged-in Chrome CDP session are high-impact and fragile compared with the disclosed task.
Persistence & Privilege
No durable persistence mechanism was found, but screenshots are written to a fixed absolute workspace path and the scripts rely on existing logged-in browser and WeChat privileges.
How to Use
  1. Make sure OpenClaw is installed (local or Docker)
  2. Run the install command in chat: /install breaking-news
  3. After installation, invoke the skill by name or use /breaking-news
  4. Provide required inputs per the skill's parameter spec and get structured output
Version History
v1.0.0
Version 1.0.0 of breaking-news skill introduces an end-to-end pipeline for rapid, single-topic vertical news video production, optimized for Douyin and WeChat delivery. - Adds a manual breaking news trigger and deep search/sub-agent workflow with 24-hour freshness. - Produces concise (~100 character) scripts, single info card, and 15–30 second vertical video (9:16). - Integrates comprehensive review, subtitle handling, TTS, vertical ffmpeg assembly, browser reset, Douyin upload, and WeChat delivery steps. - Includes clear file structure, field limits, and mandatory review/compliance gates. - Separates entirely from the bi-daily pipeline in both workflow and output format.
Metadata
Slug breaking-news
Version 1.0.0
License MIT-0
All-time Installs 1
Active Installs 1
Total Versions 1
Frequently Asked Questions

What is Breaking News?

Single-topic breaking news video for Douyin. Triggered manually when the user sends a breaking news alert from WeChat or webchat. Covers: deep search → scrip... It is an AI Agent Skill for Claude Code / OpenClaw, with 31 downloads so far.

How do I install Breaking News?

Run "/install breaking-news" in the OpenClaw or Claude Code chat to install it in one step — no extra setup required.

Is Breaking News free?

Yes, Breaking News is completely free, licensed under MIT-0. You can download, install and use it at no cost.

Which platforms does Breaking News support?

Breaking News is cross-platform and runs anywhere OpenClaw / Claude Code is available (cross-platform).

Who created Breaking News?

It is built and maintained by KevinChan (@oywq00008-cell); the current version is v1.0.0.

💬 Comments