> ## Documentation Index
> Fetch the complete documentation index at: https://docs.olostep.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Olostep + Mastra 統合

> Mastra.aiのエージェントフレームワークを使用して、ウェブ検索、スクレイピング、クロール機能を持つAIエージェントを構築

Olostep Mastra統合は、Mastra.aiエージェントに強力なウェブデータ抽出機能をもたらします。Olostepはウェブ検索、スクレイピング、クロールAPIであり、ウェブデータを検索、抽出、構造化するためのAPIです。あらゆるウェブサイトからデータを自律的に検索、スクレイピング、分析、構造化できるインテリジェントなAIエージェントを構築しましょう。

[npmからインストール →](https://www.npmjs.com/package/@olostep/mastra-tools)

## 特徴

この統合は、自動化されたウェブデータ抽出のための4つの強力なAPIを提供します：

<CardGroup cols={2}>
  <Card title="ウェブサイトをスクレイプ" icon="file-lines">
    任意の単一URLから複数のフォーマット（Markdown、HTML、JSON、テキスト）でコンテンツを抽出
  </Card>

  <Card title="URLをバッチスクレイプ" icon="layer-group">
    最大100,000のURLを並行して処理。大規模なデータ抽出に最適
  </Card>

  <Card title="クロールを作成" icon="spider-web">
    リンクをたどってウェブサイト全体を自律的に発見し、スクレイプ
  </Card>

  <Card title="マップを作成" icon="map">
    サイト構造分析とコンテンツ発見のためにウェブサイトからすべてのURLを抽出
  </Card>
</CardGroup>

## インストール

<CodeGroup>
  ```bash npm theme={null}
  npm install @olostep/mastra-tools
  ```

  ```bash yarn theme={null}
  yarn add @olostep/mastra-tools
  ```

  ```bash pnpm theme={null}
  pnpm add @olostep/mastra-tools
  ```
</CodeGroup>

## セットアップ

### 1. パッケージをインストール

```bash theme={null}
npm install @olostep/mastra-tools @mastra/core
```

### 2. 統合をインポートして登録

あなたのMastra設定ファイルで：

```typescript theme={null}
import { Mastra } from '@mastra/core';
import { createOlostepIntegration } from '@olostep/mastra-tools';

// Olostep統合を作成
const olostep = createOlostepIntegration();

// APIを登録（これによりエージェントが利用可能になります）
olostep.registerApis();

// Mastra設定に追加
export const mastra = new Mastra({
  config: {
    integrations: [olostep],
    // ... 他の設定
  },
});
```

### 3. APIキーを設定

Olostep APIキーを環境変数として設定：

```bash theme={null}
export OLOSTEP_API_KEY=your-api-key-here
```

または `.env` ファイルに：

```
OLOSTEP_API_KEY=your-api-key-here
```

APIキーは [Olostep Dashboard](https://olostep.com/dashboard) から取得してください。

## 利用可能なAPI

この統合は、あなたのMastraエージェントが使用できる4つのAPIを公開します：

### scrapeWebsite

単一のURLからコンテンツを抽出します。複数のフォーマットとJavaScriptレンダリングをサポート。

**使用例:**

* 特定のページの変更を監視
* Eコマースサイトから商品情報を抽出
* ニュース記事やブログ投稿からデータを収集
* コンテンツ集約のためにコンテンツを引き出す

**スキーマパラメータ:**

<ParamField path="apiKey" type="string" required>
  あなたのOlostep APIキー
</ParamField>

<ParamField path="url_to_scrape" type="string" required>
  スクレイプするウェブサイトのURL（[http://またはhttps://を含む必要があります）](http://またはhttps://を含む必要があります）)
</ParamField>

<ParamField path="formats" type="array" default="['markdown']">
  出力フォーマット: \['html', 'markdown', 'json', 'text']
</ParamField>

<ParamField path="country" type="string">
  ロケーション特有のコンテンツのための国コード（例："US", "GB", "CA"）
</ParamField>

<ParamField path="wait_before_scraping" type="number">
  JavaScriptレンダリングのための待機時間（ミリ秒単位、0-10000）
</ParamField>

<ParamField path="parser" type="string">
  特殊な抽出のためのオプションのパーサーID（例："@olostep/amazon-product"）
</ParamField>

**レスポンス:**

* `id` - スクレイプID
* `url_to_scrape` - スクレイプされたURL
* `result.markdown_content` - Markdownコンテンツ
* `result.html_content` - HTMLコンテンツ
* `result.json_content` - JSONコンテンツ
* `result.text_content` - テキストコンテンツ
* `result.screenshot_hosted_url` - スクリーンショットURL（利用可能な場合）
* `result.markdown_hosted_url` - ホストされたMarkdown URL
* `object` - オブジェクトタイプ ("scrape")
* `created` - Unixタイムスタンプ

**使用例:**

```typescript theme={null}
// エージェントまたはワークフロー内で
const result = await mastra.callApi({
  integrationName: 'olostep',
  api: 'scrapeWebsite',
  payload: {
    data: {
      apiKey: process.env.OLOSTEP_API_KEY,
      url_to_scrape: 'https://example.com',
      formats: ['markdown'],
      country: 'US',
    }
  }
});
```

### batchScrape

複数のURLを並行して処理（最大100,000件まで）。大規模なデータ抽出に最適。

**使用例:**

* 商品カタログ全体をスクレイプ
* 複数の検索結果からデータを抽出
* スプレッドシートからのURLリストを処理
* 大量のコンテンツ抽出

**スキーマパラメータ:**

<ParamField path="apiKey" type="string" required>
  あなたのOlostep APIキー
</ParamField>

<ParamField path="batch_array" type="array" required>
  `url`とオプションの`custom_id`フィールドを持つオブジェクトの配列

  例: `[{"url":"https://example.com","custom_id":"site1"}]`
</ParamField>

<ParamField path="formats" type="array" default="['markdown']">
  すべてのURLの出力フォーマット
</ParamField>

<ParamField path="country" type="string">
  ロケーション特有のスクレイピングのための国コード
</ParamField>

<ParamField path="wait_before_scraping" type="number">
  JavaScriptレンダリングのための待機時間
</ParamField>

<ParamField path="parser" type="string">
  特殊な抽出のためのオプションのパーサーID
</ParamField>

**レスポンス:**

* `batch_id` - バッチID（後で結果を取得するために使用）
* `status` - 処理ステータス
* `object` - オブジェクトタイプ ("batch")

**使用例:**

```typescript theme={null}
const result = await mastra.callApi({
  integrationName: 'olostep',
  api: 'batchScrape',
  payload: {
    data: {
      apiKey: process.env.OLOSTEP_API_KEY,
      batch_array: [
        { url: 'https://example.com', custom_id: 'site1' },
        { url: 'https://test.com', custom_id: 'site2' },
      ],
      formats: ['markdown'],
    }
  }
});
```

### createCrawl

リンクをたどってウェブサイト全体を自律的に発見し、スクレイプします。ドキュメントサイト、ブログ、コンテンツリポジトリに最適。

**使用例:**

* ドキュメントサイト全体をクロールしてアーカイブ
* ウェブサイトからすべてのブログ投稿を抽出
* ウェブコンテンツからナレッジベースを構築
* ウェブサイト構造の変更を監視

**スキーマパラメータ:**

<ParamField path="apiKey" type="string" required>
  あなたのOlostep APIキー
</ParamField>

<ParamField path="start_url" type="string" required>
  クロールの開始URL（[http://またはhttps://を含む必要があります）](http://またはhttps://を含む必要があります）)
</ParamField>

<ParamField path="max_pages" type="number" default="10">
  クロールする最大ページ数。`1`に設定すると開始URLのみをスクレイプします。
</ParamField>

<ParamField path="formats" type="array" default="['markdown']">
  スクレイプされたコンテンツのフォーマット
</ParamField>

<ParamField path="country" type="string">
  ロケーション特有のクロールのためのオプションの国コード
</ParamField>

<ParamField path="parser" type="string">
  特殊なコンテンツ抽出のためのオプションのパーサーID
</ParamField>

**レスポンス:**

* `id` - クロールID（後で結果を取得するために使用）
* `object` - オブジェクトタイプ ("crawl")
* `status` - クロールステータス
* `created` - Unixタイムスタンプ

**使用例:**

```typescript theme={null}
const result = await mastra.callApi({
  integrationName: 'olostep',
  api: 'createCrawl',
  payload: {
    data: {
      apiKey: process.env.OLOSTEP_API_KEY,
      start_url: 'https://docs.example.com',
      max_pages: 50,
      formats: ['markdown'],
    }
  }
});
```

### createMap

コンテンツ発見とサイト構造分析のためにウェブサイトからすべてのURLを抽出します。

**使用例:**

* サイトマップとサイト構造図を構築
* バッチスクレイプの前にすべてのページを発見
* 壊れたページや不足しているページを見つける
* SEO監査と分析

**スキーマパラメータ:**

<ParamField path="apiKey" type="string" required>
  あなたのOlostep APIキー
</ParamField>

<ParamField path="url" type="string" required>
  リンクを抽出するウェブサイトのURL（[http://またはhttps://を含む必要があります）](http://またはhttps://を含む必要があります）)
</ParamField>

<ParamField path="search_query" type="string">
  URLをフィルタリングするためのオプションの検索クエリ（例："blog"）
</ParamField>

<ParamField path="top_n" type="number">
  返されるURLの数を制限
</ParamField>

<ParamField path="include_urls" type="array">
  特定のパスを含めるためのグロブパターン（例：\["/blog/\*\*"]）
</ParamField>

<ParamField path="exclude_urls" type="array">
  特定のパスを除外するためのグロブパターン（例：\["/admin/\*\*"]）
</ParamField>

**レスポンス:**

* `id` - マップID
* `object` - オブジェクトタイプ ("map")
* `url` - ウェブサイトのURL
* `total_urls` - 見つかったURLの総数
* `urls` - 発見されたURLの配列

**使用例:**

```typescript theme={null}
const result = await mastra.callApi({
  integrationName: 'olostep',
  api: 'createMap',
  payload: {
    data: {
      apiKey: process.env.OLOSTEP_API_KEY,
      url: 'https://example.com',
      search_query: 'blog',
      top_n: 100,
      include_urls: ['/blog/**'],
    }
  }
});
```

## エージェントでの使用

### 基本的なエージェントの例

ウェブサイトをスクレイプできるエージェントを作成：

```typescript theme={null}
import { Agent } from '@mastra/core';
import { createOlostepIntegration } from '@olostep/mastra-tools';

const olostep = createOlostepIntegration();
olostep.registerApis();

const agent = new Agent({
  name: 'web-researcher',
  instructions: `
    あなたはウェブリサーチアシスタントです。ユーザーがウェブサイトから情報を取得するように頼んだ場合、
    OlostepのscrapeWebsite APIを使用してコンテンツを抽出し、それを要約して提供します。
  `,
  model: 'openai/gpt-4',
});

// エージェントはMastraのAPIシステムを通じてOlostep APIを使用できます
```

### エージェントワークフローの例

コンテンツを発見しスクレイプするリサーチワークフローを構築：

```typescript theme={null}
// 1. ウェブサイトをマップしてURLを発見
const mapResult = await mastra.callApi({
  integrationName: 'olostep',
  api: 'createMap',
  payload: {
    data: {
      apiKey: process.env.OLOSTEP_API_KEY,
      url: 'https://example.com',
      include_urls: ['/blog/**'],
    }
  }
});

// 2. 発見されたURLをバッチスクレイプ
const batchResult = await mastra.callApi({
  integrationName: 'olostep',
  api: 'batchScrape',
  payload: {
    data: {
      apiKey: process.env.OLOSTEP_API_KEY,
      batch_array: mapResult.urls.slice(0, 10).map(url => ({ url })),
      formats: ['markdown'],
    }
  }
});

// 3. エージェントで結果を処理
const summary = await agent.generate({
  messages: [{
    role: 'user',
    content: `このコンテンツを要約してください: ${batchResult.result.markdown_content}`
  }]
});
```

## 人気のある使用例

### リサーチエージェント

自律的にトピックをリサーチするエージェントを構築：

<AccordionGroup>
  <Accordion title="マルチソースリサーチ">
    **ワークフロー:**

    1. ユーザーが尋ねる: "AIトレンドをリサーチ"
    2. エージェントが`createMap`を使用して関連ページを発見
    3. エージェントが`batchScrape`を使用してコンテンツを抽出
    4. エージェントが分析し、結果を要約
    5. 構造化されたリサーチレポートを返す
  </Accordion>

  <Accordion title="競合モニタリング">
    **ワークフロー:**

    1. 日次モニタリングをスケジュール
    2. `scrapeWebsite`を使用して競合ページを確認
    3. 前のデータと比較
    4. 重要な変更をアラート
    5. 週次レポートを生成
  </Accordion>

  <Accordion title="コンテンツ集約">
    **ワークフロー:**

    1. `createCrawl`を使用してすべてのブログ投稿を発見
    2. `batchScrape`を使用してコンテンツを抽出
    3. AIで主要トピックを抽出
    4. ナレッジベースに保存
    5. コンテンツカレンダーを生成
  </Accordion>
</AccordionGroup>

### Eコマースインテリジェンス

商品と価格を監視：

```
エージェントワークフロー:
1. 商品ページをスクレイプ (scrapeWebsite)
2. 構造化データを抽出 (パーサーを使用)
3. 価格の変動を追跡
4. アラートを生成
5. データベースを更新
```

### SEO分析

ウェブサイトの構造とコンテンツを分析：

```
エージェントワークフロー:
1. ウェブサイト構造をマップ (createMap)
2. 重要なセクションをクロール (createCrawl)
3. コンテンツの質を分析
4. SEOの機会を特定
5. 推奨事項を生成
```

## 専門的なパーサー

Olostepは人気のあるウェブサイト向けの事前構築されたパーサーを提供しています。`parser`パラメータで使用：

<CardGroup cols={2}>
  <Card title="Google検索" icon="google">
    `@olostep/google-search`

    抽出: 検索結果、タイトル、スニペット、URL
  </Card>

  <Card title="Googleマップ" icon="map">
    `@olostep/google-maps`

    抽出: ビジネス情報、レビュー、評価、位置
  </Card>
</CardGroup>

### パーサーの使用

`parser`パラメータにパーサーIDを追加：

```typescript theme={null}
const result = await mastra.callApi({
  integrationName: 'olostep',
  api: 'scrapeWebsite',
  payload: {
    data: {
      apiKey: process.env.OLOSTEP_API_KEY,
      url_to_scrape: 'https://www.amazon.com/dp/PRODUCT_ID',
      formats: ['json'],
      parser: '@olostep/amazon-product',
    }
  }
});
```

パーサーはそのウェブサイトタイプに特化した構造化データを自動的に抽出します。

## ベストプラクティス

<AccordionGroup>
  <Accordion title="複数のURLに対してバッチ処理を使用">
    3〜5以上のURLをスクレイプする場合は、複数の`scrapeWebsite`呼び出しの代わりに`batchScrape`を使用してください。バッチ処理は：

    * はるかに高速（並列処理）
    * よりコスト効率が高い
    * 管理が容易
    * レート制限に優しい
  </Accordion>

  <Accordion title="適切な待機時間を設定">
    JavaScriptが多用されているサイトには、`wait_before_scraping`パラメータを使用：

    * シンプルなサイト：0-1000ms
    * 動的なサイト：2000-3000ms
    * JavaScriptが多い：5000-8000ms

    最適な待機時間を見つけるために異なる値でテストしてください。
  </Accordion>

  <Accordion title="専門的なパーサーを使用">
    人気のあるウェブサイト（Amazon、LinkedIn、Google）には事前構築されたパーサーを使用：

    * 構造化データを自動的に取得
    * より信頼性の高い抽出
    * カスタムパーシングの必要なし
    * Olostepによって維持管理
  </Accordion>

  <Accordion title="非同期操作を処理">
    バッチ、クロール、マップ操作は非同期：

    * 返されたID（batch\_id、crawl\_id、map\_id）を保存
    * 完了をポーリングまたはWebhookを使用
    * 結果取得のための別のワークフローを設定
  </Accordion>

  <Accordion title="エラーハンドリング">
    常にAPI呼び出しをtry-catchブロックでラップ：

    ```typescript theme={null}
    try {
      const result = await mastra.callApi({
        integrationName: 'olostep',
        api: 'scrapeWebsite',
        payload: { data: {...} }
      });
    } catch (error) {
      // 認証、レート制限、またはネットワークエラーを処理
      console.error('スクレイピング失敗:', error.message);
    }
    ```
  </Accordion>

  <Accordion title="レート制限">
    レート制限に注意：

    * リクエストを遅延させて間隔を空ける
    * 可能な限りバッチ処理を使用
    * Olostepダッシュボードで使用状況を監視
    * 必要に応じてプランをアップグレード
  </Accordion>
</AccordionGroup>

## 完全な例

リサーチエージェントを構築する完全な例を示します：

```typescript theme={null}
import { Mastra } from '@mastra/core';
import { Agent } from '@mastra/core';
import { createOlostepIntegration } from '@olostep/mastra-tools';

// Olostep統合を作成して登録
const olostep = createOlostepIntegration();
olostep.registerApis();

// Mastraを初期化
export const mastra = new Mastra({
  config: {
    integrations: [olostep],
    // ... 他の設定
  },
});

// リサーチエージェントを作成
const researchAgent = new Agent({
  name: 'research-assistant',
  instructions: `
    あなたはウェブデータを検索、抽出、構造化できるリサーチアシスタントです。
    ユーザーがトピックをリサーチするように頼んだ場合：
    1. OlostepのcreateMapを使用して関連ページを発見
    2. batchScrapeを使用して複数のソースからコンテンツを抽出
    3. 結果を分析し要約
    4. 構造化されたリサーチレポートを提示
  `,
  model: 'openai/gpt-4',
});

// エージェントを使用
async function researchTopic(topic: string) {
  // ステップ1: 関連ページを発見
  const mapResult = await mastra.callApi({
    integrationName: 'olostep',
    api: 'createMap',
    payload: {
      data: {
        apiKey: process.env.OLOSTEP_API_KEY!,
        url: `https://example.com/search?q=${topic}`,
        top_n: 20,
      }
    }
  });

  // ステップ2: 発見されたページをスクレイプ
  const batchResult = await mastra.callApi({
    integrationName: 'olostep',
    api: 'batchScrape',
    payload: {
      data: {
        apiKey: process.env.OLOSTEP_API_KEY!,
        batch_array: mapResult.urls.slice(0, 10).map(url => ({ url })),
        formats: ['markdown'],
      }
    }
  });

  // ステップ3: エージェントで分析
  const summary = await researchAgent.generate({
    messages: [{
      role: 'user',
      content: `このリサーチデータに基づいて、${topic}の包括的な要約を提供してください`
    }]
  });

  return summary;
}
```

## トラブルシューティング

<AccordionGroup>
  <Accordion title="認証失敗">
    **エラー**: "無効なAPIキー"

    **解決策**:

    * [ダッシュボード](https://olostep.com/dashboard)からAPIキーを確認
    * APIキーが環境変数に設定されていることを確認
    * APIキーがアクティブであることを確認
    * APIキーに余分なスペースがないか確認
  </Accordion>

  <Accordion title="APIが見つからない">
    **エラー**: "APIが見つからない" または "統合が登録されていない"

    **解決策**:

    * 統合を作成した後に`registerApis()`が呼び出されていることを確認
    * 統合がMastra設定に追加されていることを確認
    * 統合名が'olostep'であることを確認
    * 変更後にMastraサーバーを再起動
  </Accordion>

  <Accordion title="スクレイプが空のコンテンツを返す">
    **エラー**: コンテンツフィールドが空

    **解決策**:

    * `wait_before_scraping`時間を増やす
    * ウェブサイトがログインを必要としているか確認
    * 異なるフォーマットを試す（HTML vs Markdown）
    * URLがアクセス可能であることを確認
    * サイトが自動アクセスをブロックしているか確認
  </Accordion>

  <Accordion title="レート制限超過">
    **エラー**: "レート制限超過"

    **解決策**:

    * リクエストを遅延させて間隔を空ける
    * 個別のスクレイプの代わりにバッチ処理を使用
    * Olostepプランをアップグレード
    * ダッシュボードでレート制限を確認
  </Accordion>

  <Accordion title="TypeScriptエラー">
    **エラー**: モジュールが見つからないまたはタイプエラー

    **解決策**:

    * `@mastra/core`がインストールされていることを確認
    * TypeScriptバージョンの互換性を確認
    * すべての依存関係がインストールされていることを確認
    * 再ビルド: `npm run build`
  </Accordion>
</AccordionGroup>

## 価格

OlostepはAPI使用量に基づいて課金され、Mastraとは独立しています：

* **スクレイプ**: スクレイプごとに課金
* **バッチ**: バッチ内のURLごとに課金
* **クロール**: クロールされたページごとに課金
* **マップ**: マップ操作ごとに課金

現在の価格は[olostep.com/pricing](https://www.olostep.com/pricing)で確認してください。

## サポート

Mastra統合に関するヘルプが必要ですか？

<CardGroup cols={2}>
  <Card title="ドキュメント" icon="book" href="https://docs.olostep.com">
    完全なAPIドキュメントを閲覧
  </Card>

  <Card title="サポートメール" icon="envelope" href="mailto:info@olostep.com">
    メール: [info@olostep.com](mailto:info@olostep.com)
  </Card>

  <Card title="Mastraドキュメント" icon="robot" href="https://mastra.ai/docs">
    Mastraフレームワークについて学ぶ
  </Card>
</CardGroup>

## 関連リソース

<CardGroup cols={2}>
  <Card title="スクレイプAPI" icon="file-lines" href="/features/scrapes">
    スクレイプエンドポイントについて学ぶ
  </Card>

  <Card title="バッチAPI" icon="layer-group" href="/features/batches">
    バッチエンドポイントについて学ぶ
  </Card>

  <Card title="クロールAPI" icon="spider-web" href="/features/crawls">
    クロールエンドポイントについて学ぶ
  </Card>

  <Card title="マップAPI" icon="map" href="/features/maps">
    マップエンドポイントについて学ぶ
  </Card>

  <Card title="Zapier統合" icon="bolt" href="/integrations/zapier">
    Zapierワークフローで自動化
  </Card>

  <Card title="LangChain統合" icon="link" href="/integrations/langchain">
    LangChainでAIエージェントを構築
  </Card>

  <Card title="Mastraウェブサイト" icon="link" href="https://mastra.ai">
    Mastraプラットフォーム
  </Card>
</CardGroup>

## はじめに

ウェブスクレイピング機能を持つAIエージェントを構築する準備はできましたか？

<Card title="パッケージをインストール" icon="download" href="https://www.npmjs.com/package/@olostep/mastra-tools">
  npmから@olostep/mastra-toolsをインストール
</Card>

OlostepとMastraを使用して、ウェブデータを検索、抽出、構造化できるインテリジェントなAIエージェントを構築しましょう！
