nakでフォロワーを整理する
2025.10.27
nostrを始めた。私のアカウントはフッタ―にリンクがある。
nostterでユーザーのフォロー画面(https://nostter.app/nprofile0123.../followeesという形式)を開くと、「Follow all」というボタンがあるので、適当にポチポチしていたら、あっという間に500以上フォローしていた。
自分のフォロー一覧を見ると、「Organize followees」というボタンがあるので、そちらからフォロワーの整理をすると便利そうだ。
でもnostrの勉強がてらshell(bash)からフォロワーの整理をやってみる。
nak
nakという素敵なツールがある。作者のfiatjaf氏は界隈の重要人物そうだが、詳しくはしらない。
nakはnostrのプロトコルでリレーに投げるツールだ。便利だし、勉強にもちょうどよい。使い方はREADMEに書いてあるが、なかなかにハードコアな説明の仕方になっている。
pubkeyの取得
nostterでProfileのページのEdit profileの隣のメニューから「Copy ID(nprofile)」をクリックすると、nprofileで始まる文字列が取得できる。
これをnakに渡すとpubkey(16進数64文字)に変換できる。私の場合は下記のような出力になる。
> ./nak decode nprofile1qy28wumn8ghj7un9d3shjtnyv9kh2uewd9hszrthwden5te0dehhxtnvdakqz9nhwden5te0wfjkccte9ehx7um5wghxyctwvsqzqwy6e6yr3fpatenp37yyknyx3lcnf79ltx9uskf6gpu8edl8cfsuy7ff7f
{
"pubkey": "389ace8838a43d5e6618f884b4c868ff134f8bf598bc8593a40787cb7e7c261c",
"relays": [
"wss://relay.damus.io",
"wss://nos.lol",
"wss://relay.nostr.band"
]
}
このpubkeyとrelayを環境変数に入れておく。
> eval $(nak decode nprofile... | jq -r '"MY_PUBKEY=\(.pubkey) RELAY=\"\(.relays | join(" "))\""')
> echo $MY_PUBKEY
389ace8838a43d5e6618f884b4c868ff134f8bf598bc8593a40787cb7e7c261c
> echo $RELAY
wss://relay.damus.io wss://nos.lol wss://relay.nostr.band
followeeのpubkey一覧を取得
> nak req -k 3 -a $MY_PUBKEY $RELAY | jq -r '.tags[] | select(.[0]=="p") | .[1]'
指定したユーザーの最新のpostを取得
> nak req -k 1 -a <pubkey> --limit 1 $RELAY
指定したユーザーの名前の取得
> nak req -k 0 -a <pubkey> $RELAY
followeeの設定
userごとにfollow/unfollowするのではなく、kind=3としてフォローしているユーザーの一覧を渡す。権限が必要になるので、秘密鍵が必要になる。
> NOSTR_SECRET_KEY="秘密鍵の値" nak event -k 3 –tag p=<pubkey1> –tag p=<pubkey2> ... $RELAY
わかったこと
nakは気軽に試せて便利だが、起動するたびにリレーに接続し、終了すると接続を切ってしまう。接続を維持できないので、複雑な処理をしようとするとだいぶ遅い。プログラムを書いた方がよい。