エンジニア向け firecrawl活用ガイド:LLMのためのデータ準備
AIモデルは、生のHTMLよりもクリーンで構造化されたデータを好む。しかし、ウェブサイトから情報を手動でコピー&ペーストするのは非効率的で、フォーマットもバラバラになる。
そこで登場するのがfirecrawl/firecrawlだ。こいつはウェブサイト全体をクロールし、AIがすぐに使えるMarkdown形式や構造化されたデータ(JSON)に変換してくれる。これにより、無駄な作業を省き、AIの学習や活用を効率的に進めることができる。
ソフトウェアエンジニアである我々にとって、firecrawlは様々な作戦で役立つ。
社内ナレッジベースの構築
会社のWikiやドキュメントサイトをクロールし、AIアシスタント用の学習データに変換する。
顧客サポートの効率化
FAQページやヘルプセンターの情報をクロールし、AIチャットボットが顧客の質問に答えられるようにする。
競合分析
競合他社のウェブサイトから製品情報やブログ記事を自動的に収集・分析する。
新しい技術の調査
専門的な技術ドキュメントサイトをクロールし、要約やキーワード抽出を行う。
準備は非常に簡単だ。我々の作戦は、APIを使うのが基本となる。
APIキーの取得 まず、Firecrawlの公式サイトでアカウントを作成し、APIキーを取得する。これは作戦遂行のための通行証だ。
プログラミング言語での準備 PythonやJavaScriptなど、使い慣れた言語でSDKをインストールする。
Pythonの場合
pip install firecrawl-py
Node.jsの場合
npm install firecrawl
さあ、いよいよ実践だ。今回は、ウェブサイト全体をクロールする「クローラー作戦」と、特定のURLの情報を取得する「シングルページ作戦」の二つを実行する。
特定のページの情報を素早く取得したい場合に使う。
Pythonでの作戦例
import os
from firecrawl import FirecrawlApp
# 環境変数からAPIキーを読み込む
API_KEY = os.environ.get("FIRECRAWL_API_KEY")
# アプリの初期化
app = FirecrawlApp(api_key=API_KEY)
# URLをクリーンなMarkdownに変換
page_data = app.scrape_url('https://docs.github.com/ja/copilot/getting-started-with-github-copilot')
# 結果を表示
print(page_data['markdown'])
解説
scrape_url()は、指定したURLのコンテンツをクリーンなMarkdown形式で返してくれる。これで余計なサイドバーや広告などが取り除かれ、AIが読みやすいデータが手に入る。
ウェブサイト全体を網羅的に収集したい場合に使う。
Pythonでの作戦例
import os
from firecrawl import FirecrawlApp
API_KEY = os.environ.get("FIRECRAWL_API_KEY")
app = FirecrawlApp(api_key=API_KEY)
# ウェブサイトをクロール
crawl_job = app.crawl_url(
url='https://www.firecrawl.dev/',
params={
'crawlerOptions': {
'excludes': ['blog'], # ブログページは除外する
'limit': 10 # ページ数を10に制限する
}
}
)
# 処理結果のURLを表示
print(f"クロールジョブのURL: {crawl_job['jobId']}")
# ジョブが完了するまで待機
# この部分のコードは非同期処理が必要なため、ここでは簡略化
# 実際のユースケースでは、ポーリングやWebhookを使用することが推奨される
print("クロールジョブが完了しました。")
解説
crawl_url()は、指定したURLからリンクをたどって複数のページを収集する。crawlerOptionsを使うと、特定のパスを除外したり、クロールするページ数に制限を設けたりと、細かな指示が出せる。
firecrawlは、ウェブ上の非構造化データをAIが理解できる構造化された情報に変えるための強力な兵器だ。
これにより、我々はデータの収集・前処理という最も時間のかかる作業から解放され、AIモデルの開発や応用という、より重要な作戦に集中できる。