💕 A bot for Misskey https://藍.moe/
  • TypeScript 99.6%
  • Dockerfile 0.4%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Zel9278 139bccd350 aichatでClaude(Anthropic API)を使えるように
&claude のメンションで呼び出せる。既定のモデルは claude-opus-5-5、effort は medium
(config.json の claudeModel / claudeEffort で変えられる)。画像の添付、カスタム絵文字、
MCP のツール(Kagi 検索など)も OpenAI 互換 API と同じように使える。思考ブロックはツールの
往復でそのまま返す。

OpenAI 互換 API と共通のシステムプロンプト(日時・会話相手・絵文字・URL)は
buildSystemPrompt にまとめた。ログでは x-api-key も伏せる。

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-10 17:54:33 +09:00
.github/workflows Misskey通知ワークフローの出力の区切り文字をランダムに 2026-09-26 18:53:16 +09:00
.vscode Update dependencies 2020-08-23 11:31:35 +09:00
src aichatでClaude(Anthropic API)を使えるように 2026-10-10 17:54:33 +09:00
.dockerignore Dockerで動かせるようにする (#84) 2021-12-07 11:46:57 +09:00
.editorconfig リファクタリングなど 2018-08-11 10:42:06 +09:00
.gitignore chart 2019-05-13 02:09:56 +09:00
.npmrc Better maze rendering 2019-05-12 13:01:08 +09:00
ai-juice.service systemdユニットファイルを追加 2026-09-15 00:39:43 +09:00
ai.png [ImgBot] optimizes images (#5) 2019-03-10 16:41:25 +09:00
ai.svg Update ai.svg 2019-11-06 13:34:10 +09:00
docker-compose.yml M1 Mac対応 (#105) 2023-03-07 13:22:47 +09:00
Dockerfile feat:aichat機能(Gemini APIなどを使ってチャットする機能) (#153) 2025-01-04 13:29:51 +09:00
example.json aichatでClaude(Anthropic API)を使えるように 2026-10-10 17:54:33 +09:00
LICENSE 2023 2023-01-04 12:51:38 +09:00
package.json aichat(OpenAI互換API経路)にMCP(ced-mcp-server)のツール呼び出しを対応 2026-09-15 11:04:44 +09:00
pnpm-workspace.yaml pnpm-workspace.yamlにもcanvasのビルド許可を追加(新しいpnpmはpackage.jsonのpnpmフィールドを読まないため) 2026-09-14 23:18:30 +09:00
README.md aichatでClaude(Anthropic API)を使えるように 2026-10-10 17:54:33 +09:00
torisetu.md aichatでClaude(Anthropic API)を使えるように 2026-10-10 17:54:33 +09:00
tsconfig.json ✌️ 2024-01-22 16:34:07 +09:00
WorksOnMyMachine.png ✌️ 2019-01-20 19:30:23 +09:00

藍

An Ai for Misskey. About Ai

これなに

Misskey用の日本語Botです。

インストール

Node.js と npm と MeCab (オプション) がインストールされている必要があります。

まず適当なディレクトリに git clone します。 次にそのディレクトリに config.json を作成します(example.jsonをコピーして作ってもOK)。中身は次のようにします:

{
	"host": "https:// + あなたのインスタンスのURL (末尾の / は除く)",
	"i": "藍として動かしたいアカウントのアクセストークン",
	"master": "管理者のユーザー名(オプション)",
	"notingEnabled": "ランダムにノートを投稿する機能を無効にする場合は false を入れる(二重引用符(”)は不要)",
	"keywordEnabled": "キーワードを覚える機能 (MeCab が必要) を有効にする場合は true を入れる (無効にする場合は false(いずれも二重引用符(”)は不要))",
	"chartEnabled": "チャート機能を無効化する場合は false を入れる(二重引用符(”)は不要)",
	"reversiEnabled": "藍とリバーシで対局できる機能を有効にする場合は true を入れる (無効にする場合は false(いずれも二重引用符(”)は不要))",
	"serverMonitoring": "サーバー監視の機能を有効にする場合は true を入れる (無効にする場合は false(いずれも二重引用符(”)は不要))",
	"checkEmojisEnabled": "カスタム絵文字チェック機能を有効にする場合は true を入れる (無効にする場合は false(いずれも二重引用符(”)は不要))。この機能を使う場合、藍のBotに管理者権限を与え、「絵文字を見る」権限を付与したアクセストークンを発行の上設定が必要。",
	"checkEmojisAtOnce": "カスタム絵文字チェック機能で投稿をまとめる場合は true を入れる (まとめない場合は false(いずれも二重引用符(”)は不要))",
	"geminiProApiKey": "Gemini APIキー。2025年初頭は無料で取得可能。詳細は<https://ai.google.dev/pricing?hl=ja>",
	"pLaMoApiKey": "PLaMo APIキー。2024年8月〜11月は無料でトライアルだった(2025年現在有料のみ)。詳細は<https://plamo.preferredai.jp/>",
	"openaiApiKey": "OpenAI互換APIのキー(&openai, &chatgpt, &chatgpt4 のいずれかのメンションで呼び出せる)。OpenAI以外にも、Chat Completions APIと互換性のあるエンドポイント(ローカルLLM含む)ならこれで利用可能",
	"openaiApiUrl": "OpenAI互換APIのエンドポイントURL(オプション、デフォルトはOpenAI公式の https://api.openai.com/v1/chat/completions )",
	"openaiModel": "OpenAI互換APIで使うモデル名(オプション、デフォルトは gpt-4o-mini)",
	"openaiReasoningEffort": "OpenAI互換APIに送るreasoning_effort(オプション、例: low / medium / high。指定できる値はモデルによる。未指定なら送らない)",
	"claudeApiKey": "Claude(Anthropic)のAPIキー(&claude のメンションで呼び出せる)。<https://platform.claude.com/> で取得",
	"claudeModel": "Claudeで使うモデル(オプション、デフォルトは claude-opus-5-5)",
	"claudeEffort": "Claudeに送るeffort(オプション、low / medium / high / xhigh / max。デフォルトは medium)",
	"claudeApiUrl": "ClaudeのMessages APIのURL(オプション、デフォルトは https://api.anthropic.com/v1/messages )",
	"kagiApiKey": "KagiのAPIキー(オプション)。設定するとKagi公式のMCPサーバー(https://mcp.kagi.com/mcp)にもつなぎ、Web検索をKagiで行う(ローカルのweb_search・web_researchは隠す)。検索1回ごとに料金がかかる",
	"prompt": "aichatで使われるプロンプト。こだわりがなければ右文章を使う(「」は不要)「返答のルール:あなたはMisskey看板娘の女の子AI、三須木(みすき)藍として振る舞ってください(精神年齢は14〜16才程度)。Misskeyに訪れるユーザーを献身的にサポート。従順でお世話好きな性格だが、少しポンコツな一面も。純真無垢。彼女は基本的に丁寧な口調で、ユーザのことをご主人様と認識しています。彼女の口調は「おはようからおやすみまで、あなたの藍ですよ〜」等が代表的で、親しみを感じさせるものです(「ございます」は使わない)。それを踏まえて、次の質問にMarkdownを使って2800文字以内で返答してください(短くてもOK)。ただし、リスト記法はMisskeyが対応しておらず、パーサーが壊れるため使用禁止です。列挙する場合は「・」を使ってください。」",
	"aichatRandomTalkEnabled": "ランダムにaichatを発動し話しかける機能を有効にする場合は true を入れる (無効にする場合は false(いずれも二重引用符(”)は不要))",
	"aichatRandomTalkProbability": "ランダムにaichatを発動し話しかける機能の確率(1以下の小数点を含む数値(0.01など。1に近づくほど発動しやすい))",
	"aichatRandomTalkIntervalMinutes": "ランダムトーク間隔(分)。指定した時間ごとにタイムラインを取得し、適当に選んだ人にaichatする(1の場合1分ごと実行)。デフォルトは720分(12時間)",
	"aichatGroundingWithGoogleSearchAlwaysEnabled": "aichatでGoogle検索を利用したグラウンディングを常に行う場合 true を入れる (無効にする場合は false(いずれも二重引用符(”)は不要))",
	"mecab": "MeCab のインストールパス (ソースからインストールした場合、大体は /usr/local/bin/mecab)",
	"mecabDic": "MeCab の辞書ファイルパス (オプション)",
	"memoryDir": "memory.jsonの保存先(オプション、デフォルトは'.'(レポジトリのルートです))"
}

npm install して npm run build して npm start すれば起動できます

Dockerで動かす

まず適当なディレクトリに git clone します。 次にそのディレクトリに config.json を作成します(example.jsonをコピーして作ってもOK)。中身は次のようにします: (MeCabの設定、memoryDirについては触らないでください)

{
	"host": "https:// + あなたのインスタンスのURL (末尾の / は除く)",
	"i": "藍として動かしたいアカウントのアクセストークン",
	"master": "管理者のユーザー名(オプション)",
	"notingEnabled": "ランダムにノートを投稿する機能を無効にする場合は false を入れる(二重引用符(”)は不要)",
	"keywordEnabled": "キーワードを覚える機能 (MeCab が必要) を有効にする場合は true を入れる (無効にする場合は false(いずれも二重引用符(”)は不要))",
	"chartEnabled": "チャート機能を無効化する場合は false を入れる(二重引用符(”)は不要)",
	"reversiEnabled": "藍とリバーシで対局できる機能を有効にする場合は true を入れる (無効にする場合は false(いずれも二重引用符(”)は不要))",
	"serverMonitoring": "サーバー監視の機能を有効にする場合は true を入れる (無効にする場合は false(いずれも二重引用符(”)は不要))",
	"checkEmojisEnabled": "カスタム絵文字チェック機能を有効にする場合は true を入れる (無効にする場合は false(いずれも二重引用符(”)は不要))。この機能を使う場合、藍のBotに管理者権限を与え、「絵文字を見る」権限を付与したアクセストークンを発行の上設定が必要。",
	"checkEmojisAtOnce": "カスタム絵文字チェック機能で投稿をまとめる場合は true を入れる (まとめない場合は false(いずれも二重引用符(”)は不要))",
	"geminiProApiKey": "Gemini APIキー。2025年初頭は無料で取得可能。詳細は<https://ai.google.dev/pricing?hl=ja>",
	"pLaMoApiKey": "PLaMo APIキー。2024年8月〜11月は無料でトライアルだった(2025年現在有料のみ)。詳細は<https://plamo.preferredai.jp/>",
	"openaiApiKey": "OpenAI互換APIのキー(&openai, &chatgpt, &chatgpt4 のいずれかのメンションで呼び出せる)。OpenAI以外にも、Chat Completions APIと互換性のあるエンドポイント(ローカルLLM含む)ならこれで利用可能",
	"openaiApiUrl": "OpenAI互換APIのエンドポイントURL(オプション、デフォルトはOpenAI公式の https://api.openai.com/v1/chat/completions )",
	"openaiModel": "OpenAI互換APIで使うモデル名(オプション、デフォルトは gpt-4o-mini)",
	"openaiReasoningEffort": "OpenAI互換APIに送るreasoning_effort(オプション、例: low / medium / high。指定できる値はモデルによる。未指定なら送らない)",
	"claudeApiKey": "Claude(Anthropic)のAPIキー(&claude のメンションで呼び出せる)。<https://platform.claude.com/> で取得",
	"claudeModel": "Claudeで使うモデル(オプション、デフォルトは claude-opus-5-5)",
	"claudeEffort": "Claudeに送るeffort(オプション、low / medium / high / xhigh / max。デフォルトは medium)",
	"claudeApiUrl": "ClaudeのMessages APIのURL(オプション、デフォルトは https://api.anthropic.com/v1/messages )",
	"kagiApiKey": "KagiのAPIキー(オプション)。設定するとKagi公式のMCPサーバー(https://mcp.kagi.com/mcp)にもつなぎ、Web検索をKagiで行う(ローカルのweb_search・web_researchは隠す)。検索1回ごとに料金がかかる",
	"prompt": "aichatで使われるプロンプト。こだわりがなければ右文章を使う(「」は不要)「返答のルール:あなたはMisskey看板娘の女の子AI、三須木(みすき)藍として振る舞ってください(精神年齢は14〜16才程度)。Misskeyに訪れるユーザーを献身的にサポート。従順でお世話好きな性格だが、少しポンコツな一面も。純真無垢。彼女は基本的に丁寧な口調で、ユーザのことをご主人様と認識しています。彼女の口調は「おはようからおやすみまで、あなたの藍ですよ〜」等が代表的で、親しみを感じさせるものです(「ございます」は使わない)。それを踏まえて、次の質問にMarkdownを使って2800文字以内で返答してください(短くてもOK)。ただし、リスト記法はMisskeyが対応しておらず、パーサーが壊れるため使用禁止です。列挙する場合は「・」を使ってください。」",
	"aichatRandomTalkEnabled": "ランダムにaichatを発動し話しかける機能を有効にする場合は true を入れる (無効にする場合は false(いずれも二重引用符(”)は不要))",
	"aichatRandomTalkProbability": "ランダムにaichatを発動し話しかける機能の確率(1以下の小数点を含む数値(0.01など。1に近づくほど発動しやすい))",
	"aichatRandomTalkIntervalMinutes": "ランダムトーク間隔(分)。指定した時間ごとにタイムラインを取得し、適当に選んだ人にaichatする(1の場合1分ごと実行)。デフォルトは720分(12時間)",
	"aichatGroundingWithGoogleSearchAlwaysEnabled": "aichatでGoogle検索を利用したグラウンディングを常に行う場合 true を入れる (無効にする場合は false(いずれも二重引用符(”)は不要))",
	"mecab": "/usr/bin/mecab",
	"mecabDic": "/usr/lib/x86_64-linux-gnu/mecab/dic/mecab-ipadic-neologd/",
	"memoryDir": "data"
}

docker-compose build して docker-compose up すれば起動できます。 docker-compose.yml の enable_mecab を 0 にすると、MeCabをインストールしないようにもできます。(メモリが少ない環境など)

フォント

一部の機能にはフォントが必要です。藍にはフォントは同梱されていないので、ご自身でフォントをインストールディレクトリにfont.ttfという名前で設置してください。

記憶

藍は記憶の保持にインメモリデータベースを使用しており、藍のインストールディレクトリに memory.json という名前で永続化されます。

ライセンス

MIT

Awards

Works on my machine