@page2ai/core 0.1.0 → 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +20 -1
- package/dist/node/index.d.ts +1 -1
- package/dist/node/index.d.ts.map +1 -1
- package/dist/node/index.js +32 -6
- package/dist/node/index.js.map +1 -1
- package/package.json +7 -3
package/README.md
CHANGED
|
@@ -81,7 +81,7 @@ Uses Node 18+ built-in `fetch()`. Follows redirects; passes the final URL to `ht
|
|
|
81
81
|
|
|
82
82
|
- **v0.1** (current) — Node basic renderer, browser adapter interface published
|
|
83
83
|
- **v0.2** — full port of `lib/core/html-to-md.ts` via PageAdapter, browser entry migrated from extension repo
|
|
84
|
-
- **v0.3** — profile auto-detection in Node path, structured-data extraction
|
|
84
|
+
- **v0.3** — headless-browser adapter (Playwright or Puppeteer) for React/Vue/SPA rendering, profile auto-detection in Node path, structured-data extraction. Client-rendered pages (e.g. platform.claude.com) that ship a nearly empty `<div id="root">` from static HTML currently produce a graceful fallback error under v0.1 — the SPA adapter in v0.3 will handle them.
|
|
85
85
|
- **v0.4** — official-markdown fallback (llms.txt, .md sibling URLs), MDX handling
|
|
86
86
|
|
|
87
87
|
## Architecture
|
|
@@ -123,6 +123,25 @@ npm run typecheck # tsc --noEmit
|
|
|
123
123
|
- [`@page2ai/mcp`](https://github.com/igorsaevets/page2ai-mcp) — MCP server for Claude Desktop, Cursor, Windsurf, Zed
|
|
124
124
|
- [Software Heritage archive](https://archive.softwareheritage.org/) — SWHID `swh:1:snp:05123c51ef9e7c0aeb06f42b1263c07a8d26999a`
|
|
125
125
|
|
|
126
|
+
|
|
127
|
+
## Build provenance
|
|
128
|
+
|
|
129
|
+
Releases from v0.1.1 onward are published from GitHub Actions with
|
|
130
|
+
[npm provenance](https://docs.npmjs.com/generating-provenance-statements). Each published
|
|
131
|
+
version carries a Sigstore attestation recording which commit and which workflow run produced
|
|
132
|
+
the tarball, logged in the public Rekor transparency ledger. npmjs.com shows a provenance badge
|
|
133
|
+
next to the version, linking to both.
|
|
134
|
+
|
|
135
|
+
Verify it yourself, without trusting this README:
|
|
136
|
+
|
|
137
|
+
```bash
|
|
138
|
+
npm audit signatures
|
|
139
|
+
npm view @page2ai/core --json | jq '.dist.attestations'
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
The point is that the link between the source you can read and the artifact you install is
|
|
143
|
+
checkable by a third party rather than asserted here.
|
|
144
|
+
|
|
126
145
|
## License
|
|
127
146
|
|
|
128
147
|
MIT — Copyright (c) 2026 Igor Saevets. See [LICENSE](./LICENSE).
|
package/dist/node/index.d.ts
CHANGED
|
@@ -17,7 +17,7 @@ export interface ConversionResult {
|
|
|
17
17
|
baseUrl: string;
|
|
18
18
|
charCount: number;
|
|
19
19
|
extractedAt: string;
|
|
20
|
-
source: 'html-parse' | 'md-suffix' | 'llms-txt';
|
|
20
|
+
source: 'html-parse' | 'md-suffix' | 'content-negotiation' | 'llms-txt';
|
|
21
21
|
}
|
|
22
22
|
export declare const htmlToMarkdown: (html: string, opts?: HtmlToMarkdownOptions) => ConversionResult;
|
|
23
23
|
export declare const fetchAndConvert: (url: string, opts?: FetchAndConvertOptions) => Promise<ConversionResult>;
|
package/dist/node/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/node/index.ts"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEtD,MAAM,WAAW,qBAAqB;IACpC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,WAAW,GAAG,MAAM,CAAC;IAC/B,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,MAAM,WAAW,sBAAuB,SAAQ,qBAAqB;IACnE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,YAAY,GAAG,WAAW,GAAG,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/node/index.ts"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEtD,MAAM,WAAW,qBAAqB;IACpC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,WAAW,GAAG,MAAM,CAAC;IAC/B,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,MAAM,WAAW,sBAAuB,SAAQ,qBAAqB;IACnE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,YAAY,GAAG,WAAW,GAAG,qBAAqB,GAAG,UAAU,CAAC;CACzE;AAED,eAAO,MAAM,cAAc,GACzB,MAAM,MAAM,EACZ,OAAM,qBAA0B,KAC/B,gBA+CF,CAAC;AAoEF,eAAO,MAAM,eAAe,GAC1B,KAAK,MAAM,EACX,OAAM,sBAA2B,KAChC,OAAO,CAAC,gBAAgB,CAiC1B,CAAC;AAGF,YAAY,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAClE,OAAO,EAAE,oBAAoB,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC"}
|
package/dist/node/index.js
CHANGED
|
@@ -65,9 +65,11 @@ export const htmlToMarkdown = (html, opts = {}) => {
|
|
|
65
65
|
};
|
|
66
66
|
}
|
|
67
67
|
};
|
|
68
|
-
// Wrap a raw markdown response
|
|
69
|
-
//
|
|
70
|
-
|
|
68
|
+
// Wrap a raw markdown response in the frontmatter block so downstream consumers
|
|
69
|
+
// see the same shape as html-to-md output. `via` records which channel produced
|
|
70
|
+
// it, because a caller measuring conversion quality needs to know that no
|
|
71
|
+
// conversion happened.
|
|
72
|
+
const wrapMdWithFrontmatter = (raw, url, title, via) => {
|
|
71
73
|
const yq = (s) => '"' + String(s).replace(/"/g, '\\"') + '"';
|
|
72
74
|
const fm = [
|
|
73
75
|
'---',
|
|
@@ -76,12 +78,18 @@ const wrapMdWithFrontmatter = (raw, url, title) => {
|
|
|
76
78
|
`captured_at: ${yq(new Date().toISOString())}`,
|
|
77
79
|
`extractor: ${yq('page2ai-core')}`,
|
|
78
80
|
`extractor_version: ${yq('0.1.0')}`,
|
|
79
|
-
`extractor_source: ${yq(
|
|
81
|
+
`extractor_source: ${yq(via)}`,
|
|
80
82
|
'---',
|
|
81
83
|
'',
|
|
82
84
|
];
|
|
83
85
|
return fm.join('\n') + raw.replace(/^/, '').trim() + '\n';
|
|
84
86
|
};
|
|
87
|
+
// A Markdown body must never reach the HTML parser. linkedom will happily accept
|
|
88
|
+
// it, find no <article> or <main>, and return an empty document, which reads as
|
|
89
|
+
// "extraction failed" when in fact the server handed over exactly what was asked
|
|
90
|
+
// for. See page2ai-benchmark RETRACTION-2026-07-25.md.
|
|
91
|
+
const MARKDOWN_CONTENT_TYPE = /^(text\/markdown|text\/x-markdown)/i;
|
|
92
|
+
const looksLikeHtml = (s) => /^\s*<(!doctype|html)\b/i.test(s);
|
|
85
93
|
// Attempt the URL.md convention (Mintlify, Anthropic docs, some others).
|
|
86
94
|
// Returns null if not applicable or on any failure — callers fall back to HTML.
|
|
87
95
|
const tryMdSuffix = async (originalUrl, opts) => {
|
|
@@ -99,11 +107,11 @@ const tryMdSuffix = async (originalUrl, opts) => {
|
|
|
99
107
|
if (!resp.text || resp.text.length < 32)
|
|
100
108
|
return null;
|
|
101
109
|
// Cheap sanity: markdown response should not look like HTML
|
|
102
|
-
if (
|
|
110
|
+
if (looksLikeHtml(resp.text))
|
|
103
111
|
return null;
|
|
104
112
|
const title = (resp.text.match(/^#\s+(.+)$/m)?.[1] || '').trim();
|
|
105
113
|
return {
|
|
106
|
-
markdown: wrapMdWithFrontmatter(resp.text, resp.finalUrl, title),
|
|
114
|
+
markdown: wrapMdWithFrontmatter(resp.text, resp.finalUrl, title, 'md-suffix'),
|
|
107
115
|
title,
|
|
108
116
|
baseUrl: resp.finalUrl,
|
|
109
117
|
charCount: resp.text.length,
|
|
@@ -128,6 +136,24 @@ export const fetchAndConvert = async (url, opts = {}) => {
|
|
|
128
136
|
maxBytes: opts.maxBytes,
|
|
129
137
|
userAgent: opts.userAgent,
|
|
130
138
|
});
|
|
139
|
+
// The Accept header above lists text/markdown, and a growing number of
|
|
140
|
+
// documentation platforms honour it: Fumadocs, Mintlify, Vercel and Supabase
|
|
141
|
+
// all answer `content-type: text/markdown` with the page already converted.
|
|
142
|
+
// Handing that to the HTML parser produces an empty document. Return it as-is
|
|
143
|
+
// and say which channel it came from.
|
|
144
|
+
if (MARKDOWN_CONTENT_TYPE.test(resp.contentType) && !looksLikeHtml(resp.text)) {
|
|
145
|
+
const raw = resp.text.replace(/^/, '').trim();
|
|
146
|
+
const title = (raw.match(/^#\s+(.+)$/m)?.[1] || '').trim();
|
|
147
|
+
const markdown = wrapMdWithFrontmatter(raw, resp.finalUrl, title, 'content-negotiation');
|
|
148
|
+
return {
|
|
149
|
+
markdown,
|
|
150
|
+
title,
|
|
151
|
+
baseUrl: resp.finalUrl,
|
|
152
|
+
charCount: raw.length,
|
|
153
|
+
extractedAt: new Date().toISOString(),
|
|
154
|
+
source: 'content-negotiation',
|
|
155
|
+
};
|
|
156
|
+
}
|
|
131
157
|
return htmlToMarkdown(resp.text, { ...opts, baseUrl: opts.baseUrl ?? resp.finalUrl });
|
|
132
158
|
};
|
|
133
159
|
export { LinkedomAdapter } from './linkedom-adapter.js';
|
package/dist/node/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/node/index.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,EAAE;AACF,cAAc;AACd,sEAAsE;AACtE,gEAAgE;AAChE,EAAE;AACF,+EAA+E;AAC/E,6EAA6E;AAC7E,4EAA4E;AAC5E,yEAAyE;AACzE,oFAAoF;AACpF,EAAE;AACF,2EAA2E;AAE3E,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AACrC,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AA0BhD,MAAM,CAAC,MAAM,cAAc,GAAG,CAC5B,IAAY,EACZ,OAA8B,EAAE,EACd,EAAE;IACpB,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,IAAI,aAAa,CAAC;IACnD,IAAI,CAAC;QACH,MAAM,EAAE,QAAQ,EAAE,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;QACrC,MAAM,OAAO,GAAG,IAAI,eAAe,CAAC,QAA+B,EAAE,YAAY,CAAC,CAAC;QACnF,MAAM,KAAK,GAAG,CAAC,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,WAAW,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QAC1E,MAAM,QAAQ,GAAG,mBAAmB,CAAC,QAA+B,EAAE,OAAO,EAAE;YAC7E,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE;YAC1B,kBAAkB,EAAE,IAAI,CAAC,kBAAkB,IAAI,IAAI;YACnD,aAAa,EAAE,IAAI,CAAC,aAAa,IAAI,IAAI;SAC1C,CAAC,CAAC;QACH,OAAO;YACL,QAAQ;YACR,KAAK;YACL,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE;YAC1B,SAAS,EAAE,QAAQ,CAAC,MAAM;YAC1B,WAAW,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACrC,MAAM,EAAE,YAAY;SACrB,CAAC;IACJ,CAAC;IAAC,OAAO,CAAU,EAAE,CAAC;QACpB,MAAM,MAAM,GAAG,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAC1D,MAAM,QAAQ,GAAG;YACf,KAAK;YACL,oCAAoC;YACpC,YAAY,YAAY,GAAG;YAC3B,iBAAiB,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,GAAG;YAC5C,2BAA2B;YAC3B,4BAA4B;YAC5B,WAAW,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG;YACzC,KAAK;YACL,EAAE;YACF,6BAA6B;YAC7B,EAAE;YACF,6BAA6B,YAAY,GAAG;YAC5C,EAAE;YACF,UAAU,MAAM,EAAE;YAClB,EAAE;SACH,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACb,OAAO;YACL,QAAQ,EAAE,QAAQ;YAClB,KAAK,EAAE,2BAA2B;YAClC,OAAO,EAAE,YAAY;YACrB,SAAS,EAAE,QAAQ,CAAC,MAAM;YAC1B,WAAW,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACrC,MAAM,EAAE,YAAY;SACrB,CAAC;IACJ,CAAC;AACH,CAAC,CAAC;AAEF,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/node/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@page2ai/core",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.1",
|
|
4
4
|
"description": "Extract clean Markdown from any web page HTML. Works in Node.js (via linkedom) and browsers. Powers the Page2AI extension and @page2ai/mcp server.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"exports": {
|
|
@@ -68,9 +68,13 @@
|
|
|
68
68
|
"readability",
|
|
69
69
|
"page2ai"
|
|
70
70
|
],
|
|
71
|
-
"author":
|
|
71
|
+
"author": {
|
|
72
|
+
"name": "Igor Saevets",
|
|
73
|
+
"email": "igorsaevets@gmail.com",
|
|
74
|
+
"url": "https://igorsaevets.github.io/page2ai-docs/about/"
|
|
75
|
+
},
|
|
72
76
|
"license": "MIT",
|
|
73
|
-
"homepage": "https://github.
|
|
77
|
+
"homepage": "https://igorsaevets.github.io/page2ai-docs/",
|
|
74
78
|
"repository": {
|
|
75
79
|
"type": "git",
|
|
76
80
|
"url": "https://github.com/igorsaevets/page2ai-core.git"
|