Skip to content

Instantly share code, notes, and snippets.

@nikolat
Last active December 6, 2023 12:58
Show Gist options
  • Star 2 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save nikolat/93dacb70fabe7e046eeb3deb5a409535 to your computer and use it in GitHub Desktop.
Save nikolat/93dacb70fabe7e046eeb3deb5a409535 to your computer and use it in GitHub Desktop.
伺か Advent Calendar 2023 および Nostr Advent Calendar 2023 12月1日の記事

Nostrで伺かのキャラクターBOTを作った話

伺か Advent Calendar 2023 および Nostr Advent Calendar 2023 1日の記事です。
初日からクロスポストです。よろしくお願いします。

誰?

自己紹介

うにゅうのBOTを作った話

昨年 伺的 Advent Calendar 2022 3日の記事で BOT開発から始めるうかどん生活 という記事を書きましたが、今回はそのNostr版としたいと思います。

私は元々旧TwitterでBOTをたくさん作って遊んでおりました。以下はそのうちの1つのRSSお知らせBOTです。

しかし昨今の情勢により運用が難しくなり、すべて停止しております。
今はNostrでBOTを作って遊んでおります。以下はそのうちの1つの会話BOTです。

のす本(Hello Nostr!先住民が教えるNostrの歩き方)の中の演習問題をやる際に生まれたものです。
最初は \e と投稿すると えんいー と返すだけの単純なBOTでしたが、今では いい? に対して ええで と返したり、◯◯を燃やして に対して 🔥 の絵文字を加えたり等、たくさんバリエーションが増えました。

伺かのようにキャラクターデータを配布してユーザのPC内で楽しむものでなく、Nostr上でユーザが絡んでいる様子をリアルタイムで観測することができるので、期待した反応を返さなかった場合でも、「次は返せるようにしよう、そのネタいただき!」と改良していけるところが楽しいと感じています。
またWebSocketでリアルタイムに反応できるため、レスポンスが早く、対話BOT向きの環境であると言えます。

うにゅうの中身

うにゅうの中身はGitHubで公開しています。また、その骨子部分のみ切り出してテンプレートにしたリポジトリも作りました。

のす本の演習を済ませた方で、BOTを24時間動かしてみたい場合はぜひお試しください。
逆に言うとのす本の演習によりNostrの仕組みおよびNode.jsやjavascriptを理解していないと扱えないため、昨年のMastodon用のBOT作成記事よりも難易度が高めであるところが残念ポイントです。
第二会場で 12/13 の ocknamo さんの予定稿が「n8n-nodes-nostrobotsでノーコードでNostrボットを作る」となっているので期待しましょう。(ハードル⤴⤴)

次回予告

明日2日は kanadelab さんが担当されます。よろしくお願いします。→ 自作のゴースト開発ツール・サービスの1年間のアップデートをご紹介

明日2日は Takayoshi SASANO さんが担当されます。よろしくお願いします。→ nsdemu/horseの現状

付録

自己紹介

自己紹介

Donと申します。

伺かのゴーストを作ったりNostrのBOTを作ったりしています。主な作ったものを以下に載せておきます。

  • 伺か
    • びーふれんず
      • デスクトップでおしゃべりするゴーストです。その日デスクトップで経験した出来事を日記のように各種SNS(Mastodon,Nostr,Bluesky)に書き込む機能があります。
    • 雀々BARIBARI
      • 麻雀で遊べるゴーストです。他にプレイヤーゴーストを3体起動することで一緒に麻雀ができます。
    • 雀-リンリン
      • 麻雀プレイヤーゴーストです。
    • 雀-チュンチュン
      • 麻雀プレイヤーゴーストです。
    • 雀-ホワンホワン
      • 麻雀プレイヤーゴーストです。
    • Wallet of Unyu
      • お財布プラグインです。なんちゃって暗号通貨を使えるようになります。
    • 他にもいっぱいありますが省略します
  • Nostr
    • アンゴルモア
      • NostrのWebクライアントです。SSTP over HTTPを送信することで伺かのゴーストを喋らせることができます。しばらく更新してない。
    • うにゅうハウス
      • NostrのWebクライアントです。パブリックチャットができます。鋭意制作中。
    • @unyu
      • うにゅうのBOTです。様々なリアクションを返してくれます。本日の主役。
    • @GCSakura
    • @ukafeed
    • @beefriends
      • びーのBOTです。その日デスクトップで経験した出来事を書き込んでいます。
    • @jong-bari
      • 麻雀で遊べるBOTになる予定です。鋭意制作中。
    • @rinrin
      • 麻雀プレイヤーBOTになる予定です。鋭意制作中。
    • @chunchun
      • 麻雀プレイヤーBOTになる予定です。鋭意制作中。
    • @whanwhan
      • 麻雀プレイヤーBOTになる予定です。鋭意制作中。

Nostrの紹介と伺かの紹介

Nostrの紹介と伺かの紹介

伺か民向けに、「Nostrとは?」
Nostr民向けに、「伺かとは?」
について軽く説明します。

Nostrとは?

Nostrとは、プロトコルです。→公式仕様書
SHIORI/3.0とかと同じやつです。
主にテキストのメッセージをやりとりします。SNSとしての使い方が主ですが、チャット、掲示板、ブログ、投げ銭、カレンダー、など様々なものに利用できます。
単にNostrと言ったときにSNSを指すことも多く、広義にNostrユーザのコミュニティを指す場合もあります。

Nostrの全体像については以下の記事を参考にしてください。(情報が古いので仕組みの話以外は参考程度に)

うかどん(Mastodon)がActivityPubを喋っていて、他のMastodonやMisskeyサーバと繋がっていることをご存知の方も多いと思いますが、ActivityPubとNostrは違うプロトコルなので、お互いに直接繋がることはできません。
ActivityPubとは違う、別のSNSプロトコルと考えて差し支えないです。

Nostrの始め方は以下のブログを参考にしてください。

登場からまだ数年、日本に広まってからはまだ1年にも満たない、まさに今が黎明期のプロトコルです。
かつて伺かでも存在した黎明期特有の活気がそこにはあります。
私のようなぺーぺーでも仕様提案すれば議論に答えてくれる土壌があります。
この激動のSNS戦国時代、次世代SNSに興味があればぜひお試しください。

伺かとは?

伺かとは、プロトコルです。→公式仕様書
デスクトップマスコットを動作させるプラットフォームです。キャラクターを動かす使い方が主ですが、機能に特化したものや、便利なプラグイン、外部アプリケーションからの通知に反応したりと、様々なものに利用できます。
単に伺かと言ったときにソフトウェア(ベースウェア)を指すことも多く、広義に伺かユーザのコミュニティを指す場合もあります。

伺かの使い方は以下のサイトを参考にしてください。

登場から20年以上経ってなお愛され続けるプラットフォームは、Nostrの行く末を占う上で参考になる部分もあると思います。
「勝手に鍵が作られていきなり投稿画面」みたいなお手軽体験は無いですが、 ssp.exe をダウンロードしてきて起動するだけなのでぜひお試しください。

SSPがNostrでいうところのDamusです。ただし互換性を大事にしている点で異なりますが。
他のベースウェアは軒並み開発が停止しており、SSPのシェアがほぼ100%で、新しく実装した仕様が事実上公式仕様となってしまう、孤高のDamusをイメージしていただければだいたい合ってると思います。

ライセンス

この記事はCC0 1.0 Universalの下で公開するものとします。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment