为了账号安全,请及时绑定邮箱和手机立即绑定

自动化发布到蓝 sky 和 Mastodon 的简易教程

上次我们学习了如何通过域名验证我们的账号,并使用免费的Glitch网站——这次我们来设置一个简单的应用来发布一些自动化内容到Bluesky和Mastodon,通过它们的API。

我们将在两个平台上设置开发者凭证,然后将它们上传到Glitch,并发布一些带有随机表情符号的搞笑文字。我们还将展示一个更复杂的示例,这个示例会发布链接和图片。如果你还想继续构建更多功能,也可以参考这个示例!

重新混音故障项目

我们正在使用一个Glitch项目,该项目已经设置好了大量代码,所以你可以remix 来获取你自己的副本:

这款应用程序使用Node.jsAxios来连接Bluesky和Mastodon的API,但如果你不熟悉这些框架,也无需担心,你可以轻松地填入你的信息并开始发布帖子。

如果你想,你可以花点时间快速看看这个项目。在README文件中也有说明。我们主要会在这些文件上工作:

  • .env 文件中存放我们的凭证
  • src/client.js 文件中我们连接到 API
  • server.js 文件中,我们调用客户端方法并处理调度

我们默认发布的内容是由 src/client.js 文件中的 postTxt 变量定义的,如果你想发布不同的内容,可以修改这个变量——初始代码仅支持纯文本形式的内容,下面将介绍如何发布媒体内容。

默认文本

下面这些帖子展示了系统默认的内容。

点击这里 https://mastodon.social/@suewtf/113644869914130623 和点击这里 https://bsky.app/profile/www.sue.wtf/post/3ld6oulfqg72z 查看Sue的帖子。

拿到您的开发人员账号和密码

为了从官方 Bluesky 和 Mastodon 应用之外的地方发帖,我们将使用 API。API 是平台提供的接口,允许你通过代码来访问其功能。为了获得这种访问权限,我们将在这两个平台上进行身份验证,以确保我们使用的应用和网站上的用户数据安全。

Bluesky 设置教程

在使用Bluesky时,我们需要为目标账户获取一个应用密码。在您的Bluesky账号中,进入设置 > 隐私与安全 > 应用密码

Bluesky应用的密码界面

  • 点击 添加应用密码(例如:“Glitch海报”)
  • 为你的应用密码输入一个 名称(例如:“Glitch海报”)
  • 复制密码并点击 完成 按钮
  • 将密码粘贴到Glitch remix的 .env 文件中的 APP_PASSWORD 变量位置
  • 在编辑 .env 文件时,输入你想要发布到的Bluesky账户的用户名

Glitch环境,带有应用密码和句柄

Mastodon 设置向导

在Mastodon中,你需要一个令牌来验证你的请求身份。登录到你的账户(请使用浏览器而不是手机应用)。导航到设置 > 开发,然后点击创建新应用

  • 给你的应用取一个名字,比如 "Glitch poster"
  • 应用网站栏填入你的Glitch网站URL。该URL应以 .glitch.me 结尾。
  • 保留重定向URI的默认设置
  • 范围部分,如果你希望可以发布图片,请确保选中 write:statuseswrite:media
  • 提交你的申请
  • 复制访问令牌的值
  • 将其粘贴到你的Glitch项目 .env 文件中的 MASTODON_TOKEN 变量

Masto应用

Mastodon 权限

💡 你也可以在你的 Mastodon 个人资料中添加你的 Glitch 网站作为验证链接——在 index.html 中加入一个指向 Mastodon 账户的链接,并在链接标签中添加 rel="me"

我的 Glitch 网站链接
Mastodon 验证状态

在你的Mastodon账户里,也建议你在设置 > 个人资料 中勾选此账户为机器人账户

发帖!

你应该准备好了可以发布了!你的Glitch remix(Glitch混音)包含了可以按计划发布的代码,不过你也可以手动发布。在预览时,点击地址栏并输入以下地址之一:

  • postBsky: 仅发到 Bluesky
  • postMasto: 仅发到 Mastodon
  • postAll: 发到两者

打开日志,查找任何详细信息或错误。

如图所示

查看你的账号,找到那些帖子。

Bluesky帖子示例

Mastodon帖子 (示例帖子)

看看代码

Bluesky和Mastodon的代码略有不同,所以我们来拆解一下代码,以便你在其他地方进行调整和使用。我们将探讨src/client.js中的API连接部分。

对于Bluesky,我们需要开始一个会话并保存token:

const session = await bskyClient.request({
  url: "/com.atproto.server.createSession",
  method: "post",
  data: {
    identifier: process.env.HANDLE,
    password: process.env.APP_PASSWORD,
  },
  headers: {
    "Content-Type": "application/json",
  },
});
bskyToken = session.data.accessJwt; // bskyToken 是用于访问的令牌
// 这段代码用于登录并获取访问令牌

点击这里进入全屏模式,点击这里退出全屏模式

然后我们就可以在接下来的请求中使用这个令牌。接下来我们就可以发帖了。

    const post = await bskyClient.request({
      url: "/com.atproto.repo.createRecord",
      method: "post",
      data: {
        repo: process.env.HANDLE,
        collection: "app.bsky.feed.post",
        record: {
          $type: "app.bsky.feed.post",
          text: postText,
          createdAt: date,
        },
      },
      headers: {
        "Content-Type": "application/json",
        Authorization: "Bearer " + bskyToken,
      },
    });

全屏 退出全屏

如果你需要的不仅仅是纯文本内容——要包含链接,你需要使用facet,而要包含媒体则需要使用embed。你可以在~wtf-poster中找到这两种功能的示例。

对于Mastodon,我们只需要一个请求。

    let 数据 = {
      状态: postText,
    };
    const postResponse = await mastoClient.request({
      url: "/v1/statuses",
      method: "post",
      data: 数据,
      headers: {
        "Content-Type": "application/json",
        Authorization: "Bearer " + mastoToken,
      },
    });

全屏 退出全屏

Mastodon 自动处理链接,但如果你想上传图片的话,你需要更多的处理步骤——你可以通过 媒体 API 端点添加并链接到你上传的文件。你可以查看 ~wtf-poster 作为示例。

安排帖子发布时间

在你的 Glitch 项目中的 server.js 文件中,你会找到第 25 行附近的调度代码。如果你想让你的账号按照设定的时间表自动发布内容,可以取消这些代码的注释——你可以调整发布时间。

  • 准备做更多的自动化工作了吗?从 这个帖子 中 remix 或拷贝,来发布链接、图片等第三方 API 的内容。 🎢🎡🛸

🪩🛼🌈分享你的酷自动海报在Glitch社区!

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消