使用OpenClaw自动化每日新闻摘要公众号
使用OpenClaw自动化每日新闻摘要公众号
干货提示:本文约1500字,手把手教你用 OpenClaw 构建一个全自动的新闻摘要公众号,从新闻抓取、AI 摘要生成、配图制作到定时发布,一步步落地。
一、为什么做新闻摘要公众号?
在信息爆炸的时代,用户更倾向于获取高质量、简洁的信息。新闻摘要公众号能够:
-
每日推送精选热点新闻 -
提供客观中立的摘要 -
节省读者时间 -
建立忠实读者群体
而使用 OpenClaw 实现全自动化,不仅省去人工编辑的成本,还能确保及时性和一致性。
二、前置条件
-
Node.js (≥18) 及 npm 已安装 -
微信公众号 已注册,获取 AppID与AppSecret,并配置到TOOLS.md或环境变量:export WECHAT_APP_ID=wx5d05306ae35e407e
export WECHAT_APP_SECRET=5be36a1a659b39fe09772f9d3ed10c64 -
OpenClaw 已启动: openclaw gateway start -
安装必要技能: openclaw skill install browser-automation
openclaw skill install wechat-toolkit
openclaw skill install dreamina-cli # 或使用 image_generate
三、工作流程概览
自动化新闻摘要公众号的核心流程如下:
-
定时触发(每天凌晨 5:00) -
通过 HEARTBEAT.md或系统计划任务启动。
-
-
新闻抓取 -
使用 browser-automation抓取多个新闻源(如新浪新闻、网易新闻、百度热搜)。 -
提取标题、链接和简介。
-
-
去重与筛选 -
基于标题相似度和热度值筛选顶部 8-10 条新闻。
-
-
AI 摘要生成 -
将每条新闻的原文发送给 OpenClaw 大模型,生成 100-150字的中性摘要。 -
提示词:请用客观中立的语言总结以下新闻内容,突出事实,避免情感色彩,控制在120字左右。
-
-
配图生成 -
根据新闻主题或关键词,使用 dreamina-cli生成配图(可统一风格)。 -
也可直接使用新闻原图(需注意版权)。
-
-
Markdown 组装 -
每条新闻作为一个小节,包含标题、摘要、配图和原文链接。 -
整篇文章前添加 frontmatter: ---
title: 今日新闻摘要|YYYY-MM-DD
cover: 绝对路径/cover.png
---
-
-
发布至草稿箱 -
调用 wechat-toolkit将 Markdown 推送到公众号草稿箱。
-
-
定时发布 -
在公众号后台将草稿设置为当天上午 8:30 发布。
-
下面详细说明每一步的操作命令和注意事项。
四、新闻抓取:多源聚合
4.1 抓取新浪新闻滚动
# 打开新浪新闻滚动页面
/browser-automation open https://news.sina.com.cn/roll/
# 等待加载,获取前20条新闻标题和链接
/browser-automation eval "
Array.from(document.querySelectorAll('.news-item'))
.slice(0,20)
.map(el => ({
title: el.querySelector('h2')?.innerText.trim(),
url: el.querySelector('a')?.href,
summary: el.querySelector('.summary')?.innerText.trim()
}))
" > sina_news.json
4.2 抓取网易新闻热点
/browser-automation open https://news.163.com/
/browser-automation eval "
Array.from(document.querySelectorAll('.news_item_title'))
.slice(0,20)
.map(el => ({
title: el.innerText.trim(),
url: el.querySelector('a')?.href,
summary: ''
}))
" > wangyi_news.json
4.3 抓取百度热搜(作为补充)
/browser-automation open https://top.baidu.com/board?tab=realtime
/browser-automation eval "
Array.from(document.querySelectorAll('.c-single-text-el'))
.slice(0,20)
.map(el => ({
title: el.innerText.trim(),
url: `https://www.baidu.com/s?wd=${encodeURIComponent(el.innerText.trim())}`,
summary: ''
}))
" > baidu_hot.json
4.4 合并与去重(Node 脚本示例)
// merge.js
const fs = require('fs');
const sina = JSON.parse(fs.readFileSync('sina_news.json','utf8'));
const wangyi = JSON.parse(fs.readFileSync('wangyi_news.json','utf8'));
const baidu = JSON.parse(fs.readFileSync('baidu_hot.json','utf8'));
const all = [...sina, ...wangyi, ...baidu];
// 简单去重:基于标题
const seen = new Set();
const unique = all.filter(item => {
if (seen.has(item.title)) return false;
seen.add(item.title);
return true;
});
// 按来源权重排序(可自行定义)
unique.sort((a,b)=> (a.url.includes('sina')?0:1) - (b.url.includes('sina')?0:1));
fs.writeFileSync('news_today.json', JSON.stringify(unique.slice(0,10),null,2));
执行 node merge.js 得到今日新闻列表。
五、AI 摘要生成
将 news_today.json 中的每条新闻(如有原文则抓取全文,否则使用标题+简介)发送给 OpenClaw:
请用客观中立的语言总结以下新闻内容,突出事实,避免情感色彩,控制在120字左右:
[新闻标题]
[新闻内容或简介]
得到的摘要保存回 JSON,例如:
{
"title": "原标题",
"url": "原链接",
"summary": "AI生成的120字摘要",
"imagePrompt": "根据新闻主题生成的图片描述"
}
技巧:为每条新闻生成一个图片描述 prompt,后续用于 AI 配图。
六、配图生成:统一风格
为保持公众号视觉统一,可为所有新闻使用同一风格的配图(例如简约线条图),或根据主题生成不同图片。
6.1 生成通用背景图
/dreamina-cli generate "简约风格的新闻背景图,左侧有抽象的地球线条,右侧有柔和的蓝色渐变,适合作为新闻摘要配图" --size 800x600 --output C:\Users\91960\.openclaw\workspace\news_bg.png
6.2 根据主题生成特色图(可选)
如果想要更贴近新闻内容,可为每条新闻生成图片:
/dreamina-cli generate "人工智能在医疗中的应用,医生手持平板查看AI分析的影像,未来感医院场景" --size 800x600 --output C:\Users\91960\.openclaw\workspace\img_ai_medical.png
将生成的图片路径填入 JSON 中的 imagePath 字段。
七、Markdown 组装示例
---
title: 今日新闻摘要|2026-04-22
cover: C:\Users\91960\.openclaw\workspace\openclaw_news_cover.png
---
# 今日新闻摘要|2026-04-22
> 自动生成 · 客观中立 · 每日必读
## 1. 某重大政策发布

**摘要**:某国务院今天发布了关于促进科技创新的指导意见,鼓励企业增加研发投入,简化审批流程,设立专项基金支持前沿技术。预计将带动相关产业链投资增长。
[阅读全文](https://example.com/policy)
## 2. 某科技巨头发布新产品

**摘要**:某知名科技公司昨日发布了最新一代旗舰手机,搭载自研芯片,摄像头系统全面升级,支持卫星通信。售价较上代略有上升,首销情况火热。
[阅读全文](https://example.com/product)
...(其余新闻按同样格式)
注意:所有图片路径必须为绝对路径,否则微信公众号发布时会报错。
八、封面图生成
封面图建议使用统一模板,仅更改日期。我们可以用 Python 脚本快速生成:
from PIL import Image, ImageDraw, ImageFont
import datetime
# 创建封面
width, height = 1080, 864
img = Image.new('RGB', (width, color=(30, 30, 46))) # 深蓝黑背景
draw = ImageDraw.Draw(img)
try:
font_title = ImageFont.truetype("simhei.ttf", 60)
font_date = ImageFont.truetype("simhei.ttf", 40)
except IOError:
font_title = ImageFont.load_default()
font_date = ImageFont.load_default()
# 标题
title = "今日新闻摘要"
date_str = datetime.date.today().strftime("%Y-%m-%d")
full_title = f"{title}|{date_str}"
# 计算位置
title_w, title_h = draw.textsize(full_title, font=font_title) if hasattr(draw,'textsize') else draw.textbbox((0,0),full_title,font=font_title)[2:]
title_pos = ((width-title_w)/2, height/3)
draw.text(title_pos, full_title, fill=(255,255,255), font=font_title)
# 装饰线
line_y = title_pos[1] + title_h + 20
draw.line([(width/4, line_y), (width*3/4, line_y)], fill=(100,150,255), width=3)
# 保存
img.save("openclaw_news_cover.png")
print("封面生成完成")
执行后得到 openclaw_news_cover.png。
九、发布至公众号草稿箱
假设最终文章保存为 openclaw_news_automation.md(含完整 frontmatter),执行发布:
set WECHAT_APP_ID=wx5d05306ae35e407e&&set WECHAT_APP_SECRET=5be36a1a659b39fe09772f9d3ed10c64&&wenyan publish -f C:\Users\91960\.openclaw\workspace\openclaw_news_automation.md -t lapis -h solarized-light
或直接使用技能:
/skill run wechat-toolkit 发布到公众号 openclaw_news_automation.md
发布成功后会返回 Media ID,记录备用。
十、定时发布的两种方案
方案一:公众号后台定时(推荐)
-
文章发布至草稿箱后,登录微信公众号平台。 -
进入「素材管理」→「图文消息」,找到今日新闻摘要草稿。 -
点击「定时发送」,选择今日上午 8:30,确认。
方案二:OpenClaw 自动调用接口(高级)
熟悉微信公众号素材接口的用户可使用 ollama_web_fetch 调用上传接口实现全自动定时,需定期刷新 access_token。此方案适合有开发基础的用户,这里不展开。
十一、完整示例脚本(HEARTBEAT.md)
将以下内容添加到工作目录的 HEARTBEAT.md,实现每天凌晨 5:00 自动抓取新闻、生成摘要、制作配图并推送草稿(发布仍需手动在公众号后台设定定时):
# 每日新闻摘要自动化
- fetch_and_generate: call C:\Users\91960\.openclaw\workspace\scripts\daily_news.bat
对应的批处理脚本 daily_news.bat(示意):
@echo off
REM 1. 抓取新闻
/browser-automation open https://news.sina.com.cn/roll/
REM ...(省略抓取细节,调用Node脚本合并)
node merge.js
REM 2. AI 生成摘要(调用OpenClaw聊天)
type news_today.json | openclaw chat -p "请用客观中立的语言总结以下新闻内容,突出事实,避免情感色彩,控制在120字左右:" > news_with_summary.json
REM 3. 为每条新闻生成配图(示例仅第一条)
for /f "tokens=*" %%A in ('type news_with_summary.json ^| findstr "title"') do (
REM 这里需要解析JSON并循环,示例简化
/dreamina-cli generate "新闻配图抽象背景" --size 800x600 --output C:\Users\91960\.openclaw\workspace\img_%%A.png
)
REM 4. 生成Markdown(此处用Node脚本组合)
node build_markdown.js
REM 5. 生成封面(仅当天日期更改)
python C:\Users\91960\.openclaw\workspace\generate_cover_news.py
REM 6. 发布到草稿箱
/skill run wechat-toolkit 发布到公众号 openclaw_news_automation.md
REM 7. 清理临时文件
del *_news.json
注意:上述脚本仅为演示,实际使用中请根据自身环境调整路径与命令。确保 OpenClaw 终端在后台可执行(比如通过持久化 session 或系统服务)。
十二、后续维护与升级
-
技能更新
定期执行/skill update获取最新功能与安全补丁。 -
模型调优
若摘要偏离风格,可在 OpenClaw 设置中调节 temperature、top_p 等参数,或更换更适合中文客观摘要的模型。 -
监控日志
OpenClaw 会在工作目录下生成日志文件,定期查看logs/目录,确保每一步都能正常运行。 -
备份素材
建议将生成的 Markdown、图片以及脚本定期备份至云盘或外部硬盘,防止意外丢失。 -
版权风险
新闻摘要应注明来源并链接原文;配图尽量使用 AI 生成或授权图片,避免直接使用新闻原图涉及侵权。
十三、总结
通过以上步骤,你已经搭建起一个基于 OpenClaw 的全链路自动化新闻摘要公众号系统:
-
信息源:多源网页抓取(新浪、网易、百度热搜) -
内容引擎:大模型客观摘要生成 -
视觉素材:AI 生成统一风格配图 -
发布管道:微信官方素材接口(via wechat-toolkit) -
触发机制:心跳定时或系统计划任务
所有操作均可在本地完成,数据不离开你的机器,隐私安全。只要坚持每日产出,你的公众号将保持持续更新,吸引稳定读者群体。
行动建议:今天就尝试跑通一次完整流程,明早 8:30 看看自己的新闻摘要准时出现在粉丝手机里——那种看到自己亲手打造的自动化系统运行的成就感,是任何纯手动更新无法比拟的。
本文由 OpenClaw 生成,全程使用本地技能完成。
字数约:1530字
夜雨聆风