🈳
DenoでBlueskyをRSS feed化した
BluestreamというWeb toolを作りました。
Deno Deployで動いています。
https://bluestream.deno.dev/kawarimidoll.bsky.social
のようにBlueskyのハンドル(bsky.socialのみ対応)をpathnameにしてアクセスすることで、Blueskyの投稿のRSSを生成します。
上記のTOPページからハンドルを入力することも可能です。
リポジトリはこちら。
活用例
任意のRSSリーダーに取り込むことができます。
Slackで表示するとこんな感じ。
IFTTTなどのサービスでRSSをトリガーとすることで、他のサービスへの連携が可能です。
以下はBlueskyへPostするたびにPixe.laへ記録していくサンプルです。
設定方法は以下の記事を参考にしてください。
困ったポイント
以下の記事ではnpm:@atproto/api
をimportして使っていました。
ローカルやGitHub Actions等で使う場合にはこれでも問題ないのですが、(本開発時点では)Deno Deployではnpm:xxx
形式でのモジュールの使用には対応していません。
したがって、esm.sh
からインポートして使う必要があります。
ただ、微妙に書式が異なるため、ちょっとハマりました。
以下のように修正する必要があります。
npmモジュールとしてimport
import AtprotoAPI from "npm:@atproto/api";
const { BskyAgent } = AtprotoAPI;
const agent = new BskyAgent({ service: "https://bsky.social" });
const resolve = await agent.com.atproto.identity.resolveHandle({
handle: "kawarimidoll.bsky.social"
});
esm.shからimport
import BskyAgent from "https://esm.sh/@atproto/api";
const agent = new BskyAgent({ service: "https://bsky.social" });
const resolve = await agent.api.com.atproto.identity.resolveHandle({
handle: "kawarimidoll.bsky.social"
});
関連プロジェクト
RSSを自前で記述するにあたり、XMLタグを簡単に書けるモジュールを作っていたのが役に立ちました。
BluestreamのTOPページは以下で作ったindexページを流用しています。
Discussion