Html to markdown
Convert a URL or HTML into clean Markdown with metadata using markmaton. Handles browser capture for JS-heavy pages and deterministic HTML-to-Markdown conversion in one skill.From its SKILL.md
npx -y skills add appautomaton/webmaton --skill html-to-markdownAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
2 things to look at
- 18 stars18 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
- runs commandsInstructs the agent to run 3 commands, including `uv run --script scripts/capture_html.py <url> | uv run --script scripts/markmaton_convert.py --from-capture --output-format json` and 2 more.
SKILL.md
2.3 KB, 498 tokens by cl100k_base, as published. Nobody here has run it
HTML to Markdown
Composes with
- Use for — capture-a-web-page tasks where browser-rendered HTML or structured Markdown is needed.
- Wraps — nodriver (CDP-based headless browser capture for JS-heavy pages, with Playwright Chromium discovery) and markmaton (HTML→Markdown with main-content extraction, metadata, and link/image inventory). See
references/integration-patterns.mdfor browser-vs-fetch guidance. - Outputs — JSON envelope by default (markdown body + metadata + links + images + quality signals). Use
--output-format markdownwhen only the raw Markdown body is needed.
Converts a URL or HTML into clean Markdown plus metadata, links, images, and quality signals.
From a URL
Capture the page and convert in one pipeline:
uv run --script scripts/capture_html.py <url> \
| uv run --script scripts/markmaton_convert.py --from-capture --output-format json
The capture script outputs a JSON envelope by default. --from-capture reads it and extracts html, url, final_url, and content_type automatically — no context lost, URL typed once.
- Add
--wait-selector <css>or--wait-text <string>to the capture step for pages that need a readiness signal. - Prefer a simple fetch over browser capture for static articles, wikis, and server-rendered docs.
From HTML
uv run --script scripts/markmaton_convert.py --html-file page.html \
--url <url> --output-format json
Or from stdin:
echo "$html" | uv run --script scripts/markmaton_convert.py --url <url>
Pass --url when available — it improves link resolution and canonical metadata.
Key defaults
- Output:
json. Use--output-format markdownfor raw Markdown only. - Main-content extraction: on. Use
--full-contentto disable. - Capture: always headless. Timeout
10s, override with--timeout. - Browser discovery: user's Chrome → user's Chromium → Playwright's Chromium.
References
Read only when needed:
references/usage.md— full CLI reference for both scriptsreferences/integration-patterns.md— browser vs fetch guidance, contracts, parser defaults
What ships with it: 4 files
15.9 KB alongside SKILL.md, 2 of them executable
references/
- integration-patterns.md1.5 KB
- usage.md2.5 KB
scripts/
- capture_html.pyruns7.9 KB
- markmaton_convert.pyruns3.9 KB