IFTTT 同步微博至 Twitter 的体验太糟糕,最大的缺陷是无法较好地处理文字和附图微博。本文将介绍一种进阶方法,利用 IFTTT 和 Integromat 同步,以解决只用 IFTTT 同步微博的缺陷。
Integromat 是一个类似于 Zapier 的在线自动化平台,如果以 Integromat 为纽带建立「微博 & IFTTT & Twitter」之间的联系,则可以解决无法恰当区分纯文字、带图片的微博和转发微博等问题。Integromat 可以区分文字微博和附图微博,并过滤转发微博,原理如下:
设置 IFTTT
设置 IFTTT 的过程比较简单,先在 IFTTT 创建两个 Applet 分别用于发布文字和附图微博:
文字微博
- if this
Webhooks–> Receive a web request –> Event Name:only_text_weibo–> Create trigger - then that
Twitter–> Post a tweet –> Tweet text:{{Value1}} - Creat action
附图微博
- if this
Webhooks–> Receive a web request –> Event Name:image_text_weibo–> Create trigger - then that
Twitter–> Post a tweet with image –> Tweet text:{{Value1}}–> image URL:{{Value2}} - Creat action
然后在 Services 中搜索 Webhook,点击 Documentation,记住 Key,形如 mZrddwEydzxxxxxxJeEXE,后面要用到。
设置 Integromat
设置 Integromat 的目的:接收 IFTTT 请求,过滤微博,触发文字微博和附图微博的 Webhooks 规则。在 Integromat 官网 注册账号,然后新建个方案(Scenario),点击右上角 Skip 或 Continue:
设置 Custom webhooks
点击 ? 搜索 Webhooks,选择 Custom webhook,在弹出的框中点击 Add,Webhook name 改为 IFTTT weibo webhook,点选左下角的 Show advanced settings,在 Datastructrue 右侧点击 Add,Data structrue name 改为 Weibo data structrue,点击 Generator。
在弹出的框中,Contenr type 选择 Query String,Sample data 中填写 text=text&image=imageUrl,保存上述所有操作。然后出现如下界面中的链接,点击 Copy address to clipboard,将此网址粘贴到记事本中,后面再次设置 IFTTT 时需要用到。
然后需要进行触发验证,在此网址后面添加 ?text=text&image=imageUrl,形成网址如下:
https://hook.integromat.com/sgv8piw5o1184s278dgi6fidyc7343tsff?text=text&image=imageUrl
在浏览器里直接访问这个网址,如果弹出新界面提示 Accepted,说明以上步骤均正常,可以继续。
添加过滤器 Router
点击 Webhook 图标右边中心有加号的半圆(Add another module),点击 ? 搜索 Router,选择 Flow Control –> Router。
设置过滤器第一条分支
点击第一条分支的虚线中间部分,点击 Set up a filter,Lable 填 image text weibo,点击 Condition 输入框,在弹出的框中选择 image,并在下拉框选择 Exists,点击 OK。
点击第一条分支末端 ?,搜索 HTTP,选择 HTTP –> Make a request,在 URL 里填写 https://maker.ifttt.com/trigger/image_text_weibo/with/key/xxxxxx,这里的 xxxxxx 要换成刚刚 IFTTT 步骤里最后一步获取到的 Key,Method 选择 POST,Body Type 选择 application/x-www-form-urlencode,点击 Add item,Key 填 value1,点击 value 的输入框,选择 text,点击 Add item,Key 填写 value2,点击 value 的输入框,选择 image,点击 OK。
设置过滤器第二条分支
点击第二条分支的虚线中间部分,点击 Set up a filter,Lable 填only text weibo,点击 Condition 输入框,在弹出的框中选择 image,并在下拉框选择 Does not exist。
点击右下角 Add and rule,输入框选择 text,下拉框选择 Dose not matches Pattern(case insensitive),下面的框中输入正则 (Repost)|(转发微博)|(\/\/)|(轉發微博),以过滤转发的微博,原理是:
- 不同的微博客户端转发通常会自动添加
Repost或转发微博等文字,匹配到这样文字的微博就会过滤掉; - 如果是你是第一个转发微博,并配有不含
转发微博等文字的其他内容,则此内容会转发到 Twitter; - 如果你是第二个或者第二个之后转发,并配有不含
转发微博等文字的其他内容,微博也不会被转发到 Twitter,因为转发微博中每个被转发用户前面都带有//,符合过滤条件,除非你删除转发微博所有之前用户的内容。
点击第二条分支末端 ?,搜索 HTTP,选择 HTTP –> Make a request,在 URL 里填写 https://maker.ifttt.com/trigger/only_text_weibo/with/key/xxxxxx,这里的 xxxxxx 要换成刚刚 IFTTT 步骤里最后一步获取到的 Key,Method 选择 POST,Body Type 选择 application/x-www-form-urlencode,点击 Add item,Key 填 value1,点击 value 的输入框,选择 text,点击 OK。
保存方案(Scenarios)
在左下角点击 OFF 调整到 ON 状态以打开这个任务。然后回到 IFTTT 继续设置。
当然,在这个步骤中,你也可以直接导入 我的配置 并略加修改:
1. 导入 blueprint.json
2. 创建同名 Webhook(因为 Webhook 链接相同,故需要以新创建的方式变更链接)
3. 设置 Data structure
4. 变更第一条分支末端的链接红圈部分(即设置 IFTTT 时的 Key)
5. 变更第二条分支末端的链接红圈部分(即设置 IFTTT 时的 Key)
6. 保存并启用。
回到 IFTTT 再次设置
创建同步微博内容到 Integromat 的 Webhook 触发器:
- if this:
Weibo,选择 New post by you; - then that:
Webhook,选择 Make a web request,URL 填写设置 Integromat 里面拿到的 Webhook 地址:https://hook.integromat.com/xxxxxxxxxxxxxxxx,Method 选择POST,Content Type 选择application/x-www-form-urlencode,Body 填写text={{Text}}&image={{PhotoURL}}; - 点击 Create Action,点击 Finish
同步微博的限制
&字符及其之后的文字内容无法同步,原因不明;- 文字数超过 Twitter 限制(140)无法同步;
- 受制于微博接口限制,多图微博只同步第一张图片;
- 因为 Twitter 不支持显示微博表情包,建议使用输入法自带的表情符号。
- Integromat 免费额度每月仅有 1000 Operations,而一条原创微博消耗两次(转发微博消耗一次),故免费账户每月最多只能同步 500 条原创微博。
备注:IFTTT & Integromat 同步微博至 Twitter 的方法来自 xiaomingplus,万分感谢允许演绎。
> 下载少数派 客户端、关注 少数派公众号 ,了解更多有趣的应用 🚀
> 特惠、好用的硬件产品,尽在 少数派 Pi Store 商店 🛒