cloudflare-browser
작성자: cloudflare
Cloudflare Browser Rendering CDP WebSocket를 통해 헤드리스 Chrome을 제어합니다. 브라우저가 필요할 때 스크린샷, 페이지 탐색, 스크래핑, 비디오 캡처에 사용합니다.
npx skills add https://github.com/cloudflare/moltworker --skill cloudflare-browserCloudflare Browser Rendering
Control headless browsers via Cloudflare's Browser Rendering service using CDP (Chrome DevTools Protocol) over WebSocket.
Prerequisites
CDP_SECRETenvironment variable set- Browser profile configured in openclaw.json with
cdpUrlpointing to the worker endpoint:"browser": { "profiles": { "cloudflare": { "cdpUrl": "https://your-worker.workers.dev/cdp?secret=..." } } }
Quick Start
Screenshot
node /path/to/skills/cloudflare-browser/scripts/screenshot.js https://example.com output.png
Multi-page Video
node /path/to/skills/cloudflare-browser/scripts/video.js "https://site1.com,https://site2.com" output.mp4
CDP Connection Pattern
The worker creates a page target automatically on WebSocket connect. Listen for Target.targetCreated event to get the targetId:
const WebSocket = require('ws');
const CDP_SECRET = process.env.CDP_SECRET;
const WS_URL = `wss://your-worker.workers.dev/cdp?secret=${encodeURIComponent(CDP_SECRET)}`;
const ws = new WebSocket(WS_URL);
let targetId = null;
ws.on('message', (data) => {
const msg = JSON.parse(data.toString());
if (msg.method === 'Target.targetCreated' && msg.params?.targetInfo?.type === 'page') {
targetId = msg.params.targetInfo.targetId;
}
});
Key CDP Commands
| Command | Purpose |
|---|---|
| Page.navigate | Navigate to URL |
| Page.captureScreenshot | Capture PNG/JPEG |
| Runtime.evaluate | Execute JavaScript |
| Emulation.setDeviceMetricsOverride | Set viewport size |
Common Patterns
Navigate and Screenshot
await send('Page.navigate', { url: 'https://example.com' });
await new Promise(r => setTimeout(r, 3000)); // Wait for render
const { data } = await send('Page.captureScreenshot', { format: 'png' });
fs.writeFileSync('out.png', Buffer.from(data, 'base64'));
Scroll Page
await send('Runtime.evaluate', { expression: 'window.scrollBy(0, 300)' });
Set Viewport
await send('Emulation.setDeviceMetricsOverride', {
width: 1280,
height: 720,
deviceScaleFactor: 1,
mobile: false
});
Creating Videos
- Capture frames as PNGs during navigation
- Use ffmpeg to stitch:
ffmpeg -framerate 10 -i frame_%04d.png -c:v libx264 -pix_fmt yuv420p output.mp4
Troubleshooting
- No target created: Race condition - wait for Target.targetCreated event with timeout
- Commands timeout: Worker may have cold start delay; increase timeout to 30-60s
- WebSocket hangs: Verify CDP_SECRET matches worker configuration
cloudflare의 다른 스킬
write-endpoints
cloudflare
chanfana를 사용한 OpenAPI 엔드포인트 구축을 위한 종합 가이드 - 스키마 정의, 요청 검증, CRUD 작업, D1 데이터베이스 통합 등
official
agents-sdk
cloudflare
Cloudflare Workers에서 Agents SDK를 사용하여 AI 에이전트를 구축하세요. 상태 저장 에이전트, 지속 가능한 워크플로우, 실시간 WebSocket 앱, 예약된 작업 등을 생성할 때 로드하세요.
official
building-ai-agent-on-cloudflare
cloudflare
Cloudflare의 Agents SDK를 사용하여 지속적 상태, 실시간 통신, 도구 통합을 갖춘 AI 기반 에이전트를 생성합니다.
official
building-mcp-server-on-cloudflare
cloudflare
Cloudflare Workers에서 도구, 인증, 배포를 포함한 프로덕션 준비 완료 Model Context Protocol 서버를 생성합니다.
official
changelog
cloudflare
Cloudflare 문서 사이트의 제품 변경 로그 항목을 생성, 업데이트 및 검토합니다. 변경 로그 MDX 파일을 생성하거나 기존 파일을 편집할 때 로드합니다.
official
cloudflare
cloudflare
Cloudflare 플랫폼 전반을 다루는 스킬로, Workers, Pages, 스토리지(KV, D1, R2), AI(Workers AI, Vectorize, Agents SDK), 네트워킹(Tunnel, Spectrum) 등을 포함합니다.
official
code-review
cloudflare
작업자 및 Cloudflare Developer Platform 코드의 타입 정확성, API 사용법, 구성 유효성을 검토합니다. TypeScript/JavaScript를 검토할 때 로드합니다…
official
docs-review
cloudflare
문서 PR을 검토하고 GitHub PR 제안을 제공합니다. 문서 내용에 대한 리뷰, 변경 제안 또는 피드백을 요청받을 때 로드됩니다. MDX 등을 다룹니다.
official