news 2026/1/20 9:02:19

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
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如此的“不稳定”吗哈哈。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/1/18 0:47:19

JS利用分片技术实现大文件分块上传的性能优化?

作为一名前端开发工程师,我近期接手了公司一个有些年头的旧项目改造工作。这次改造的核心需求,是要给这个旧项目增添大文件上传功能,尤其得支持 10G 左右文件的上传,并且还要具备断点续传的能力。 在众多解决方案中,我…

作者头像 李华
网站建设 2026/1/18 15:29:50

HTML5配合AES加密实现大文件分块传输安全?

(叼着冰棍敲键盘,显示器蓝光映着稀疏的头发) 各位爷瞧好了啊!咱这老码农被甲方爸爸按在地上摩擦了三个月,终于用原生JS搓出个能兼容IE9的文件夹上传怪兽。先说好哈,100块预算连我键盘缝里的烟灰都买不起&a…

作者头像 李华
网站建设 2026/1/19 23:45:35

NPP 热带森林:墨西哥查梅拉,1982-1995 年,R1

NPP Tropical Forest: Chamela, Mexico, 1982-1995, R1 简介 该数据集包含五个数据文件(.txt 格式)。其中三个数据文件提供了位于墨西哥查梅拉生物站(Chamela Biological Station)内一片 3300 公顷热带干旱落叶林的净初级生产力…

作者头像 李华
网站建设 2026/1/19 11:33:25

WordPress粘贴微信公众号内容自动排版

要求:开源,免费,技术支持 博客:WordPress 开发语言:PHP 数据库:MySQL 功能:导入Word,导入Excel,导入PPT(PowerPoint),导入PDF,复制粘贴word,导入微信公众号内容,web截屏 平台:Window…

作者头像 李华
网站建设 2026/1/17 4:20:14

毕设 stm32与深度学习口罩佩戴检测系统(源码+硬件+论文)

文章目录 0 前言1 主要功能2 硬件设计(原理图)3 核心软件设计4 实现效果5 最后 0 前言 🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉…

作者头像 李华
网站建设 2026/1/16 9:19:16

手机端AIDE安卓音乐播放器软件代码

package com.music.app; /*手机编程王APP & AIDE编译器联合出品官方微信2133688724微信公众号:手机编程APP官网:www.shoujibiancheng.com */import androidx.appcompat.app.AppCompatActivity;import androidx.core.app.ActivityCompat; import andr…

作者头像 李华