Blueskyに投稿する(GAS使用+IFTTTとの連携)

リンクを設定する

リンク設定情報を作成する

まず「文中のどこからどこまでに、どこへのリンクを設定するか」を書かなければならない。

{
  "index": {
      "byteStart": 開始位置,
      "byteEnd": 終了位置
  },
  "features": [
      {
          "$type": "app.bsky.richtext.facet#link",
          "uri": "リンク先URL"
      }
  ]
}

開始位置と終了位置は文字数ではなくバイト数での位置なので注意。日本語を含む場合はencodeURI("文字列").replace(/%../g, "*")などを使って計算したりなどする。

URLの正規表現は/https?:\/\/\S*/g;で取れるので、これで探してヒットした開始位置をバイト数の位置に直したものをbyteStart、それにURLの長さ(バイト数)を足したものをbyteEndに設定するような処理を書けばURLの自動リンク処理が完成する。(今回は省略)

悪用すると「https://google.com/」に「https://nigauri.me/」へのリンクを設定できたりするのでBlueskyのPost内のリンクは信用できない(かもしれない)。

投稿する

投稿時のJSONのrecord配下にfacetsを作成しそこに入れる。リンクは複数設定可能なのでfacetsは配列型。

{
  "repo": did,
  "collection": "app.bsky.feed.post",
  "record": {
    "text": "New blog posts: https://nigauri.me/everyone-in-2023/",
    "createdAt": (new Date()).toISOString(),
    "facets": [
      {
        "index": {
            "byteStart": 16,
            "byteEnd": 52
        },
        "features": [
            {
                "$type": "app.bsky.richtext.facet#link",
                "uri": "https://nigauri.me/everyone-in-2023/"
            }
        ]
      }
    ]
  }
}

これでさっきのようにPostするとURL部分がリンクになっている。

リンク設定
リンク設定