freeeで領収書を元にClaude Codeで取引登録を行う方法 #3:スクリプトにして、Claude Codeなしで回す
私の経験に基づく記録ですので、これを推奨するものでも、動作を保証するものでもありません。あくまでも参考情報としてご覧ください。
#2では、手順をスキルにして、頼むのはスキル名1行だけになりました。
ただ、毎回Claude Codeを開いて頼むところは同じです。
やることが決まっている定型処理なら、スクリプトにしてしまえば、動かすのにClaude Codeは要らなくなります。
#3と#4は少々エンジニア寄りの話なので、難しいと感じたら#2までの方法で全く問題ないと思います。
スクリプトとは
Claude Codeに毎回頼むのではなく、Claude Codeに書いてもらったプログラムを自分で実行する方法です。
書くのはClaude Code、動かすのは自分です。
Claude Codeを通さないので、決まった処理は毎回同じ結果になります。
Claude Codeの判断が減るので、トークン(AIの利用量)もかかりません。
ついでに、freeeのAPIに直接つなぐので、MCPではできないファイルのアップロードもできます。
前提
- #1・#2と同じ個人事業主のfreee。Claude Code(Fable 5.1)
- 領収書は100円ショップのレシート。スマホで撮って、PCのフォルダに receipt.jpg として置きました
- スクリプトからfreeeのAPIを使うには、freeeの開発者向け画面で「アプリ」を作る必要があります(後述)
スクリプトを作ってもらう
Claude Codeにこう指示。
receipt.jpg をfreeeのファイルボックスにアップロードして、取引登録までやるスクリプトを作って。実行する環境の準備も含めてお願い。登録する前に内容を確認できるようにして
5分で「スクリプト一式と実行環境の準備が完了しました」と返ってきました。
下記、Claude Codeがやったこと。
- #2で作ったスキルの手順書と、事業所の設定(口座・勘定科目・税区分)を読む
- freee公式のAPI仕様書を取ってきて、アップロードのAPIの形式を確認
- Pythonの仮想環境を作って、必要なライブラリを入れる
- スクリプトを書いて、freeeにはつながない偽のAPIで通しテスト
できたのは、本体のスクリプト1本、環境準備のシェル、設定ファイル、手順書(README)でした。
freee_receipt.py 本体(auth / register の2つのコマンド)
setup.sh 環境準備(Python の仮想環境を作って、必要なライブラリを入れる)
requirements.txt 必要なライブラリの一覧
config.json 事業所の口座・勘定科目・税区分と、発行元から勘定科目を推定するルール
.env.example Client ID / Secret を書く設定ファイルの雛形(実際の値は .env に)
README.md 手順書
.freee_token.json 認可したときに自動で作られるファイル(freee用のアクセストークン)
freee側でアプリを作る
ここだけは自分の作業でした。Claude Codeからはこう頼まれました。
あなたにやってもらうこと
1. freeeの開発者向け画面(app.secure.freee.co.jp/developers/applications)でプライベートアプリを作成し、会計の「ファイルボックス・取引・取引先・メモタグ・勘定科目・口座」を参照・更新で許可する。コールバックURLは既定のまま
2. 表示された Client ID / Secret を .env に記入する
3. 初回だけ認可する(python freee_receipt.py auth)
4. 登録する(python freee_receipt.py register receipt.jpg)
1〜3の手順は、画面つきで補足記事にまとめました。初回だけの作業です。
スクリプトで取引登録する
1〜3までの準備ができたら、ターミナルを開き、4を実行します。
ターミナルの開き方がわからなければ、Claude Codeに「ターミナル開いて」と言ってみましょう。
Claude Codeの画面の右側にターミナルが開くので、上記4のコマンドを叩きます。
python freee_receipt.py register receipt.jpg
叩くと、確認画面が出て止まります(発行元や金額は、引数で渡さなければfreeeのOCR結果を待って埋めます)。

実行から確認画面まで約10秒。y を押すと数秒で登録され、証憑の紐付けまで確認して終わりました。

Claude Codeを閉じていても、コマンド1行で登録まで終わります。
動いているのはスクリプトで、Claude Codeはもう間にいません。
Claude Codeを閉じていても、Macのターミナルから同じコマンドを打てば動きます。
ターミナルで叩けばClaude Codeは不要でも、「ターミナル???」って思ってしまったあなたは、スクリプトの実行もスキルに組み込んでしまいましょう。
#1・#2 との違い
| #1 MCPにそのまま頼む | #2 スキルで頼む | #3 スクリプト | |
|---|---|---|---|
| 領収書のアップロード | スマホのfreeeアプリ | スマホのfreeeアプリ | スクリプトがPCから上げる |
| 指示 | 毎回文章で | /freee-receipt-register |
コマンド1行 |
| 動くもの | Claude Code | Claude Code | プログラム |
| Claude Codeが必要なとき | 毎回 | 毎回 | 作るときだけ |
| 内容の判断 | Claude Codeが画像を見て決める | 手順書どおりにClaude Codeが決める | 設定ファイルの対応表で決める。判断がいる領収書には向かない |
| 初回の準備 | MCPの接続 | スキルを作る | freeeのアプリ作成と認可 |
まとめ
定型処理はスクリプトにして、Claude Codeなしでも動くようにする。判断がいるものは、スキルにしてClaude Codeに頼む。という分け方になりました。
スクリプトを書くのは大変そうに見えますが、書いたのはClaude Codeで、私がやったのは次の3つだけです。
- スクリプトを作ってと依頼
- freeeの画面操作(APIを利用するための手続き)。手順はコチラ
- コマンドを叩いて y を押した
コマンドを叩くのも面倒だったので、スキルに組み込むことにしました。#4:スクリプトの実行もスキルに組み込んで、チャットでOKと言うだけ
参考
- freee API リファレンス(会計): https://developer.freee.co.jp/reference/accounting/reference
- freee公式MCP(GitHub): https://github.com/freee/freee-mcp