YOLO PUSHYOLO PUSHBETA✦

URL to Markdown & Video

Convert public URLs to clean, LLM-ready markdown, capture screenshots, or render smooth scrolling MP4s at a controlled speed. Every destination and redirect is validated before fetching.

MarkdownScreenshotsScrolling MP4
https://md.yolopush.com/<url>

Try it

Scrolling video API

Turn a public page into a smooth scrolling video

Submit a URL, capture method, and scroll speed, then receive a seekable MP4 suitable for demos, launch posts, product previews, and automated content pipelines.

OpenAPI 3.1

Smooth MP4 output

Quality-checked live capture or a deterministic 30 fps static pan, encoded as fast-start H.264.

Controlled scroll speed

Use slow (160 px/s), normal (240), fast (400), or a custom speed from 80–800 px/s.

Asynchronous rendering

Queue a 2–30 second render, poll its status, then stream the result with HTTP Range support.

How it works

  1. 1Queue. POST a public URL and receive 202 Accepted with a statusUrl.
  2. 2Poll. Check the status while the job is queued or processing.
  3. 3Play. When ready, stream or download videoUrl as an H.264 MP4.
API key required

Keep SCROLL_VIDEO_API_KEY in your backend or deployment secret manager. Never ship the shared key in browser code. The live Toolbox intentionally does not ask for or expose it.

Results and job records expire after seven days. Public HTTP/HTTPS pages on default ports are supported; authenticated-page cookies are not forwarded.

Use auto unless you need to force live sticky/canvas behavior or a deterministic static_pan. Auto records the method actually used in the ready-job diagnostics.

Server-side examples

Set the environment variable in the calling service, then run the sequence below.

1. Create a normal-speed video
curl --request POST 'https://md.yolopush.com/v1/scroll-videos' \
  --header "Authorization: Bearer ${SCROLL_VIDEO_API_KEY}" \
  --header 'Content-Type: application/json' \
  --data '{
    "url": "https://example.com",
    "captureMethod": "auto",
    "speed": "normal",
    "maxDurationSeconds": 20,
    "viewport": { "width": 1280, "height": 720 },
    "waitAfterLoadMs": 2000
  }'
2. Poll the render job
curl --header "Authorization: Bearer ${SCROLL_VIDEO_API_KEY}" \
  'https://md.yolopush.com/v1/scroll-videos/<job-id>'
3. Download the MP4
curl --header "Authorization: Bearer ${SCROLL_VIDEO_API_KEY}" \
  --output scroll.mp4 \
  'https://md.yolopush.com/v1/scroll-videos/<job-id>/video'

Screenshot reliability and caching

Send X-Return-Format: screenshot for a PNG. Reader options are headers; all query parameters belong to the target URL. Screenshots use a fresh browser with its cache disabled, skip the reader cache, and return Cache-Control: no-store and X-Cache: BYPASS. X-No-Cache: true bypasses the one-hour cache for markdown and brand results. Origin/CDN asset caches remain controlled by the destination.

Captures wait for network settling, stylesheets, fonts and visible images within X-Timeout. A successful capture is a 200 image/png response. Failures return non-2xx JSON with success: false, error and errorCode: screenshot_incomplete for missing visual resources or unsupported visible frames, site_protected for an anti-bot page, request_timeout for a timeout, or screenshot_failed for other browser failures. Embedded frames, workers, popups and WebSockets are disabled to keep network validation contained. Documents are limited to 5 MiB and PNGs to 10 MiB. Slow pages may need X-Timeout: 60.

5-Layer Cascade Pipeline

1
Quick ExtractLightweight markdown negotiation
FreeInstant
2
AI EnhancedAI-powered HTML conversion
Free~500ms
3
Deep RenderFull headless browser rendering
Free~2-5s
4
Fallback ParseDOM parse — last resort
Free~200ms

Each layer is tried in order. The first one to return >200 chars of content wins. If a layer fails, the next one kicks in automatically.

Request Headers

Header
Values
Default
X-Return-Format
markdown, html, text, screenshot, brand
markdown
X-No-Cache
true / false (screenshots are always uncached)
false
Accept
application/json (JSON envelope for text formats)
text/plain
X-Target-Selector
CSS selector
—
X-Wait-For-Selector
CSS selector
—
X-Remove-Selector
CSS selector (e.g. nav, footer, .ads)
—
X-With-Links-Summary
none / all / dedup
none
X-With-Images-Summary
none / all / dedup
none
X-AI-Image-Description-Language
en / it / de / es / fr / pt
—
X-AI-HTML-Hostname
hostname (e.g. docs.example.com)
source host
X-AI-PDF-Metadata
true / false
false
X-Retain-Images
all / none
all
X-Token-Budget
number (min 100)
—
X-Md-Link-Style
inline / referenced / discarded
inline
X-Engine
auto / browser / direct
auto
X-Viewport-Width
number (pixels)
1920 for screenshots
X-Viewport-Height
number (pixels)
1080 for screenshots
X-Set-Cookie
cookie string
—
X-Timeout
5-60 (seconds)
30

Example URLs

Response Headers

X-ProviderWhich extraction layer produced the result (e.g. quick-extract, ai-enhanced, deep-render)
X-Duration-MsTime taken to scrape the URL in milliseconds
X-Markdown-TokensEstimated token count of the markdown output

cURL Examples

Get markdown
curl "https://md.yolopush.com/https://example.com"
JSON response
curl -H "Accept: application/json" "https://md.yolopush.com/https://example.com"
Screenshot (fresh PNG, 1440 × 900)
curl --fail-with-body -H "X-Return-Format: screenshot" -H "X-No-Cache: true" -H "X-Viewport-Width: 1440" -H "X-Viewport-Height: 900" -o screenshot.png "https://md.yolopush.com/https://example.com"
HTML response
curl -H "X-Return-Format: html" "https://md.yolopush.com/https://example.com"
Plain text
curl -H "X-Return-Format: text" "https://md.yolopush.com/https://example.com"
Remove nav & footer
curl -H "X-Remove-Selector: nav, footer, .sidebar" "https://md.yolopush.com/https://example.com"
Dedup links summary
curl -H "X-With-Links-Summary: dedup" "https://md.yolopush.com/https://example.com"
Disable PDF metadata
curl -H "X-AI-PDF-Metadata: false" "https://md.yolopush.com/https://example.com/report.pdf"
Direct mode (fast)
curl -H "X-Engine: direct" "https://md.yolopush.com/https://example.com"