n8n第十二节 《科技早报》自动化工作流(下):筛选新闻生图并推到企微

接上节课,智能筛选新闻、生成海报并推送到企业微信。

思路和效果

将新闻按照主题关联度来排,取关联度高的前十条新闻,用它们的标题作为生图的关键词,然后将图片发到企微。步骤大致如下:

  • DeepSeek:文本处理
  • Gemini:图像生成
  • 企业微信:消息推送

效果图:

目的达到了,但是图片内容效果不尽人意,因为我用的是nano banana2.5,不是pro,运行稳定且有需求的话可以用最新滴nano banana pro(也是最贵滴)。

一、核心节点:AI智能筛选新闻

这个节点是大模型做裁判的关键环节。它拿到所有新闻标题后,要选出最相关的10条。

1. 筛选逻辑拆解

系统指令很明确:

  • 给每个标题打相关性分数(与"AI/人工智能/机器人/科技"相关程度)
  • 按分数从高到低排序
  • 前10名

这样避免了随机选择,确保选出的都是干货。

2. 输出格式强制约束

大模型必须输出固定格式:

复制代码
{
  "selected_news_titles": ["标题1", "标题2"],
  "poster_date": "2025年12月15日 星期一"
}

小技巧:这种严格格式约束,让后续节点可以直接使用数据,不用再解析。

二、海报生成:让AI当美编

选好新闻后,需要"配图"。这里调用Gemini-2.0生成海报。

提示词设计精髓

这个提示词写得很有水平:

  • 尺寸要求:4k竖版(9:16),适合手机查看
  • 布局要求:Bento Grid(便当盒式分区)
  • 风格要求:手绘风+简洁图标
  • 关键约束:严禁内容重复!

为什么用OpenRouter?

  • 它是"模型聚合平台",能访问多种图像模型
  • 根据需求用不同版本的大模型

三、数据处理:Base64提取与校验

AI返回的是数据URL,我们需要:

  1. 提取纯Base64字符串

  2. 计算MD5值(企业微信API要求)

代码节点核心逻辑:

复制代码
# 找到"png;base64,"后面的部分
base64_string = image_data_url.split("png;base64,")[1]

# 计算MD5(用于校验)
md5_hash = hashlib.md5(base64.b64decode(base64_string)).hexdigest()

四、最终推送:企业微信机器人

配置很简单:

复制代码
{
  "msgtype": "image",
  "image": {
    "base64": "{{base64_string}}",
    "md5": "{{md5_hash}}"
  }
}

Webhook密钥从企业微信群机器人设置获取。

五、小记

这节我还学习了base64和md5,她俩都是企微接收图片时要求必填的参数。

base64是什么?

我跟龙哥一起探讨,发现它跟ASCII 的联系非常深,ASCII如下(截图不完整):

我的理解是:ASCII里记录着里面有128个字符表(0-127),每格表代表不同的含义,包括古早常用的有特殊含义字母组合(0-31),计算符号和数字(32-64),大小写字母以及后面又加了些符号等等。而Base64是取里面的64个字符,大小写字母和数字,还差几个我不知道是什么,问了ds,她解释说:

  • ASCII 定义了一个包含 128个 字符的标准集(包括控制字符和可打印字符)。
  • Base64 从这个可打印字符部分中,精心挑选了 64个 最安全、最通用、最不可能被系统误解 的字符,组成了自己的"密码本":
    • 大写字母 A-Z (26个)
    • 小写字母 a-z (26个)
    • 数字 0-9 (10个)
    • 符号 + (1个)
    • 符号 / (1个)
    • 总计:26 + 26 + 10 + 1 + 1 = 64个字符

这就是它名字 Base64 的由来------基于这64个字符的编码系统。

ds还举了例子,我觉得说的挺清楚的:

md5是什么呢?

我的理解是:MD5就像现在网购要求的开箱视频 (AI生成的不算),目的是验证买家 收到的货物的跟卖家 发过来的货物是否货不对板,防止了买家无凭证,也防止卖家的货在中途被掉包等。企微要求必填md5,就是验证我们在群聊收到消息推送发的图片(买家 )与我们的工作流发给企微webhook的图片(卖家)是否一致,因为中间可能存在恶意广告给卖家图片调包的现象。ds说我的理解100%正确!

我看nano生图只有base64没有生成md5,所以我让ds帮我在代码里添加了md5的获取方式。本来用的是js,但是因为不熟悉,且python自带库,方便些,所以用了python代码。话说n8n的python代码标注的是Beta

,居然还是公测版,我们python如此的"不稳定"吗哈哈。

相关推荐
無间行者11 天前
【笔记】n8n 自动化平台安装部署使用笔记(一)
自动化流程·n8n
無间行者11 天前
【笔记】n8n 新手上路指南(三)
自动化流程·n8n
無间行者12 天前
【笔记】n8n Docker 容器时间与时区同步记录(二)
自动化流程·n8n
HoldBelief14 天前
安装N8N2.11.2 以及 访问宿主机上的文件
n8n
一马平川的大草原1 个月前
基于n8n构建企业内部知识库
人工智能·知识库·n8n
勇气要爆发1 个月前
2026年想学AI,面对 Dify、Coze、n8n、LangChain 该学哪个?
人工智能·langchain·dify·coze·n8n
呆萌的代Ma1 个月前
N8N(二):示例项目:将表单内容写入到飞书表格中
大模型·飞书·n8n
呆萌的代Ma1 个月前
N8N(一):在Docker中安装N8N
docker·容器·n8n
rs勿忘初心2 个月前
n8n工作流使用问题集合
常见问题·n8n·工作流平台·json解析方法·json参数报错
m_136872 个月前
n8n 启动时报 EACCES permission denied 的完整排查与修复
自动化·n8n