Skip to content

πŸ“„ 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 Content model β€” 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

1
2
3
4
5
6
7
8
9
from omniread import HTMLScraper, HTMLParser

class TitleParser(HTMLParser[str]):
    def parse(self) -> str:
        return self._soup.title.string

content = HTMLScraper().fetch("https://example.com")
title = TitleParser(content).parse()
assert title == "Example Domain"

πŸ“ 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


Β© Aetoskia Internal β€” omniread 0.0.1