Find the media stream behind any web page: browser-driven HLS/DASH/MP4 with learnable site profiles
MCPpedia last refreshed this data
io.github.josesepulvedapino/zahori is an MCP server that find the media stream behind any web page: browser-driven HLS/DASH/MP4 with learnable site profiles. Its tool list has not been published yet over stdio, sse and http, requires no API key, and scores 85/100 on MCPpedia's security, maintenance and efficiency rubric.
Config is the same across clients - only the file and path differ.
{
"mcpServers": {
"io-github-josesepulvedapino-zahori": {
"args": [
"-y",
"zahori"
],
"command": "npx"
}
}
}Are you the author?
Add this badge to your README to show your security score and help users find safe servers.
Find the media stream behind any web page: browser-driven HLS/DASH/MP4 with learnable site profiles
Run this in your terminal to verify the server starts. Then let us know if it worked - your result helps other developers.
npx -y 'zahori' 2>&1 | head -1 && echo "✓ Server started successfully"
After testing, let us know if it worked:
Five weighted categories - click any category to see the underlying evidence.
No known CVEs.
Checked zahori against OSV.dev.
Click any tool to inspect its schema.
Be the first to review
Have you used this server?
Share your experience - it helps other developers decide.
Sign in to write a review.
Others in browser
Open-source web scraper for AI agents with scrape, crawl, and map tools
Firecrawl, the context API for AI agents: search, scrape, interact with the web, plus paper search.
Search-first MCP server for JavaScript reverse engineering: 735 tools across 36 domains.
Extract data from any website with thousands of scrapers, crawlers, and automations on Apify Store ⚡
MCP Security Weekly
Get CVE alerts and security updates for io.github.josesepulvedapino/zahori and similar servers.
Start a conversation
Ask a question, share a tip, or report an issue.
Sign in to join the discussion.
Find the media stream behind any web page.
A real browser opens the page, dismisses the overlays, presses play, and watches the network until the media request appears. You get the stream URL (HLS, DASH, MP4 or audio) plus the headers needed to replay it.
$ npx zahori get https://example.org/live
https://cdn.example.org/hls/live/master.m3u8
No per-site configuration. No extractor to wait for. If a browser can play it, zahori can find it.
zahori heal repairs a profile when the site changes, using a BYO-key model, verified by an objective oracle before anything is saved.The long tail of the web streams through embedded players that no downloader knows: local TV and radio stations, live event pages, small video portals. yt-dlp is superb for the big platforms it curates extractors for. But the long tail has no extractor, and hand-writing one per site doesn't scale.
| yt-dlp | zahori | |
|---|---|---|
| Coverage | ~1,800 curated sites | any page a browser can open |
| Method | per-site extractor code | real browser + network sniffing |
| New site | wait for a maintainer | works generically, or learn it in minutes |
| Site changed | extractor breaks until patched | zahori heal repairs the profile |
They are complementary: use yt-dlp for YouTube, use zahori for the page nobody wrote an extractor for.
npm install -g zahori # CLI
npm install zahori # library
Requirements
| Node | ≥ 22 |
| Browser | run npx playwright install chromium --only-shell once; otherwise your installed Google Chrome is used |
| ffmpeg | optional, only for --validate, --download and the discovery oracle |
pnpm users: pnpm blocks dependency build scripts by default, so Playwright won't auto-download a browser. Run the
playwright installline above once, or your system Chrome is used as a fallback.
# Resolve the stream URL behind a page (URL to stdout, everything else to stderr)
zahori get https://tv.example.org/live
# Full result as JSON: url, kind, live/VOD, replay headers, all candidates
zahori get https://tv.example.org/live --json
# Prefer an audio language on multilingual streams
zahori get https:/
... [View full README on GitHub](https://github.com/josesepulvedapino/zahori#readme)