Claude Media
POS売上CSVをClaudeで分析して店長の週次メモにする手順

POS売上CSVをClaudeで分析して店長の週次メモにする手順

POSからエクスポートした売上CSVをClaudeに渡し、時間帯別・カテゴリ別の集計と前年同週比を出して、店長の振り返りメモにまとめる手順です。

POS売上CSVの週次振り返りをClaudeに任せる流れ

POSの売上CSVは、Claudeに添付するだけで時間帯別・カテゴリ別の集計と前年同週比まで出せます。Claudeがサンドボックス(隔離された実行環境)でPythonを書いて動かし、表とグラフを返す仕組みです。店長が週に一度やっている「Excelで集計して、気づいたことをメモに書く」作業が対象になります。

週次の振り返りは、次の5段で組みます。

流れ

週次振り返りの組み立て

  1. 1

    POSから今週分と前年同週分のCSVを出す

    期間は月曜から日曜など、週の区切りを固定します。

  2. 2

    Claudeに添付して、列と行数を先に報告させる

    読み込みが想定どおりかを、集計の前に確かめます。

  3. 3

    時間帯別とカテゴリ別に集計させる

    売上・客数・客単価を同じ表にそろえます。

  4. 4

    前年同週と比べさせる

    曜日をそろえた比較にします。

  5. 5

    数字と仮説を分けたメモにまとめる

    来週の打ち手まで書かせて、店長が手を入れて仕上げます。

Squareのように店舗システムをClaudeへ直接つなぐ方法は、Claude Square連携の使い方とSquareとCoworkの在庫アラートが扱っています。ここで扱うのは、どのPOSでも出せるCSVを入口にする方法です。接続の設定を挟まないので、導入のハードルが低い一方、CSVを出して添付する手間は毎週残ります。

使える環境と、渡す前に確かめること

CSVの分析は、Claudeの「コード実行とファイル作成」機能が担います。Free・Pro・Maxでは初期状態で有効です。TeamとEnterpriseでは組織の管理者が機能ごと止められるため、動かないときは設定画面のCapabilitiesで管理者に確認してもらいます。

ファイルサイズの上限は、アップロードもダウンロードも1ファイル30MBです。1週間分の売上明細なら通常は収まりますが、全店舗の1年分を1つに束ねると触れる可能性があります。週次に絞る理由のひとつです。

渡す前に、次の3点を見ておきます。

  • 会員番号やスタッフ名の列が入っていないか。週次の振り返りに必要ない列は、エクスポート時に外すか、Excelで削除してから渡します
  • 文字コード。POSによってはShift_JIS(CP932)で出力されるため、文字化けしたらその旨を伝えて読み直させます
  • 取消・返品の行がどう表現されるか。マイナス金額の行なのか、取消フラグ列なのかは、POSごとに違います

CSVの扱い全般はClaude CSV分析の使い方が詳しく、この記事は売上明細に特化した部分だけを書きます。

今週分と前年同週分をそろえる

前年同週比は、日付ではなく曜日をそろえて比べます。今年の週が10月5日(月)から11日(日)なら、前年側は364日前、つまり52週前の同じ曜日から始まる7日間です。単純に「去年の10月5日から」で切ると、曜日が1日ずれて、土日の売上が平日と比べられてしまいます。

CSVは次の2ファイルを用意します。

ファイル期間用途
今週分期間月曜から日曜の7日間用途集計の主役
前年同週分期間364日前の同じ曜日からの7日間用途比較の基準

列名はPOSによって違いますが、売上明細として最低限必要なのは、日時・伝票番号・商品名・カテゴリ・数量・金額です。割引を別列で持つPOSなら、その列も残します。

集計を頼むプロンプト

2つのCSVを添付し、まず読み込みの確認だけを頼みます。集計に入る前に止めるのがコツです。

プロンプト例(読み込みの確認)
添付した2つのCSVは、POSの売上明細です。
今週分(10/5〜10/11)と前年同週分(2025/10/6〜10/12)です。
集計の前に、ファイルごとに次を報告してください。
 
- 読み込んだ行数と、期間の最初と最後の日時
- 列名の一覧と、欠損のある列
- マイナス金額の行、または取消を示す列があればその件数
- 文字化けがあれば、読み直した文字コード
 
集計はまだ始めないでください。

行数と期間が想定と合えば、本番の集計を頼みます。

プロンプト例(週次集計)
次の集計を、今週分と前年同週分の両方で出してください。
伝票番号の重複を除いた数を客数、売上を客数で割った値を客単価とします。
取消・返品は売上から差し引いた値と、差し引く前の値の両方を示してください。
 
1. 日別の売上・客数・客単価
2. 時間帯別(営業開始から1時間刻み)の売上と客数
3. 商品カテゴリ別の売上・数量・売上構成比
4. 上記それぞれの前年同週比(差額と増減率)
 
結果は表で示し、時間帯別は棒グラフ、カテゴリ別は構成比の変化が
分かるグラフにしてください。

取消を「差し引く前」と「後」の両方で出させるのは、POSの日報と照合しやすくするためです。どちらの値が日報の売上と一致するかは、POSの設定によって決まります。

Claudeが書くコードのイメージ

Claudeはこの依頼を受けると、サンドボックスのPythonでpandasなどを使った集計コードを書いて実行します。実行環境にはpandas・numpy・matplotlib・seabornなどが入っているため、パッケージの追加なしで動きます。

次は、時間帯別の集計がどういう形になるかを示した例です。実際に返ってくるコードの出力ではなく、読者が自分の環境で確かめられる形の例です。

時間帯別の集計(例)
import pandas as pd
 
# POSによってはShift_JIS(CP932)で出力される
df = pd.read_csv("sales_this_week.csv", encoding="cp932",
                 parse_dates=["日時"])
 
df["時間帯"] = df["日時"].dt.hour
 
by_hour = (
    df.groupby("時間帯")
      .agg(売上=("金額", "sum"), 客数=("伝票番号", "nunique"))
)
by_hour["客単価"] = (by_hour["売上"] / by_hour["客数"]).round()
print(by_hour)

列名の「日時」「金額」「伝票番号」は、自店のPOSの列名に読み替えます。このコードを手元で動かすのは自由ですが、Claudeに任せる場合も、どんな集計式を使ったかを報告させておくと、数字の根拠をたどれます。

日報の合計で検算する

Claudeの集計値は、必ずPOSの日報(締め処理の帳票)の売上合計と照らします。コード実行は計算を正確にしますが、取消の扱いや割引の按分といった定義の違いまでは、CSVだけでは分からないためです。

プロンプト例(検算)
日別売上の合計と、POSの日報の売上を比べたいです。
日報の数字は次のとおりです。
 
月 182,400 / 火 165,300 / 水 171,900 / 木 158,700
金 203,600 / 土 281,500 / 日 264,200
 
差が出た日があれば、取消・返品・割引・税の扱いのうち、
どれが原因になりうるかをCSVの行から探してください。

差がゼロでなければ、差の出た日の行を抜き出させ、原因を一つずつ潰します。税込と税抜が混ざっていることも、原因の候補です。数字の例は説明用に置いた仮の値です。

前年同週比の読み方を決めておく

増減率だけを見ると、判断を誤ります。メモに入れる前に、次の見方を決めておきます。

読み方

前年同週比を読むときの切り口

  • 客数と客単価に分ける

    売上が前年比で増えていても、客数が減って客単価で補っているだけの週があります。売上の増減は、客数の差と客単価の差に分けて示させます。

  • 時間帯のずれを見る

    全体が前年並みでも、ピークの時間帯が前にずれていることがあります。時間帯別の前年同週比を並べて、山の位置を比べます。

  • カテゴリの入れ替わりを見る

    構成比の変化で、売上を伸ばしたカテゴリと落としたカテゴリを分けます。値引きや新商品の影響を受けた商品は、カテゴリ内の内訳まで掘ります。

  • 前年側の特殊要因を疑う

    前年の同週に祝日や地域のイベントがあれば、比較自体が歪みます。祝日の有無は、日付を渡して確かめます。

天候やイベントのように、CSVに載っていない要因は、Claudeには分かりません。メモの「要因」欄は、データから言えることと店長が現場で知っていることを分けて書かせます。

店長の振り返りメモにまとめる

集計と検算が済んだら、メモの形にまとめさせます。数字と仮説を分けるのがポイントです。

プロンプト例(振り返りメモ)
ここまでの集計結果を、店長の週次振り返りメモにまとめてください。
次の構成で、A4半ページに収まる分量にします。
 
1. 今週の数字(売上・客数・客単価と前年同週比)
2. 時間帯別で目立った点
3. カテゴリ別で目立った点
4. 要因の仮説(データから言えること / 現場の確認が必要なこと を分ける)
5. 来週の打ち手の案(3つまで)
 
数字は、これまでの集計表にある値だけを使ってください。
天候やイベントなど、CSVに載っていない要因は断定せず、
「現場で確認が必要」として挙げてください。

出てきたメモは、店長が現場の事情で書き換えてから使います。「来週の打ち手の案」は、あくまで案です。人件費のシフトや発注に直結する判断は、Claudeの案を参考に、店長が決めます。

毎週同じ手順にする

毎週ゼロからプロンプトを書くのは手間なので、定型にします。

  • Claudeのプロジェクトに置く: プロジェクトのファイルは、Claudeの実行環境から参照できます。上の3つのプロンプトと、列名の対応表、日報の確認項目を1つのファイルにして置いておけば、毎週はCSVを添付して「今週分を実行して」と頼むだけで済みます
  • Claude Codeで手元のCSVを処理する: 売上CSVをフォルダに置き、claude -p で非対話実行すると、週次の定型処理をスクリプトにできます
claude -p "sales/this_week.csv と sales/last_year_week.csv を集計し、
週次振り返りメモを memo.md に書いて" \
  --allowedTools "Read,Write,Bash"

--allowedTools に挙げたツールだけが、確認なしで使われます。売上データを触る処理なので、許可するツールは最小限にします。Claude Codeの使い方はClaude Codeの全体像が出発点です。

GA4のデータを同じ型で週次化する例はGA4のBigQueryをClaudeで分析し週次レポートを自動化する手順にあります。売上と在庫の突き合わせは棚卸差異の分析と組み合わせると、廃棄やロスの確認まで広がります。

APIから組み込むなら課金と制限を知っておく

自社のシステムから週次処理を呼ぶ場合は、Claude APIのコード実行ツールを使います。CSVはFiles APIでアップロードし、container_upload のブロックでリクエストに添え、code_execution_20250825 のツールを渡します。

Claude API: CSVを添えてコード実行(公式の例に沿った形)
import anthropic
from pathlib import Path
 
client = anthropic.Anthropic()
 
# 今週分のCSVをアップロード
file_object = client.files.upload(file=Path("sales_this_week.csv"))
 
response = client.messages.create(
    model="claude-opus-5-5",
    max_tokens=4096,
    messages=[{
        "role": "user",
        "content": [
            {"type": "text", "text": "時間帯別・カテゴリ別に売上を集計して"},
            {"type": "container_upload", "file_id": file_object.id},
        ],
    }],
    tools=[{"type": "code_execution_20250825", "name": "code_execution"}],
)

実行環境の制約は、次のとおりです。

数字

コード実行コンテナの上限

  • メモリ

    5GiB

    CPUは1つ

  • ディスク

    5GiB

    ワークスペース

  • ネットワーク

    なし

    外部通信は不可

  • 有効期間

    30日

    作成から

Claude APIのコード実行ツール

インターネットに出られないため、実行時にパッケージを入れることはできません。事前に入っているライブラリで足りる集計に向いています。コンテナはインターネットに出られないので、集計中のデータがさらに外部サービスへ送られることはありません。ただしCSV自体はAnthropicへアップロードされ、コード実行はゼロデータ保持(ZDR)の対象外です。

課金は、ウェブ検索やウェブ取得と一緒に使わない場合、実行時間で数えます。組織ごとに月1,550時間の無料枠があり、超えた分はコンテナ1つにつき1時間あたり0.05ドルです。実行時間には5分の下限があり、ファイルを添えたリクエストは、ツールが呼ばれなくても、コンテナに事前配置される分の実行時間が課金されます。週に数回の売上集計であれば、無料枠に収まる規模です。

同じコンテナを使い回すには、レスポンスの container のIDを次のリクエストに渡します。コンテナは作成から30日で失効し、失効後は新しく作り直します。

つまずきやすい点

つまずき

売上CSVでありがちな失敗

  • 文字化けで列が読めない

    Shift_JISのCSVをUTF-8として読むと列名が崩れます。最初の確認で文字コードを報告させておけば、集計前に直せます。

  • 日報と合計が合わない

    取消・返品・割引・税込と税抜のどれかで定義がずれています。差の出た日の行を抜き出させて原因を絞ります。

  • 曜日がずれた比較になる

    前年同週を日付で切ると、土日が平日と比べられます。364日前から始まる7日間で切り直します。

  • 途中で止まる

    コード実行は使用量を多く消費するため、日別・店舗別に分けて頼むほうが上限に当たりにくくなります。

まとめ

POS売上CSVの週次振り返りで効くのは、集計の自動化より、定義と検算を毎週同じ型で通すことです。曜日をそろえた前年比、客数と客単価への分解、日報との照合を型に入れておけば、メモの数字を店長が自分で説明できます。要因の欄は、データから言えることと現場で確かめることを分けて書かせるのが、このメモを実務で使えるものにします。

この記事を共有:XはてブLinkedIn