Documentation Index Fetch the complete documentation index at: https://firecrawl-noaa-mar-900-create-self-partnership-provisioning.mintlify.app/llms.txt
Use this file to discover all available pages before exploring further.
Firecrawl はウェブページをMarkdownに変換し、LLMアプリケーションに最適です。
複雑な処理を管理します: プロキシ、キャッシュ、レート制限、JavaScript でブロックされたコンテンツ
動的コンテンツに対応します: 動的な Web サイト、JavaScript でレンダリングされるサイト、PDF、画像
クリーンな Markdown、構造化データ、スクリーンショット、または HTML を出力します。
詳細は、Scrape Endpoint API Reference を参照してください。
Playground で試す インタラクティブな Playground でスクレイピングを試せます。コードは不要です。
リクエストが失敗した場合は、エラーコード、原因、対処法、再試行に関するガイダンスの一覧については
Errors を参照してください。
URL をスクレイピングして、その内容を取得するために使用します。
# pip install firecrawl-py
from firecrawl import Firecrawl
firecrawl = Firecrawl( api_key = "fc-YOUR-API-KEY" )
使い方
from firecrawl import Firecrawl
firecrawl = Firecrawl( api_key = "fc-YOUR-API-KEY" )
# ウェブサイトをスクレイピングする:
doc = firecrawl.scrape( "https://firecrawl.dev" , formats = [ "markdown" , "html" ])
print (doc)
パラメータの詳細は、APIリファレンス を参照してください。
各スクレイプで1クレジットを消費します。次のオプションには追加クレジットが必要です。JSONモードは1ページあたり追加で4クレジット、questionフォーマットとhighlightsフォーマットは各フォーマットごとに1ページあたり追加で4クレジット、強化プロキシは1ページあたり追加で4クレジット、PDF解析はPDFの1ページあたり1クレジットを消費し、音声または動画抽出は1ページあたり追加で4クレジットかかります。
レスポンス
SDK はデータオブジェクトを直接返します。cURL は以下のとおり、ペイロードをそのまま返します。
{
"success" : true ,
"data" : {
"markdown" : "Launch Week I が開幕[💥 2か月無料をゲット..." ,
"html" : "<!DOCTYPE html><html lang= \" en \" class= \" light \" style= \" color-scheme: light; \" ><body class= \" __variable_36bd41 __variable_d7dc5d font-inter ..." ,
"metadata" : {
"title" : "ホーム - Firecrawl" ,
"description" : "Firecrawl は、あらゆるウェブサイトをクリーンな Markdown にクロールして変換します。" ,
"language" : "en" ,
"keywords" : "Firecrawl,Markdown,データ,Mendable,Langchain" ,
"robots" : "follow, index" ,
"ogTitle" : "Firecrawl" ,
"ogDescription" : "あらゆるウェブサイトを LLM で使えるデータに変換。" ,
"ogUrl" : "https://www.firecrawl.dev/" ,
"ogImage" : "https://www.firecrawl.dev/og.png?123" ,
"ogLocaleAlternate" : [],
"ogSiteName" : "Firecrawl" ,
"sourceURL" : "https://firecrawl.dev" ,
"statusCode" : 200 ,
"contentType" : "text/html"
}
}
}
出力のフォーマットを選択できます。複数の出力フォーマットを指定することも可能です。サポートされているフォーマットは次のとおりです:
Markdown (markdown)
Summary (summary)
HTML (html) - ページの HTML をクリーンアップしたバージョン
Raw HTML (rawHtml) - ページから取得した変更前の HTML
Screenshot (screenshot、fullPage、quality、viewport などのオプションあり) — スクリーンショットのURLは24時間後に期限切れになります
Links (links)
JSON (json) - 構造化された出力
Images (images) - ページ内のすべての画像URLを抽出
Branding (branding) - ブランドアイデンティティとデザインシステムを抽出
Audio (audio) - 対応している動画URL (例: YouTube) からMP3音声を抽出 (署名付きGCS URLを返します。1時間後に期限切れになります)
Video (video) - 対応している動画URL (例: YouTube または TikTok) から最高品質の動画を抽出 (署名付きGCS URLを返します。1時間後に期限切れになります)
Query (query、prompt と任意の mode を使用) - ページについて自然言語で質問できます。回答は answer フィールドで返されます
出力のキーは、選択したフォーマットに対応します。
/scrape (json あり) エンドポイント
スクレイピングしたページから構造化データを抽出するために使用します。
from firecrawl import Firecrawl
from pydantic import BaseModel
app = Firecrawl( api_key = "fc-YOUR-API-KEY" )
class CompanyInfo ( BaseModel ):
company_mission: str
supports_sso: bool
is_open_source: bool
is_in_yc: bool
result = app.scrape(
'https://firecrawl.dev' ,
formats = [{
"type" : "json" ,
"schema" : CompanyInfo.model_json_schema()
}],
only_main_content = False ,
timeout = 120000
)
print (result)
出力:
{
"success" : true ,
"data" : {
"json" : {
"company_mission" : "AI対応のウェブスクレイピングとデータ抽出" ,
"supports_sso" : true ,
"is_open_source" : true ,
"is_in_yc" : true
},
"metadata" : {
"title" : "Firecrawl" ,
"description" : "AI対応のウェブスクレイピングとデータ抽出" ,
"robots" : "follow, index" ,
"ogTitle" : "Firecrawl" ,
"ogDescription" : "AI対応のウェブスクレイピングとデータ抽出" ,
"ogUrl" : "https://firecrawl.dev/" ,
"ogImage" : "https://firecrawl.dev/og.png" ,
"ogLocaleAlternate" : [],
"ogSiteName" : "Firecrawl" ,
"sourceURL" : "https://firecrawl.dev/"
},
}
}
エンドポイントに prompt を渡すだけで、スキーマなしで抽出できます。LLM がデータ構造を決定します。
from firecrawl import Firecrawl
app = Firecrawl( api_key = "fc-YOUR-API-KEY" )
result = app.scrape(
'https://firecrawl.dev' ,
formats = [{
"type" : "json" ,
"prompt" : "ページから企業のミッションを抽出してください。"
}],
only_main_content = False ,
timeout = 120000
)
print (result)
出力:
{
"success" : true ,
"data" : {
"json" : {
"company_mission" : "AI搭載のウェブスクレイピングとデータ抽出" ,
},
"metadata" : {
"title" : "Firecrawl" ,
"description" : "AI搭載のウェブスクレイピングとデータ抽出" ,
"robots" : "follow, index" ,
"ogTitle" : "Firecrawl" ,
"ogDescription" : "AI搭載のウェブスクレイピングとデータ抽出" ,
"ogUrl" : "https://firecrawl.dev/" ,
"ogImage" : "https://firecrawl.dev/og.png" ,
"ogLocaleAlternate" : [],
"ogSiteName" : "Firecrawl" ,
"sourceURL" : "https://firecrawl.dev/"
},
}
}
json フォーマットを使用する場合は、formats 内に以下のパラメータを含むオブジェクトを渡します:
schema: 構造化出力のための JSON Schema。
prompt: スキーマがある場合や、軽い指示で十分な場合に抽出を補助する任意のプロンプト。
/scrape (ブランディング付き) エンドポイント
ブランディングフォーマットは、色、フォント、タイポグラフィ、余白・間隔、UIコンポーネントなど、ウェブページからブランドアイデンティティに関する包括的な情報を抽出します。デザインシステムの分析やブランド監視、ウェブサイトのビジュアルアイデンティティを把握する必要があるツールの構築に有用です。
from firecrawl import Firecrawl
firecrawl = Firecrawl( api_key = 'fc-YOUR_API_KEY' )
result = firecrawl.scrape(
url = 'https://firecrawl.dev' ,
formats = [ 'branding' ]
)
print (result[ 'branding' ])
レスポンス
ブランディングフォーマットは、以下の構造を持つ包括的な BrandingProfile オブジェクトを返します。
{
"success" : true ,
"data" : {
"branding" : {
"colorScheme" : "dark" ,
"logo" : "https://firecrawl.dev/logo.svg" ,
"colors" : {
"primary" : "#FF6B35" ,
"secondary" : "#004E89" ,
"accent" : "#F77F00" ,
"background" : "#1A1A1A" ,
"textPrimary" : "#FFFFFF" ,
"textSecondary" : "#B0B0B0"
},
"fonts" : [
{
"family" : "Inter"
},
{
"family" : "Roboto Mono"
}
],
"typography" : {
"fontFamilies" : {
"primary" : "Inter" ,
"heading" : "Inter" ,
"code" : "Roboto Mono"
},
"fontSizes" : {
"h1" : "48px" ,
"h2" : "36px" ,
"h3" : "24px" ,
"body" : "16px"
},
"fontWeights" : {
"regular" : 400 ,
"medium" : 500 ,
"bold" : 700
}
},
"spacing" : {
"baseUnit" : 8 ,
"borderRadius" : "8px"
},
"components" : {
"buttonPrimary" : {
"background" : "#FF6B35" ,
"textColor" : "#FFFFFF" ,
"borderRadius" : "8px"
},
"buttonSecondary" : {
"background" : "transparent" ,
"textColor" : "#FF6B35" ,
"borderColor" : "#FF6B35" ,
"borderRadius" : "8px"
}
},
"images" : {
"logo" : "https://firecrawl.dev/logo.svg" ,
"favicon" : "https://firecrawl.dev/favicon.ico" ,
"ogImage" : "https://firecrawl.dev/og-image.png"
}
}
}
}
branding オブジェクトには次のプロパティが含まれます:
colorScheme: 検出された配色 ("light" または "dark")
logo: メインロゴの URL
colors: ブランドカラーを含むオブジェクト:
primary, secondary, accent: 主要なブランドカラー
background, textPrimary, textSecondary: UI カラー
link, success, warning, error: セマンティックカラー
fonts: ページで使用されているフォントファミリーの配列
typography: タイポグラフィの詳細情報:
fontFamilies: 基本、見出し、コード用のフォントファミリー
fontSizes: 見出しと本文のサイズ定義
fontWeights: ウェイトの定義 (light、regular、medium、bold)
lineHeights: テキスト種別ごとの行の高さ
spacing: 余白とレイアウト情報:
baseUnit: 基準となるスペーシング単位 (px)
borderRadius: 既定の角丸半径
padding, margins: スペーシング値
components: UI コンポーネントのスタイル:
buttonPrimary, buttonSecondary: ボタンスタイル
input: 入力フィールドのスタイル
icons: アイコンのスタイル情報
images: ブランド画像 (ロゴ、favicon、og:image)
animations: アニメーションおよびトランジション設定
layout: レイアウト構成 (グリッド、ヘッダー/フッターの高さ)
personality: ブランドの特性 (トーン、エネルギー、対象ユーザー)
ブランディング用フォーマットを他のフォーマットと組み合わせることで、ページの包括的なデータを取得できます:
from firecrawl import Firecrawl
firecrawl = Firecrawl( api_key = 'fc-YOUR_API_KEY' )
result = firecrawl.scrape(
url = 'https://firecrawl.dev' ,
formats = [ 'markdown' , 'branding' , 'screenshot' ]
)
print (result[ 'markdown' ])
print (result[ 'branding' ])
print (result[ 'screenshot' ])
audio フォーマットでは、対応する Web サイト (YouTube など) から音声を MP3 ファイルとして抽出し、署名付きの Google Cloud Storage URL を返します。これは、音声処理パイプラインや文字起こしサービス、ポッドキャスト向けツールの構築に役立ちます。
音声抽出のコストは 1 ページあたり 5 クレジットです (基本 1 + 追加 4) 。
from firecrawl import Firecrawl
firecrawl = Firecrawl( api_key = "fc-YOUR-API-KEY" )
doc = firecrawl.scrape( "https://www.youtube.com/watch?v=dQw4w9WgXcQ" , formats = [ "audio" ])
print (doc.audio) # MP3ファイルへの署名付きGCS URL
video フォーマットでは、対応している Web サイト (例: YouTube や TikTok) から最高画質の動画を抽出し、署名付きの Google Cloud Storage URL を返します。これは、動画処理パイプラインやモデレーションツール、メディアアーカイブ用ワークフローの構築に役立ちます。
動画抽出のコストは 1 ページあたり 5 クレジットです (基本 1 + 追加 4) 。
from firecrawl import Firecrawl
firecrawl = Firecrawl( api_key = "fc-YOUR-API-KEY" )
doc = firecrawl.scrape( "https://www.youtube.com/watch?v=dQw4w9WgXcQ" , formats = [ "video" ])
print (doc.video) # 動画ファイルへの署名付きGCS URL
question フォーマットを使うと、ページについて自然言語で質問できます。Firecrawl は、レスポンスの answer フィールドに回答を返します。
question フォーマットのコストは、1 ページあたり 5 クレジットです (基本 1 + LLM 呼び出しの追加 4) 。
フォーマットオブジェクト内のオプション:
question (type: "question" の場合は必須) : 回答する質問。最大 10,000 文字。
question は他のフォーマットと組み合わせることもできます。たとえば、markdown と question を一緒にリクエストすると、1 回の呼び出しでページの内容と回答を取得できます。
from firecrawl import Firecrawl
firecrawl = Firecrawl( api_key = "fc-YOUR-API-KEY" )
doc = firecrawl.scrape(
"https://firecrawl.dev" ,
formats = [{ "type" : "question" , "question" : "What is Firecrawl?" }],
)
print (doc.answer)
question フォーマットは、scrapeOptions を介して /search でも利用でき、各検索結果に対して同じ抽出を実行します。
ページから関連するソーステキストを見つけるには、highlights フォーマットを使用します。Firecrawl は、選択されたテキストをレスポンスの highlights フィールドに返します。
highlights フォーマットのコストは 1 ページあたり 5 クレジット です (基本 1 + LLM 呼び出しの追加 4) 。
フォーマットオブジェクト内のオプション:
query (type: "highlights" の場合は必須) : ソーステキストを選択するためのリクエスト。最大 10,000 文字。
highlights は他のフォーマットと組み合わせることもできます。たとえば、markdown と highlights を一緒にリクエストすると、ページコンテンツとソーステキストを 1 回の呼び出しで取得できます。
from firecrawl import Firecrawl
firecrawl = Firecrawl( api_key = "fc-YOUR-API-KEY" )
doc = firecrawl.scrape(
"https://firecrawl.dev" ,
formats = [{ "type" : "highlights" , "query" : "What is Firecrawl?" }],
)
print (doc.highlights)
highlights フォーマットは、scrapeOptions を介して /search でも利用でき、各 search result に対して同じ extraction を実行します。
Firecrawl を使うと、スクレイピングの前に Web ページ上でさまざまなアクションを実行できます。これは、動的コンテンツとのインタラクション、ページ遷移、ユーザー操作が必要なコンテンツへのアクセスに特に有効です。
アクションよりも Interact を推奨します。スクレイピングしたページを操作するための、より新しく強力な方法です。 Interact は、呼び出しをまたいで維持されるステートフルなブラウザセッションとして動作するため、次のいずれかを使ってページを段階的に操作できます。
自然言語 : 柔軟で非決定的なフロー向け。例: 「『wireless headphones』を検索し、評価 4 以上かつ 200 ドル未満に絞り込んで、結果を返す」 。
Playwright または agent-browser code : 決定的な手順向け。例: await page.click('#export').
Interact は、プロファイル、永続セッション、ライブで埋め込み可能なブラウザビュー (エンドユーザー自身がブラウザを操作できるインタラクティブモードを含む) にも対応しています。
以下は、アクションを使って google.com に移動し、Firecrawl を検索し、最初の結果をクリックしてスクリーンショットを取得する例です。
ページの読み込み時間を確保するため、他のアクションの前後には基本的に wait アクションを使用することが重要です。
from firecrawl import Firecrawl
firecrawl = Firecrawl( api_key = "fc-YOUR-API-KEY" )
doc = firecrawl.scrape(
url = "https://example.com/login" ,
formats = [ "markdown" ],
actions = [
{ "type" : "write" , "text" : "john@example.com" },
{ "type" : "press" , "key" : "Tab" },
{ "type" : "write" , "text" : "secret" },
{ "type" : "click" , "selector" : 'button[type="submit"]' },
{ "type" : "wait" , "milliseconds" : 1500 },
{ "type" : "screenshot" , "full_page" : True },
],
)
print (doc.markdown, doc.screenshot)
{
"success" : true ,
"data" : {
"markdown" : "初のローンチウィークが終了しました! [まとめを見る 🚀](blog/firecrawl-launch-week-1-recap)..." ,
"actions" : {
"screenshots" : [
"https://alttmdsdujxrfnakrkyi.supabase.co/storage/v1/object/public/media/screenshot-75ef2d87-31e0-4349-a478-fb432a29e241.png"
],
"scrapes" : [
{
"url" : "https://www.firecrawl.dev/" ,
"html" : "<html><body><h1>Firecrawl</h1></body></html>"
}
]
},
"metadata" : {
"title" : "ホーム - Firecrawl" ,
"description" : "Firecrawlは、あらゆるウェブサイトをクリーンなMarkdownに変換します。" ,
"language" : "en" ,
"keywords" : "Firecrawl,Markdown,データ,Mendable,Langchain" ,
"robots" : "follow, index" ,
"ogTitle" : "Firecrawl" ,
"ogDescription" : "あらゆるウェブサイトをLLM対応のデータに変換。" ,
"ogUrl" : "https://www.firecrawl.dev/" ,
"ogImage" : "https://www.firecrawl.dev/og.png?123" ,
"ogLocaleAlternate" : [],
"ogSiteName" : "Firecrawl" ,
"sourceURL" : "http://google.com" ,
"statusCode" : 200
}
}
}
スクレイピング後に、認証済みセッション、複数ステップのナビゲーション、ページのライブビューなど、より高度なブラウザ制御が必要なワークフローでは、アクション 配列を拡張するよりも Interact の利用を推奨します。
ターゲットの地域と言語設定に基づいて関連性の高いコンテンツを得るため、国と言語の優先順を指定します。
ロケーション設定を指定すると、Firecrawl は利用可能な場合は適切なプロキシを使用し、対応する言語とタイムゾーンをエミュレートします。指定がない場合、ロケーションのデフォルトは「US」です。
場所と言語の設定を使うには、リクエストボディに location オブジェクトを含め、次のプロパティを指定します:
country: ISO 3166-1 alpha-2 の国コード (例: ‘US’, ‘AU’, ‘DE’, ‘JP’) 。既定値は ‘US’。
languages: 優先度順に並べた、リクエストで使用する希望言語およびロケールの配列。既定値は指定した location の言語。
from firecrawl import Firecrawl
firecrawl = Firecrawl( api_key = "fc-YOUR-API-KEY" )
doc = firecrawl.scrape( 'https://example.com' ,
formats = [ 'markdown' ],
location = {
'country' : 'US' ,
'languages' : [ 'en' ]
}
)
print (doc)
対応している地域の詳細は、Proxies ドキュメント を参照してください。
リクエストを高速化するため、Firecrawl は最近のコピーがある場合、デフォルトでキャッシュから結果を返します。
デフォルトの鮮度ウィンドウ : maxAge = 172800000 ms (2日) 。キャッシュされたページがこの値より新しければ即時に返し、そうでなければスクレイプしてからキャッシュします。
パフォーマンス : データが厳密な最新性を要さない場合、スクレイプを最大5倍高速化できます。
常に最新を取得 : maxAge を 0 に設定します。この設定ではキャッシュを完全にバイパスするため、すべてのリクエストがスクレイピングパイプライン全体を通過し、リクエストが完了するまでの時間が長くなり、失敗する可能性も高くなります。すべてのリクエストで厳密な最新性が必須でない場合は、0以外の maxAge を使用してください。
保存しない : このリクエストの結果を Firecrawl にキャッシュ/保存させたくない場合は、storeInCache を false に設定します。
キャッシュのみの参照 : 新しいスクレイプを実行せず、キャッシュのみを参照するには minAge を設定します。値はミリ秒単位で、キャッシュデータが満たす必要のある最小経過時間を指定します。キャッシュデータが見つからない場合は、エラーコード SCRAPE_NO_CACHED_DATA を伴う 404 が返されます。経過時間に関係なく任意のキャッシュデータを受け入れるには、minAge を 1 に設定します。
変更トラッキング : changeTracking を含むリクエストはキャッシュをバイパスするため、maxAge は無視されます。
クレジット : キャッシュされた結果でも、1ページあたり1クレジットがかかります。キャッシュによって改善されるのは速度であり、クレジット使用量ではありません。
例 (常に最新コンテンツを取得) :
from firecrawl import Firecrawl
firecrawl = Firecrawl( api_key = 'fc-YOUR_API_KEY' )
doc = firecrawl.scrape( url = 'https://example.com' , max_age = 0 , formats = [ 'markdown' ])
print (doc)
例 (10分のキャッシュウィンドウを使用) :
from firecrawl import Firecrawl
firecrawl = Firecrawl( api_key = 'fc-YOUR_API_KEY' )
doc = firecrawl.scrape( url = 'https://example.com' , max_age = 600000 , formats = [ 'markdown' , 'html' ])
print (doc)
複数のURLを同時にバッチスクレイピングできるようになりました。開始URLと任意のパラメータを引数として受け取ります。params引数では、出力フォーマットなど、バッチスクレイピングジョブの追加オプションを指定できます。
これは /crawl エンドポイントの動作に非常によく似ています。バッチスクレイプのジョブを送信し、進行状況を確認するためのジョブIDを返します。
SDK は同期型と非同期型の2つのメソッドを提供します。同期型はバッチスクレイプジョブの結果を返し、非同期型はバッチスクレイプのステータス確認に使えるジョブIDを返します。
from firecrawl import Firecrawl
firecrawl = Firecrawl( api_key = "fc-YOUR-API-KEY" )
job = firecrawl.batch_scrape([
"https://firecrawl.dev" ,
"https://docs.firecrawl.dev" ,
], formats = [ "markdown" ], poll_interval = 2 , wait_timeout = 120 )
print (job)
SDK の同期メソッドを使用している場合は、バッチスクレイプジョブの結果が返ります。同期メソッド以外では、バッチスクレイプのステータス確認に使用できるジョブ ID が返ります。
{
"status" : "completed" ,
"total" : 36 ,
"completed" : 36 ,
"creditsUsed" : 36 ,
"expiresAt" : "2024-00-00T00:00:00.000Z" ,
"next" : "https://api.firecrawl.dev/v2/batch/scrape/123-456-789?skip=26" ,
"data" : [
{
"markdown" : "[Firecrawl Docs のホームページ!..." ,
"html" : "<!DOCTYPE html><html lang= \" en \" class= \" js-focus-visible lg:[--scroll-mt:9.5rem] \" data-js-focus-visible= \"\" >..." ,
"metadata" : {
"title" : "Groq Llama 3 で「ウェブサイトと会話できる」機能を構築する | Firecrawl" ,
"language" : "en" ,
"sourceURL" : "https://docs.firecrawl.dev/learn/rag-llama3" ,
"description" : "Firecrawl、Groq Llama 3、LangChain を使って「自分のウェブサイトと会話できる」ボットを構築する方法を学びます。" ,
"ogLocaleAlternate" : [],
"statusCode" : 200
}
},
...
]
}
その後、ジョブIDを使って /batch/scrape/{id} エンドポイントを呼び出し、バッチスクレイプのステータスを確認できます。 このエンドポイントは、ジョブの実行中、または完了直後に使用することを想定しています。バッチスクレイプのジョブは24時間で有効期限が切れるため です。
{
"success" : true ,
"id" : "123-456-789" ,
"url" : "https://api.firecrawl.dev/v2/batch/scrape/123-456-789"
}
複雑なウェブサイト向けに、Firecrawl はプライバシーを保護しながら成功率を向上させる強化モードを提供しています。
強化モード について詳しくはこちら。
Firecrawl は、厳格なデータ取り扱い要件を持つチーム向けに、ゼロデータ保持 (ZDR) をサポートしています。有効にすると、Firecrawl はページのコンテンツや抽出されたデータを、request の存続期間を超えて保持しません。
ZDR を有効にするには、request で zeroDataRetention: true を設定します。
curl -X POST https://api.firecrawl.dev/v2/scrape \
-H "Content-Type: application/json" \
-H "Authorization: Bearer fc-YOUR_API_KEY" \
-d '{
"url": "https://example.com",
"formats": ["markdown"],
"zeroDataRetention": true
}'
ZDR は Enterprise プランで利用でき、チームで有効化する必要があります。利用を開始するには、firecrawl.dev/enterprise をご覧ください。
ZDR では、基本のスクレイピングコストに加えて、1ページあたり追加で1クレジット が発生します。
ZDR モードではスクリーンショットは利用できません。スクリーンショットでは永続ストレージへのアップロードが必要になるため、ZDR の保証とは両立しません。zeroDataRetention: true と screenshot 形式の両方を含むリクエストはエラーを返します。
Firecrawl API キーが必要な AI エージェントですか?自動オンボーディング手順については、firecrawl.dev/agent-onboarding/SKILL.md を参照してください。