学习技术是为了落地想法,让工具解放双手。

下面结合  n8n 工作流:每日新闻推送 一文中的工作流,以此为基础,获取最新的新闻,然后根据获取到的最新的新闻攥写公众号文章,并生成公众号文章主图,最后将文章和主图推送到微信公众号操作草稿箱。实现:每日定时创建一篇科技新闻公众号文章,效果如下:

简单排版之后就可以直接发布,效果如下:科技巨头Meta与谷歌陷争议:VR儿童安全与开放网络衰退成焦点

一、工作流步骤拆解

如上图所示,整个工作流主要分为5个部分。

  1. 定时任务触发获取最新的科技新闻
  2. 科技新闻URL借助 Jina(等)工具获取正文
  3. AI 总结新闻
  4. AI 根据总结的新闻攥写公众号文章 + 主图
  5. 将文章 + 主图 推送到 公众号中

二、工作流详细拆解

根据拆解的步骤进行工作流的详细拆解

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
Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐