> ## Documentation Index
> Fetch the complete documentation index at: https://student-213fb9fc.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Go

> Firecrawl Go SDKは、Firecrawl APIを包むSDKで、ウェブサイトを簡単にMarkdownへ変換できます。

<Warning>
  この SDK は現在、最新ではない Firecrawl API の **v1** を使用しています（v2 が利用可能です）。一部の機能や改善は v2 のみで利用できる場合があります。
</Warning>

<div id="installation">
  ## インストール
</div>

Firecrawl の Go SDK をインストールするには、go get を使用します。

```bash Go theme={null}
go get github.com/mendableai/firecrawl-go
```

<div id="usage">
  ## 使い方
</div>

1. [firecrawl.dev](https://firecrawl.dev) から API キーを取得します。
2. `API key` を `FirecrawlApp` 構造体のパラメータとして設定します。
3. `API URL` を設定するか、`FirecrawlApp` 構造体にパラメータとして渡します。デフォルトは `https://api.firecrawl.dev` です。
4. `version` を設定するか、`FirecrawlApp` 構造体にパラメータとして渡します。デフォルトは `v1` です。

エラーハンドリング付きで SDK を使用する例は次のとおりです:

```go Go（言語） theme={null}
import (
	"fmt"
	"log"
	"github.com/google/uuid"
	"github.com/mendableai/firecrawl-go"
)

func ptr[T any](v T) *T {
	return &v
}

func main() {
	// APIキーで FirecrawlApp を初期化する
	apiKey := "fc-YOUR_API_KEY"
	apiUrl := "https://api.firecrawl.dev"
	version := "v1"

	app, err := firecrawl.NewFirecrawlApp(apiKey, apiUrl, version)
	if err != nil {
		log.Fatalf("FirecrawlApp の初期化に失敗しました: %v", err)
	}

  // ウェブサイトをスクレイピングする
  scrapeStatus, err := app.ScrapeUrl("https://firecrawl.dev", firecrawl.ScrapeParams{
    Formats: []string{"markdown", "html"},
  })
  if err != nil {
    log.Fatalf("スクレイピングリクエストの送信に失敗しました: %v", err)
  }

  fmt.Println(scrapeStatus)

	// ウェブサイトをクロールする
  idempotencyKey := uuid.New().String() // 任意のべき等性キー
  crawlParams := &firecrawl.CrawlParams{
		ExcludePaths: []string{"blog/*"},
		MaxDepth:     ptr(2),
	}

	crawlStatus, err := app.CrawlUrl("https://firecrawl.dev", crawlParams, &idempotencyKey)
	if err != nil {
		log.Fatalf("クロールリクエストの送信に失敗しました: %v", err)
	}

	fmt.Println(crawlStatus) 
}
```

<div id="scraping-a-url">
  ### URLのスクレイピング
</div>

エラー処理付きで単一のURLをスクレイピングするには、`ScrapeURL` メソッドを使用します。URLを引数に取り、取得したデータをディクショナリとして返します。

```go Go（Golang） theme={null}
// ウェブサイトをスクレイピングする
scrapeResult, err := app.ScrapeUrl("https://firecrawl.dev", map[string]any{
  "formats": []string{"markdown", "html"},
})
if err != nil {
  log.Fatalf("URL のスクレイピングに失敗しました: %v", err)
}

fmt.Println(scrapeResult)
```

<div id="crawling-a-website">
  ### ウェブサイトをクロールする
</div>

ウェブサイトをクロールするには、`CrawlUrl` メソッドを使用します。開始URLと任意のパラメータを引数に取ります。`params` 引数では、クロールする最大ページ数、許可ドメイン、出力フォーマットなど、クロールジョブの追加オプションを指定できます。

```go Go（言語） theme={null}
crawlStatus, err := app.CrawlUrl("https://firecrawl.dev", map[string]any{
  "limit": 100,
  "scrapeOptions": map[string]any{
    "formats": []string{"markdown", "html"},
  },
})
if err != nil {
  log.Fatalf("クロールリクエストの送信に失敗しました: %v", err)
}

fmt.Println(crawlStatus) 
```

<div id="checking-crawl-status">
  ### クロールステータスの確認
</div>

クロールジョブのステータスを確認するには、`CheckCrawlStatus` メソッドを使用します。ジョブ ID を引数に取り、クロールジョブの現在のステータスを返します。

```go Go theme={null}
// クロールステータスを取得
crawlStatus, err := app.CheckCrawlStatus("<crawl_id>")

if err != nil {
  log.Fatalf("クロールステータスの取得に失敗しました: %v", err)
}

fmt.Println(crawlStatus)
```

<div id="map-a-website">
  ### ウェブサイトをマップする
</div>

`MapUrl` を使って、ウェブサイト内の URL 一覧を生成します。`params` 引数で、サブドメインの除外やサイトマップの活用など、マッピング処理をカスタマイズできます。

```go Go theme={null}
// ウェブサイトをマッピングする
mapResult, err := app.MapUrl("https://firecrawl.dev", nil)
if err != nil {
  log.Fatalf("URL のマッピングに失敗しました: %v", err)
}

fmt.Println(mapResult)
```

<div id="error-handling">
  ## エラー処理
</div>

SDK は Firecrawl API から返されるエラーを処理し、適切な例外をスローします。リクエスト中にエラーが発生した場合は、わかりやすいエラーメッセージ付きで例外がスローされます。
