起点URLから再帰的にリンクを辿り、サイト全体の構造をThree.jsでインタラクティブに可視化します。
Cloudflare Workerが起点URLからBFSでリンクを全て探査します。
クロール結果がnodes(ページ)とlinks(リンク関係)としてJSON出力されます。
Three.jsでインタラクティブな3Dグラフを描画。力指向と階層ツリーを切替可能。
// POST /api/crawl
const response = await fetch('/api/crawl', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
url: 'https://example.com',
depth: 2,
sameOriginOnly: true
})
});
// ストリーミングレスポンス
const reader = response.body.getReader();
while (true) {
const { done, value } = await reader.read();
if (done) break;
const lines = new TextDecoder().decode(value).split('\n');
for (const line of lines) {
const event = JSON.parse(line);
if (event.type === 'progress') updateProgress(event.progress);
if (event.type === 'complete') renderGraph(event.data);
}
}