上次我们学习了如何通过域名验证我们的账号,并使用免费的Glitch网站——这次我们来设置一个简单的应用来发布一些自动化内容到Bluesky和Mastodon,通过它们的API。
我们将在两个平台上设置开发者凭证,然后将它们上传到Glitch,并发布一些带有随机表情符号的搞笑文字。我们还将展示一个更复杂的示例,这个示例会发布链接和图片。如果你还想继续构建更多功能,也可以参考这个示例!
重新混音故障项目我们正在使用一个Glitch项目,该项目已经设置好了大量代码,所以你可以remix 来获取你自己的副本:
- 社交帖子 [(https://glitch.com/~social-poster)]
这款应用程序使用Node.js和Axios来连接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账号中,进入设置 > 隐私与安全 > 应用密码:
- 点击 添加应用密码(例如:“Glitch海报”)
- 为你的应用密码输入一个 名称(例如:“Glitch海报”)
- 复制密码并点击 完成 按钮
- 将密码粘贴到Glitch remix的
.env
文件中的APP_PASSWORD
变量位置 - 在编辑
.env
文件时,输入你想要发布到的Bluesky账户的用户名
Mastodon 设置向导
在Mastodon中,你需要一个令牌来验证你的请求身份。登录到你的账户(请使用浏览器而不是手机应用)。导航到设置 > 开发,然后点击创建新应用,
- 给你的应用取一个名字,比如 "Glitch poster"
- 在应用网站栏填入你的Glitch网站URL。该URL应以
.glitch.me
结尾。 - 保留重定向URI的默认设置
- 在范围部分,如果你希望可以发布图片,请确保选中
write:statuses
和write:media
- 提交你的申请
- 复制访问令牌的值
- 将其粘贴到你的Glitch项目
.env
文件中的MASTODON_TOKEN
变量
💡 你也可以在你的 Mastodon 个人资料中添加你的 Glitch 网站作为验证链接——在
index.html
中加入一个指向 Mastodon 账户的链接,并在链接标签中添加rel="me"
。
在你的Mastodon账户里,也建议你在设置 > 个人资料 中勾选此账户为机器人账户。
发帖!你应该准备好了可以发布了!你的Glitch remix(Glitch混音)包含了可以按计划发布的代码,不过你也可以手动发布。在预览时,点击地址栏并输入以下地址之一:
postBsky
: 仅发到 BlueskypostMasto
: 仅发到 MastodonpostAll
: 发到两者
打开日志,查找任何详细信息或错误。
查看你的账号,找到那些帖子。
(示例帖子)
看看代码
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 的内容。 🎢🎡🛸
共同学习,写下你的评论
评论加载中...
作者其他优质文章