大家好,我是 MAI麦造
前段时间有朋友找我咨询 ==n8n 中如何自动发公众号的问题==,刚好发现了一些新手可能会遇到的坑,所以这里分享一下!
[!Note]我用了两种方法来实现,分别是:
- 自己手动配置 http 节点,实现公众号接口。
- 使用社区节点
各有自己适合的场景,所以根据自己的需求来选择即可。
不过都需要用到公众号的官方接口,所以先需要在公众号后台进行一下配置!
公众号后台配置
1. 获取 开发者 ID 和 开发者密码
通过设置与开发——开发接口管理——账号开发信息获取。
第一次可能需要申请一下。 不过基本都能过。
[!note]开发者密码(AppSecret) 是敏感信息,后台只会显示一次,请妥善保存,如果遗忘只能重置!
2. 配置白名单
由于公众号的安全限制,限制必须在白名单内的 IP 才能访问。
所以需要把你的 IP 添加进来。
这里需要注意一下, 建议这一步都在 n8n 中配置一个 http 节点来看你的请求 IP!
这个方法也适合你的 n8n 通过其他方式部署,你不知道 IP 的情况。
很多人在最后一步上传草稿的时候,出现上传不成功的问题,原因就是白名单配置不正确。
n8n 中配置一个网络请求节点,使用GET方法,URL是:http://httpbin.org/ip
这样可以确保你的 n8n 的出口 IP 不会出错!
方法 1:手动配置节点
这个方法相对来讲复杂一些,配置的节点比较多,
比较适合你的 n8n 没法安装社区节点的场景。
这里实际需要调到公众号的 3 个接口,分别是:
- 获取 token
- 上传封面素材
- 上传到草稿箱
这里我设置了一个 mock 数据的节点,来模拟一下真实的场景。 里面总共是 3 个字段:content、title、author
大家根据自己的实际情况调整。
token 是微信用来鉴权的,有过期时间,所以每次运行都要调用一次。
接口主要就 3 个参数:
grant_type:值是固定的client_credentialappid和secret:是刚刚获取到的开发者 ID和开发者密码
接下来是上传封面:
这里总共用了 3 个节点,分别是:
- 下载封面图。 也可以从本地路径读取
- 上传图片
- 解析上传结果,拿到
media_id
在下载封面图这里需要注意一下,因为下载完之后是一个文件,
所以在后面一个上传图片的节点中, 需要选择 n8n binary file, 在 Input Data Field Name 中只需要填 data 即可!
这个参数跟其他节点的拖拽方式不同,只能手动输入,且没有提示!
如果不知道这个的话,可能会花比较多的时间来调试。
(本人石锤😭)
大家也可以直接使用我的模板,没这个烦恼哈哈~
接下来就是解析结果,拿到响应中的 media_id:
因为接口返回的是一个JSON格式的字符串,所以需要解码一下才可以拿到里面的值。
[!TIPS] 这里有一个小技巧,可以使用了一个 Set 节点,在当中使用 JS 的表达式来做解析。
就不用配置 Code 节点了,简单又快速!
然后就到最后一步,上传草稿了!
这个节点的核心就是上传的内容:
基本格式如下:
1{ 2 "articles": [ 3 { 4 "title": "{{ $('mock 数据').item.json.title }}", 5 "author": "{{ $('mock 数据').item.json.author }}", 6 "content": "{{ $('mock 数据').item.json.content }}", 7 "thumb_media_id": "{{ $json.media_id }}", 8 "need_open_comment":1, 9 "only_fans_can_comment":0 10 } 11 ] 12} 13
这里还支持更多的字段地址,具体字段看官方文档:
如果前面的一切都没有问题,那么节点这个运行完之后,响应结果应该大致如下:
这时候在你公众号的草稿箱中就可以看到了!
方法 2:使用社区节点
这个节点包封装好了一系列的微信接口,包括我们要用到的 3 个接口,所以整个流程非常简单,只需要配置 4 个节点即可。
首先是安装它: 进到 Settings-> Community nodes中,
输入 n8n-nodes-wechat-offiaccount 来进行安装
然后在面板的添加节点中搜索 wechat ,选择第一个:
滑动到最底下,选择 授权 获取Access Token
这个节点中先需要配置 AppID 和 AppSecret
然后是下载封面图和上传素材:
下载封面图的节点和上面一样,不重复了
上传素材节点 选择素材选项下的第一个:上传永久素材
这里不用改动什么,请求参数都封装好了
最后添加上传草稿的节点,
选择 草稿 中的 新建草稿
里面也做了很多的封装,只需要传入文章内容即可:
不过文章参数与刚刚的稍有不同,格式如下:
1[ 2 { 3 "title": "这是我的文章标题2", 4 "author": "你的作者名", 5 "content": "<h1>这是一个大标题</h1><p>这里是文章的正文部分,<b>支持 HTML 格式</b>。你可以从其他节点动态传入这段内容。</p><img src='https://mmbiz.qpic.cn/mmbiz_jpg/your_image_url/0?wx_fmt=jpeg' />", 6 "thumb_media_id": "kjIYa7yRqi3jD3XlC9XxnShDNVceXTE_iRf55uv19iEOuBgfKKKvrQ3rd3pg17Kj", 7 "need_open_comment":1, 8 "only_fans_can_comment":0 9 } 10 ] 11 12
运行成功后,结果跟刚刚是一致的
最后
两种方法各种有优缺点,大家根据自己的场景来选择。
有空可以跟着教程自己动手实践一下。
或者公众号后台回复【n8n公众号】获取完整工作流 json 文件,直接接入到自己的工作流中!
《2 种方法!用 n8n 自动发公众号》 是转载文章,点击查看原文。