Install
Pick the surface that matches the job:
- Pasting the page you are reading into a chat → the browser extension (Chrome, Firefox).
- An agent reading public pages (Claude Code, Cursor, Codex, any MCP client) → the MCP server.
- ChatGPT reading a public page → the ChatGPT plugin.
- HTML that you or your agent already loaded (your own app, a page behind a sign-in, an intranet or tailnet host) → the MCP tool’s
htmlargument, or the library.
What each one cannot do: Which Page2AI do I need?
Chrome extension (Manifest V3)
Section titled “Chrome extension (Manifest V3)”The recommended way for humans clipping one page at a time.
Chrome Web Store: live since 2026-07-30. Install it from the store listing. To see the published version yourself, no account needed, ask the endpoint a real browser uses for extension updates:
curl -s 'https://clients2.google.com/service/update2/crx?prodversion=140.0&acceptformat=crx2,crx3&x=id%3Ddlpaaijcnbbmlfeohlphjpnbbcnomnno%26uc'status="ok" plus a version means it is live. error-unknownApplication means it is not.
Install from a release. Every tagged version ships a zip built by CI on the
releases page. Unzip it and load it
unpacked via chrome://extensions → Developer mode → Load unpacked.
Build from source (for reviewers / local dev).
git clone https://github.com/igorsaevets/page2ai-extensioncd page2ai-extensionnpm installnpx wxt zip -b chromeOutput lands in .output/page2ai-extension-<version>-chrome.zip. Load unpacked from .output/chrome-mv3/ via chrome://extensions → Developer mode → Load unpacked.
Trigger extraction. Press Alt+Shift+M on any page, or click the toolbar icon. Extracted Markdown is copied to your clipboard.
Firefox extension (Manifest V3)
Section titled “Firefox extension (Manifest V3)”Firefox Add-ons (AMO): listed since 2026-07-31. Install it from the
AMO listing. To see the published version
yourself, no account needed: curl -s "https://addons.mozilla.org/api/v5/addons/addon/page2ai@igorsaevets.com/"
and read current_version.version.
Build from source:
npx wxt zip -b firefoxLoad in about:debugging → This Firefox → Load Temporary Add-on → pick manifest.json from .output/firefox-mv3/.
MCP server (agents)
Section titled “MCP server (agents)”For Claude Desktop, Cursor, Windsurf, Zed, and any other MCP client.
One-liner install. Add this to your MCP client config:
{ "mcpServers": { "page2ai": { "command": "npx", "args": ["-y", "page2ai-mcp"] } }}The unscoped page2ai-mcp package is a thin wrapper that reexports @page2ai/mcp; both are on npm.
Verify. From a shell:
npx -y page2ai-mcpThe server starts on stdio and responds to initialize and tools/list. Ctrl+C to exit. It needs Node.js 20 or later.
Full details: MCP server page.
ChatGPT (plugin)
Section titled “ChatGPT (plugin)”Page2AI is in ChatGPT’s plugin directory: Page2AI · Public web page to Markdown. Page2AI itself needs no account or key.
- In ChatGPT on the web, desktop or mobile, open Plugins in the sidebar and find Page2AI, or open the link above.
- Select Install plugin.
- In a chat, give ChatGPT a page address and ask for the page as Markdown. ChatGPT uses an installed plugin when it fits the request; to pick it yourself, type
@and choose Page2AI, or select + and enter its name.
Whether you can install a plugin depends on your plan and, in a workspace, on what its administrators allow (OpenAI Help: Plugins in ChatGPT).
The plugin reads public pages only. It calls the hosted endpoint, which fetches the URL from its own server, without your cookies, and runs no page scripts: a page behind a sign-in comes back as its login page, and a page that JavaScript builds in the browser comes back nearly empty. For those, copy the page with the extension and paste it into the chat. The plugin takes a URL only and waits at most 20 seconds for a page.
npm library (Node or browser code)
Section titled “npm library (Node or browser code)”For programmatic HTML → Markdown conversion in your own code.
npm install @page2ai/coreimport { htmlToMarkdown, fetchAndConvert } from '@page2ai/core';
const html = '<article><h1>Hello</h1><p>World</p></article>';const { markdown, title } = htmlToMarkdown(html, { baseUrl: 'https://example.com/hello', includeFrontmatter: true,});
const result = await fetchAndConvert('https://docs.anthropic.com/en/api/messages');console.log(result.markdown);Both htmlToMarkdown (sync) and fetchAndConvert (async, with SSRF guard + timeout) are exported.
Node 18.17 or later. Zero external API calls; uses linkedom for parsing.
Written by Igor Saevets — LinkedIn · GitHub.