AnyCrawl

JSON モード

LLM と JSON Schema 検証を使って Web ページから構造化データを抽出する

はじめに

JSON モードでは、大規模言語モデル(LLM)を使って任意の Web ページから構造化データを抽出できます。

AnyCrawl では JSON Schema とプロンプトを定義し、抽出処理をガイドできます。出力を希望の形式に合わせられます。

使用例

JSON モードには次の 3 つの構造化抽出パターンがあります。

  1. プロンプトのみ:自然言語のプロンプトで抽出したい内容を記述します。出力の構造は LLM が決めます。
  2. スキーマのみ:JSON Schema で出力構造を厳密に制約します。LLM が値を埋めます。
  3. プロンプト + スキーマ:構造と内容の両方を、スキーマとプロンプトで細かく指定します。

ヒント:extract_source で、構造化抽出の入力に生成済みの markdown を使うか、元の html を使うかを制御できます。既定は markdown です。Markdown で重要な構造が失われる場合は html を使います。

重要:json_options を使うときは formats"json" を含めてください。含めないとレスポンスに抽出済み JSON が含まれません。


1. プロンプトのみ(柔軟な構造)

手順:

  1. 対象ページの URL を指定する
  2. 抽出したい情報をプロンプトで書く
  3. リクエストを送る
curl -X POST "https://api.anycrawl.dev/v1/scrape" \
  -H "Authorization: Bearer <your-api-key>" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://example.com",
    "formats": ["json"],
    "json_options": {
      "user_prompt": "Extract the company mission, open source status, and employee count."
    }
  }'

2. スキーマのみ(厳密な構造)

手順:

  1. 対象ページの URL を指定する
  2. 必要なフィールドと型の JSON Schema を定義する
  3. リクエストを送る
curl -X POST "https://api.anycrawl.dev/v1/scrape" \
  -H "Authorization: Bearer <your-api-key>" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://example.com",
    "formats": ["json"],
    "json_options": {
      "schema": {
        "type": "object",
        "properties": {
          "company_mission": { "type": "string" },
          "is_open_source": { "type": "boolean" },
          "employee_count": { "type": "number" }
        },
        "required": ["company_mission"]
      }
    }
  }'

3. プロンプト + スキーマ(構造と内容ガイド)

手順:

  1. 対象ページの URL を指定する
  2. 出力の JSON Schema を定義する
  3. 抽出をガイドするプロンプトを書く
  4. リクエストを送る
curl -X POST "https://api.anycrawl.dev/v1/scrape" \
  -H "Authorization: Bearer <your-api-key>" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://example.com",
    "formats": ["json"],
    "json_options": {
      "schema": {
        "type": "object",
        "properties": {
          "company_mission": { "type": "string" },
          "is_open_source": { "type": "boolean" },
          "employee_count": { "type": "number" }
        },
        "required": ["company_mission"]
      },
      "user_prompt": "Extract the company mission (string), open source status (boolean), and employee count (number)."
    }
  }'

json_options オブジェクト

json_options パラメータは次のフィールドを受け取るオブジェクトです。

  • schema:抽出に使うスキーマ。
  • user_prompt:抽出に使うユーザープロンプト。
  • schema_name:生成する出力の名前(任意)。
  • schema_description:生成する出力の説明(任意)。

JSON Schema

抽出に使うスキーマです。よく使うフィールドは次のとおりです。

  • type:値の型。サポートされる型は下表のとおりです。
  • properties:(object の場合)フィールドとそのスキーマを指定するオブジェクト。
  • required:(object の場合)必須フィールド名の配列。

サポートされる型

説明
stringテキスト会社名、説明、見出し
number数値価格、数量、評価
boolean真偽在庫フラグ、機能の有無
object入れ子構造住所、製品仕様
array値またはオブジェクトのリストタグ、カテゴリ、機能リスト

スキーマの例

{
    "type": "object",
    "properties": {
        "company_name": {
            "type": "string"
        },
        "is_open_source": {
            "type": "object",
            "properties": {
                "answer": {
                    "type": "string"
                },
                "value": {
                    "type": "boolean"
                }
            }
        },
        "employee_count": {
            "type": "number"
        }
    },
    "required": ["company_name"]
}

関連ドキュメント