Repository navigation
v2.1.0
Content Core adds local HTML ingestion and makes engine and configuration failures explicit across the library, CLI and MCP.
New capabilities
- Extract local HTML as Markdown, preserving the document title and handling BOMs and legacy encodings (#59, #66).
- Import the exception taxonomy directly from
content_core(#52).ContentCoreErrorcatches typed failures; some paths still raise untyped exceptions pending #60.
Behavior changes and fixes
- Explicit Docling selection now fails clearly when the extra is unavailable. Install with
pip install "content-core[docling]", or selectsimple;autoretains fallback (#50). - Engine names are validated at every configuration entry point. Invalid boolean tokens are rejected before the config file is written (#51).
- Importing the library preserves the host application's logging. Library users can opt in with
logger.enable("content_core"); CLI/MCP continue to configure stderr logging (#47). - MCP reports the Content Core version during initialization (#56).
- PyPI uploads use the exact artifacts validated by the publishing workflow's Package job (#57).
- Publishing a GitHub Release now starts the PyPI upload. Tags and draft releases can be prepared first;
make releasepublishes the reviewed draft. The packaging gate verifies the release tag against the package version (#93). - Removed unused
asciidoc, the internalProcessorProtocol and three unused internal exception classes (#58, #53, #52). Direct imports of the removed internal names must be updated. - Documented Firecrawl-compatible backends through
FIRECRAWL_API_URL(#86).
Validation
409 unit and integration tests passed on the final commit. CI passed on Python 3.10, 3.11 and 3.12. The built wheel passed isolated library, CLI and real MCP initialization smokes; runtime assets and versions were checked, and the docling, crawl4ai and langchain extras installed successfully.
Live checks were completed before the final workflow/documentation change; the final runtime source, tests and dependency files are byte-identical. Live URL extraction passed with simple, Firecrawl, Jina and Crawl4AI engines, along with YouTube transcript extraction and remote PDF retrieval. Explicit Docling PDF inference passed. An official MCP SDK client successfully initialized the installed wheel, listed its tools and extracted a local HTML document. OpenAI Whisper transcription passed for real MP3 and MP4 fixtures. A real gpt-4o-mini summary passed through the installed-wheel MCP server, with assertions that key source facts were preserved. Initial missing-browser and account-credit failures were resolved before the targeted reruns passed. Dependabot alerts are unavailable because they are disabled for this repository. The release workflow builds its own artifacts; published files will be checked separately against the recorded hashes and tested from PyPI.
Thanks
- @JuanSebastianOtalora — local HTML ingestion (#66).
- @Alphaxiaoteng — the MCP server version fix (#83).
- @HariHaranDFX — removal of the unused asciidoc dependency (#58).
- @lfnovo — engine/configuration and logging fixes, public exceptions, packaging validation and release preparation (#55, #57, #86, #87, #88, #89, #90, #91, #92, #93).
Thank you to everyone who reported issues and tested the changes.
Install: pip install --upgrade content-core==2.1.0
Run without installation: uvx --from content-core==2.1.0 content-core --help
With Docling: pip install --upgrade "content-core[docling]==2.1.0"