散歩中に思いついたことをLINEで送ると、AI秘書が整理してフォルダに保存してくれます。僕が毎日使っている仕組みを、この記事で全部公開します。コピペで動くファイル一式も配布します。前提知識ゼロの方でも迷わないように書きました。AIを仕事に使う最初の一歩として、ちょうどいい題材だと思います。
何かいいことを思いついても、忘れてしまうことはありませんか。
僕は散歩中に思いつくことが多いです。ただスマホのメモに書くと、そこで終わります。メモは増えるだけで、仕事につながりません。
だからいま、思いついたらLINEで「AI秘書」に送っています。
秘書は自宅のMacの中に住んでいます。メッセージを受け取ると、要点を整理して、会社の作業フォルダに日付つきで保存してくれます。「あれはどこに書いたか」と聞けば、探して答えてくれます。
実際には使いすぎて、LINE無料プランの月間送信上限に達し、返信が止まったことがあります。それほど日常の道具になっている、ということでもあります。
この記事では、この仕組みの作り方を最初から最後まで書きます。使っているファイルは、個人情報を除いてそのまま配布します。手順は自分で進めても、このページをAIに読ませて一緒に進めてもかまいません(後半に案内があります)。
できることは、普段パソコンでAIに頼んでいることと同じです。LINEが入り口になるだけです。
仕組みの全体は、この一本道です。
LINEアプリ(スマホ) ↓ メッセージ LINE Messaging API(webhook) ↓ ngrok(固定ドメインで自宅Macを外部公開) ↓ 自宅Macの常駐スクリプト(line_listener.py) ↓ 署名検証と本人確認を通ったものだけ Claude Code(AI秘書として起動・整理や調べ物を実行) ↓ 結果 LINEに返信
難しそうに見えますが、部品は4つだけです。LINE公式アカウントと、ngrokと、常駐スクリプトと、Claude Code。ぜんぶ用意する手順を、このあとSTEP1〜6で書きます。
必要なものは4つです。
かかるお金は、Claude Codeのサブスク代だけです。この仕組みのための追加課金はありません。LINE公式アカウントもngrokも、無料枠で動きます。
ただしLINEの無料枠には、月に送れるメッセージ数の上限があります。実際に、僕はこの上限に達したことがあります。くわしくは後半の「つまずきポイント」に書きます。
ここからは手を動かすパートです。ページ最下部で配っている「キット一式」を先にダウンロードしておくと、そのまま進めます。
「LINE Developers」で検索して、コンソールにログインします。プロバイダーを作り、「Messaging API」のチャネルを新規作成します。
ここで控えるものは2つです。
1つめは「チャネルシークレット」。チャネル基本設定の画面にあります。2つめは「チャネルアクセストークン(長期)」。Messaging API設定の画面で発行します。
最後に、自分のスマホでその公式アカウントを「友だち追加」しておきます。
秘書の仕事場になるフォルダを1つ決めます。ここでは「デスクトップのAI秘書フォルダ」とします。その中に _shared/line というフォルダを作り、キットの中身を入れます。
mkdir -p ~/Desktop/AI秘書/{workspace,_shared/line}
# ダウンロードしたキットの中身(kitフォルダの中の全ファイル)を
# ~/Desktop/AI秘書/_shared/line/ にコピーする
workspace は、秘書がメモや会話ログを保存するフォルダです。いっしょに作っておいてください。
置き場所には意味があります。リスナーは「自分の2つ上のフォルダ」を秘書の仕事場として使うからです。この形だけ守ってください。
次に、秘密のトークンを入れるファイルを作ります。
cd ~/Desktop/AI秘書/_shared/line cp トークン.local.json.例 トークン.local.json
作った トークン.local.json をエディタで開いて、STEP1で控えた「チャネルシークレット」と「チャネルアクセストークン」を貼ります。allowed_user_ids はいったん空のままで大丈夫です。
秘書に人格や口調を持たせたい場合は、キットと同じフォルダに 人格.md という名前のファイルを作ります。名前・口調・役割を書いておくと、その人格で応対します。無くても動くので、あとからで大丈夫です。
自宅のMacをLINEのサーバーから呼べるようにします。
brew install ngrok ngrok config add-authtoken <あなたのauthtoken>
authtokenは、ngrokのダッシュボードに書いてあります。あわせてダッシュボードで、無料の「固定ドメイン」を1つ取得してください。固定にしない場合に起きる問題は、つまずきポイントに書きます。
ターミナルを2枚開きます。
# 1枚目:リスナー cd ~/Desktop/AI秘書/_shared/line && python3 line_listener.py # 2枚目:トンネル(固定ドメインを自分のものに) ngrok http --url=https://<固定ドメイン> 8765
両方が立ち上がったら、LINE DevelopersのWebhook URL欄に https://<固定ドメイン>/line/webhook を設定します。「検証」ボタンを押して成功すれば、配線はつながっています。
Webhookの利用はON。あいさつメッセージと応答メッセージはOFFにしておくと、秘書の返事と混ざりません。
この時点では、秘書はまだ誰にも反応しません。安全のためです。
スマホのLINEから、公式アカウントに何かメッセージを送ってみてください。リスナーのログに 🔒 未許可userId: U... という行が出ます。
その U... をコピーして、トークン.local.json の allowed_user_ids に貼ります。リスナーを再起動すれば、「自分にだけ反応する秘書」の完成です。
ここで一度、話しかけて返事が来ることを確認してください。
最後に、リスナーとトンネルをMacの常駐サービスにします。キットのplistファイル2本を使います。
その前に1つだけ作業があります。plist 2本の中の /Users/あなたのユーザー名/... となっている箇所を、自分の環境に書き換えてください。書き換える場所は、各ファイル冒頭のコメントに書いてあります。tunnel側のplistは、ngrokのパスと固定ドメインの書き換えも必要です。
cp com.ai-hisho.line-listener.plist.例 ~/Library/LaunchAgents/com.ai-hisho.line-listener.plist cp com.ai-hisho.line-tunnel.plist.例 ~/Library/LaunchAgents/com.ai-hisho.line-tunnel.plist launchctl load ~/Library/LaunchAgents/com.ai-hisho.line-listener.plist launchctl load ~/Library/LaunchAgents/com.ai-hisho.line-tunnel.plist
止めたいときは launchctl unload で外せます。
これで完成です。散歩に出て、思いついたことを送ってみてください。
「自宅のMacを外部に公開して、AIに作業までさせる」仕組みなので、安全の話は省けません。このキットには、4つの守りが入っています。
allowed_user_ids に入れた人以外には、会話も作業も一切しません。公式アカウントを誰かに友だち追加されても、無反応です。トークン.local.json だけに置きます。フォルダをgitで管理するなら、.gitignore に *.local.json を必ず入れて、gitに上げないでください。もう1つ。キットの初期設定では、AIの権限を「acceptEdits」という安全寄りのモードにしてあります。全自動にしたい人は設定を変えられますが、そこは自己責任でお願いします。
僕が実際にぶつかった順に書きます。
LINE公式アカウントの無料プランは、月に送れるメッセージ数に上限があります。上限に達すると、秘書からの返信が届かなくなります。
僕の場合は、毎日のやり取りでこの上限に達しました。受信は止まらないため、メッセージは届いているのに返信だけが来ない状態になります。
対処は2つです。翌月まで送信をひかえるか、有料プランに変更するかです。毎日使うつもりなら、最初から有料プランを検討するのが現実的です。
ある日突然、返事が来なくなったら、まずこれを疑ってください。Claude Codeのログインが切れると、リスナーは動いていても秘書が起動できません。
ターミナルで claude を起動して、/login でログインし直せば復活します。
ngrokは、固定ドメインを取らずに起動するとURLが毎回変わります。すると、Mac再起動のたびにLINE側のWebhook URLを直すはめになります。
無料枠で固定ドメインを1つ取得できるので、必ず最初に取ってください。STEP3で固定ドメインを前提にしているのは、このためです。
もう1つだけ。常駐化したあとに claude が見つからないエラーが出たら、line_listener.py の CLAUDE_BIN を which claude の結果のフルパスに書き換えてください。
この記事で説明したファイル一式を、そのまま配布します。僕が毎日使っているものから、個人情報とトークンを除いた中身です。
zipは「Finderでダブルクリック」して解凍してください。日本語のファイル名が入っているので、ターミナルのunzipだと名前が崩れることがあります。
中身は8ファイルです。リスナー本体(line_listener.py)、LINE送信ユーティリティ(line_reply.py/line_push.py)、設定ファイル(設定.json)、トークンの雛形(トークン.local.json.例)、常駐用plist 2本、そして手順の要約(SETUP.md)です。
そのまま動かして、自分の業務に合わせて調整してください。
ここまでの手順は、自分で進める前提で書きました。もう1つ、別のやり方があります。
このページをあなたのAI(Claude Codeなど)に読ませて、「この手順でLINE秘書を作って」と頼む方法です。AIがキットを取り寄せて、手順を一緒に進めてくれます。
そのための指示文を、下に用意しました。AIにこのページのURLを渡すか、次のブロックをそのまま貼りつけて使ってください。
【AIへの指示:LINE秘書のセットアップ】 あなたは利用者と一緒に「LINEで動くAI秘書」を作ります。 1. https://oneism.jp/assets/ai-hisho/ai-hisho-line-kit.zip をダウンロードして展開し、 この記事の手順STEP1〜6を、利用者と一緒に順番に進めること。 2. 人間の手が必要な箇所(LINE Developersでのチャネル作成・トークン取得・ ngrokのアカウントと固定ドメインの取得)は、画面の場所を案内しながら、 1個ずつ利用者に頼むこと。 3. 秘書に人格を入れたい場合は、利用者に「どんな人格・口調の秘書がいいですか?」と 質問し、回答をもとに 人格.md をキットと同じフォルダに一緒に作ること(任意)。 4. チャネルシークレット等の秘密は、利用者自身に トークン.local.json へ貼ってもらうこと。 秘密の値をチャットに表示させないこと。 5. 動作確認(STEP4〜5)まで終えたら、常駐化(STEP6)に進むかを利用者に確認すること。
あなたのAIと、一緒に作ってみてください。
参考リンク:LINE Developers / ngrok / Claude Code