乐于分享
好东西不私藏

使用OpenClaw自动化每日新闻摘要公众号

使用OpenClaw自动化每日新闻摘要公众号

使用OpenClaw自动化每日新闻摘要公众号

干货提示:本文约1500字,手把手教你用 OpenClaw 构建一个全自动的新闻摘要公众号,从新闻抓取、AI 摘要生成、配图制作到定时发布,一步步落地。

一、为什么做新闻摘要公众号?

在信息爆炸的时代,用户更倾向于获取高质量、简洁的信息。新闻摘要公众号能够:

  • 每日推送精选热点新闻
  • 提供客观中立的摘要
  • 节省读者时间
  • 建立忠实读者群体

而使用 OpenClaw 实现全自动化,不仅省去人工编辑的成本,还能确保及时性和一致性。

二、前置条件

  1. Node.js (≥18) 及 npm 已安装  
  2. 微信公众号 已注册,获取 AppIDAppSecret,并配置到 TOOLS.md 或环境变量:  

    export WECHAT_APP_ID=wx5d05306ae35e407e
    export WECHAT_APP_SECRET=5be36a1a659b39fe09772f9d3ed10c64
  3. OpenClaw 已启动openclaw gateway start  
  4. 安装必要技能:  

    openclaw skill install browser-automation
    openclaw skill install wechat-toolkit
    openclaw skill install dreamina-cli   # 或使用 image_generate

三、工作流程概览

自动化新闻摘要公众号的核心流程如下:

  1. 定时触发(每天凌晨 5:00)  

    • 通过 HEARTBEAT.md 或系统计划任务启动。
  2. 新闻抓取  

    • 使用 browser-automation 抓取多个新闻源(如新浪新闻、网易新闻、百度热搜)。
    • 提取标题、链接和简介。
  3. 去重与筛选  

    • 基于标题相似度和热度值筛选顶部 8-10 条新闻。
  4. AI 摘要生成  

    • 将每条新闻的原文发送给 OpenClaw 大模型,生成 100-150字的中性摘要。
    • 提示词:请用客观中立的语言总结以下新闻内容,突出事实,避免情感色彩,控制在120字左右。
  5. 配图生成  

    • 根据新闻主题或关键词,使用 dreamina-cli 生成配图(可统一风格)。
    • 也可直接使用新闻原图(需注意版权)。
  6. Markdown 组装  

    • 每条新闻作为一个小节,包含标题、摘要、配图和原文链接。
    • 整篇文章前添加 frontmatter:

      ---
      title: 今日新闻摘要|YYYY-MM-DD
      cover: 绝对路径/cover.png
      ---

  7. 发布至草稿箱  

    • 调用 wechat-toolkit 将 Markdown 推送到公众号草稿箱。
  8. 定时发布  

    • 在公众号后台将草稿设置为当天上午 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. 某重大政策发布
![政策解读](C:\Users\91960\.openclaw\workspace\img_policy.png)
**摘要**:某国务院今天发布了关于促进科技创新的指导意见,鼓励企业增加研发投入,简化审批流程,设立专项基金支持前沿技术。预计将带动相关产业链投资增长。

[阅读全文](https://example.com/policy)

## 2. 某科技巨头发布新产品
![新产品](C:\Users\91960\.openclaw\workspace\img_newproduct.png)
**摘要**:某知名科技公司昨日发布了最新一代旗舰手机,搭载自研芯片,摄像头系统全面升级,支持卫星通信。售价较上代略有上升,首销情况火热。

[阅读全文](https://example.com/product)

...(其余新闻按同样格式)

注意:所有图片路径必须为绝对路径,否则微信公众号发布时会报错。

八、封面图生成

封面图建议使用统一模板,仅更改日期。我们可以用 Python 脚本快速生成:

from PIL import Image, ImageDraw, ImageFont
import datetime

# 创建封面
width, height = 1080864
img = Image.new('RGB', (width, color=(303046)))  # 深蓝黑背景
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,记录备用。

十、定时发布的两种方案

方案一:公众号后台定时(推荐)

  1. 文章发布至草稿箱后,登录微信公众号平台。  
  2. 进入「素材管理」→「图文消息」,找到今日新闻摘要草稿。  
  3. 点击「定时发送」,选择今日上午 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 或系统服务)。

十二、后续维护与升级

  1. 技能更新
    定期执行 /skill update 获取最新功能与安全补丁。  
  2. 模型调优
    若摘要偏离风格,可在 OpenClaw 设置中调节 temperature、top_p 等参数,或更换更适合中文客观摘要的模型。  
  3. 监控日志
    OpenClaw 会在工作目录下生成日志文件,定期查看 logs/ 目录,确保每一步都能正常运行。  
  4. 备份素材
    建议将生成的 Markdown、图片以及脚本定期备份至云盘或外部硬盘,防止意外丢失。  
  5. 版权风险
    新闻摘要应注明来源并链接原文;配图尽量使用 AI 生成或授权图片,避免直接使用新闻原图涉及侵权。

十三、总结

通过以上步骤,你已经搭建起一个基于 OpenClaw 的全链路自动化新闻摘要公众号系统:

  • 信息源:多源网页抓取(新浪、网易、百度热搜)  
  • 内容引擎:大模型客观摘要生成  
  • 视觉素材:AI 生成统一风格配图  
  • 发布管道:微信官方素材接口(via wechat-toolkit)  
  • 触发机制:心跳定时或系统计划任务

所有操作均可在本地完成,数据不离开你的机器,隐私安全。只要坚持每日产出,你的公众号将保持持续更新,吸引稳定读者群体。

行动建议:今天就尝试跑通一次完整流程,明早 8:30 看看自己的新闻摘要准时出现在粉丝手机里——那种看到自己亲手打造的自动化系统运行的成就感,是任何纯手动更新无法比拟的。


本文由 OpenClaw 生成,全程使用本地技能完成。
字数约:1530字