/ 技术栈 | Tech / 101 views

2022年微博/Mastodon/Twitter的同步方法

简中互联网环境越来越恶劣,之前有很长一段时间不想在社交平台发言,但后面也想通了记录本身就是意义。比较常用的零碎想法记录平台,除了处处受限的微博,就是Mastodon(翻译成长毛象或者乳齿象,介绍详见:长毛象 Mastodon 食用指南)和Twitter,前者可以自由部署放在自己的服务器上或者选择自己信任的站长所建的站,后者必须科学上网,而且广告巨多。

我现在选用的方法是微博+Mastodon,一方面因为各种兴趣圈还是在简中网络,不能强求所有人都迁移,另一方面本身就想建个没什么人用的小号,没什么人关注,发言更自由,可以好好说话。微博环境实在太恶劣了,动不动删博炸号,于是就想到一个问题,能不能把微博上的内容同步到Mastodon作为备份?

微博同步Mastodon

查询了一下相关资料,从前常用的方法是使用IFTTT,但由于IFTTT的微博API无人维护之后,就没那么容易了。《再谈同步社交网站至 Mastodon(微博,RSS,原生图片》 这篇文章谈到两种微博转RSS,再用类似IFTTT的工具实现处理的方法,免费方法格式丑陋,付费方法是在是太贵了,其他的如u8u之类平台代码我也不是很会处理。

Github上搜到另外一种方法:微博转发毛象bot(P.S.源代码中有少许bug,可以用我修改过的weibo2mast), 这里面的逻辑是首先把微博抓取到本地,再用代码处理发布到Mastodon,程序非常简单,可以部署在服务器或者就在本地运行,效果很好。

如果需要实时同步,建议是搭建在服务器上24小时执行,而如果只是少量同步,可以本地运行,把xpost.py封装成脚本,设置成任务计划程序,每天定时同步新发的微博。

Mastodon 同步 Twitter

实现微博同步Mastodon之后,又想到是否可以建立从Mastodon到Twitter的同步呢,搜了下这方面资料也很多,IFTTT的方法就很好用,主要是Twitter的API很高效。

不过这里更推荐Mastodon Twitter Crossposter,设置简介明了,几乎可以做到实时同步,比起IFTTT更友好。

WordPress同步Mastodon

如果经常写博客的人,有时候也会想把更新博客的记录同步到Mastdon,对于这类可以获取RSS的内容,同步都可以用IFTTT实现。以自建Wordpress博客为例,首先在Mastodon的首选项-开发中创建应用,权限范围可以只勾选write。

点击创建的应用,可以获取到访问令牌,后续设置会用到。

打开IFTTT,创建新的Applets。第一步在If this选择RSS,再选择New feed item,在Feed URL填入博客RSS地址。一般Wordpress博客的RSS地址是博客地址后面加/feed,非常简单,像上面微博同步如果要用IFTTT,就需要把微博转换成RSS地址,这种会比较复杂,总之,只要有RSS的内容几乎都可以用同样的方法同步。完成后点击Create Trigger。

第二步在Then That中选择Webhooks,再选择Make a web request,根据下面规则进行自己的设置,完成后点击Create Action。

URL:https://你的实例地址/api/v1/statuses
Method:Post
Content Type:application/x-www-form-urlencoded
Body:access_token=你的访问令牌&status=<<<{{EntryTitle}}>>> %0A <<<{{EntryUrl}}>>> %0A <<<{{EntryContent}}>>>
这里的Body可以点击Add ingredient按钮选择自己想要呈现的内容,比如我现在选了标题、连接和博文内容。

One Bag Travel 初体验
One Bag Travel 初体验
WordPress博客折腾记-续
WordPress博客折腾记-续
WordPress博客折腾记
WordPress博客折腾记
批量实现WordPress固定链接的中译英与重定向
批量实现WordPress固定链接的中译英与重定向

5

  1. 山月

    路过……文中有处笔误“Wordprees”

    1. Olive

      啊,感谢~~已改正

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.