Now liveThe Skillselion MCP - thousands of ranked skills, loaded into your agent mid-task. No install.Get it →
cloudflare avatar

Cloudflare Browser

  • 33 installs
  • 9.9k repo stars
  • Updated May 9, 2026
  • cloudflare/moltworker

cloudflare-browser controls headless Chrome via Cloudflare CDP.

About

The cloudflare-browser skill automates headless Chrome through Cloudflare Browser Rendering CDP WebSocket with CDP_SECRET and cdpUrl profile configuration. Provides screenshot.js and video.js scripts, Target.targetCreated handling, and Page.navigate captureScreenshot Runtime.evaluate and viewport commands.

  • CDP WebSocket browser automation on Workers.
  • Screenshot and video capture scripts.
  • Target.targetCreated page target handling.
  • Viewport scroll and evaluate patterns.
  • CDP_SECRET and cdpUrl prerequisites.

Cloudflare Browser by the numbers

  • 33 all-time installs (skills.sh)
  • Ranked #1,197 of 2,715 Automation & Workflows skills by installs in the Skillselion catalog
  • Data as of Aug 5, 2026 (Skillselion catalog sync)
At a glance

cloudflare-browser capabilities & compatibility

Capabilities
cdp commands and scripts
Works with
cloudflare
Use cases
web scraping
From the docs

What cloudflare-browser says it does

Control headless Chrome via Cloudflare Browser Rendering CDP WebSocket
SKILL.md
npx skills add https://github.com/cloudflare/moltworker --skill cloudflare-browser

Add your badge

Show developers this skill is listed on Skillselion. Paste this into your README.

Listed on Skillselion
Installs33
repo stars9.9k
Last updatedMay 9, 2026
Repositorycloudflare/moltworker

How do I screenshot pages with Cloudflare Browser Rendering?

Control headless Chrome via Cloudflare Browser Rendering CDP WebSocket.

Who is it for?

Agents automating browsers on Cloudflare Workers.

Skip if: Skip for local-only browser tools.

When should I use this skill?

Browser automation on Cloudflare with CDP.

What you get

Captured PNG or MP4 from CDP scripts.

Files

SKILL.mdMarkdownGitHub ↗

Cloudflare Browser Rendering

Control headless browsers via Cloudflare's Browser Rendering service using CDP (Chrome DevTools Protocol) over WebSocket.

Prerequisites

  • CDP_SECRET environment variable set
  • Browser profile configured in openclaw.json with cdpUrl pointing 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

CommandPurpose
Page.navigateNavigate to URL
Page.captureScreenshotCapture PNG/JPEG
Runtime.evaluateExecute JavaScript
Emulation.setDeviceMetricsOverrideSet 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

1. Capture frames as PNGs during navigation 2. 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

Related skills

FAQ

What does cloudflare-browser do?

cloudflare-browser controls headless Chrome via Cloudflare CDP.

When should I use cloudflare-browser?

Browser automation on Cloudflare with CDP.

Is this skill safe to install?

Review the Security Audits panel on this page before installing in production.

This week in AI coding

Five minutes, every Monday - the tools, releases and tactics for developers.

unsubscribe anytime.