receipt-organizer

star 0

確定申告用の領収書整理。指定フォルダの領収書をリネーム・振り分けし、Gmailの領収書メールも取り込みます。「領収書整理」「receipt」で起動。

shuhei-fujita By shuhei-fujita schedule Updated 2/28/2026

name: receipt-organizer description: 確定申告用の領収書整理。指定フォルダの領収書をリネーム・振り分けし、Gmailの領収書メールも取り込みます。「領収書整理」「receipt」で起動。 user_invocable: true

Receipt Organizer - 領収書整理スキル

指定フォルダの領収書ファイルをリネーム・振り分けし、Gmailの領収書メールも取り込む。

フォルダ構成(デフォルト)

以下はデフォルトの振り分けカテゴリ。Step 1 でユーザーに確認し、カスタマイズ可能。

フォルダ 内容
通信費・ITサービス/ IT関連サービス、通信費、PC・周辺機器
教育・研修/ 書籍、セミナー、学習サービス
交通費・旅費/ 交通費、出張関連
交際費/ 会食、お土産
日用品/ 日用品全般
医療費/ 医療・薬
水道光熱費/ 水道光熱費
健康保険・年金/ 社会保険
業務委託依頼/ 外注費
その他/ 上記に当てはまらないもの

命名規則

YYYYMMDD_店名_内容.拡張子
  • 日付はPDF内容 or メール日付から取得
  • 店名はわかりやすい名前(Apple, Amazon 等)
  • 内容は簡潔に(iCloudPlus, MacBookAir 等)

実行手順

Step 1: 対象フォルダ・期間・整理内容の確認

AskUserQuestion で確認:

questions: [
  {
    question: "領収書フォルダのパスを教えてください(例: ~/Documents/receipts/)",
    header: "フォルダパス",
    multiSelect: false,
    options: [
      { label: "~/Documents/receipts/", description: "デフォルトパス" },
      { label: "Google Drive", description: "Google Drive上の領収書フォルダ(パスを入力してください)" }
    ]
  },
  {
    question: "どの期間の領収書を整理しますか?",
    header: "対象期間",
    multiSelect: false,
    options: [
      { label: "今月", description: "今月分の領収書を整理" },
      { label: "先月", description: "先月分の領収書を整理" },
      { label: "今年全体", description: "今年1月〜現在の領収書を整理" }
    ]
  },
  {
    question: "何を整理しますか?",
    header: "整理対象",
    multiSelect: true,
    options: [
      { label: "ルートの未整理ファイル", description: "領収書フォルダ直下のファイルをリネーム&振り分け" },
      { label: "Gmail領収書の取り込み", description: "Gmailの領収書メールを取り込み(Gmail API対応 or テキスト化)" },
      { label: "フォルダの棚卸し", description: "各フォルダの内容をリストアップして確認" }
    ]
  }
]

ユーザーが指定したフォルダパスを以降の処理で使用する。カテゴリフォルダが存在しない場合は作成する。

Step 2: ルートの未整理ファイル処理

  1. ls でルートのファイル一覧取得(README.mdとフォルダは除外)
  2. 各PDFをReadツールで読み取り、日付・店名・内容を特定
  3. リネーム案をテーブルで表示し、AskUserQuestionで確認
questions: [
  {
    question: "以下のリネーム&振り分けを実行しますか?(テーブルを確認してください)",
    header: "確認",
    multiSelect: false,
    options: [
      { label: "全て実行", description: "テーブル通りに一括処理" },
      { label: "1つずつ確認", description: "ファイルごとに確認しながら処理" }
    ]
  }
]
  1. 確認後、mv でリネーム&移動を実行

Step 3: Gmail領収書の取り込み

対象の送信者リスト(よく来る領収書の例):

  • from:apple.com subject:領収書 → iCloud+等
  • from:amazon subject:注文 → Amazon
  • from:stripe.com OR subject:領収書 stripe → Stripe経由の各種サービス

処理フロー:

  1. 対象期間で各送信者を検索
  2. 見つかったメールの一覧を表示
  3. ユーザーに取り込み対象を選択してもらう
  4. メールの種類に応じて処理を分岐:

Gmail API が設定済みの場合(credentials.json が存在)

Gmail API(gmail.readonly スコープ)を使用して添付PDFを直接ダウンロード:

  • PDF添付のメール → Gmail APIで添付ファイルをダウンロード
  • HTML本文が領収書のメール → HTML取得 → PDF変換

Claude Code に Python スクリプトを生成・実行させる。スクリプトは以下を行う:

  1. OAuth2 認証(初回のみブラウザ認証)
  2. gmail.readonly スコープでメールと添付ファイルを取得
  3. 命名規則に従ってファイルを保存

Gmail API が未設定の場合(フォールバック)

Claude Code の Gmail MCP ツール(gmail_search_messages, gmail_read_message)を使用:

  • HTML本文に領収書内容が含まれるもの → テキストファイルとして保存
  • PDF添付のみのもの → メールリンクを案内(手動ダウンロード)

テキストファイルのフォーマット:

領収書(Gmailより取り込み)
==============================
発行元: {発行元名}
適格請求書発行事業者登録番号: {あれば記載}

日付: {YYYY年M月D日}
注文番号: {あれば記載}
書類番号: {あれば記載}

内容:
  {サービス名・商品名}

金額:
  小計:         ¥{税抜}
  消費税({税率}%): ¥{税額}
  合計:         ¥{税込}

支払方法: {カード情報}

出典: Gmail メールID {messageId}
取り込み日: {YYYY-MM-DD}

Step 4: 完了レポート

処理結果をサマリーとして表示:

  • 移動したファイル数
  • 作成したファイル数(PDF / テキスト)
  • 手動ダウンロードが必要なもの一覧(Gmail API未設定の場合、メールリンク付き)
  • 各フォルダのファイル数

重要なルール

  • 確認してから実行: ファイル移動前に必ずリネーム案を提示
  • 既存ファイルを上書きしない: 同名ファイルがある場合は末尾に _2 等を付与
  • PDFを読んで日付特定: ファイル名の日付ではなくPDF内容の日付を使う
  • 勝手に振り分けない: 判断に迷う場合はユーザーに確認
  • gmail.readonly のみ使用: メールの送信・削除・変更は一切行わない
  • credentials.json をGitにpushしない: 認証情報はローカル保管
Install via CLI
npx skills add https://github.com/shuhei-fujita/receipt-organizer --skill receipt-organizer
Repository Details
star Stars 0
call_split Forks 0
navigation Branch main
article Path SKILL.md
More from Creator
shuhei-fujita
shuhei-fujita Explore all skills →