π OmniRead β Format-Agnostic Content Acquisition and Parsing
OmniRead is a composable content ingestion framework with pluggable scrapers
and parsers for HTML, PDF, CSV, and XLSX. It cleanly separates fetching
(I/O) from interpretation (parsing) through a canonical Content exchange
model, giving each format its own scraper and parser while sharing one
uniform pipeline.
Doc model: this wiki is written for humans β howβto guides, examples, and extension recipes. The authoritative API contracts live in the code (GSDFC docstrings) and the machineβreadable bundle under
docs/mcp/.
π Key Features
- π§± Content/Scraper/Parser architecture β fetch and interpret in independent, testable layers
- π Canonical
Contentmodel β raw bytes + metadata passed between all layers via one dataclass - π HTML β HTTP-based scraper with httpx; DOM parsing via BeautifulSoup
- π PDF β client + scraper for raw PDF bytes; user-defined parsers
- π CSV β standard-library CSV parser over
rows()iterator - π XLSX β openpyxl-backed spreadsheet parser with sheet selection, empty-row control, and ISO date conversion
β‘ Quick Start
π Documentation Structure
| Section | What you'll find |
|---|---|
| Overview | The three-layer architecture and the Content model |
| How to Use | Ready-to-run examples for HTML, PDF, CSV, and XLSX |
| Extending OmniRead | Subclassing scrapers, parsers, and clients |
| Development | Setup, tests, and regenerating docs |
π Related Resources
- Source Code: Gitea Repository
- Internal PyPI: pip.aetoskia.com/simple/omniread
- CI: Builds and publishes tagged releases, gated on black / ruff / mypy / pytest.
Β© Aetoskia Internal β omniread 0.0.1