一覧へ

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は気軽に試せて便利だが、起動するたびにリレーに接続し、終了すると接続を切ってしまう。接続を維持できないので、複雑な処理をしようとするとだいぶ遅い。プログラムを書いた方がよい。