Misskey サーバーとマッチング
探している場所を言葉で伝えると、日本語の Misskey サーバーから合いそうなものをマッチングアプリのように提案します。
Misskey のサーバー選びは、説明文だけでは雰囲気が分かりにくく、数も多くて迷います。
- 自分のやりたいことができる場所は?
- 空気感や人の多さは合いそう?
- 登録の条件やルールは?
missmatch は、サーバーの説明文・ルール・最近の投稿を Cloudflare Workers AI の Clef で読み取り、あなたの言葉と噛み合う順に並べます。登録するかどうかは自分の目で確かめてください。
misspace(連合グラフの可視化)の姉妹プロジェクトです。misspace が「見せて選んでもらう」ツールなら、missmatch は「こちらから勧める」ツールです。
- 「病み垢を置ける、静かで干渉が少ない場所」のように自由に書いて送る
- 合う順にカードが並ぶ。右スワイプでいいね、左でよくないね
- 「もっと絞る」で言葉を足すと読み直す。読み取れなかった点(規模・空気感など)は選択肢で聞き返す
- いいね / よくないねから好みを学び、次の束の並びに反映
- 言葉ごとに検索として残り、サイドバーから戻れる
- いいね・よくないね・学んだ好みは検索ごとに別
- 年齢、毎日いる人の数、R-18 の投稿、話したいこと、空気感、規模と流速
- 絶対条件: 登録のしかた / メアド不要 / 広告なし / LTL・GTL / ノート検索 / 翻訳 / チャット / 動画 / ドライブ容量 / 本家のみ / 最新版 / 利用規約 / プライバシーポリシー
- サイドバーの「Misskey でログイン」からサーバーのドメインを入れると、MiAuth の許可画面に移る
- 求める権限は
read:accountだけ。アクセストークンはブラウザには渡さず KV にだけ置き、30 日使わなければ消える
カードの横に、Clef が読み取った空気感・ルール・初心者の入りやすさ・話題の強さと、言葉との噛み合いを表示します。
- joinmisskey に登録されている日本語の Misskey サーバー(既定は新規登録受付中と生きている招待制の約 185 件。停止中を含めると約 580 件)
- ローカル TL を公開していないサーバーには投稿を取りに行かず、説明文とルールだけで判定します
- 審判にならない: 「良いサーバー」「悪いサーバー」を決めつけない
- 個人を追わない: 投稿はサーバーの雰囲気を測るためだけに読み、ユーザー単位では扱わない
- データを預からない: プロフィールと検索はブラウザにだけ保存する(ログインのセッションだけはサーバーに置く)
- Framework: SvelteKit 5 (Svelte 5)
- AI: Cloudflare Workers AI (Clef)
- Data Source: joinmisskey / 各サーバーの公開 API
- Deploy: Cloudflare Workers + KV
- Language: TypeScript
pnpm install
pnpm dev # AI はリモート実行(課金対象)、KV はローカル
pnpm testデプロイと事前計算:
wrangler kv namespace create VIBE_KV # id を wrangler.toml に書く
wrangler secret put WARM_SECRET
pnpm run deploy # pnpm deploy は pnpm 本体のコマンドに取られる
# 雰囲気を事前計算(普段はアクセスのたびに応答後に埋まるので、急ぐときだけ)
curl -X POST "https://<host>/api/warm?limit=50" -H "Authorization: Bearer $WARM_SECRET"
# トップページの例文の判定を今すぐ温める(普段は Cron Triggers が 1 日 1 回回す。wrangler.toml の crons)
curl -X POST "https://<host>/api/warm?mode=intents" -H "Authorization: Bearer $WARM_SECRET"精度の評価(Clef 実機を叩くので課金対象):
# 代表的な言葉 21 個で /api/intent を叩き、上位 5 件に期待したサーバーが入る割合を出す
EVAL_BASE_URL=https://<host> EVAL_LABEL=before pnpm eval
# 変更後に、前回と比べる
EVAL_BASE_URL=https://<host> EVAL_LABEL=after EVAL_COMPARE=src/eval/results/before.json pnpm eval評価セットは src/eval/cases.ts。結果は src/eval/results/ に残ります(git には入れない)。
設計の根拠は docs/REQUIREMENTS.md にあります。
AGPL-3.0