Guides
Practical notes from running a screenshot & PDF rendering service in production.
How to convert any web page to Markdown for LLMs (Python & Node.js)
Render JavaScript, extract the main content, fix relative links and layout tables, and chunk for RAG — turn web pages into clean Markdown for LLMs.
Dynamic Open Graph images from HTML templates (that cost almost nothing)
Generate 1200×630 social preview images from HTML/CSS templates, render them with a headless browser or API, and cache them so viral posts stay free.
How to take a full-page screenshot with Puppeteer or Playwright (and fix the 6 common problems)
Full-page screenshots in Puppeteer and Playwright: code, plus fixes for lazy-loaded images, cookie banners, missing fonts, sticky headers, animations and timeouts.
HTML to PDF in Node.js and Python: 4 approaches compared
Compare wkhtmltopdf, WeasyPrint, headless Chrome (Puppeteer/Playwright) and hosted APIs for converting HTML to PDF — with code, CSS print tips and trade-offs.
Your headless browser is an SSRF cannon: how we locked ours down
URL validation isn't enough to stop SSRF in Puppeteer/Playwright screenshot services. Redirects, iframes and DNS rebinding bypass it. Here's the kernel-level fix.