HTML to Markdown
SkillWeb & browsingGive your AI the ability to turn any web page URL or raw HTML into clean Markdown, with the page's metadata included. Pages that rely on JavaScript are captured with a browser, so content that would normally be missed still comes through. The same input always produces the same Markdown output.
Available today. Use it from your connected AI after setup.
No other account needed.
Add the skill, then give your AI a URL or a snippet of HTML and ask it to convert it to Markdown. Ask for the metadata too if you want the page details kept with the text.
Then ask your AI: use the HTML to Markdown skill
What your AI can do with it
- Turn a web page URL into clean Markdown
- Convert raw HTML you already have into Markdown
- Capture content from JavaScript-heavy pages using a browser
- Include page metadata alongside the converted text
- Get consistent, repeatable Markdown from the same input
What this skill tells your AI
The instructions your AI receives, as published by appautomaton/webmaton in skills/html-to-markdown/SKILL.md and read by ahel’s review.
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
Signals
- GitHub stars
- 20
- Forks
- 1
- Last commit
- Aug 2026
Advanced
- Catalog kind
- skill
- Gateway key
html-to-markdown- Source
- github.com/appautomaton/webmaton