コンテンツにスキップ

Webクローラーエージェント

Web Crawler Agentは、Webページをクローリングしてコンテンツを抽出し、文書分析パイプラインに接続するエージェントです。AgentCore Browserで実際のブラウザを制御し、D2SnapアルゴリズムでHTMLを圧縮してLLMトークンを節約します。

ユーザーが.webreqファイルをアップロード
│ EventBridge
SQSキュー
Webcrawler Consumer Lambda
│ bedrock-agentcore:InvokeAgentRuntime
Web Crawler Agent(AgentCore Runtime)
├─ AgentCore Browser(Playwright)
├─ D2Snap(HTML圧縮)
└─ S3保存(ページ単位JSON)

  1. ユーザーが.webreqファイル(URL + 指示事項)をS3にアップロード
  2. EventBridge → SQS → Lambda ConsumerがAgentCore Runtimeを呼び出し
  3. エージェントが.webreqファイルをS3からダウンロードし、URLと指示事項を抽出
  4. AgentCore Browserでページを探索:
    • スクリーンショット撮影(視覚的分析)
    • HTML抽出 → D2Snap圧縮
    • Markdownでコンテンツ抽出
    • save_pageでS3に保存
    • リンク評価 → 追加ページのクローリング
  5. メタデータ保存、DynamoDBステータス更新

ツール説明
browserページ遷移、スクリーンショット、クリック、入力、スクロール
get_compressed_htmlD2SnapでHTML圧縮後に返却
save_page抽出コンテンツをページ単位JSONでS3に保存
get_current_time現在時刻取得(UTC、US/Eastern、US/Pacific、Asia/Seoul)

D2Snap(DOM Downsampling for Static Page Analysis)は、HTMLから不要な要素を除去し、LLMトークン使用量を70〜90%削減します。

元のHTML
├─ 1. 非コンテンツ除去: <script>、<style>、<svg>、<iframe>、コメント
├─ 2. 非表示要素除去: aria-hidden、display:none
├─ 3. 属性簡素化: id、class、href、src、alt、roleなどのみ保持
└─ 4. コンテンツ制限: テキスト500文字、リスト10項目、テーブル20行
圧縮されたHTML(70〜90%トークン削減)
戦略保存対象用途
content_extraction見出し、段落、リスト、テーブルコンテンツ抽出
browser_automationボタン、フォーム、入力、ナビゲーションブラウザ自動化
hybridコンテンツ + ナビゲーション + メディアWebクローリング(デフォルト)

{
"url": "https://example.com/article",
"instruction": "メイン記事の内容に集中(オプション)"
}
s3://bucket/projects/{project_id}/documents/{doc_id}/
└── webcrawler/
├── metadata.json
└── pages/
├── page_0000.json ← { url, title, content, crawled_at }
├── page_0001.json
└── page_0002.json

クローリングの進行状況をDynamoDBに記録します。

PKSK用途
WEB#{document_id}WF#{workflow_id}前処理ステータス(status、started_at、ended_at)
WF#{workflow_id}STEPワークフローステップステータス

  • クローリング当たり最大約20ページ
  • エージェントタイムアウト:デフォルト1800秒(30分)、AGENT_TIMEOUT_SECSで設定可能
  • Playwrightのcontextvars競合防止のため、ブラウザ操作はスレッディングロックで直列化