What problem does it solve? Plain HTTP fetches fail on JavaScript-rendered pages and Cloudflare bot-check interstitials, returning empty bodies or challenge pages instead of content. This Skill explains how to choose between and run the two self-hosted rendering services in the render-url-to-html package: a Dockerised Puppeteer proxy with stealth evasion and a JSDOM-based scraper with scripted automation steps. ## Core Features & Use Cases - Renderer Selection Guide: Decision table mapping situations (static HTML, JS rendering, Cloudflare bot checks, serverless sessions) to the right tool: plain fetch, scraper-jsdom, scraper-puppeteer, or the Cloudflare Worker html-renderer-api. - scraper-puppeteer Operation: Run the Koa proxy over puppeteer-extra with the stealth plugin in Docker, send URLs as query parameters, and receive fully rendered responses with hop-by-hop headers stripped. - scraper-jsdom Automation: Use the JSDomScraper class with click, type, and waitFor automation steps plus custom scripts to extract title, meta description, text, links, and script results. - Use Case: A scraper pipeline hits a Cloudflare interstitial on a target site. You deploy scraper-puppeteer via docker compose, route requests through it, and add a residential proxy via PROXY_URL when stealth alone is insufficient. ## Quick Start Ask the assistant to help you render a JavaScript-heavy page that returns a bot-check page, and it will guide you through picking and running the right rendering service.