HTML to Markdown

SkillWeb & browsing

Give 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.

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.md for browser-vs-fetch guidance.
  • Outputs — JSON envelope by default (markdown body + metadata + links + images + quality signals). Use --output-format markdown when 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 markdown for raw Markdown only.
  • Main-content extraction: on. Use --full-content to 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 scripts
  • references/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