IVYXON
記事一覧に戻る
ワークフロー上級🧪 Recipe

WebからLLM処理まで、データパイプライン構築ってClaude Codeにどこまで任せられる?

WebスクレイプからLLMでのデータ加工、検証まで、ETLパイプラインをClaude Codeに丸投げするコツを紹介するよ

2026年6月1日7分で読めます

複雑なデータパイプライン、設計から実装まで全部Claude Codeに投げたいって思うことない?

Webからデータ取ってきて、DBに突っ込んで、そのあとLLMで加工して、最後にウェブサイトで公開する、みたいな一連のフローって、結構めんどいよね。でも、これ、結構いけるんだよ。

今回は、とあるリリーストラッカーサイトを例に、実際にどうやってClaude Codeに分担させたかを紹介するね。

一番雑な投げ方

まずは「こういうことやりたい」って全体像を伝えてみるんだ。

GitHub APIからリリース情報を取ってきて、日本語に翻訳・分類して、静的サイトとして公開するパイプラインを組んでくれ。

これだけで動く。いきなり完成形は無理でも、全体の構造や必要なステップを洗い出してくれるよ。まずはこれで、Claude Codeがどんな構成を提案してくるか見てみよう。

もうちょい具体的に投げるパターン

全体像が見えてきたら、次はステップごとに具体的に指示していく感じ。

1. データ取得とキャッシュ部分を任せる

WebスクレイプやAPIからデータ取ってきて、一時的にDBとかファイルにキャッシュする部分。

DifyのGitHubリポジトリからリリース情報を取得するPythonスクリプトを書いてくれ。取得したデータはJSONファイルに保存して、次回以降は差分更新するようにしてね。

これでGitHub APIを叩くスクリプトと、差分更新のロジックまで考えてくれる。APIキーの管理とかも必要ならその辺も考慮してくれるよ。

2. LLMでデータ加工(翻訳・分類)を任せる

取得したデータはだいたい生データだから、そのまま使うには整形が必要。ここでLLMの出番だよ。

raw_releases.json を読み込んで、各リリースのタイトルと説明を日本語に翻訳し、主要な変更カテゴリ(新機能、バグ修正、改善など)に分類するPythonスクリプトを作って。結果は translations.json として保存してね。

LLMのAPI呼び出し部分や、レスポンスのパース、そして結果を構造化されたJSONとして保存する処理まで任せられる。翻訳や分類の精度については、後で微調整するとして、まずは動くものが手に入るんだ。

3. 静的サイト生成を任せる

加工済みのデータを使って、最終的なアウトプットを生成する部分。

translations.json のデータを使って、リリース一覧を表示する静的なHTMLファイルを生成するPythonスクリプトを書いて。デザインはシンプルでいいから、検索可能な形でお願いします。

これでHTMLテンプレートを使ったサイト生成スクリプトを作ってくれる。JavaScriptで検索機能とかも追加してくれる場合もあるから、結構便利だよ。

実践例 / 実録

実際に「リリーストラッカーサイト」を構築した時、こんな感じでClaude Codeに投げたんだ。

まず、社内で使ってるコードリポジトリのGitHub APIからDifyのリリース情報を取得するスクリプトをClaude Codeに作らせたんだ。最初の段階では「最新のリリースを取ってきて」ってだけ投げたんだけど、すぐに「すべてのリリースを取得するにはページネーション処理が必要だよ」って教えてくれて、そのコードまで出してくれたんだ。賢いよね。

次に、取得したリリースデータには英語のリリースノートやPRタイトルがいっぱいあって、これを日本語にしたいってなったんだ。さらに、これが「新機能なのか」「バグ修正なのか」って分類したいわけ。そこで、さっきの「LLMでデータ加工」のプロンプトをほぼそのまま投げたんだよ。

投げたらこうなった。

  1. raw_releases.json からデータを読み込むPythonスクリプトを生成。
  2. 各リリースのtitlebody(リリースノート本文)を、anthropic.messages.createを使ってClaudeに送信。
  3. プロンプトには「JSON形式で返して。translated_titletranslated_bodycategoryのキーを含めてね。カテゴリはfeat, fix, choreから選んで」って指示したんだ。
  4. LLMからのレスポンスをパースして、translations.jsonに追記する形で保存してくれた。

特に感動したのは、LLMのコストとレートリミットを考慮して、「すでに翻訳済みのエントリはスキップするロジックを入れとく?」って提案してくれたこと。もちろん、入れてもらったよ。おかげで無駄なAPIコールを減らせたんだ。

最後に、そのtranslations.jsonとオリジナルのraw_releases.jsonを組み合わせて、Cloudflare Pagesで公開するための単一HTMLファイルを生成するスクリプトを書いてもらったんだ。ちゃんと最新のリリースが一番上に来るようにソートしたり、カテゴリでフィルタリングできるUIまで作ってくれたんだから、もう手放せないよね。

つまずきポイント

こんな感じで便利なClaude Codeだけど、いくつかハマりどころがあったから気をつけてね。

LLMのトークン制限とコスト

リリースノートみたいな長いテキストを全部翻訳しようとすると、すぐにトークン制限に引っかかったり、費用がかさんだりするんだ。

対処法:

  • 長いテキストは、要約してからLLMに渡すようにするといいよ。
  • 一度LLMで処理した結果はキャッシュしておいて、変更がない限り再利用するようにすれば、コストを抑えられるし処理も速くなるんだ。

APIのレートリミット

GitHub APIとか、外部のAPIを叩きすぎると、すぐにレートリミットに引っかかってエラーになるんだ。

対処法:

  • API呼び出しの間にtime.sleep()で少し待ちを入れるようにするといいよ。
  • これもLLMと同じで、一度取得したデータはキャッシュしておいて、必要な時だけ更新するようにするんだ。差分更新のロジックをClaude Codeに書いてもらうのがおすすめ。

データ形式の一貫性

LLMに渡すデータの形式と、LLMから返ってくるデータの形式をしっかり指定しておかないと、次のステップでパースエラーになったり、期待通りの結果にならなかったりするんだ。

対処法:

  • プロンプトの中で「JSON形式で返して。キーは〇〇、データ型は△△」みたいに具体的に指定するといいよ。
  • Pydanticとかでスキーマを定義させて、LLMの出力がそのスキーマに沿っているか検証するコードも一緒に書いてもらうと確実だよ。

こんな感じで、大規模なデータパイプラインでも、細かいステップに分解してClaude Codeに投げることで、結構な部分を自動化できるんだ。ぜひ試してみてね。