api
免费Use html-to-markdown-rs api reference documentation.
中文简介正在准备中。当前显示原文说明。
Convert HTML to Markdown, Djot, or plain text with structured extraction. Use when writing code that calls html-to-markdown APIs in Rust, Python, TypeScript, Go, Ruby, PHP, Java, C#, Elixir, R, C, or WASM. Covers installation, conversion, configuration, metadata extraction, tables, document structure, inline images, URL fetching, and CLI usage.
中文简介正在准备中。当前显示原文说明。
实测评分 未实测
查看安装方法安装前可以查看交给 AI 代理的指令内容。
html-to-markdown is a high-performance HTML→Markdown converter with a Rust core and 12 native language bindings. It converts HTML to CommonMark Markdown, Djot, or plain text in a single pass, optionally extracting metadata, tables, inline images, and a structured document tree.
Use this skill when writing code that:
| Capability | CLI | SDKs |
|---|---|---|
| HTML→Markdown / Djot / plain text | html-to-markdown FILE | convert(html, options) |
| Read HTML from stdin / file / URL | cat f | …, FILE, --url URL | convert(htmlString, …) |
| ~30 config options (headings, code blocks, lists, escaping, wrapping…) | flags | ConversionOptions |
| Metadata extraction | --json (default-extracted) | result.metadata |
| Table extraction | --json --include-structure → tables[] | result.tables with structure enabled |
| Document structure tree | --json --include-structure | include_document_structure=true |
| Inline image extraction | --json --extract-inline-images | extract_images=true |
| HTML preprocessing | --preprocess [--preset …] | PreprocessingOptions |
| Extraction-only (no Markdown body) | --json --no-content | options + read fields |
# (Homebrew 6.0+ requires explicit trust for third-party taps)
brew trust xberg-io/tap
brew install xberg-io/tap/html-to-markdown
# or download a prebuilt binary from the latest GitHub release:
# https://github.com/xberg-io/html-to-markdown/releases/latest
# or build from source:
cargo install html-to-markdown-cli
pip install html-to-markdown # Python
pnpm add @xberg-io/html-to-markdown # TypeScript / Node.js
cargo add html-to-markdown-rs # Rust (features: metadata default; full = all)
gem install html-to-markdown # Ruby
composer require xberg-io/html-to-markdown # PHP
go get github.com/xberg-io/html-to-markdown/packages/go/v3 # Go
dotnet add package XbergIo.HtmlToMarkdown # C#
pnpm add @xberg-io/html-to-markdown-wasm # WASM
io.xberg:html-to-markdown{:html_to_markdown, "~> 3.8"} in mix.exsinstall.packages("htmltomarkdown", repos = "https://xberg-io.r-universe.dev").so / .dll / .dylib from GitHub releases--json | jq. Flags only for conversion (FILE is positional; omit or use - for stdin); the only subcommand is mcp.html-to-markdown mcp exposes convert_html and extract_metadata as agent tools, so an MCP client can convert an HTML string directly with no shell-out. This plugin auto-registers it; see the html-to-markdown-using-the-mcp-server skill.Both share the same ConversionResult shape, so output is interchangeable.
Rule of thumb: single HTML in → Markdown out = html-to-markdown. Many URLs / a site = crawlberg. Non-HTML documents = xberg.
# Convert a file to stdout
html-to-markdown input.html
# Convert and save
html-to-markdown input.html -o output.md
# Read from stdin
cat page.html | html-to-markdown
# Fetch and convert a URL
html-to-markdown --url https://example.com > out.md
# ConversionResult as JSON with structured tables
html-to-markdown --json --include-structure input.html
# JSON with document structure tree
html-to-markdown --json --include-structure input.html
# Extraction-only (no Markdown body)
html-to-markdown --json --no-content input.html
# Aggressive web-page cleanup
html-to-markdown input.html --preprocess --preset aggressive
use html_to_markdown_rs::convert;
let result = convert("<h1>Hello World</h1><p>A paragraph.</p>", None)?;
println!("{}", result.content.unwrap_or_default());
from html_to_markdown import convert
result = convert("<h1>Hello World</h1><p>A paragraph.</p>")
print(result.content) # # Hello World\n\nA paragraph.
print(result.metadata) # title, links, headers, …
import { convert } from "@xberg-io/html-to-markdown";
// Node's convert() returns a ConversionResult object directly.
const result = convert("<h1>Hello World</h1><p>A paragraph.</p>");
console.log(result.content);
All languages return the same structure (dict, object, or struct).
| Field | Description |
|---|---|
content | Converted text (Markdown/Djot/plain). null only in extraction-only mode. |
metadata | Title, OG, headers, links, images, structured data. |
tables | Tables with grid (structured cells) and markdown fields. |
images | Extracted inline images (requires inline-image extraction). |
document | Structured document tree when structure extraction is enabled. |
warnings | Non-fatal processing warnings (message, kind). |
All languages expose the same ~30 options. See references/configuration.md for the complete table. Common ones:
| Option | Values | Default |
|---|---|---|
heading_style | atx, underlined, atx-closed | atx |
code_block_style | backticks, indented, tildes | backticks |
output_format | markdown, djot, plain | markdown |
wrap / wrap_width | bool / 20–500 | off / 80 |
autolinks (SDK) / --no-autolinks (CLI) | bool / flag | true (on); disable in CLI with --no-autolinks |
| preprocessing | minimal / standard / aggressive | off |
use html_to_markdown_rs::{convert, ConversionOptions, HeadingStyle, OutputFormat};
let options = ConversionOptions::builder()
.heading_style(HeadingStyle::Atx)
.output_format(OutputFormat::Markdown)
.wrap(true)
.wrap_width(100)
.build();
let result = convert(html, Some(options))?;
from html_to_markdown import convert, ConversionOptions, PreprocessingOptions
html = "<h1>Title</h1><p>Body text.</p>"
result = convert(
html,
ConversionOptions(
heading_style="atx",
wrap=True,
wrap_width=100,
preprocessing=PreprocessingOptions(enabled=True, preset="aggressive"),
),
)
The library convert() extracts metadata by default; the CLI needs --json --extract-metadata (see the html-to-markdown-extracting-metadata skill). Fields include document (title, description, language, canonical_url, open_graph), headers, links (with link_type), images, and structured_data (JSON-LD/Microdata/RDFa).
With document structure extraction enabled, tables appear in result.tables, each with a pre-rendered markdown string and a structured cell grid. Markdown tables also appear inline in content. See the html-to-markdown-extracting-tables skill.
Enable structure extraction (--include-structure on the CLI, include_document_structure=true in SDKs) to get a semantic node tree under document. Node types include heading, paragraph, list, list_item, table, image, code, quote, group, metadata_block.
convert() returns a result object, not a string. Access .content for the Markdown text. This holds for Node.js too — convert() returns a ConversionResult object directly; do not JSON.parse() it.--json outputs JSON, not Markdown. Omit --json for plain Markdown.--include-structure, --extract-inline-images, and --no-content require --json.FILE is positional; the only subcommand is mcp (starts the MCP server).--preset, --keep-navigation, --keep-forms require --preprocess.还没有评价。欢迎分享你的使用感受。
无需登录即可发表。欢迎分享使用感受、提问,或说明在哪些环境下无法运行。
还没有评论。来写第一条吧。
Use html-to-markdown-rs api reference documentation.
中文简介正在准备中。当前显示原文说明。
Use html-to-markdown-rs cli reference documentation.
中文简介正在准备中。当前显示原文说明。
Use when converting HTML to Markdown, Djot, or plain text. Covers output formats, heading and code-block styles, lists, escaping, wrapping, and HTML preprocessing.
中文简介正在准备中。当前显示原文说明。
Use when extracting metadata from HTML — title, description, language, Open Graph, JSON-LD / Microdata / RDFa, headers, links, and images. Covers the --json output shape and the --extract-metadata flag.
中文简介正在准备中。当前显示原文说明。
Use when extracting tabular data from HTML. Covers GFM Markdown tables, the structured tables array (grid cells plus pre-rendered markdown), and HTML line breaks in table cells.
中文简介正在准备中。当前显示原文说明。
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.
中文简介正在准备中。当前显示原文说明。