BlueAI株式会社BlueAI
カリキュラム/第4章: 業務自動化/4-1 Claude Code で営業レポートを自動生成する手順

4-1 Claude Code で営業レポートを自動生成する手順

無料

月次・週次・案件別の営業レポートを Claude Code で自動生成。CSV データ準備、テンプレート化、グラフ埋め込み、cron や Task Scheduler での定期実行まで、レポート工数をゼロにする実践手順を解説します。

4章: 業務自動化60分
酒井歩乃加
監修: 酒井歩乃加

フリーランス編集者・ライター / 元マイベスト編集ディレクター

平原尚樹
監修: 平原尚樹

株式会社BlueAI 代表取締役CEO / ソフトウェアエンジニア

このレッスンで身につくこと

このレッスンでは、Claude Code を使って 月次売上レポート・週次活動レポート・案件別 PDF レポート の 3 種類を自動生成できるようになります。営業の現場で毎週・毎月発生している「レポート作成」業務 をまるごと Claude Code に渡して、人間は意思決定だけに集中する状態を目指します。

ポイント

このレッスンのゴール

  • 営業レポートの種類と、それぞれに必要な要素を整理できる
  • CSV / Excel / スプレッドシートから 月次売上レポート を HTML + グラフ付きで自動生成できる
  • 週次活動レポート をテンプレート化し、毎週月曜の朝に自動実行できる仕組みを作れる
  • 案件別の 顧客提出用 PDF レポート を生成できる
  • 失敗パターン(生データ整形不十分・顧客名重複・日付フォーマット崩壊)を事前に潰せる
  • プロンプトをテンプレートとして再利用できる ようになり、毎週の作業を 1 行で済ませられる

所要時間 — 約 60 分(読むだけなら 25 分) 難易度 — ★★☆☆☆(CSV をエクスポートできれば OK)


はじめに — 営業レポートはなぜこんなに時間がかかるのか

営業の現場では、営業マネージャーが週の 20〜30% をレポート作成と確認に費やしている というデータもあります。月次半日、週次 2 時間、案件提出資料は 1 件 1 時間 — 合計すると 月 40 時間以上がレポート作業に消えている ことも珍しくありません。理由は データが散らばっている(Salesforce / HubSpot / スプレッドシート / Excel)、フォーマットが固定 されている、見栄えを整える のに時間を取られる、の 3 つに集約されます。どれも Claude Code が得意な領域 です。

気づき

営業レポートは「考える時間」より「整える時間」のほうが圧倒的に多い

Claude Code は「整える時間」を限りなくゼロに近づけられます。だからこそ、人間は 「数字をどう解釈して、次に何を打つか」 という本来の仕事に時間を回せるようになります。これがレポート自動化の本質的な価値です。


営業レポートの種類と必要な要素

ひとくちに「営業レポート」と言っても、用途によって 中身も粒度も読み手も違います。本レッスンで扱う 3 種類を最初に整理しておきます。

レポート種類主な読み手頻度出力中心要素
月次売上レポート経営層・営業部長月 1HTML / PDF売上総額、前月比、部門別、商品別、月別推移
週次活動レポート営業チーム週 1HTML / Slackアポ・商談・受注数、担当者別、停滞案件
案件別 PDF レポート顧客案件単位PDFロゴ、サマリー、アクション履歴、KPI 改善、次のステップ

月次は 「結果」 のレポート、週次は 「活動量」 のレポート、案件別は 「顧客提出物」 です。それぞれ読み手の関心がまるで違うので、共通テンプレートで賄おうとせず、プロンプトを分ける のが正解です。

ポイント

1 つのプロンプトで 3 種類を全部作ろうとしないでください。最初は 月次売上レポート 1 本だけ を完璧に仕上げ、それから週次・案件別に広げるのが最短ルートです。


月次売上レポートを作る

まずは 月次売上レポート から始めます。HTML 出力 + グラフ + 前月比までまるごと自動化します。

Step 1 — サンプルデータを用意する

最初は本番データではなく ダミーデータ で練習します。これは安全のためというよりも、プロンプトの試行錯誤回数を増やすため です。本番データだと「列名が違う」「文字化けする」など別の問題で詰まりやすく、肝心の「指示の出し方」に集中できなくなります。

> 2026年1月〜3月の架空の売上データCSVを作って。
> 列は「日付, 担当者, 部門, 商品名, 金額, 件数」。
> 50行分、部門は「法人営業, 個人営業, パートナー」、
> 商品名は「Plan A, Plan B, Plan C」の3種類、
> 金額は10万〜100万円の範囲でランダム。
> ファイル名は sales-2026q1.csv で保存して。

Claude Code が sales-2026q1.csv を生成します。中身を head コマンドで確認してみましょう。

$ head -5 sales-2026q1.csv
日付,担当者,部門,商品名,金額,件数
2026-01-05,田中,法人営業,Plan A,450000,1
2026-01-08,佐藤,個人営業,Plan B,280000,2
2026-01-12,鈴木,パートナー,Plan C,920000,1
2026-01-15,田中,法人営業,Plan A,650000,1

Step 2 — レポート生成プロンプトを書く

データが用意できたら、レポート生成のプロンプト を書きます。1 行で済ませようとしないこと がコツです。要素を箇条書きで並べると、Claude が見落としなく実装してくれます。

> sales-2026q1.csv を読み込んで、月次売上レポート HTML を作って。
> 出力ファイルは monthly-report.html。
>
> レポートに含める要素:
> - ヘッダー: 「月次売上レポート 2026年1月〜3月」のタイトルと作成日時
> - KPIカード: 当月売上、前月比 (%)、件数、平均単価
> - 月別売上推移の棒グラフ (Chart.js を CDN で読み込む)
> - 部門別売上の円グラフ
> - 商品別売上のテーブル (金額の降順)
> - 担当者別ランキング (TOP 5)
>
> デザイン:
> - レスポンシブ対応 (スマホでも見やすく)
> - カラーパレットは青系 (#0AA5D4, #0369A1)
> - ヘッダーは sticky で固定

Step 3 — 生成結果をブラウザで確認する

Claude Code が monthly-report.html を生成したら、必ずブラウザで開いて目視確認 します。

$ open monthly-report.html   # macOS
$ start monthly-report.html  # Windows

最初の生成では、たいてい以下のような 小さな違和感 が出ます。これは想定内です。

  • KPI カードの数字が 前月比 NaN% になっている(前月データがない最初の月)
  • 棒グラフの軸ラベルが 英語の月名 になっている
  • 円グラフの色が 見にくい (彩度が高すぎる、隣接色が似ている)

Step 4 — 追加指示で仕上げる

違和感を 1 つずつ追加指示で直していきます。これが Claude Code との対話のコツです。1 度に全部直そうとせず、1 つずつ。

> monthly-report.html を以下のように修正して:
> - 前月比が NaN になっている月は「-」と表示
> - 棒グラフのX軸ラベルは「1月, 2月, 3月」のように日本語の月名
> - 円グラフの色を青系のグラデーション (#0AA5D4, #38BDF8, #BAE6FD) に
> - 担当者別ランキングに前月比の列を追加

これで月次売上レポートが完成です。実際に試すと、データ用意 → プロンプト → 修正 → 完成 まで 10〜15 分で済むはずです。手作業なら 3 時間かかっていた作業が、です。

ポイント

生成された HTML はそのまま社内の Slack や Teams に貼り付ける用途には向きません。HTML ファイル単体を渡しても、相手のブラウザで開かないと見えないからです。共有時は PDF に変換 するか、社内サーバーや Google Drive に置いて URL を共有 するのがおすすめです。後述の「効率化」セクションで、PDF 変換と Slack 通知をまとめて自動化する方法を扱います。

KPI カード → 推移グラフ → 内訳の 3 段構成 が、人間が短時間で意思決定するための鉄板レイアウトです。最上段に当月売上・前月比・件数・平均単価の 4 枚カード、中段に月別売上推移の棒グラフ、下段に部門別円グラフと商品別テーブルを並べる — この型を一度作ってしまえば、来月以降は同じプロンプトで自動再生成できます。


週次活動レポートを作る

次は 週次活動レポート です。月次が「結果」のレポートなら、週次は 「活動量」のレポート です。アポ・商談・案件進捗の数字を追います。

Step 1 — 活動データを用意する

週次レポートで扱うデータは、月次より少し複雑です。「商談ステージ」「アポ数」「商談数」「受注金額」 など複数の数値を同時に追います。

> 営業活動データのCSVを作って。
> ファイル名は activities-week.csv。
> 列: 日付, 担当者, 顧客名, 案件名, ステージ, 金額, 確度, 次回アクション
> ステージは「Lead, Qualified, Proposal, Negotiation, Closed Won, Closed Lost」のいずれか
> 確度は 10, 25, 50, 75, 90, 100 のいずれか
> 30件分、過去1週間分の日付で。

Step 2 — 週次レポートを生成する

> activities-week.csv を読み込んで、週次活動レポート HTML を作って。
> 出力は weekly-report.html。
>
> 含める要素:
> - 先週のサマリー: アポ数、商談数、受注数 (Closed Won)、受注金額
> - 担当者別の活動量テーブル (アポ数・商談数・受注金額)
> - 商談ステージ別の案件件数 (横棒グラフ)
> - 今週の重点案件 TOP 5 (確度 × 金額 でソート、Closed Won/Lost は除外)
> - 停滞案件リスト (次回アクション日が3日以上前のもの)
>
> デザイン:
> - A4 1ページに収まるレイアウト
> - 印刷したときに切れない @media print スタイル付き

停滞案件リスト がポイントです。週次レポートでいちばん価値があるのは、「動いていない案件をあぶり出すこと」 です。営業マネージャーがアクションを打つきっかけになります。

Step 3 — 重点案件のスコア式をカスタマイズする

「確度 × 金額」のシンプルなスコアでもいいですが、より実用的な式に変えることもできます。

> 重点案件のスコアリングを変えて:
> 確度 (%) × 金額 × (今週中に動かせる可能性スコア)
> 今週中に動かせる可能性スコアは「次回アクション日」が今週内なら1.5、
> 来週なら1.0、再来週以降なら0.5 で計算。

スコア式を自然言語で書くだけ で、Claude Code が JavaScript なり Python なりに翻訳して計算してくれます。これが、これまで「専用のレポートツールを契約する」しかなかった領域を、自分で組み立てられるようになる転換点です。

気づき

「スコア式を自分で決められる」のが、Claude Code を使う最大の意義 です。

既製のレポートツールは「会社のルール」に合わせるのに半年・1 年かかります。Claude Code なら、営業部のルールが変わった瞬間にプロンプトを 1 行変えるだけ で追従できます。組織が学習するスピードに、レポートを追従させられるツールはほとんどありません。

Step 4 — Slack 投稿用テキストも同時生成

HTML レポートだけだと、毎週月曜の朝、誰も開きません。Slack に投稿する短いサマリーテキストも同時生成 すると、開封率が劇的に上がります。

> 週次レポートの Slack 投稿用テキスト summary-slack.txt も生成して。
> 構成:
> - 先週のハイライト (3行)
> - 数字: アポ数 / 商談数 / 受注金額
> - 今週の重点案件 TOP 3 (1行ずつ)
> - 詳細は weekly-report.html を参照
> 全体で15行以内に収める。

これで「HTML レポート + Slack 投稿テキスト」のセットが揃いました。


案件別 PDF レポート(顧客提出用)

3 つ目は 顧客に提出する PDF レポート です。社内向けと違って、見栄えの優先度が一気に上がります。会社のロゴ、洗練された配色、適切な余白が求められます。

Step 1 — 案件データを用意する

案件 1 件分のデータを JSON で用意します。最低限必要なフィールドは 案件名 / 顧客(社名・担当者)/ 期間 / 担当営業 / サマリー / アクション履歴 / 数値成果 / 次のステップ の 8 つです。

> 案件レポートのデータ deal-report.json をサンプルで作って。
> フィールド: deal_name, client(name, contact), period(start, end),
> owner, summary, actions[](date, title, detail),
> results[](kpi, before, after, diff), next_steps[]
> 「ABC商事様 業務効率化プロジェクト」をテーマに、内容を埋めて。

Step 2 — HTML テンプレートで PDF を生成する

PDF を直接生成するライブラリ(reportlab など)もありますが、HTML を組み立てて PDF に変換する ほうが 仕上がりがきれい です。

> deal-report.json を読み込んで、顧客提出用の PDF レポートを作って。
> 手順:
> 1. まず deal-report.html を作る (A4 縦、印刷最適化、表紙 + 内容3ページ構成)
> 2. Playwright (Python or Node) を使って deal-report.pdf に変換
>
> HTMLレイアウト:
> - 表紙: 自社ロゴ (左上) / 顧客社名 / プロジェクト名 / 期間 / 作成日
> - 2ページ目: エグゼクティブサマリー + 主要KPI3つ
> - 3ページ目: 実施アクションのタイムライン
> - 4ページ目: 数値成果テーブル + 次のステップ
>
> デザイン:
> - フォントは Noto Sans JP
> - 余白は上下左右 20mm
> - 各ページのフッターにページ番号
> - 表紙以外のヘッダーに「ABC商事様 業務効率化プロジェクト報告書」

Playwright を使った HTML → PDF 変換 は、ブラウザでの見え方そのまま PDF になるので、フォントの埋め込みやレイアウト崩れが起きにくく、おすすめです。

Step 3 — ロゴ画像の差し込み

ロゴは ローカルの SVG ファイル を参照するのが確実です(./assets/company-logo.svg、高さ 40px、左上配置、下に薄い罫線)。ロゴ画像が無い場合は 太字のテキストロゴ でも十分プロらしく見えます(フォント太字、#0AA5D4、文字サイズ 24px)。

Step 4 — 顧客名でテンプレート展開

==1 案件 = 1 PDF を 1 回ずつ作る のはまだ手作業のままです。実用にするには、案件リストを渡して一括生成== できる形にします。

> deals/ フォルダにある *.json (案件データ) を全て読み込んで、
> 各案件ごとに deal-{deal_id}.pdf を出力するスクリプトを作って。
> 共通テンプレートは template.html を使い、変数差し替えで生成。
> エラーが出た案件は errors.log にIDと理由を記録、それ以外は最後まで処理を続けて。

「全部試して、ダメなものはログに残して続行」という フェイルソフトな設計 は、Claude Code に明示的にお願いすると入れてくれます。これがあるかないかで、夜間バッチが翌朝壊れているリスクが大きく変わります。

ポイント

顧客提出用 PDF は必ず人間が最終確認してください。Claude Code は誤字脱字・固有名詞のミスを完全には防げません。「自動生成 → 人間が 1 分目を通す → 送信」 のフローで運用するのが、信頼性とスピードのバランスがいちばん良くなります。


データ元の準備 — Salesforce / HubSpot / Excel / スプレッドシート

ここまではダミーデータで進めましたが、本番運用では実際のデータソース からエクスポートが必要です。代表的な 4 つを順に見ます。

Salesforce からの抽出

Salesforce はレポート機能が強力ですが、CSV エクスポートで一気に取り出す のが Claude Code との相性は最高です。

  1. Salesforce の「レポート」タブで対象オブジェクト(Opportunity / Account / Activity)のレポートを作る
  2. 必要な項目を全部列に追加(日付・担当者・金額・ステージ・確度・次回アクション)
  3. 右上の「エクスポート」→ CSV 形式(カンマ区切り、UTF-8)

文字エンコーディングは必ず UTF-8 を選んでください。Shift_JIS を選ぶと、Claude Code で読み込んだときに日本語が文字化けします。「文字コードを確認して、Shift_JIS なら UTF-8 に変換して salesforce-utf8.csv に保存し直して」と一言添えるだけで Claude が処理してくれます。

HubSpot からの抽出

HubSpot は Deal、Contact、Company の 3 オブジェクト をそれぞれエクスポートできます。

  1. 「CRM」 → 「取引」(Deals)を開く
  2. フィルタで「期間: 過去 3 ヶ月」を設定
  3. 右上の「エクスポート」→ Excel 形式または CSV 形式

HubSpot の Excel エクスポートは デフォルトで複数シート構成 になります。Deal と Contact が別シートに分かれている場合があるので、「Deal シートと Contact シートを Contact ID で JOIN して flat-data.csv にまとめて」と Claude Code に伝えると 1 ファイルに統合されます。

Excel からの抽出

社内に Salesforce / HubSpot がない場合は、Excel が事実上の CRM になっているはずです。この場合、データの「形」が大事になります。

良いデータの形 は次のとおりです。

  • 1 行 = 1 件のレコード(マージセルなし)
  • ヘッダーは 1 行目のみ
  • 日付は「2026/01/05」または「2026-01-05」で統一
  • 金額は数値型(カンマや「円」を入れない)
  • 空欄は空欄のまま(「-」「N/A」などを入れない)

マージセル小計行が混ざった Excel は、Claude Code でも扱いに苦労します。可能なら、レポート用に「集計前の生データ」を別シートで管理する運用に変えるのが理想です。

Google スプレッドシートからの抽出

スプレッドシートは、「ファイル」→「ダウンロード」→「CSV」 でエクスポートできます。これがいちばんシンプルです。

ただし、毎週手動でダウンロードするのは手間なので、==gspread ライブラリで Python から直接読む== 方法もあります。「スプレッドシート ID abc123... の "営業活動ログ" シートを service-account.json の認証で読み込み、weekly-data.csv に保存するスクリプトを作って」と Claude に頼めば 1 分で完成します。サービスアカウント の発行と、スプレッドシートへの 閲覧権限付与 が必要で、これは Google Cloud Console で 10 分程度の作業です。一度設定すれば、以降は コマンド 1 つで最新データが取れる ようになります。

データ元エクスポート方法注意点
Salesforceレポート → CSV エクスポートUTF-8 を選ぶ
HubSpotDeals → エクスポート複数シートを結合する必要あり
Excelそのまま読み込みマージセル・小計行を避ける
Google スプレッドシートダウンロード or gspreadサービスアカウント設定
ポイント

データ元を切り替えたら、必ずプロンプトの「列名」も合わせて更新 してください。Salesforce は Amount、HubSpot は Deal Amount、Excel は 金額 のように、同じデータでも列名は微妙に違います。Claude Code は「だいたい近い名前」でも推測してくれますが、明示的に列名を伝えるほうが事故が圧倒的に減ります


テンプレート化のコツ

同じレポートを毎月作る なら、プロンプトをファイルに保存しておくのが鉄則です。これは プロンプトをコード資産として扱う という発想です。

Step 1 — プロンプトをファイルに保存

プロジェクトルートに prompts/ ディレクトリを作り、prompts/monthly-report.md入力ファイル指定 / 出力先 / 含める要素(KPI カード・推移グラフ・部門別円グラフ・商品別テーブル・担当者ランキング)/ デザイン規約(青系カラー・Noto Sans JP・sticky ヘッダー) をすべて 1 ファイルにまとめて書いておきます。

Step 2 — プロンプトを引数で呼び出す

来月のレポートを作るときは このファイルを参照させるだけ で済みます。

> prompts/monthly-report.md の手順で、4月分のレポートを作って。
> データは sales-2026-q2.csv、出力は reports/monthly-2026-04.html。

1 文で済みます。プロンプトの中身を毎回コピペする必要がなく、履歴がリポジトリに残るので、半年後に「あのときどう作ったっけ」を辿れます

Step 3 — CLAUDE.md にプロジェクト方針を書く

CLAUDE.md(第 5 章で詳しく扱います)に レポートプロジェクト全体のルール — ディレクトリ構成(data/ prompts/ reports/ assets/)、命名規則(monthly-{YYYY}-{MM}.html / weekly-{YYYY}-W{WW}.html / deal-{id}.pdf)、カラーパレット(メイン #0AA5D4 / アクセント #0369A1)、日付は ISO 8601 統一 — を書いておきます。

CLAUDE.md を 1 回書いておくと、それ以降のレポート生成プロンプトが圧倒的に短くなります。「カラーパレット」「ファイル命名規則」「日付フォーマット」などのお作法を毎回書く必要がなくなるからです。

ポイント

テンプレート化の3層構造

レポート自動化は、次の 3 層で考えると整理しやすくなります。

  • CLAUDE.md — プロジェクト全体の共通ルール(命名規則、デザイン)
  • prompts/*.md — レポート種別ごとのテンプレート(月次、週次、案件別)
  • 実行コマンド — 月や週を指定する 1 行プロンプト

これを意識すると、毎月のレポート作業が実質 1 行 で終わります。


失敗パターン — 3 つの落とし穴

実際に運用を始めると、ほぼ確実に踏む 3 つの落とし穴 があります。先回りして潰しておきます。

落とし穴 1 — 生データ整形不十分

元データに余分な行や列があると、レポートが盛大に崩れます。Excel から CSV にエクスポートしたとき、よくあるのは次のパターンです。

  • 1 行目に「2026 年 1 月度 売上データ」というタイトル行が入っている
  • 末尾に合計行が入っている(「総計」「合計」など)
  • 列の途中に空白セルが入っている
  • 「合計」セルが文字列として入って、グラフが描けない

Claude Code に「データを整形してから集計して」と最初に頼む と、これらは自動で潰してくれます。具体的には ==「ヘッダー行を自動検出("日付" を含む行)/ 上のタイトル行は無視 / "合計"・"総計"・"Subtotal" を含む行は除外 / 金額列のカンマと "円" を除去して数値に変換 / 日付が空の行は除外 → sales-clean.csv に保存」== のように、ルールを箇条書きで渡します。

「データクレンジング → レポート生成」を 2 ステップに分ける のがコツです。クレンジング済みデータが残るので、後でレポートが変な場合に原因切り分けが楽になります。

落とし穴 2 — 顧客名重複

同じ顧客が違う表記で入っている問題 は、営業データで必ず起きます。たとえば ABC商事 / ABC商事株式会社 / 株式会社ABC商事 / (株)ABC商事 / ABC Shoji Co., Ltd. — これらが全部「同じ顧客」だと、レポートで 1 つの顧客が 5 つに分裂 します。担当者別ランキングも、商品別ランキングも、すべて歪みます。「株式会社 (株) (株) を削除 / 末尾の Co., Ltd. 等を削除 / 全角英数字を半角に / 空白を削除 → 統一前後のマッピング表を customer-name-map.csv に出力」と Claude に頼みます。

マッピング表を出力させる のがポイントです。「自動で名寄せしました、はい完了」だと事故の元です。人間が 1 分目を通せる粒度に分解 しておくと、安全に運用できます。

落とし穴 3 — 日付フォーマット崩壊

日付ほど 事故が多いデータ型 はありません。よくあるパターンは次のとおりです。

  • 2026/01/052026-01-05 が混在
  • 2026年1月5日 のように日本語表記
  • Excel が勝手に 1/5/2026 (USフォーマット) で出力
  • 月 / 日が逆05/01/2026 を「5 月 1 日」と読むか「1 月 5 日」と読むか)
  • 時刻が 00:00:00 で揃ってしまい、ソート順がおかしい

対策はシンプルです。「日付列を ISO 8601(YYYY-MM-DD)に統一。2026/1/5 2026年1月5日 5-Jan-2026 等のパターンを全部認識、認識できない値は parse-errors.csv に行番号と元の値を記録して該当行は集計から除外」と明示します。

Bad

絶対やってはいけない — 「日付は適当に揃えておいて」とだけ伝えること。

「適当に」と言われると、Claude Code は最も自然な推測をします。月 / 日が逆だと、1 月のデータが 5 月に集計され、レポート全体が嘘になります。フォーマット指定は必ず明示的に書く のが鉄則です。

落とし穴サマリー

落とし穴対策
生データに余分な行クレンジングを別ステップに分ける
顧客名表記ゆれマッピング表を出力させる
日付フォーマット崩壊ISO 8601 明示・パースエラーログ

これら 3 つを プロンプトテンプレートに最初から組み込んでおく と、本番運用に乗せたあとの事故が激減します。


効率化 — 毎週月曜朝に自動実行する仕組み

レポート生成プロンプトが完成したら、最後のステップは 自動実行 です。毎週月曜の朝 8 時に、誰の手も借りずにレポートが Slack に届く状態を目指します。

仕組みの全体像

[毎週月曜 8:00]
       ↓
[cron / GitHub Actions]
       ↓
[Google スプレッドシート から最新データ取得]
       ↓
[Claude Code --print モードでレポート生成]
       ↓
[Slack Webhook で投稿]
loading diagram…

Step 1 — --print モードで非対話実行

Claude Code は、==--print フラグで対話なしの一発実行== ができます。

claude --print "prompts/weekly-report.md の手順で、
今週の週次レポートを作って。
データは data/activities-week.csv、
出力は reports/weekly-$(date +%Y-W%V).html、
Slack 投稿用テキストは reports/slack-$(date +%Y-W%V).txt。"

$(date +%Y-W%V)ISO 8601 の週番号 を生成します。2026-W17 のような文字列が入るので、レポートが毎週違うファイル名で残ります。

Step 2 — シェルスクリプトにまとめる

scripts/weekly-report.sh に、データ取得 → レポート生成 → Slack 投稿の 3 ステップをまとめます。

#!/bin/bash
set -euo pipefail
WEEK=$(date +%Y-W%V)

python scripts/fetch-from-gspread.py > data/activities-week.csv

claude --print "prompts/weekly-report.md の手順で、
data/activities-week.csv から
reports/weekly-${WEEK}.html と reports/slack-${WEEK}.txt を作って。"

curl -X POST -H 'Content-type: application/json' \
  --data "{\"text\":\"$(cat reports/slack-${WEEK}.txt)\"}" \
  "${SLACK_WEBHOOK_URL}"

Step 3 — cron または GitHub Actions で定期実行

毎週月曜 8

に動かすなら、ローカル PC では crontab -e0 8 * * 1 ... を登録。PC をスリープ解除しておくのが面倒なら GitHub Actions の schedulecron: '0 23 * * 0'(日本時間 月曜 8
= UTC 日曜 23
)にして、ANTHROPIC_API_KEYSLACK_WEBHOOK_URL を GitHub Secrets に登録するのが現代的です。

これで、営業マネージャーが何もしなくても、毎週月曜の朝に Slack に活動レポートが届く 状態が完成します。

気づき

「定期実行」まで仕込めて、初めて自動化が完了します

レポート生成を手作業で 1 度だけやって満足するのは、まだ「半自動化」です。誰の手も介さずに毎週走る ところまで来ると、組織として 「マネージャーが意思決定に専念する時間」 が本当に生まれます。ここが、Claude Code を 組織導入 するときの一番の説得材料になります。

ポイント

最初の 4 週間は手動実行で動作確認 してください。いきなり自動化すると、エラーで止まっていることに気づかず「先週のレポート消えた?」事件になります。手動で 4 回回して安定したら、cron / GitHub Actions に乗せます。


プロンプトテンプレート集

すぐ使える プロンプトテンプレート 4 種類prompts/ 配下に保存して、毎月コピペで使えるようにします。

  1. ==prompts/monthly-report.md== — 月次売上レポート。本文「月次売上レポートを作る」のプロンプトをそのまま保存。データクレンジング → KPI カード → グラフ → 内訳の 1 セット。
  2. ==prompts/weekly-report.md== — 週次活動レポート(HTML + Slack)。本文の指示に加え、Slack 投稿テキスト(ハイライト 3 行 / 数字 / 重点案件 TOP 3 / 詳細 URL)を含める。
  3. ==prompts/deal-report.md== — 案件別 PDF。HTML 4 ページ構成 + Playwright で PDF 変換。deals/*.json を入力に取り、deal-{id}.pdf を一括出力するフェイルソフト指示まで含める。
  4. ==prompts/sf-preprocess.md== — Salesforce CSV 前処理。UTF-8 統一、列名日英変換(Amount → 金額 等)、金額の数値化、CloseDate の ISO 8601 化、顧客名の表記ゆれ統一、Closed Lost 除外、Opportunity ID 重複削除、整形ログ出力までを 1 セット。
ポイント

プロンプトテンプレートは「あとから人間が読んで意味が分かるか」を基準に書きます。3 ヶ月後の自分が読んで「あ、これね」と即座に分かる粒度が理想です。コメント文を多めに残しておく と、半年後にメンテナンスするとき圧倒的に楽になります。


まとめ

このレッスンで押さえてほしいポイントを 7 つ並べます。

  1. 営業レポートは 月次 / 週次 / 案件別 の 3 種類。それぞれ 読み手も粒度も違う ので、プロンプトは必ず分ける
  2. 最初は ダミーデータで練習。プロンプトが完成してから本番データに切り替えるのが安全
  3. データクレンジング → レポート生成の 2 ステップに分ける と事故が激減する
  4. 失敗パターン 3 つ (生データ整形不十分・顧客名重複・日付フォーマット崩壊)は最初からプロンプトに対策を組み込む
  5. プロンプトは ==prompts/*.md に保存== して再利用。CLAUDE.md にプロジェクト共通ルールを書く
  6. ==--print モード + cron / GitHub Actions== で毎週月曜朝に自動実行できる
  7. 顧客提出用 PDF は必ず人間が最終確認。「自動生成 → 人間が 1 分目を通す → 送信」が安全運用の基本

<Checklist items={["ダミーデータで月次レポートを 1 回作ってみる","プロンプトを prompts/monthly-report.md に保存する","失敗パターン 3 つの対策をプロンプトに組み込む","本番データ (Salesforce / HubSpot / Excel) で 1 度試す","週次レポートを Slack 投稿テキストとセットで生成する","案件別 PDF を 1 件分作ってクオリティを確認する","シェルスクリプト化して cron で自動実行する (最初の 4 週間は手動確認)"]} />

章末演習

章末演習 — 自分の業務で実際に手を動かしてみましょう。所要時間 20〜30 分。

  1. 自分の営業データ(過去 3 ヶ月分)から、月次売上レポート を 1 つ作ってみてください。最初はダミーデータでも OK
  2. そのレポートを プロンプトテンプレート として prompts/monthly-report.md に保存。来月、本当に 1 行で再生成できるかテスト
  3. 失敗パターン 3 つ のうち、どれが自分のデータで起きそうかを 1 つ挙げて、対策プロンプトを書いてみる

<Quiz question="営業レポートを Claude Code で自動化するときに、最初にやるべきことは?" options={["本番データではなく、まずダミーデータでプロンプトを完成させる","Slack 連携と cron 設定を先に終わらせる","PDF 出力用のテンプレートを Figma で作る"]} answer={0} />

<Quiz question="日付フォーマットを統一するときの安全な指示はどれ?" options={["「ISO 8601 (YYYY-MM-DD) に統一、認識できない値は parse-errors.csv に記録」","「日付は適当に揃えておいて」","「Excel の表示形式に合わせて」"]} answer={0} />


次のレッスン 4-2: Excel 加工 では、複数の Excel ファイルを統合・変換・集計する自動化パターンを学びます。