BlueskyPost

提供:きまぐれ手記 Kimagurenote
移動先: 案内検索
当サイトではアフィリエイト広告を掲載しています
English information available at mw:Extension:BlueskyPost
AT Protocol 公式ロゴ

Extension:BlueskyPost は、記事の作成・更新(編集)後に編集概要Blueskyへ自動的にポスト(投稿)する、MediaWiki用の自作Extension(拡張機能)

投稿例⇒ https://bsky.app/profile/kimagurenote.net/post/3k7bovo3utf2y

使い方はExtension:TweetANewに似ているが、中身は全く異なり、機能は最小限。

しかし今のところ新規アカウントの作成には制限がある2024年 2月 7日に一般開放された投稿の閲覧には要ログインで、公式アプリはログインしないと全く使えない(見るだけはできない)⇒2023年11月頃よりログイン不要で見られるようになったので、記事更新の告知用としては微妙も使えるようになった。ただしBluesky自体は完全オープンなので、別途クライアントアプリを用意すればこんな感じで誰でも見ることができる。
Twitter(X)の仕様変更とMediaWikiのバージョンアップにより、Extension:TweetANewはもう使えなくなっていると思われる。例外として、MediaWiki 1.35 以前で、Twitterが旧APIを停止する以前から使っていた場合には、そのまま動作するよう。

初期設定 Setting

Download

BlueskyPost_20230921.zip (9KB)

Download and unzip it on your MediaWiki extensions directory.

You can use it freely at your own risk. I license it under the Revised BSD License.

English installation guide is here.

LocalSettings.php

Edit LocalSettings.php file to add below.

LocalSettings.php 
/* Extension:BlueskyPost */
wfLoadExtension( 'BlueskyPost' );
$wgBlueskyPostIdentifier = "youraccount.bsky.social";
$wgBlueskyPostPassword = "< app password set here >";

And check Special:Version on your wiki.

追加設定 Additional settings

リンクカードに画像を添付する

本Extensionでポストしたリンクカードの例(画像付き/無し)

TwitterはURLを付けてツイートすれば自動でOGの情報を取得してリンクカードを作ってくれるが、Blueskyはポスト(投稿)時にアプリ側でリンクカード情報を添付する必要がある。

本Extensionは v0.2.0 より、リンクカード(画像付き)の添付に対応した。ただしページから画像を抽出する都合上、画像を添付するには Extension:PageImages がインストールされている必要がある

Extension:PageImages がインストールされていない場合、または記事に適切な画像が貼り付けられていない場合は、画像無しのリンクカードになる(右図)。

LocalSettings.php 
wfLoadExtension( 'PageImages' );
Extension:PageImages は MediaWiki 1.34 以降に標準添付されているが、LocalSettings.php にてインストール (wfLoadExtension) する必要がある。

チェックボックスの規定値

編集画面に追加されるチェックボックスの規定値を true / false で指定できる。省略時は false(チェック無し)。投稿する機会が多い場合は true にしておくと便利。

LocalSettings.php 
$wgBlueskyPostChecked = true;

タイムアウト

このExtensionは、AT Protocol API の呼び出しタイムアウトを規定で10秒にしている

投稿がタイムアウトする場合はタイムアウト時間を延ばしてみると良いかも。

筆者が試した範囲で、投稿には5秒以上かかることがあるが10秒はかからないようだったので。ただし今後画像に対応した場合は延長するかも。v0.2.0 で画像アップロードに対応したが、今のところ延長しなくて問題なさそうだった。
LocalSettings.php 
$wgBlueskyPostTimeout = 12.5;

既定の言語

Blueskyに通知する言語を指定できる。MediaWikiから取得できる場合はその言語コードを付けて投稿するが、MediaWikiから取得できない場合があるので、その場合はこの指定値が使われる。

MediaWiki 1.35 で不具合を起こすので無効化した。MediaWiki 1.39 でも正常に取れないことが多いので、安定動作するまでは無くてもいいかも。
LocalSettings.php 
$wgBlueskyPostLangs = [ "ja", "en-US" ];

無指定でも特に問題はないが、投稿(ポスト)に「Translate this post」という表示(Google翻訳へのリンク)が出てくるので、これを消したい場合は指定すると良い。

指定できる言語コードは ISO 639-1 準拠の英字2文字(と一部のサブタグ)だが、Blueskyがどこまで対応しているかは作者は把握していないので、自己責任でどうぞ。

機能の無効化

新規作成または更新(編集)のいずれかで本機能を無効にしたい場合は、LocalSettings.php に下記の指定をする。これによりチェックボックスが表示されなくなる。

LocalSettings.php 
/* suppress to use this extension on create (new) pages */
$wgBlueskyPostSuppressNew = true;
/* suppress to use this extension on edit (exist) pages */
$wgBlueskyPostSuppressEdit = true;

ポストする文言の変更

これらを書き換える(編集する)ことで変更できる。

  • $1 - 記事名
  • $2 - URL
  • $3 - 編集概要欄に入力された文言

制限事項

このExtensionは NS_MAIN または $wgContentNamespaces で指定されている名前空間(カスタム名前空間)でのみ動作する。

細部の編集では動作しない(チェックが入っていてもポストしない)。

Blueskyの1ポストで投稿できる字数は300字まで。日本語等のマルチバイト文字も1と数える。ただし本ExtensionではURLを含むと有効字数が若干減る。例えば URLが1つの場合は、少なくとも https:// 8字分の差分が生じる。このためBluesky公式Webサイトから投稿する場合よりも投稿可能長さが減少し、292字またはそれ以下になる

RichTextはURLのみ対応している。編集概要欄を投稿するという本Extensionの特性上、URL以外(メンションなど)には対応予定なし。

標準ライブラリがTypeScriptしかないので、atproto公式の解説を見ながら機能限定で自作した。よって AT Protocol の仕様変更があってもすぐに対応できないと思う。

Bluesky (AT Protocol) 自体が開発中で仕様も変わるかもしれないので、もうしばらくは技術的な試行や試験的な運用に留めておくのが無難だと思う。

長いURLは後ろも短縮されるっぽい。
試しにBluesky公式Webでポストすると、URLを含むポストは309字まで投稿できた。しかしAPIを叩いて同じ投稿をすることはできなかった(300字まで減らせば投稿できる)。仕様を見ても短縮ルールは見当たらず、Blueskyの開発が進むにつれて変わる可能性があるので、今のところURL短縮に関する字数調整はあえてしていない(しようがない)。

Bluesky

新規アカウントの作成

2024年 2月 7日(日本時間)より招待コード不要で新規アカウントを作れるようになった。

招待コード (invite code)

2024年 2月初旬までは開発中のため新規アカウント作成が制限されており、Blueskyのアカウント作成に招待コード (invite code) が必要だった。

招待コードは、waitlistに登録しておくと、忘れた頃にメールで送られてくる。 しばらく待つことにはなるが、もし興味があれば早めに登録しておくのが良いと思う。 【https://bsky.app/ を開く → Create a new account → Next → Join the waitlist → メールアドレスを登録】

また、既存ユーザーには招待コードが概ね2週間毎に1つ配付されるので、すでに使っている知人等からもらう方法もある。 いずれも無料

招待コードを使って新規アカウントが作成されると、紹介した人に通知が届く

なお、当サイトでは招待コードの配布はしないので(転売されるおそれもあるため)、招待コードに関する問い合わせはしないでいただきたい(返信しない)。

ちなみに招待コードを使って新規アカウントが作成されると、紹介した人にも通知が届く(右図)ので、もし友人等からもらったアカウントを転売すると、招待してくれた人にバレるようになっている。くれぐれも失礼なことはしないようにしよう。

ちなみに筆者は waiting list に登録して数ヶ月で invite code が届いた。
以前は14日毎だったが、後に短縮され、2023年9月時点では概ね10日毎に発行されているよう。公式には「定期的に (periodically)」となっているが具体的な日数は明記されていない。

ハンドル名を独自ドメインにする

Blueskyアカウントを作成すると「@username.bsky.social」というハンドル名になるが、usernameの部分は任意に変更できる

独自ドメイン名を持っている場合は、ハンドル名を「@example.com」のようなドメイン名に変更できるので、ドメイン保持の証明を兼ねることができる。今後Blueskyが一般公開された後は、Webサイトの「公式アカウント」を作って更新告知などに使いやすいと期待される。

ちなみにAPIでは Decentralized Identifiers (DID)を使ってユーザーを特定する(ハンドル名で照会してDIDを取得する)。DIDは変更できない。言い替えると、見た目がそっくりでもDIDが違えば別人。

Bluesky公式以外でアカウントを開設した場合は「bsky.social」部分が異なる。
当然ながら、他の人に使われていないことが前提。また、名前を変更すると変更前の名前は即時開放され、誰でも取得できる状態になる。
DNSレコードを編集できるか、Webサイトを開設している必要がある。または、Webサイトにファイルを置くことで確認する方法もあるようだが、筆者が試したところ、うまく認識されなかった。
まずはBlueskyが一般公開されてユーザー数が増えることが前提になるが、独自ドメイン名があれば公式アカウントを無料で発行でき、偽アカウントとの判別が容易だし、APIも無料で使える。

メールアドレス

アカウントの作成にはメールアドレスが必要だが、Blueskyに登録したメールアドレスはAPIを叩くと誰でも容易に引き出すことができるので要注意。

今はまだspam配信に使われているといった話は聞かないが、念のためGmailなどのフリーメールアドレスを作って登録するのが良いかも。

また、アカウント作成後にメールアドレスを変更することができなかったが、2023年10月10日頃よりメールアドレスを変更できるようになった

2023年 9月までは、User FAQにもメールアドレス変更について何も書かれておらず、パスワードを忘れてメールも受け取れない場合は、サポートに連絡するよう案内されていた。まだ開発段階ということをよく表しているなと思う。

App password

Blueskyには今のところOAuthのような認可型の認証の仕組みが未実装で、仮に「App password」が使われている。

アカウントの本パスワードの他に任意にパスワードを発行できるもので、App password ではポスト(投稿)や閲覧などはできるが、アカウント管理関連の操作ができない。これをアプリ毎に発行しておくと、もしアプリにセキュリティホールがあったり悪意ある人に見られたりしてもアカウントが乗っ取られることを防げるし、悪用された App password を破棄することで個別に止めることができる。

よって、App password は使い回さず、アプリ毎に発行するのが原則。

この「App password」は仮の仕組みで、いずれ「3rd Party Authentication and Authorization」が導入される計画になっている。「This will likely incorporate existing auth standards.」となっているので、いずれOAuthのような仕組みが導入されるのだろうか。

History

Links

AT Protocol API

AT Protocol 3rd party apps

Related articles