Skip to content
cccskills
FreePublished on GitHub

html-to-markdown-extracting-metadata

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.

The English summary is being prepared. Showing the original description.

xberg-io/html-to-markdown885 stars(GitHub 885 + cccskills 0)

Run score Not tested

See how to install

Files included (8)

  • SKILL.md4.1 KB
  • index.md496 B
  • references/cli-reference.md18.5 KB
  • references/configuration.md18.8 KB
  • references/other-bindings.md12.3 KB
  • references/python-api.md8.0 KB
  • references/rust-api.md10.5 KB
  • references/typescript-api.md6.8 KB

SKILL.md (original)

Review the instructions the agent will receive before you install.

<!-- AI-RULEZ :: GENERATED FILE — DO NOT EDIT Content-Hash: blake3:008ee34eae3d73ceed0d8a9c7fdb8ae8562558ccef3be60bac93f03dbf362e29 Source-Hash: blake3:4237e14c4d547597faf915235dde5b5d71e8c9d84681d23919d03302b738a0b4 Schema-Version: v1 -->

Extracting metadata

Use this when the user wants structured metadata out of HTML rather than (or in addition to) the Markdown body — page title, description, language, Open Graph tags, structured data, the heading outline, links, or image references.

Metadata lives in result.metadata and is surfaced on the CLI through --json. On the CLI, metadata extraction is opt-in: pass --extract-metadata alongside --json, otherwise result.metadata comes back empty (document.title is null, headers/links/images/structured_data are []). The library convert() call extracts metadata by default (extract_metadata=True) — that default is a property of the API, not the CLI. There are no per-field extraction flags: --extract-metadata populates all sub-fields below at once.

Get all metadata

html-to-markdown --json --extract-metadata input.html | jq '.metadata'

# Extraction-only (skip the Markdown body)
html-to-markdown --json --extract-metadata --no-content input.html | jq '.metadata'

Metadata sub-fields

{
  "metadata": {
    "document": { "title": "...", "description": "...", "language": "en", "open_graph": {"title": "..."} },
    "headers": [ { "level": 1, "text": "Main Heading" } ],
    "links":   [ { "href": "https://example.com", "link_type": "external" } ],
    "images":  [ { "src": "photo.jpg", "alt": "A photo", "image_type": "external" } ],
    "structured_data": [ /* JSON-LD, Microdata, RDFa blocks */ ]
  }
}

Metadata flag

There is one metadata flag: --extract-metadata. With --json set it populates all sub-fields above (document, headers, links, images, structured_data) under result.metadata — select what you need with jq.

FlagEffect
--extract-metadataWith --json: populate result.metadata. In plain-text mode (no --json): prepend title + meta tags as a YAML frontmatter block (----delimited) at the top of the Markdown output
# Pull just the document-level metadata and the heading outline
html-to-markdown --json --extract-metadata --no-content input.html \
  | jq '{title: .metadata.document.title, lang: .metadata.document.language, outline: [.metadata.headers[].text]}'

Common queries

# Title + canonical language
html-to-markdown --json --extract-metadata input.html | jq '{title: .metadata.document.title, lang: .metadata.document.language}'

# External links only
html-to-markdown --json --extract-metadata input.html | jq '[.metadata.links[] | select(.link_type == "external") | .href]'

# Open Graph card
html-to-markdown --json --extract-metadata input.html | jq '.metadata.document.open_graph'

# JSON-LD blocks
html-to-markdown --json --extract-metadata input.html | jq '.metadata.structured_data'

Programmatic access

from html_to_markdown import convert

html = """
<html lang="en">
<head><title>My Article</title></head>
<body>
<h1>Main Heading</h1>
<a href="https://example.com">External link</a>
<img src="photo.jpg" alt="A photo">
</body>
</html>
"""
result = convert(html)
meta = result.metadata
print(meta.document.title)        # "My Article"
print(meta.document.language)     # "en"
print(meta.headers[0].text)       # "Main Heading"
print(meta.links[0].link_type)    # "external"
print(meta.images[0].alt)         # "A photo"

Metadata is available from the single convert() call in Python, Rust, Go, Ruby, and Elixir; in TypeScript read it off the returned result object. In Rust it requires the metadata feature (on by default).

See references/cli-reference.md (Metadata section) and references/configuration.md for field details.

Reviews

No reviews yet. Tell others what you thought.

Comments

No login needed. Share how it worked for you, ask a question, or note where it did not run.

No comments yet. Be the first to write one.

Comments are published right away. Do not include personal information such as email addresses or phone numbers. Up to 2 URLs.

0 / 1,000 characters

This form is protected by reCAPTCHA, and the Google Privacy Policy and Terms of Service apply.

More skills from this repository

api

Free

Use html-to-markdown-rs api reference documentation.

The English summary is being prepared. Showing the original description.

xberg-io/html-to-markdown885Updated Oct 26, 2026

cli

Free

Use html-to-markdown-rs cli reference documentation.

The English summary is being prepared. Showing the original description.

xberg-io/html-to-markdown885Updated Oct 26, 2026

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.

The English summary is being prepared. Showing the original description.

xberg-io/html-to-markdown885Updated Oct 26, 2026

Use when converting HTML to Markdown, Djot, or plain text. Covers output formats, heading and code-block styles, lists, escaping, wrapping, and HTML preprocessing.

The English summary is being prepared. Showing the original description.

xberg-io/html-to-markdown885Updated Oct 26, 2026

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.

The English summary is being prepared. Showing the original description.

xberg-io/html-to-markdown885Updated Oct 26, 2026

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.

The English summary is being prepared. Showing the original description.

xberg-io/html-to-markdown885Updated Oct 26, 2026

See all skills by xberg-io

Report a problem with this skill