-
Notifications
You must be signed in to change notification settings - Fork 1
README ja
(リポジトリのREADMEとほぼ同内容です。メンテナンスの都合により差異が生じる場合があります。)
Bluesky CLI(コマンドラインインタフェース)シェルスクリプト実装
Bluesky (bsky.social/bsky.app)をUnix系環境のシェルでコマンドラインから利用するためのツールです。
このツールは、sh:Bourne Shell系統のシェルスクリプト動作環境と、いくつかの依存ツールによって実行できることを目標としています。
現時点では開発中で、今後機能を充実していきます。
GitHubㇼポジトリにある1ファイルをダウンロードして実行することにより、最新リリースアーカイブダウンロードからインストールまでが行われます。
スーパーユーザ(sudo実行またはrootユーザ)でインストールすると、全ユーザが利用できるように設定されます。一般ユーザでインストールすると、インストールしたユーザのみで利用できるように設定されます。インストール途中でインストール先等の確認が行われます。
GitHubリポジトリから1ファイルダウンロード:
curl https://raw.githubusercontent.com/bills-appworks/bsky-sh-cli/main/download-install.sh -O
スーパーユーザで実行する場合:
sudo sh download-install.sh
一般ユーザで実行する場合:
sh download-install.sh
上記の他にも、リリースアーカイブをダウンロードして中に入っているインストーラを実行する方法などもあります。
インストールの詳細はインストールドキュメントを参照してください。
インストール先のbin
サブディレクトリの下にbsky
というファイルがあり、これが起動コマンドです。
一般的なコマンドやシェルスクリプトと同様に、パスを指定してシェルからbskyコマンドを起動します。
特に設定していない状態では、提供ファイル群のbin
ディレクトリとlib
ディレクトリが、同じディレクトリ配下に存在することを仮定しています。
また後述の「必要ツール」に記載しているツールが実行可能であることが必要になります。
インストール後はbsky update
コマンドにより最新版へのアップデートが可能です。詳細はインストールドキュメントを参照してください。
最初にBlueskyにログイン(サインイン)します。
bsky login --handle <handle> --password <password>
<handle>
には、利用しているBlueskyアカウントのユーザ名を指定します。ユーザ名先頭のアットマークは不要です。現時点ではメールアドレスによるログインはできません。
<password>
には、ハンドル(ユーザ名)に対応するパスワードを指定します。パスワードにはアプリパスワードを使用することを推奨します。
--handle
と--password
のいずれかまたは両方を省略すると、画面上にプロンプトが表示され、省略した対象を入力することができます。
以下のコマンドラインを実行すると、最大50件の投稿(ポスト)のタイムラインが表示されます。
bsky timeline
1件の投稿は以下のようなフォーマットで表示されます。
[ViewIndex:<番号>]
<投稿者のユーザー表示名> @<投稿者のハンドル> <投稿日時>
<投稿内容>
Reply:<リプライ件数> Repost:<リポスト件数 Quote:<引用件数> Like:<いいね件数>
先頭のViewIndex
に表示される番号は、投稿に対するいいね(ライク)や返信(リプライ)等を行うコマンドのパラメタで対象投稿を指定するために使います。
以下のコマンドラインを実行すると、投稿することができます。
bsky post --text '<投稿内容テキスト>'
画像は--image
オプションでローカルファイルを指定することができます。タイムライン等での表示は画像のURLのみになります。
以下のコマンドラインを実行すると、表示した投稿に対するリプライをすることができます。
bsky reply --index <番号> --text '<Reply内容テキスト>'
--index
オプションの値として、先ほどtimeline
コマンドで表示された投稿のViewIndex
番号をリプライ先として指定します。
このツールは開発中ですが、他にもいくつかの機能が実装されています。
このツールの一般的なコマンドラインの書式は以下になります。
bsky <options> <command> <parameters>
ここまでのチュートリアルでは<options>
は指定せず、login
/timeline
/post
などの<command>
と、いくつかの<parameters>
を指定してきました。
以下のコマンドラインで<command>
一覧のヘルプを表示することができます。
bsky help
各<command>
別のヘルプは、以下のコマンドラインで表示することができます。
bsky <command> help
たとえばpost
コマンドのヘルプは以下のように実行します。
bsky post help
Wikiのコマンドラインリファレンスも参考にしてください。
- できること
- ログイン・ログアウト(セション情報(ログイン接続情報)の作成・削除)
- 2FAに対応しています。
- タイムラインやカスタムフィード(フィードジェネレータ)の表示
- 投稿(ポスト)
- 投稿(ポスト)に対する返信(リプライ)・リポスト・引用リポスト・いいね(ライク)
- 指定ユーザのプロファイル表示やフィード表示
- ログイン・ログアウト(セション情報(ログイン接続情報)の作成・削除)
- できないこと
- 画像の表示(URL表示のみ実施)
- ワードとタグによるミュート、特定ポスト非表示
- ログインしていない状態での認証不要コマンドやAPIの実行
- その他多くの機能
セション情報は複数同時に保有することができます。つまり、複数のアカウントを利用する場合に、接続中アカウントのログアウトをしなくても、接続を維持したまま他のアカウントへの接続(ログイン・その他操作)を行うことができます。
接続を指定するためには、コマンドで--profile
または-P
オプションを指定します。
bsky --profile <プロファイル名> <command> <parameters>
<プロファイル名>
の単位にセション情報が管理されますので、プロファイル指定を切り替えることによって、複数のアカウントに対する操作を切り替えることができます。
配備する提供ファイル群の他に以下のファイルを生成・利用します。このツールが不要になった場合には削除可能です。
-
$HOME/.bsky_sh_cli/
ディレクトリ- このツールを実行すると、このディレクトリと配下にいくつかのファイルが生成されます。セション情報管理ファイルや、デバッグ情報ファイル(デバッグ機能有効時)などのファイルが格納されます。
-
$HOME/.bsky_sh_cli_rc
ファイル- このツールをカスタマイズする設定を記述するファイルです。デフォルトでは作成されません。提供ファイル群に含まれる
.bsky_sh_cli_rc.sample
ファイルがサンプルになります。このツールをカスタマイズしたい場合は、このファイルを名前を変えて$HOME
ディレクトリに配備し、設定します。
- このツールをカスタマイズする設定を記述するファイルです。デフォルトでは作成されません。提供ファイル群に含まれる
-
/tmp/
ディレクトリ配下へのファイル生成- 画像ファイルの添付等の一時的ファイル作成ディレクトリとして
/tmp/
ディレクトリ(システム設定によります)を利用します。
- 画像ファイルの添付等の一時的ファイル作成ディレクトリとして
このツールではシェルスクリプトで用いられる一般的なUnix系ツールの他、以下のツールを利用しています。
実行環境やツールを提供・維持している皆様に感謝いたします。
- curl
- file (libmagic)
- 画像利用時のみ
- jq
- sed (GNU sed)
提供ファイル群のlib/api/
ディレクトリには、app.
やcom.
等から始まる名前のファイルが存在します。これはBlueskyやAT ProtocolのAPIを呼び出すラッパースクリプトです。
これらのファイルを実行することにより、BlueskyやAT ProtocolのAPIを直接呼び出して、レスポンスを標準出力で得ることができます。
デフォルトでは実行権を付けていませんので、sh <APIファイル名>
で起動したり、ファイルに実行権を付与してください。
接続情報(認証情報・セション情報)はbskyコマンドと同じセション管理ファイルに保存し、API間で自動的に共有されます。
現時点では開発中で、今後対応APIを充実していきます。
Note
- APIファイル
com.atproto.server.createSession
は、認証成功後に返されるJWTをセション管理ファイルに保存し、他のAPIのほとんどはセション管理ファイルからJWTを取得して認証に利用します。セション管理ファイルは、デフォルトでは$HOME/.bsky_sh_cli/_bsky_sh_cli_session
、プロファイル指定時は$HOME/.bsky_sh_cli/<プロファイル名>_session
になります。 - セションの自動更新は行われません。API実行結果の出力が
ExpiredToken
のエラーとなった場合は、以下の方法でセションを更新してください。- セション管理ファイルの
SESSION_REFRESH_JWT
の値を、APIファイルcom.atproto.server.refreshSession
のパラメタとして与えて実行 - bskyコマンドの任意のコマンドを実行
- セション管理ファイルの
- プロファイルを指定するAPIファイルのパラメタはありません。実行時にシェル変数
BSKYSHCLI_PROFILE
で指定してください。BSKYSHCLI_PROFILE=<プロファイル名> sh <APIファイル名>
Warning
利用によって被ったいかなる損害・トラブルについても、作者は一切責任を負いかねます。
このソフトウェアはMITライセンスによってリリースしています。LICENSEを参照ください。