amplifier-module-markdown-utils
January 6, 2026 · View on GitHub
⚠️ DEPRECATED: This standalone module is deprecated in favor of the integrated version in amplifier-bundle-blog-creator.
New location: The library is available in the bundle at
modules/markdown-utils/For new projects: Use the bundle instead - it includes this functionality as an integrated utility library.
This repository remains for reference and backward compatibility only.
Markdown parsing, injection, and metadata extraction for Amplifier applications
Process markdown documents with utilities for structure analysis, content injection, and metadata extraction.
Installation
pip install git+https://github.com/robotdad/amplifier-dev#subdirectory=amplifier-module-markdown-utils
Or add to your pyproject.toml:
[tool.uv.sources.amplifier-module-markdown-utils]
git = "https://github.com/robotdad/amplifier-dev"
subdirectory = "amplifier-module-markdown-utils"
branch = "main"
Quick Start
from pathlib import Path
from amplifier_module_markdown_utils import (
extract_title,
slugify,
MarkdownParser,
MarkdownImageUpdater
)
# Simple operations
content = Path("article.md").read_text()
title = extract_title(content)
slug = slugify(title) # "my-article-title"
# Structure analysis
parser = MarkdownParser()
doc = parser.parse(content)
print(f"Found {len(doc.sections)} sections")
# Image insertion
updater = MarkdownImageUpdater()
updated = updater.insert_image(
content,
"images/diagram.png",
"System architecture",
section_title="Architecture",
placement="after_section"
)
Features
- Title Extraction: Find first H1 heading in markdown
- Slugification: Convert titles to URL-friendly slugs
- Structure Parsing: Analyze sections, headings, content blocks
- Image Insertion: Add images at strategic positions
- Metadata Extraction: Pull frontmatter and document properties
- Type Safety: Full type hints throughout
API Reference
Simple Functions
def extract_title(content: str) -> str | None:
"""Extract first H1 heading from markdown."""
def extract_title_from_file(path: Path) -> str | None:
"""Extract title from markdown file."""
def slugify(text: str) -> str:
"""Convert text to URL-friendly slug."""
MarkdownParser
class MarkdownParser:
def parse(self, content: str) -> MarkdownDocument:
"""Parse markdown into structured representation."""
@dataclass
class MarkdownDocument:
title: str | None
sections: list[MarkdownSection]
raw_content: str
MarkdownImageUpdater
class MarkdownImageUpdater:
def insert_image(
self,
content: str,
image_path: str,
alt_text: str,
*,
placement: Literal["before_section", "after_section", "at_line"] = "at_line"
) -> str:
"""Insert image into markdown."""
Usage Examples
See examples/basic_usage.py for complete examples.
Integration with Amplifier
# Register with coordinator
coordinator.register_capability("markdown.parser", parser)
coordinator.register_capability("markdown.metadata_extractor", extractor)
# Use in other modules
parser = coordinator.get_capability("markdown.parser")
if not parser:
from amplifier_module_markdown_utils import MarkdownParser
parser = MarkdownParser()
Development
cd amplifier-module-markdown-utils
uv sync --dev
uv run pytest