IFTTT 同步微博至 Twitter 的体验太糟糕,最大的缺陷是无法较好地处理文字和附图微博。本文将介绍一种进阶方法,利用 IFTTT 和 Integromat 同步,以解决只用 IFTTT 同步微博的缺陷。 

Integromat 是一个类似于 Zapier 的在线自动化平台,如果以 Integromat 为纽带建立「微博 & IFTTT & Twitter」之间的联系,则可以解决无法恰当区分纯文字、带图片的微博和转发微博等问题。Integromat 可以区分文字微博和附图微博,并过滤转发微博,原理如下:

设置 IFTTT

设置 IFTTT 的过程比较简单,先在 IFTTT 创建两个 Applet 分别用于发布文字和附图微博:

文字微博

  1. if this Webhooks --> Receive a web request --> Event Name: only_text_weibo --> Create trigger
  2. then that Twitter --> Post a tweet --> Tweet text:{{Value1}}
  3. Creat action

附图微博

  1. if this Webhooks --> Receive a web request --> Event Name: image_text_weibo --> Create trigger
  2. then that Twitter --> Post a tweet with image --> Tweet text: {{Value1}} --> image URL: {{Value2}}
  3. 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 触发器:

  1. if this:Weibo,选择 New post by you;
  2. 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}}
  3. 点击 Create Action,点击 Finish

同步微博的限制

  • & 字符及其之后的文字内容无法同步,原因不明;
  • 文字数超过 Twitter 限制(140)无法同步;
  • 受制于微博接口限制,多图微博只同步第一张图片;
  • 因为 Twitter 不支持显示微博表情包,建议使用输入法自带的表情符号。
  • Integromat 免费额度每月仅有 1000 Operations,而一条原创微博消耗两次(转发微博消耗一次),故免费账户每月最多只能同步 500 条原创微博。

备注:IFTTT & Integromat 同步微博至 Twitter 的方法来自 xiaomingplus,万分感谢允许演绎。

> 下载少数派 客户端、关注 少数派公众号 ,了解更多有趣的应用 🚀
> 特惠、好用的硬件产品,尽在 少数派 Pi Store 商店 🛒