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(ããããäºéåŒçšç¬Š(â)ã¯äžèŠ))",
"prompt": "aichatã§äœ¿ãããããã³ããããã ããããªããã°å³æç« ã䜿ã(ããã¯äžèŠ)ãè¿çã®ã«ãŒã«:ããªãã¯Misskeyçæ¿åšã®å¥³ã®åAIãäžé æš(ã¿ãã)èãšããŠæ¯ãèã£ãŠãã ãã(粟ç¥å¹Žéœ¢ã¯14ã16æçšåºŠ)ãMisskeyã«èšªãããŠãŒã¶ãŒãç®èº«çã«ãµããŒããåŸé ã§ãäžè©±å¥œããªæ§æ Œã ããå°ããã³ã³ããªäžé¢ããçŽçç¡å¢ã圌女ã¯åºæ¬çã«äžå¯§ãªå£èª¿ã§ããŠãŒã¶ã®ããšãã䞻人æ§ãšèªèããŠããŸãã圌女ã®å£èª¿ã¯ããã¯ãããããããã¿ãŸã§ãããªãã®èã§ããããçã代衚çã§ã芪ãã¿ãæãããããã®ã§ã(ãããããŸããã¯äœ¿ããªã)ããããèžãŸããŠã次ã®è³ªåã«Markdownã䜿ã£ãŠ2800æå以å
ã§è¿çããŠãã ãã(çããŠãOK)ããã ãããªã¹ãèšæ³ã¯Misskeyã察å¿ããŠããããããŒãµãŒãå£ãããã䜿çšçŠæ¢ã§ããåæããå Žåã¯ãã»ãã䜿ã£ãŠãã ãããã",
"promptFile": "aichatã§äœ¿ãããããã³ããããã¡ã€ã«ããèªã¿èŸŒãå Žåã®ãã¹(ãªãã·ã§ã³)ãæå®ãããš prompt ããåªå
ããããçžå¯Ÿãã¹ã¯èµ·åæã®ãã£ã¬ã¯ããªåºæºãå¯ã®æšæºããã³ãã㯠YUI.md",
"aichatRandomTalkEnabled": "ã©ã³ãã ã«aichatãçºåã話ããããæ©èœãæå¹ã«ããå Žå㯠true ãå
¥ãã (ç¡å¹ã«ããå Žå㯠false(ããããäºéåŒçšç¬Š(â)ã¯äžèŠ))",
"aichatRandomTalkProbability": "ã©ã³ãã ã«aichatãçºåã話ããããæ©èœã®ç¢ºç(1以äžã®å°æ°ç¹ãå«ãæ°å€(0.01ãªã©ã1ã«è¿ã¥ãã»ã©çºåãããã))",
"aichatRandomTalkIntervalMinutes": "ã©ã³ãã ããŒã¯éé(å)ãæå®ããæéããšã«ã¿ã€ã ã©ã€ã³ãååŸããé©åœã«éžãã 人ã«aichatãã(1ã®å Žå1åããšå®è¡)ãããã©ã«ãã¯720å(12æé)",
"aichatGroundingWithGoogleSearchAlwaysEnabled": "aichatã§Googleæ€çŽ¢ãå©çšããã°ã©ãŠã³ãã£ã³ã°ãåžžã«è¡ãå Žå true ãå
¥ãã (ç¡å¹ã«ããå Žå㯠false(ããããäºéåŒçšç¬Š(â)ã¯äžèŠ))",
"geminiApiKey": "Gemini APIããŒãåŸæ¥ã®ãgeminiProApiKeyãããåç§°å€æŽãããŸãããåãAPIããŒã䜿çšã§ããŸã",
"geminiModel": "䜿çšããGeminiã¢ãã«ãããã©ã«ãã¯ãgemini-3.8-flashã",
"geminiGroundingModel": "Googleæ€çŽ¢ã°ã©ãŠã³ãã£ã³ã°æã«äœ¿ãGeminiã¢ãã«ãç¡ææ ã®3.xç³»ã¯ã°ã©ãŠã³ãã£ã³ã°é察å¿ã®ãããããã©ã«ãã¯ãgemini-2.5-flashã",
"geminiPostMode": "AIã®èªåæçš¿ã¢ãŒãããautoã(èªåããŒãã®ã¿)ããbothã(äŒè©±å¿çãšèªåããŒãäž¡æ¹)ãæªèšå®ã§èªåæçš¿ç¡å¹",
"autoNotePrompt": "èªåããŒãæçš¿æã«äœ¿çšããããã³ããæãpromptïŒpromptFileïŒã®äººç©èšå®ã®åŸãã«ç¶ããŠæž¡ãããã®ã§ãæçš¿å
å®¹ã®æç€ºã ããæžãã°ãã",
"autoNoteIntervalMinutes": "èªåããŒãæçš¿ã®ééïŒååäœïŒãããã©ã«ãã¯360åïŒ6æéïŒ",
"geminiAutoNoteProbability": "èªåããŒãæçš¿ã®ç¢ºçïŒ0ã1ã®å€ïŒãããã©ã«ãã¯0.02ã1ã«è¿ãã»ã©é »ç¹ã«æçš¿",
"autoNoteDisableNightPosting": "æ·±å€ïŒ23æã5æïŒã®èªåæçš¿ãç¡å¹ã«ããå Žå㯠trueïŒäºéåŒçšç¬Šã¯äžèŠïŒ",
"mecab": "/usr/bin/mecab",
"mecabDic": "/usr/lib/x86_64-linux-gnu/mecab/dic/mecab-ipadic-neologd/",
"memoryDir": "data"
}npm install ã㊠npm run build ã㊠npm start ããã°èµ·åã§ããŸã
ãŸãé©åœãªãã£ã¬ã¯ããªã« 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(ããããäºéåŒçšç¬Š(â)ã¯äžèŠ))",
"geminiApiKey": "Gemini APIããŒ",
"prompt": "aichatã§äœ¿ãããããã³ããããã ããããªããã°å³æç« ã䜿ã(ããã¯äžèŠ)ãè¿çã®ã«ãŒã«:ããªãã¯Misskeyçæ¿åšã®å¥³ã®åAIãäžé æš(ã¿ãã)èãšããŠæ¯ãèã£ãŠãã ãã(粟ç¥å¹Žéœ¢ã¯14ã16æçšåºŠ)ãMisskeyã«èšªãããŠãŒã¶ãŒãç®èº«çã«ãµããŒããåŸé ã§ãäžè©±å¥œããªæ§æ Œã ããå°ããã³ã³ããªäžé¢ããçŽçç¡å¢ã圌女ã¯åºæ¬çã«äžå¯§ãªå£èª¿ã§ããŠãŒã¶ã®ããšãã䞻人æ§ãšèªèããŠããŸãã圌女ã®å£èª¿ã¯ããã¯ãããããããã¿ãŸã§ãããªãã®èã§ããããçã代衚çã§ã芪ãã¿ãæãããããã®ã§ã(ãããããŸããã¯äœ¿ããªã)ããããèžãŸããŠã次ã®è³ªåã«Markdownã䜿ã£ãŠ2800æå以å
ã§è¿çããŠãã ãã(çããŠãOK)ããã ãããªã¹ãèšæ³ã¯Misskeyã察å¿ããŠããããããŒãµãŒãå£ãããã䜿çšçŠæ¢ã§ããåæããå Žåã¯ãã»ãã䜿ã£ãŠãã ãããã",
"promptFile": "aichatã§äœ¿ãããããã³ããããã¡ã€ã«ããèªã¿èŸŒãå Žåã®ãã¹(ãªãã·ã§ã³)ãæå®ãããš prompt ããåªå
ããããçžå¯Ÿãã¹ã¯èµ·åæã®ãã£ã¬ã¯ããªåºæºãå¯ã®æšæºããã³ãã㯠YUI.md",
"aichatRandomTalkEnabled": "ã©ã³ãã ã«aichatãçºåã話ããããæ©èœãæå¹ã«ããå Žå㯠true ãå
¥ãã (ç¡å¹ã«ããå Žå㯠false(ããããäºéåŒçšç¬Š(â)ã¯äžèŠ))",
"aichatRandomTalkProbability": "ã©ã³ãã ã«aichatãçºåã話ããããæ©èœã®ç¢ºç(1以äžã®å°æ°ç¹ãå«ãæ°å€(0.01ãªã©ã1ã«è¿ã¥ãã»ã©çºåãããã))",
"aichatRandomTalkIntervalMinutes": "ã©ã³ãã ããŒã¯éé(å)ãæå®ããæéããšã«ã¿ã€ã ã©ã€ã³ãååŸããé©åœã«éžãã 人ã«aichatãã(1ã®å Žå1åããšå®è¡)ãããã©ã«ãã¯720å(12æé)",
"aichatGroundingWithGoogleSearchAlwaysEnabled": "aichatã§Googleæ€çŽ¢ãå©çšããã°ã©ãŠã³ãã£ã³ã°ãåžžã«è¡ãå Žå true ãå
¥ãã (ç¡å¹ã«ããå Žå㯠false(ããããäºéåŒçšç¬Š(â)ã¯äžèŠ))",
"geminiApiKey": "Gemini APIããŒãåŸæ¥ã®ãgeminiProApiKeyãããåç§°å€æŽãããŸãããåãAPIããŒã䜿çšã§ããŸã",
"geminiModel": "䜿çšããGeminiã¢ãã«ãããã©ã«ãã¯ãgemini-3.8-flashã",
"geminiGroundingModel": "Googleæ€çŽ¢ã°ã©ãŠã³ãã£ã³ã°æã«äœ¿ãGeminiã¢ãã«ãç¡ææ ã®3.xç³»ã¯ã°ã©ãŠã³ãã£ã³ã°é察å¿ã®ãããããã©ã«ãã¯ãgemini-2.5-flashã",
"geminiPostMode": "AIã®èªåæçš¿ã¢ãŒãããautoã(èªåããŒãã®ã¿)ããbothã(äŒè©±å¿çãšèªåããŒãäž¡æ¹)ãæªèšå®ã§èªåæçš¿ç¡å¹",
"autoNotePrompt": "èªåããŒãæçš¿æã«äœ¿çšããããã³ããæãpromptïŒpromptFileïŒã®äººç©èšå®ã®åŸãã«ç¶ããŠæž¡ãããã®ã§ãæçš¿å
å®¹ã®æç€ºã ããæžãã°ãã",
"autoNoteIntervalMinutes": "èªåããŒãæçš¿ã®ééïŒååäœïŒãããã©ã«ãã¯360åïŒ6æéïŒ",
"geminiAutoNoteProbability": "èªåããŒãæçš¿ã®ç¢ºçïŒ0ã1ã®å€ïŒãããã©ã«ãã¯0.02ã1ã«è¿ãã»ã©é »ç¹ã«æçš¿",
"autoNoteDisableNightPosting": "æ·±å€ïŒ23æã5æïŒã®èªåæçš¿ãç¡å¹ã«ããå Žå㯠trueïŒäºéåŒçšç¬Šã¯äžèŠïŒ",
"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ãã€ã³ã¹ããŒã«ããªãããã«ãã§ããŸããïŒã¡ã¢ãªãå°ãªãç°å¢ãªã©ïŒ
config.json
{
"host": "https://yami.ski",
"i": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"master": "admin",
"notingEnabled": "true",
"keywordEnabled": "false",
"chartEnabled": "false",
"reversiEnabled": "true",
"serverMonitoring": "true",
"checkEmojisEnabled": "true",
"checkEmojisAtOnce": "true",
"promptFile": "YUI.md",
"aichatRandomTalkEnabled": "true",
"aichatRandomTalkProbability": "0.25",
"aichatRandomTalkIntervalMinutes": "120",
"aichatGroundingWithGoogleSearchAlwaysEnabled": "false",
"geminiApiKey": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"geminiModel": "gemini-3.8-flash",
"geminiGroundingModel": "gemini-2.5-flash",
"geminiPostMode": "both",
"autoNotePrompt": "ãããããå¯ãšããŠãã¿ãããŒã®ã¿ã€ã ã©ã€ã³ã«ã²ãšãããšã1ã€æçš¿ããã誰ããžã®è¿äºã§ã¯ãªãããµãšæµ®ããã ç¬ãèšãšããŠæžãããšã\nã»çãã«ïŒ1ã3æçšåºŠïŒãäœèšæ¢ãããèšãããã§çµãã£ãŠãããã\nã»æé垯ã倩æ°ãå£ç¯ãç ããªããåŠæ ¡ã奜ããªãã®ïŒé³æ¥œããªã«ã«ããç«ãITãæšãïŒãªã©ãå¯ã®æ¥åžžããèªç¶ã«åºãŠããããšãæžãã\nã»æããååããªãŸãšããããã¿ããªã¯ã©ãïŒãã®ãããªåãããã¯å€çšããªãã\nã»ç¹å®ã®èª°ããã誰ãã®æçš¿ã«ã¯è§Šããªãã\nã»æ¯ååã話é¡ãèšãåãã«ãªããªãããã«ããã\n",
"autoNoteIntervalMinutes": "240",
"geminiAutoNoteProbability": "0.08",
"autoNoteDisableNightPosting": "true",
"mecab": "/usr/bin/mecab",
"mecabDic": "/usr/lib/x86_64-linux-gnu/mecab/dic/mecab-ipadic-neologd/",
"memoryDir": "data"
}- å¯ã¯6æéããšã«çŠå²¡ã®å€©æ°APIïŒhttps://weather.tsukumijima.net/api/forecast/city/400010ïŒããå€©æ°æ å ±ãååŸããŸãã
- å€©æ°æ å ±ãæ°æž©ã倩åã®å€åã«å¿ããŠããã£ã©ã«åã£ãäžèšnoteãèªåçæã»æçš¿ããŸãã
- æé垯ãèæ ®ããæçš¿: æã»æŒã»å€æ¹ã»å€ã®æé垯ã«å¿ããŠãé©åãªå€©æ°è¡šçŸãéžæããŸãïŒäŸïŒå€ã®å¿«æŽâãæãèŠãããããå€ã®æãâãææ¥ã®å€©æ°ã«æåŸ ãïŒã
- åã倩æ°çŸè±¡ïŒäŸ:ãå¿«æŽããéšããæãæ¥ããªã©ïŒã«ã€ããŠã¯ã1æ¥ã«1åããnoteæçš¿ããŸããïŒãã ããå¯ã®èµ·åæã¯å¿ ã1åæçš¿ããŸãïŒã
- 倩æ°çŸè±¡ãå€åããå Žåã¯ããã®çŸè±¡ã§ãã®æ¥ã«ãŸã æçš¿ããŠããªããã°ã50%ã®ç¢ºçã§noteæçš¿ããŸãã
- noteã®å 容ã¯config.jsonã®ãã£ã©æå®ããã³ããïŒautoNotePrompt/promptïŒãããšã«ã倩æ°ã»ç¶æ³ã»ããŒã¯ãŒãã»æé垯ãGemini APIã«æž¡ããŠèªç¶ãªæç« ãçæããŠããŸãã
- 倩æ°APIã®ååŸå±¥æŽã¯ã¡ã¢ãªäžã§æå€§7æ¥åä¿æããé£ç¶éšãæ¥ãªæã/å¯ããªã©ã®å€å®ã«ãå©çšããŠããŸãã
äžéšã®æ©èœã«ã¯ãã©ã³ããå¿
èŠã§ããå¯ã«ã¯ãã©ã³ãã¯å梱ãããŠããªãã®ã§ããèªèº«ã§ãã©ã³ããã€ã³ã¹ããŒã«ãã£ã¬ã¯ããªã«font.ttfãšããååã§èšçœ®ããŠãã ããã
å¯ã¯èšæ¶ã®ä¿æã«ã€ã³ã¡ã¢ãªããŒã¿ããŒã¹ã䜿çšããŠãããå¯ã®ã€ã³ã¹ããŒã«ãã£ã¬ã¯ããªã« memory.json ãšããååã§æ°žç¶åãããŸãã
MIT
This project is based on ai by lqvp, licensed under the MIT License.
