ANA Pay は Money Forward と同期できない
ANA Pay は Money Forward ME の連携対象外で、残高も利用明細も自動では入ってきません。Money Forward 側では「未対応金融機関」の手入力口座として扱われ、支払いのたびに自分で記録する必要があります。私は月に一度、ANA Pay アプリと通知メールを見ながらまとめて入力していました。件数が増えると入力漏れと分類の間違いが起き、月末に残高が合わなくなることが何度かありました。
先行実装は自分には合わなかった
同じ問題を解く anapay2moneyforward という実装はすでにあります。Gmail API で利用通知を解析し、Selenium で Money Forward に入力する構成です。ただし対象は SBI 版の Money Forward で、Money Forward のパスワードを.env に平文で置くことと、Google Cloud プロジェクトを自分で用意することが前提でした。パスワードの置き場所が受け入れられず、採用しませんでした。
そこで、認証情報をファイルに書かない構成に組み直しました。それが今回公開した Muse スキルです。
構成は「読む」と「照合」を Muse のコネクタに寄せた
このスキルでは、ブラウザ自動化が担う範囲を手入力口座への書き込みだけに絞っています。
- 支払いデータの入手は、Muse の Gmail コネクタが ANA Pay の通知メール(payinfo@121.ana.co.jp)を検索して読みます。メール転送の仕組みや API キーは要りません。
- 残高と明細の照合は、Muse の Money Forward ME コネクタで行います。このコネクタは読み取り専用で、書き込みには使えません。
- 書き込みだけを Playwright のスクリプト(enter.mjs)が担います。ログインは利用者本人がブラウザで行い、スクリプトはそのセッションを再利用します。パスワードはどこにも保存しません。
通知メールの判別には注意点があります。支払いの通知と取消の通知は件名が同じで、本文の「決済が完了」と「取消が完了」を見分ける必要があります。取消は支払いと対にして両方を記帳対象から外します。チャージ(入金)は残高の計算にだけ使い、記帳しません。どの移動を記帳から外すかは資金の流れによって異なるため、スキル本体には含めず、利用者ごとの設定ファイルに置く形にしました。
書き込みは 1 件ごとに検証する
自動入力で怖いのは、間違ったまま最後まで進むことです。enter.mjs は 1 件ごとに次の順で処理します。
- その月の家計簿の一覧に、同じ日付、同じ金額、同じ内容の行がないかを確認します。あれば二重記帳を避けてスキップします。
- 手入力モーダルに口座、分類、内容、金額、日付の順で入力します。分類の操作中にフォームが早期送信されることがあるため、日付は最後に入力し、各手順のあとにモーダルが残っていることを確認します。
- 保存したあと、一覧に行が存在することと、ホーム画面の残高がその金額だけ減ったことを読み戻して確認します。残高は最大で 3 回読み直します。
- 検証に失敗したら、その場で処理を止めます。成功した項目は台帳ファイルへ entered と書き戻すため、途中まで進んだ状態から再開できます。
分類はスクリプトが決めません。利用先ごとに Muse が分類を提案し、自信のないものだけを利用者に確認します。Money Forward の中分類には、名前から想像する項目が存在しないことがあります。実例として、食費に「コンビニ」はなく「ドリンク」で代替すること、衣服・美容に「衣類」はなく「衣服」を使うこと、趣味・娯楽に「グッズ」はなく「その他趣味・娯楽」を使うことを、リポジトリの references に記録しました。
2026 年 10 月分を実際に記帳した
このスキルは、作者本人の環境で 2026 年 10 月分の ANA Pay の支払い 20 件の記帳に使いました。台帳の作成から分類の確認、入力、Money Forward コネクタでの照合までを通しで実行し、記帳後の残高がコネクタの読み取りと一致することを確認しています。新規にクローンした環境でも、npm install、ヘルプ表示、ユニットテストの実行までは検証済みです。
制限
- Money Forward のページ仕様が変わると、セレクタが合わなくなって動かなくなる場合があります。セレクタはスクリプト冒頭の CONFIG と SEL に集約し、ドライランで再調整できるようにしています。
- Gmail から台帳を作る部分は、独立した解析スクリプトではなく、SKILL.md の手順に沿って Muse が実行します。純粋関数の部品(金額の抽出、取消と支払いの対応付けなど)は lib.mjs に切り出してテストしていますが、メール取得から台帳生成までを単体で実行するスクリプトはまだありません。
- 入力済みの記録を自動で修正する機能は実験的で、既定では無効にしています。分類を間違えた記録は Money Forward 上で手作業で直してください。
リポジトリ
AidaShika/anapay-moneyforward-skill
Muse のカスタムスキルとして導入する手順は README にあります。Money Forward の手入力口座に、同期できない決済サービスを毎月手で記帳している方の参考になれば幸いです。