Rendex: Rendering API for Images, PDFs & Content Extraction

io.github.copperline-labs由 GitHub 帳號 copperline-labs 發布v1.8.2更新於 Oct 24, 2026

Render HTML, Markdown, or URLs to images, PDF, or branded artifacts; extract and watch pages.

已驗證Streamable HTTP可網頁執行網頁搜尋與抓取瀏覽器自動化媒體與設計

概覽

AI 產生的概覽

Rendex 可將網址、HTML 或 Markdown 轉成圖片與 PDF、擷取網頁正文,並監控頁面變化。

可以做什麼
擷取網址、原始 HTML 或 Markdown 的截圖或 PDF,可設定視窗、裝置、地區與 PDF 頁面參數,也可取得簽章的託管圖片網址用於嵌入與 OG 圖片。以 Markdown、JSON 或 HTML 擷取網頁的閱讀模式正文,包含 JavaScript 渲染的頁面。將 Markdown 或 HTML 轉為具品牌樣式的 PDF、PNG 與分享頁面,可設定標誌、強調色與頁面版面。建立、測試、列出、更新、執行與刪除排程頁面監控,支援視覺或文字差異比對及 webhook 或電子郵件通知。查看方案、額度用量與速率限制。
適用情境
適合需要從網頁或生成內容產出截圖、PDF 或品牌文件,擷取可讀正文用於摘要或 RAG,或在價格頁等頁面變動時收到通知的情境。
執行需求
需要 Rendex 帳號與 API 金鑰:本機 npm 套件透過 RENDEX_API_KEY 環境變數提供,遠端端點透過 Authorization bearer 標頭提供。支援 OAuth 的用戶端也可用一次性電子郵件驗證碼登入。需要連線至 Rendex 服務的網路,用量依方案與額度計費。
安裝前請注意
轉譯與監控會消耗付費方案的額度,每請求一種產出格式消耗一個額度。監控依排程執行,可發送 webhook 或電子郵件通知。截圖可為登入頁面帶入 cookie 與自訂請求標頭,這些憑證會經過 Rendex 服務。刪除監控會一併刪除其執行紀錄且無法復原。請勿將 API 金鑰寫入會提交的設定檔。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 Rendex: Rendering API for Images, PDFs & Content Extraction,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Web executable,透過 Streamable HTTP。 遠端服務在工作區中設定後即可從網頁執行環境執行。

交給代理程式安裝

把這段提示詞貼上到 Claude Code、Codex、Cursor 等代理程式,或 SourceWeft 對話中。代理程式會讀取該伺服器的安裝指南,先向你展示發布者、端點和登入方式,經你同意後再把它新增到你的客戶端。金鑰不會寫進任何命令。

閱讀 https://sourceweft.com/mcp/io.github.copperline-labs%2Frendex-mcp/install.md,並按其中說明把這個 MCP 伺服器接入我的客戶端。修改任何設定之前,先告訴我它的發布者、端點和登入方式,等我確認。不要把 API 金鑰寫進命令或我會提交的檔案;問我金鑰應從哪裡取得。

檢視代理程式所依據的安裝指南

其他 MCP 客戶端

把它新增到你客戶端的 mcpServers 設定中。

{
  "mcpServers": {
    "rendex-rendering-api-for-images-pdfs-con": {
      "type": "http",
      "url": "https://mcp.rendex.dev/mcp"
    }
  }
}

README

@copperline/rendex-mcp

[npm version] [npm downloads] [License: MIT] [MCP Badge]

MCP server for Rendex — render raw HTML, Markdown, or any URL to an image or PDF via AI agents using the Model Context Protocol.

Quick Start

Claude Desktop / Cursor / Windsurf (npx)

Add to your MCP client config:

json
{  "mcpServers": {    "rendex": {      "command": "npx",      "args": ["-y", "@copperline/rendex-mcp"],      "env": {        "RENDEX_API_KEY": "your-api-key"      }    }  }}

Where to add this:

ClientConfig location
Claude Desktop~/Library/Application Support/Claude/claude_desktop_config.json (macOS)
Cursor.cursor/mcp.json in project root, or Settings > MCP
WindsurfSettings > MCP Servers

Claude Code (CLI)

Add a .mcp.json to your project root with the same config above. Then restart Claude Code.

Important: Add .mcp.json to your .gitignore — it contains your API key.

Remote (zero-install, OAuth or API key)

Connect to the hosted server at https://mcp.rendex.dev/mcp — no install needed. It's fronted by OAuth 2.1 (authorization-code + PKCE S256), so OAuth-capable clients (ChatGPT, Claude, Cursor, the MCP Inspector) connect with no API key — you sign in with a one-time email code and each caller bills against their own Rendex plan and credit pool.

Clients that prefer a static key can still pass one directly:

json
{  "mcpServers": {    "rendex": {      "url": "https://mcp.rendex.dev/mcp",      "headers": {        "Authorization": "Bearer your-api-key"      }    }  }}

Tools

rendex_screenshot

Render any webpage, raw HTML, or Markdown to an image or PDF.

"Take a screenshot of https://example.com""Capture the full page of https://news.ycombinator.com in dark mode""Generate a PDF of https://github.com with A4 page size""Capture https://amazon.de as seen from Germany""Render this HTML invoice as a PDF""Render this Markdown release note as a PDF"

Parameters:

ParameterTypeDefaultDescription
urlstringrequired*Webpage URL to capture. Mutually exclusive with html and markdown.
htmlstring—Raw HTML to render. Mutually exclusive with url and markdown.
markdownstring—Markdown to render (server converts to HTML). Mutually exclusive with url and html.
dataobject—Key-value data for Mustache templating. When set, the html or markdown string is rendered as a logic-less Mustache template before capture. Invalid with url.
format"png" | "jpeg" | "webp" | "pdf""png"Output format
fullPagebooleanfalseCapture full scrollable page
darkModebooleanfalseEmulate dark color scheme
widthnumber1280Viewport width (320-3840)
heightnumber800Viewport height (240-2160)
resizeWidthnumber—Downscale output to this width in px (aspect ratio preserved if resizeHeight omitted). Ignored for PDF
resizeHeightnumber—Downscale output to this height in px (aspect ratio preserved if resizeWidth omitted). Ignored for PDF
qualitynumber80Image quality 1-100 (JPEG/WebP only, default 80)
delaynumber0Wait ms before capture
blockAdsbooleantrueBlock ads and trackers
blockCookieBannersboolean—Hide common cookie/consent banners (GDPR/CCPA) before capture
blockResourceTypesstring[]—Block resource types: font, image, media, stylesheet, other
devicestring—Device preset: desktop, iphone_15, iphone_se, pixel_8, ipad, ipad_pro — sets viewport, scale, and user agent in one shot. Overrides width/height/deviceScaleFactor/userAgent
deviceScaleFactornumber2Device pixel ratio (1-3). 2× Retina by default
timeoutnumber30Max seconds to wait for page load (5-60)
waitUntilstring"networkidle2"Page readiness: load, domcontentloaded, networkidle0, networkidle2
waitForSelectorstring—CSS selector to wait for before capture
bestAttemptbooleantrueReturn partial render on timeout instead of failing
selectorstring—CSS selector of element to capture instead of full page
hideSelectorsstring[]—CSS selectors to hide (display:none) before capture, e.g. ['.modal', '#newsletter-popup']. Max 50
cssstring—Custom CSS to inject before capture (max 50KB)
jsstring—Custom JavaScript to execute before capture (max 50KB)
cookiesarray—Cookies to set for authenticated captures (max 50)
headersobject—Custom HTTP headers for the page request
userAgentstring—Override browser user agent string
pdfFormatstring—PDF page size: A4, Letter, Legal, Tabloid, A3
pdfLandscapeboolean—PDF landscape orientation
pdfPrintBackgroundbooleantruePrint background in PDF
pdfScalenumber1PDF scale factor (0.1-2)
pdfMarginobject—PDF margins: {top, right, bottom, left} as CSS values
geostring—ISO country code for geo-targeted capture (Pro/Enterprise)
geoCitystring—City for geo-targeting (requires geo)
geoStatestring—State for geo-targeting (requires geo)
asyncboolean—Process asynchronously (returns job ID)
webhookUrlstring—URL to receive callback when async capture completes (Starter+; Free/Basic poll job status)
cacheTtlnumber—Seconds to cache result (3600-2592000)

rendex_extract

Extract clean reader-mode content from any webpage as Markdown, JSON, or HTML. Runs the same Chromium render pass as a screenshot, so it captures content after JavaScript runs — handling SPAs that fetch-only readers miss. Strips nav, ads, and boilerplate, returning the article body plus title, byline, and excerpt. Great for feeding page content to an LLM, summarization, or RAG ingestion.

"Extract the article text from https://example.com/post as Markdown""Pull the readable content from this SPA as JSON so I can summarize it"

Parameters:

ParameterTypeDefaultDescription
urlstringrequiredWebpage URL to extract readable content from
extractFormat"markdown" | "json" | "html""markdown"Output shape — markdown (LLM-friendly prose), json (structured: title/byline/excerpt/siteName/length), or html (cleaned reader-mode HTML)
devicestring—Device preset (desktop, iphone_15, iphone_se, pixel_8, ipad, ipad_pro) — extract the mobile/tablet version of a page
blockAdsbooleantrueBlock ads and trackers before extraction
blockCookieBannersboolean—Hide common cookie/consent walls before extraction
hideSelectorsstring[]—CSS selectors to hide before extraction, e.g. ['.modal', '#newsletter-popup']. Max 50
waitUntilstring"networkidle2"Page readiness: load, domcontentloaded, networkidle0, networkidle2
timeoutnumber30Max seconds to wait for page load (5-60)

rendex_render_link

Render a URL, raw HTML, or Markdown and get back a signed, hosted, edge-cached image URL instead of the bytes — ideal for dynamic OG images. Drop the URL into <meta property="og:image"> or an <img> tag and Rendex serves a cached copy on every share. Takes the same parameters as rendex_screenshot, plus an optional expiresIn. Returns { url, expiresAt, format, cacheTtl }.

"Make me a hosted OG-image URL for this Markdown release note""Give me a render link for this HTML card that I can drop into og:image"
ParameterTypeDefaultDescription
(all rendex_screenshot params)——Same source (url/html/markdown), format, sizing, and templating options
expiresInnumberserver TTLSeconds until the signed URL expires (60–2592000)

render_artifact

Turn Markdown or HTML into a branded, downloadable artifact — a PDF, a PNG, and a hosted share page — in one call. Ideal for agent outputs: reports, invoices, summaries, release notes, dashboards. Apply a logo, accent color, font, header, and footer; choose PDF page size/orientation/margins. Returns hosted URLs { pdfUrl, pngUrl, shareUrl, expiresAt } — no storage needed on your side. Each requested format costs 1 render credit.

"Turn this Markdown report into a branded PDF and PNG with our logo and an orange accent""Render this invoice HTML to a PDF and give me a share link that expires in a week"
ParameterTypeDefaultDescription
contentstringrequiredThe Markdown or HTML body to render (up to ~4MB)
inputFormat"markdown" | "html""markdown"How to interpret content — markdown is converted to styled HTML; html is used as a body fragment
formats("pdf" | "png")[]["pdf","png"]Which formats to produce. Each costs 1 credit
accentColorstring—CSS accent color for the bar, links, and headings (e.g. #EA580C)
logostring—http(s) URL of a logo image shown in the header
headerstring—plain-text header line shown beside the logo
footerstring—plain-text footer line shown at the bottom
fontstring—CSS font-family stack for the body
pageSetupobject—{ size, orientation, margin{top,right,bottom,left}, scale, width, height, fullPage }
dataobject—Mustache data — when set, content is rendered as a logic-less Mustache template (plus {{logo}}/{{header}}/… from branding) before conversion
expiresInnumber86400Seconds until the hosted URLs expire (3600–2592000). Default 24h

Rendex Watch

Monitor a URL on a schedule and get notified when it changes — real-Chrome visual diff (with a highlighted overlay), an extracted-text diff, or both. Eight tools let an agent set up, inspect, edit, and tear down watches on the shared Rendex platform (one rdx_ key, one credit pool).

"Watch https://example.com/pricing for visual changes and alert my webhook""Before I save it, test whether you can capture #pricing on that page""Show me the last few runs of watch <id> — did anything change?"
ToolPurposeKey inputs
watch_createCreate a watch (active → captures its baseline now)url, name?, intervalMinutes?, diffMode? (visual/text/both), threshold?, renderParams?, webhookUrl? (Starter+), notifyEmail?, paused?
watch_testDry-run a config first (creates nothing)same as watch_create
watch_listList your watchesstatus? (active/paused/all), cursor?, limit?
watch_getFetch one watch (+ baseline URL)id
watch_runRun a check now (1 credit)id
watch_runsRun history with signed before/after/overlay URLsid, cursor?, limit?
watch_updateEdit a watch in place — interval, diff mode, channels, render paramsid, plus any watch_create field; webhookUrl/notifyEmail accept null to clear a channel
watch_deleteDelete a watch + its runsid

renderParams carries the per-check capture knobs (fullPage defaults to true, selector, device, geo (Pro+), plus noise controls ignoreRegions/ignoreText/minTextChars/suppressWhilePresent and uaMode). Interval floors are per-plan (Free 1440 / Basic 180 / Starter 60 / Pro 30 / Enterprise 5). Watch metadata + signed image URLs are returned as JSON text.

rendex_account

Check the account from inside the agent: which plan it's on, how many render credits have been used this month vs. the limit (and when it resets), the per-minute rate limit, and a one-tap upgrade link. Lets an agent answer "how much have I used?" or "how do I get more renders?" without sending the user to the dashboard. Read-only — costs no credits.

"How many Rendex renders do I have left this month?""What plan am I on, and how do I upgrade for more?"

Returns { plan, usage: { used, limit, remaining, unlimited, resetsAt }, rateLimitPerMinute, upgrade: { recommendedPlan, recommendedPlanCredits, upgradeUrl, manageBillingUrl } }.

Data templating

Turn one reusable template into many documents. Pass a data object alongside html or markdown, and Rendex renders the string as a logic-less Mustache template before capture — {{var}} interpolation, {{#items}}…{{/items}} loops, and nested {{a.b}} access. Great for invoices, reports, certificates, and OG cards.

"Render this HTML invoice template to a PDF, filling it with this data: <h1>Invoice {{number}}</h1><p>Total: {{total}}</p> data = { number: 'INV-014', total: '$2,400' }"

data is valid only with html or markdown — combining it with url returns a validation error.

Authentication

Get your API key at rendex.dev.

Set the RENDEX_API_KEY environment variable in your MCP client configuration.

Pricing

PlanCalls/MonthRate
Free1003/min
Starter10,00060/min
Pro100,000300/min
EnterpriseCustom1,000/min

License

MIT — Copperline Labs LLC

來源:README.md,提交 b3a49e0

工具

13

rendex_screenshot

Capture Screenshot or PDF

Use this when the user asks to screenshot, capture, or take a picture of a webpage/URL, or to render raw HTML or Markdown to an image or PDF. Do NOT use to get a reusable hosted image URL (use rendex_render_link) or to make a branded multi-format document (use render_artifact). Captures a screenshot or PDF of any webpage, raw HTML, or Markdown. Supports full-page capture, dark mode, ad blocking, custom viewports, CSS/JS injection, cookie/header injection, PDF output, HTML and Markdown rendering, and progressive fallback for heavy sites. Returns partial renders on timeout by default (bestAttempt mode). Costs 1 render credit per call. Cookie/header injection requires Starter+; geo-targeting requires Pro+.

輸入參數jscssgeourldatahtmldelaywidthdeviceformatheightcookies另有 25 個

rendex_extract

Extract Reader-Mode Content

Use this when the user asks to read, extract, get the text/content/article of, or summarize a webpage/URL. Do NOT use for a visual screenshot (use rendex_screenshot). Extracts clean reader-mode content from any webpage as Markdown, JSON, or HTML. Runs the same Chromium render pass as a screenshot, so it captures content after JavaScript runs — handles SPAs that fetch-only readers miss. Strips nav, ads, and boilerplate, returning the article body plus title, byline, and excerpt. Great for feeding page content to an LLM, summarization, or RAG ingestion. Costs 1 render credit per call.

輸入參數url必填devicetimeoutblockAdswaitUntilextractFormathideSelectorsblockCookieBanners

render_artifact

Render Branded Artifact (PDF + PNG)

Use this when the user asks to make or create a branded report, invoice, summary, release notes, or document — or to 'turn this Markdown/HTML into a PDF and PNG' (optionally with a logo or accent color). Do NOT use to screenshot an existing URL (use rendex_screenshot). Turns Markdown or HTML into a branded, downloadable artifact — a PDF, a PNG, and a hosted share page — in one call. Apply a logo, accentColor, font, header, and footer. Returns hosted URLs { pdfUrl, pngUrl, shareUrl, expiresAt }. Each requested format costs 1 render credit.

輸入參數datafontlogofooterheadercontent必填formatsexpiresInpageSetupaccentColorinputFormat

rendex_account

Check Plan & Usage

Check the Rendex account: which plan it's on, how many render credits have been used vs. the monthly limit (and when it resets), the per-minute rate limit, and a one-tap link to upgrade to a higher tier. Use this whenever the user asks about their usage, remaining quota, current plan, or how to get more renders / stop hitting limits. Read-only — costs no credits.

無需輸入參數。

watch_create

Create Watch

Use this when the user asks to monitor, watch, or track a webpage for changes, or to be alerted/notified when a page changes. Do NOT use for a one-time capture (use rendex_screenshot). Creates a Rendex Watch — monitors a URL on a schedule and notifies when it changes (real-Chrome visual diff with a highlighted overlay, an extracted-text diff, or both). An active watch captures its baseline immediately. Returns the created watch as JSON.

輸入參數url必填namepauseddiffModeaiSummarythresholdwebhookUrlnotifyEmailrenderParamsintervalMinutes

watch_test

Test Watch Config (dry-run)

Dry-run a watch config BEFORE creating it — render the proposed config once and report what was captured + whether the page is reachable (and the text a text-watch would compare). Creates no watch, no baseline, no diff. Use this to validate a selector/scope/identity first. Returns JSON.

輸入參數url必填namepauseddiffModeaiSummarythresholdwebhookUrlnotifyEmailrenderParamsintervalMinutes

watch_list

List Watches

List your watches (newest first), optionally filtered by status and paged. Returns { items, nextCursor }.

輸入參數limitcursorstatus

watch_get

Get Watch

Fetch one watch by ID, including its current baseline image URL and status. Returns JSON.

輸入參數id必填

watch_run

Run Watch Now

Run an immediate check now (charges 1 credit). Returns the queued run; poll watch_runs for the result or receive a watch.changed webhook.

輸入參數id必填

watch_runs

List Watch Runs

Read a watch's run history (newest first), paged. Each run includes changed, diffScore, and signed before/after/overlay image URLs. Returns { items, nextCursor }.

輸入參數id必填limitcursor

watch_delete

Delete Watch

Delete a watch and its run history. Irreversible.

輸入參數id必填

watch_update

Update Watch

Update a watch in place — pause/resume (paused), re-point (url), change schedule/diff/notify settings, or turn a channel off (webhookUrl/notifyEmail = null). Only the fields you send change; renderParams is deep-merged over the existing config. A scope change (url/selector/fullPage/size/device) re-baselines on the next check. Returns the updated watch as JSON.

輸入參數id必填urlnamepauseddiffModeaiSummarythresholdwebhookUrlnotifyEmailrenderParamsintervalMinutes

版本歷史

1
  1. v1.8.2最新Sep 16, 2026

評分

已滿足適用檢查項的 100%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通必需25 分
  • 已宣告認證方式必需10 分
  • 已列出工具必需15 分
  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分