为Mastodon实例部署Mirror Bot

发布于 2021-09-11  484 次阅读


从Twitter可以用API获取Posts,微博只能靠爬,这就是差距啊。

有关Mirror Bot

长毛象对于Bot的支持还是很不错的,任何账号都可以生成API key,甚至可以给账号加上Bot标签让大家知道。至于部署Mirror Bot,这里采用这个npm包

获取源和目标相关的API key等

生成Mastodon的API key

首先要生成bot账号的API key,在注册bot账号时流程跟普通账号一样,但是邮箱可以设置成和你的其他账户一样方便管理,邮箱格式是youremail+indentifier@provider.com,总之在@之前加上'+randomstuff'即可。

注册完成后进入设置-开发,点击“创建新应用”,填个名字然后创建即可。然后在应用列表里点击刚刚创建好的应用即可查看API key。

生成Twitter的API key

Twitter现在需要申请Twitter Developer才能使用API,Twitter Developer主页

获取其他的源

Tumblr的用法跟Twitter差不多,都是通过API。因为Bot还支持RSS作为源,只要可以生成RSS feed的源都可以,比如博客等。另外通过RSSHub可以生成微博等平台的RSS feed,配合起来也可以使用。

编写Bot配置文件

在你喜欢的位置创建'config.edn',然后根据Bot Readme的模板修改。

首先是auth块,这里填入的就是上一步获得的API key等内容。
然后是transform块,这部分可以设置来源的账号或者RSS地址,可以设置多个来源,目标账号都会是这个Access token对应的长毛象账号。每个来源有一个source和一个target,其中可以修改详细的设置。

安装npm包并运行

首先保证nodejs和npm已安装如未安装运行apt-get install nodejs npm安装。安装完之后运行npm install mastodon-bot -g安装npm包。

通过命令mastodon-bot <path to config>启动即可运行bot,但bot不会在系统常驻,可以通过crontab控制bot每隔一定时间检查新post。运行crontab -e并加上一行*/5 * * * * /usr/local/bin/mastodon-bot /path-to-config即可让bot每五分钟检查一次新消息。

容器化部署

最近迁移服务,干脆把这个容器化了。

Dockerfile:

# Based on https://gitlab.com/yogthos/mastodon-bot

From node:lts-buster-slim
RUN apt-get update || : && apt-get install python -y
RUN apt-get install python3-pip -y
RUN npm install -g mastodon-bot
RUN apt-get install watch -y
ENTRYPOINT watch -n 600 mastodon-bot /config/config.edn

用watch命令实现每十分钟运行一次。

docker-compose:

version: '3.7'

services:
  mastodon-bot:
    build: .
    hostname: mastodon-bot
    network_mode: host
    container_name: mastodon-bot
    restart: unless-stopped
    volumes:
      - ./config:/config
    environment:
      TERM: xterm

config.edn放在config文件夹即可。


Sup