fetching-and-converting-urls

SkillDocs & knowledge

Use when fetching a live URL and converting it to Markdown. Covers --url, custom user agents, preprocessing for noisy pages, and the --json ConversionResult shape.

Available today. Use it from your connected AI after setup.

Connect ahel once, and every AI you use reads what you have installed.

Then ask your AI: use the fetching-and-converting-urls skill

What this skill tells your AI

The instructions your AI receives, as published by xberg-io/html-to-markdown in plugin/skills/fetching-and-converting-urls/SKILL.md and read by ahel’s review.

Fetching and converting URLs

Use this when the user gives a URL instead of HTML and wants the page as Markdown (or its metadata/tables). The CLI fetches the page over HTTP and converts it in one step via --url. --url conflicts with a positional FILE.

For crawling many pages or following links, use crawlberg instead — this skill is for a single URL.

Fetch and convert

# Fetch a URL, print Markdown to stdout
html-to-markdown --url https://example.com

# Save to a file
html-to-markdown --url https://example.com -o page.md

# Custom User-Agent (default mimics a real browser)
html-to-markdown --url https://example.com --user-agent "MyBot/1.0"

--user-agent requires --url.

Clean noisy pages

Real web pages carry navigation, ads, cookie banners, and forms. Preprocess before converting:

html-to-markdown --url https://example.com/article --preprocess --preset aggressive

# Keep the nav or forms if the page content lives there
html-to-markdown --url https://example.com --preprocess --keep-navigation

Presets: minimal, standard (default), aggressive. --preset and the --keep-* flags require --preprocess.

JSON output (ConversionResult)

Add --json to get the full structured result instead of plain Markdown:

html-to-markdown --url https://example.com --json
{
  "content": "# Title\n\nContent\n",
  "metadata": {
    "document": { "title": "...", "language": "en" },
    "headers": [],
    "links": [],
    "images": [],
    "structured_data": []
  },
  "tables": [],
  "images": [],
  "warnings": []
}

Useful combinations (all require --json):

# Page title + outline, no Markdown body
html-to-markdown --url https://example.com --json --no-content \
  | jq '{title: .metadata.document.title, headings: [.metadata.headers[].text]}'

# Include the document-structure tree
html-to-markdown --url https://example.com --json --include-structure | jq '.document'

# Extract inline image data
html-to-markdown --url https://example.com --json --extract-inline-images | jq '.images | length'

Surface warnings

html-to-markdown --url https://example.com --show-warnings > page.md
# non-fatal warnings (truncation, malformed markup) go to stderr

Exit codes

CodeMeaning
0Success
1Conversion or I/O error (including a failed fetch)
2Invalid arguments

See ../html-to-markdown/references/cli-reference.md for the full flag set and JSON shape.

Signals

GitHub stars
869
Forks
70
Last commit
Sep 2026
Advanced
Catalog kind
skill
Gateway key
fetching-and-converting-urls
Source
github.com/xberg-io/html-to-markdown