Dify × Firecrawlのextract機能で簡単にスクレイプしてみた
目次
こんにちは。天野です。
この記事では、LLMアプリケーション開発プラットフォーム「Dify」と、Webスクレイピング・データ抽出ツール「Firecrawl」の連携、特にFirecrawlが持つ強力なextract
機能に焦点を当てて解説します。
従来のスクレイピング手法が抱えていた課題を、AIを活用することでどのように克服し、Web上の情報を効率的に構造化データへと変換できるのか、その魅力と具体的な活用方法を説明します。
Firecrawl extract:従来スクレイピングとの比較
Firecrawlのextract
機能の核心は、AIによる構造化データ抽出にあります。開発者は、対象のWebページURLに加え、以下の二つの情報をDifyのFirecrawlツールに渡すだけで、AIがWebページのコンテンツを解析・理解し、指示された情報を指定されたJSON形式で抽出してくれます。
- Schema(スキーマ): どのような構造(形式)でデータが欲しいかを定義するJSON。
- Prompt(プロンプト): AIに対して、何を抽出したいかを自然言語で具体的に指示するテキスト。
Firecrawl extract
機能 vs 従来のスクレイピング
このextract
機能が、従来のスクレイピング手法と比べてどれほど革新的か、以下の表で比較してみましょう。
比較項目 | Firecrawl extract 機能 |
従来のスクレイピング手法 |
---|---|---|
抽出方法 | ⭕️ AIによる文脈理解 | 🔺 HTML構造ベース |
サイト構造変更への耐性 | ⭕️ 高い | 🔺 低い |
実装の容易さ | ⭕️ 容易 | 🔺 複雑 |
開発・保守コスト | ⭕️ 低い | 🔺 高い |
カスタマイズ性/制御 | 🔺 プロンプト等での調整 | ⭕️ コードで詳細制御 |
処理速度 | 🔺 AI解析で遅延の可能性 | ⭕️ 比較的速い |
簡単なデモ:楽天市場の人気商品情報を構造化データとして取得する
extract
機能の具体的な使い方を、楽天市場から月間人気商品トップ5の情報をJSON形式で取得するケースを例に見ていきましょう。
ステップ1: Firecrawl PlaygroundでSchemaとPromptを生成
Firecrawl公式サイトには、extract機能の設定を簡単に行える「Playground」という便利なツールが用意されています。
(参考: Firecrawl Playground - https://firecrawl.dev/playground )
このPlayground上で、指示を自然言語で入力すると、AIが適切なSchemaとPromptを自動生成してくれます。
-
Firecrawlを開く
-
extract
を選択する -
自然言語で取得したい情報を入力する 例
楽天市場のサイトから上位5つの商品情報を取得してください
-
Generate Parameters
をクリックする -
Shema
とPrompt
が生成されたことを確認する
- 生成されるSchema (例):
{
"type": "object",
"properties": {
"popular_products": {
"type": "array",
"items": {
"type": "object",
"properties": {
"product_name": { "type": "string" },
"rank": { "type": "number" },
"price": { "type": "string" },
"url": { "type": "string" }
},
"required": ["product_name", "rank"]
}
}
},
"required": ["popular_products"]
}
解説: これは、「popular_products
という名前の配列(リスト)が欲しいです。そのリストの各要素(商品)はオブジェクト(情報のまとまり)であり、product_name
(文字列), rank
(数値), price
(文字列), url
(文字列) というキーを持ちます。その中でもproduct_name
とrank
は必須項目である」というデータの構造を定義しています。
生成されるPrompt (例):
Extract the top 5 monthly popular products from Rakuten.
Ensure each product includes its name, rank, price, and URL.
The product name and rank are required fields.
ステップ2: DifyワークフローでFirecrawlツールを設定
次に、Difyのワークフロー編集画面に移ります。
-
ブロック追加 > ツール > FireCrawl > Scrapeブロックを選択
-
URL
欄に、情報を抽出したいURLを入力する。例 : 楽天市場 -
ワークフローに
Firecrawl
- >Scrape
ツールを追加する -
ツールの設定項目で
Mode
をextract
に変更する。 -
Extraction Schema
欄に、Playgroundで生成されたSchema (JSON)
を、Extractor System Prompt
欄に、生成されたPromptを貼り付ける。 -
実行すると、楽天市場のサイトから 情報を取得していることを確認できる
※ このままでは見ずらいため、LLMブロックを用いてテキストを整形すると、見やすい形で情報をまとめることができる
このように、プログラミングコードを一行も書くことなく、目的のWebページから欲しい情報を構造化されたデータとして取得できた。
その他ユースケース
この強力なextract
機能は、アイデア次第で様々な用途に応用できます。
- 市場・競合調査の自動化:
- 競合ECサイトの新商品情報、価格変動、レビュー数などを定期的に収集・比較分析。
- 業界ニュースサイトから特定キーワードを含む記事のタイトル、概要、公開日を抽出。
- 競合他社のプレスリリースや採用情報をモニタリング。
- セールス・マーケティング活動の効率化:
- 業界イベントのWebサイトから登壇者、セッション内容、スポンサー企業リストを抽出。
- 企業ウェブサイトから問い合わせフォームのURLや代表電話番号、所在地などを収集し、リードリストを作成。
- コンテンツ作成・キュレーション支援:
- 特定のテーマに関する複数のブログ記事やニュース記事から、重要なポイントや引用、関連データを抽出・要約し、レポートやオリジナル記事の下書きを生成。
- カスタムRAG(Retrieval-Augmented Generation)システムの構築:
- 信頼できる情報源(公式サイト、ドキュメント、社内Wikiなど)から特定の情報を構造化データとして抽出し、ベクトルデータベースなどに格納。これにより、単なるキーワード検索よりもはるかに高精度な情報検索や、信頼性の高い回答を生成するQ&Aボットを構築できます。
extract
で広がる可能性
まとめ:Dify x Firecrawl Firecrawl extractは、AIを活用したWeb情報抽出ツールです。その核心は、単に構造化データを取得するのではなく、生成AIに指示するように特定情報をピンポイントで抜き出せることです。
これにより、HTMLやセレクタの知識がなくとも、欲しい情報を効率的に収集できます。Web情報を扱うすべての人にとって強力な武器となるでしょう。ぜひこの新しい情報収集の形を体験してください。
参考記事
Discussion