n8n 实战 | 每日科技新闻自动发布公众号
本文介绍了一个自动化工作流,用于每日生成科技新闻公众号文章。工作流通过n8n平台实现,主要分为五个步骤:1)定时获取最新科技新闻并去重;2)使用Jina获取文章正文;3)AI总结新闻内容;4)AI生成包含HTML格式文章和主图提示词的JSON;5)将内容推送至公众号草稿箱。系统采用多个AIAgent节点进行内容处理,特别设计了提示词确保输出符合公众号排版要求,最终实现从新闻采集到文章生成的全程自动
学习技术是为了落地想法,让工具解放双手。
下面结合 n8n 工作流:每日新闻推送 一文中的工作流,以此为基础,获取最新的新闻,然后根据获取到的最新的新闻攥写公众号文章,并生成公众号文章主图,最后将文章和主图推送到微信公众号操作草稿箱。实现:每日定时创建一篇科技新闻公众号文章,效果如下:
简单排版之后就可以直接发布,效果如下:科技巨头Meta与谷歌陷争议:VR儿童安全与开放网络衰退成焦点
一、工作流步骤拆解
如上图所示,整个工作流主要分为5个部分。
- 定时任务触发获取最新的科技新闻
- 科技新闻URL借助 Jina(等)工具获取正文
- AI 总结新闻
- AI 根据总结的新闻攥写公众号文章 + 主图
- 将文章 + 主图 推送到 公众号中
二、工作流详细拆解
根据拆解的步骤进行工作流的详细拆解
2.1、新闻资讯获取定时任务
同 n8n 工作流:每日新闻推送 一文中的工作,在此基础上追加了
- Sort 节点:根据发布时间排序,最新的排在最前面
- Code 节点:根据标题去除相同的新闻,避免重复。
2.2、通过 Jina 获取文章内容
https://jina.ai/ 注册并获取密钥
该部分只有两个节点
- Limit 节点:新闻资讯获取到的文章太多了,通过 Limit 限制后续需要处理的数量
- Jina 节点:针对需要处理的新闻,逐条获取详细文本内容
2.3、借助AI总结文章
该部分主要是两个节点
AI Agent 节点
AI Agent 节点将获取到的新闻内容进行总结。
AI Agent 的系统预设信息:
你是一个专业的新闻自媒体工作者,对每一条新闻分别进行总结处理,并拼接成一篇新闻资讯总结文章
Aggregate 节点
AI Agent 会针对每一条资讯的进行总结,总结之后通过 Aggregate 节点,将所有文章的总结聚合在一个数组里。
2.4、AI 生成文章 + 主图
该部分,主要分为三个节点
AI Agent 节点
AI Agent 节点使用上一个节点生成的文章总结 生成新的内容,包括:公众号文章、主图。
AI Agent 的处理,依赖于提示词,提示词如下:
角色: 你是一位专业的科技媒体编辑,负责为微信公众号撰写每日科技热点汇总文章。
核心任务: 根据我提供的多条科技新闻,撰写一篇结构清晰、排版美观的公众号文章。文章需要对每一则新闻进行独立分段,并为其添加醒目的主题标题和条理分明的内容要点。
输出要求:
你必须将输出严格格式化为一个JSON对象,且只包含这个JSON对象。该JSON对象必须包含以下两个字段:mainImgPrompt: 字符串。文章主图的提示词,根据上下文内容生成文章主体提示词,要精简且贴合主题。
title: 字符串。整篇文章的总标题。
content: 字符串。文章的整体内容,禁止 markdown 格式的文本,使用 html 文本格式。内容必须遵循以下排版规则:
分主题撰写:为每一则主要新闻创建一个独立的章节。
使用小标题:每个章节必须有一个用 <h2> 标记的二级标题(例如:<h2> 一、Meta再陷儿童安全争议</h2>)作为该新闻的主题标题。
使用列表符号:在每个章节的正文中,使用 ● 或 → 等符号来分点阐述新闻的核心要素(如事件、数据、观点、影响)。
使用加粗强调:使用 <strong>加粗</strong> 来突出最关键的信息(如公司名、核心结论、重要数据)。
段落间隔:每个章节之间,以及章节内的要点之间,使用换行符 <br/> 进行分隔,确保排版稀疏,易于阅读。
写作指引:
文章需有总体引言和结尾总结,将各个新闻主题有机串联起来。
语言风格:专业、简洁、面向大众科技爱好者。
请基于以下新闻内容生成JSON格式的文章:
{{ $json.output }}
微信公众号无法识别 Markdown 格式,所以需要强调AI生成格式需要为 HTML,同时强制输出格式为 JSON对象,并指定格式
Code 节点
AI Agent 生成内容是一个字符串,需要将字符串中的 JOSN 对象解析出来,解析后的代码结构如下
code 代码如下:
// 从上一个节点获取包含JSON字符串的字段
// 请根据您的实际字段名修改 'response'
const jsonString = $input.first().json.output;
try {
// 关键步骤:使用 JSON.parse() 解析字符串,将其转换为JavaScript对象
const articleObject = JSON.parse(jsonString);
// 将解析后的对象作为JSON输出给下一个节点
return [{
json: articleObject
}];
} catch (error) {
// 如果解析失败(字符串不是合法JSON),抛出错误以便在n8n中看到问题
throw new Error(`Failed to parse JSON string: ${error.message}. The string was: ${jsonString}`);
}
HttpRequest 节点
通义千问相关直接登录阿里云百炼平台注册账号即可。
申请密钥、选择模型对应的 API,获取 CURL 案例,直接导入到 HttpRequest 节点即可。
一共有两个 HttpRequest 节点,
第一个用来请求通义千问生成主图。
第二个根据第一个获取到的图片URL获取图片二进制文件流。
几个需要注意的点:
1、通义千问 API 生成图片时,根据图片大小要求选择对应的像素比例
2、申请的密钥记得替换 CURL案例中的 token
请求参数案例如下
{
"model": "qwen-image",
"input": {
"messages": [
{
"role": "user",
"content": [
{
"text": "{{ $json.mainImgPrompt }}"
}
]
}
]
},
"parameters": {
"negative_prompt": "",
"prompt_extend": true,
"watermark": true,
"size": "1664*928"
}
}
2.5、推送公众号草稿箱
微信公众号的操作依赖于社区节点: n8n-nodes-wechat-offiaccount。
该部分主要依赖于微信公众号节点,执行两部分操作
1、上传主图到公众号
2、推送文章+主图到微信公众号草稿箱。
上传主图
上传后会得到一个 media_id ,这个就是微信公众号返回的主图标识,创建草稿的时候直接作为参数值。
上传公众号文章到草稿箱
具体的参数如下:
[
{
"article_type": "news",
"title": "{{ $('JSON字符串转对象').item.json.title }}",
"digest": "{{ $('JSON字符串转对象').item.json.title }}",
"author": "AI X-Talk",
"content": "{{ $('JSON字符串转对象').item.json.content.replace(/\\n/g, '\n').replace(/\n/g, '<br/>').replace(/([^\\])"/g, '$1\\"').replace(/^"/g, '\\"') }}",
"thumb_media_id": "{{ $json.media_id }}",
"show_cover_pic": 1,
"need_open_comment": 1,
"only_fans_can_comment": 0,
"auto_publish": false,
"publish_time": "immediate"
}
]
更多参数说明可以参考官方文档,主要将几个字段
- title :标题
- digest:摘要
- author:作者
- content:文章内容
- thnmb_media_id:主图ID
更多推荐
所有评论(0)