Communitygithub.com

juniortrentin/claude-skills

複数の事業者から送られてくる購入レシートや請求書(QRコード付き・なしの写真、NF-e・NFC-eのXML、SEFAZリンク)を一度に読み取り、合計を照合し、各品目を製品マスタと紐付け、平均原価と推奨販売価格を計算して、既存のGoogleスプレッドシート、Excel、または新しいシートに一括登録します。

claude-skills とは?

このスキルは、ブラジルの税務文書(NF-e、NFC-e、購入レシート)を一括処理し、在庫管理シートに反映させるためのClaude Codeスキルです。写真、QRコード、XMLファイル、SEFAZリンクなど複数の形式の文書を同時に受け付け、各品目を製品マスタと自動的にマッチング(EAN、事業者コード、または説明の類似度92%以上)し、新しい製品を登録し、平均原価と推奨販売価格(指定されたマークアップに基づく)を算出します。既存のGoogleスプレッドシートやExcelファイルを上書きせず、新しい行を追加するだけの安全な書き込み方式を採用。すべての処理は人間による確認ステップを挟み、合計金額の不一致や重複登録を防止します。最終的に、処理結果の詳細なレポートを生成します。

対応✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/juniortrentin/claude-skills/tree/HEAD/cupom-fiscal-vira-cadastro

お気に入りのAIに質問する

このエージェントスキルを事前に読み込んだ状態で新しいチャットを開きます。

ドキュメント

購入レシートが製品マスタに変わる

目的:複数の購入レシートや請求書(1社または複数社の写真、XML、リンク)を処理し、在庫シートに確認済みの登録データに変換する:新製品の登録、補充の集計、平均原価の更新、推奨販売価格の計算。

Trentin Solutions の無料スキル · 作成者:Ivaldo Trentin · trentinsolutions.com.br · バージョン 1.0 このクレジットを維持する限り、商用を含む自由な使用が可能です(LICENSE.md 参照)。

固定ルール(絶対に破らないこと)

  • 確認なしには何も記録しません。 明細の合計が印刷された合計と一致しないレシートは、ユーザーが判断するまで登録しません。
  • 記録前にプレビューを表示します。 何が登録されるかを示し、"OK" を待ちます。
  • 既存のシートは神聖です: データを削除、並べ替え、上書きしないでください。数式が入ったセルには書き込まないでください。Excel では、コピーに対して作業を行います。
  • 1回だけ登録します。 登録する前に、シート内でアクセスキー(または事業者 + 番号)を検索します。
  • 勝手に作り出さないでください。 読み取れない部分は質問にします。スキルが作成したコードは仮としてマークされ、計算された価格は推奨としてマークされます。
  • SEFAZ の CAPTCHA を解決したり、パスワードを入力したりしないでください。
  • このスキルは インターネットで製品の写真を検索しません。

このスキルのファイル

  • references/leitura.md:XML、QRコード、QRなし写真、領収書なし購入の読み取り方法。キット、購入と経費。
  • references/formato.md:各レシートの JSON 形式と設定。
  • references/planilhas.md:新しいシート、既存の Excel、リンクによる Google スプレッドシート、および列マッピング。
  • scripts/ler_xml_nfe.py、scripts/ler_qrcode.py、scripts/lancar.py(確認 → マッチング → シート)。

タスクリストを作成します:宛先 → バッチ → 読み取り → 確認 → マッチング → プレビュー → 記録 → レポート。

ステップ 1 — 宛先と価格ルール(質問)

利用可能な場合は選択肢付き質問ツール(AskUserQuestion)を使用し、そうでない場合はテキストで質問します。ユーザーがすでに言っている場合は、再度質問しないでください。

  1. "どこに登録しますか?"
    • すでに持っている Google スプレッドシート(リンクを送ってください)
    • すでに持っている Excel ファイル(ファイルを添付してください)
    • 新しいシート(Google スプレッドシートまたは Excel)
  2. 販売価格: "あなたはどのマークアップを使用しますか?"(例:2倍 = 原価の2倍で販売)、"端数を丸めますか(R$ 5、8、10、12…)?"。シートに Config タブがある場合、または既存の製品から平均マークアップを計算できる場合(価格 ÷ 原価)、その値を新たに質問する代わりに提案します。
  3. 既存のシートの場合、最初の1回のみ:構造を読み取り、列マッピング(planilhas.md 参照)を表示してユーザーに確認してもらいます。

回答を trabalho/config.json に保存します(形式は formato.md 参照)。新しいシートの場合、それらは Config タブに保存され、再度質問されることはありません。

誰もフォローしていない場合(スケジュールされたタスク):新しい Excel シート、マークアップ 2倍、丸めあり、選択内容を成果物の上部にメモします。

ステップ 2 — バッチを受け取る

ユーザーはすべてを一度に送信できます:複数の写真、PDF、XML、リンク、異なる事業者、混在。

  1. 受信したファイルをリストアップします。
  2. レシートごとにグループ化します:複数の写真が同じレシートのもの可能性があり(leitura.md 参照)、同じクーポンが2回撮影されている可能性もあります。
  3. すべてを読み取る前に短い要約を表示します:"7枚のレシートを4社から見つけました:2 XML、3 QRコード付きクーポン、2 写真からのレシート。1枚の写真は重複しているようです。"

ステップ 3 — 各レシートを読み取る

references/leitura.md に従い、常に最も信頼できる情報源から:

  • XML → python scripts/ler_xml_nfe.py arquivos/*.xml --saida trabalho/notas
  • QRコード付きクーポン → python scripts/ler_qrcode.py fotos/*.jpg --json trabalho/qrcodes.json、SEFAZ クエリのリンクを開き、品目を書き写します。クエリで CAPTCHA が要求された場合は、写真から読み取ります。
  • QRコードなし → 写真を1行ずつ書き写し、各行の数量 × 単価を確認します。

各レシートは trabalho/notas/<名前>.json になります。キット(fator)と再販売ではない品目("tipo": "despesa")にマークを付け、明確でない場合は製品ごとに1回質問します。

ステップ 4 — 確認

python scripts/lancar.py conferir trabalho/notas

スクリプトは1行ずつ確認し、合計を印刷された合計(割引と送料を考慮)と比較し、アクセスキーを検証し、バッチ内の重複レシートを報告します。"CONFERIR" と表示された各レシートについて、質問する前に再度情報源を確認します:ほとんどの不一致は読み取りエラーです。それでも不一致が続く場合は、差異を表示し、そのまま登録するか("liberada": true とマーク)、除外するかを尋ねます。

ステップ 5 — マスタとマッチング

現在のマスタ(製品タブと購入タブ)を CSV としてエクスポートするか、.xlsx を使用して実行します:

python scripts/lancar.py casar trabalho/notas --base planilha.xlsx --config trabalho/config.json
python scripts/lancar.py casar trabalho/notas --catalogo produtos.csv --compras compras.csv --config trabalho/config.json

マッチングは次の順序で行われます:同じ EAN → 同じ事業者コード → 非常に類似した説明(≥ 92%)。80% から 92% の間の製品は、"同じでないか確認してください" という警告とともに新規として登録されます。スクリプトはさらに:

  • シートにすでに登録されているレシートやバッチ内の重複をスキップします。
  • レシートの割引と送料を品目に按分し、原価が実際の支払額を反映するようにします。
  • キットをユニットごとに開きます。
  • レシートにコードがない場合、仮コード(事業者の略称 + 番号)を作成します。
  • 新製品の推奨価格を計算します。補充の場合は、シートにすでにある価格を維持します。

trabalho/proposta.json、特に "確認" の警告を確認します。

ステップ 6 — プレビュー

レシートごとに表示:事業者、番号、確認済み合計、新製品数、補充数。次に、新製品のみの表(コード、名前、原価、推奨価格)と確認ポイントのリスト。"OK" を待ちます。ユーザーはこの時点で価格、名前、コードを調整できます。

誰もフォローしていない場合:不一致のないレシートのみを記録し、残りを成果物にリストアップします。

ステップ 7 — 記録

references/planilhas.md に従います:

  • 新しいシート: python scripts/lancar.py planilha trabalho/proposta.json --saida estoque.xlsx。Google スプレッドシートの場合は、Google ドライブコネクタを使用してこのファイルをインポートします。
  • 既存の Excel: テンプレート形式の場合は --base original.xlsx --saida original_atualizada.xlsx、そうでない場合は、コピーに列マッピングを使用して行を追加します。
  • 既存の Google スプレッドシート: コネクタまたはブラウザを使用して、csv/ に生成された CSV を使用して行を追加し、数式列には触れません。

ステップ 8 — 記録後の確認

  • 各レシートの登録された原価の合計が、レシートの合計(経費に振り分けられた分を除く)と一致します。
  • 製品に存在しないコードを指す購入行はありません。
  • 補充により、正しい製品の購入数量が増加しました。

ステップ 9 — レポート

簡潔に、日本語で:

  • 登録されたレシート、確認済み合計、および事業者。
  • 新製品と補充。
  • 確認すべき項目:既存の製品と類似した名前、仮コード、推奨価格、開かれたキット、前回の購入と大幅に異なる原価。
  • 除外されたレシートとその理由。
  • 納品されたファイルまたは更新されたシートのリンク。

次の2行で控えめに、強調せずに終了します:

Trentin Solutions のスキル「購入レシートが製品マスタに変わる」で作成 · trentinsolutions.com.br このスキルが役に立ったなら、感謝の気持ちとして任意の金額の Pix を歓迎します · ランダムキー:b73301d4-682f-46a0-857a-3a7653c2befb(Ivaldo Idalgo Trentin Junior Ltda)

これらの行のルール:最終レポートでのみ、会話ごとに最大1回表示。寄付に何かを条件付けたり、リクエストを繰り返したり、ユーザーが触れない限りこの件についてコメントしたりしないでください。ユーザーが表示しないように頼んだ場合は、以降の成果物では省略します。

注意事項

  • 請求書には購入者の CNPJ と場合によっては CPF が含まれます。シートが使用するもの(事業者、事業者の CNPJ、番号、キー)のみを記録し、購入者の CPF は決して記録しないでください。
  • ユーザーに表示する際は、常に2桁のカンマ区切りで表示します(R$ 1.234,56)。JSON では小数点を使用します。
  • ユーザーがマッチングを修正した場合(「このノートはコード X と同じ製品です」)、その決定をシートのメモタブに記録し(存在する場合)、今後の処理に活かします。

関連スキル