SEO METADATA · MULTI-LANGUAGE SDK
easeo
A deterministic SEO metadata generator: one Rust core with Python, Node.js, and Rust APIs.
Takes a content entity, its route, and a site config, and returns canonical URL, title, description, robots directives, Open Graph, Twitter Cards, and JSON-LD.
Problem
SEO libraries tend to mix metadata generation with scoring, keyword analysis, and content rewriting. The output varies run to run, which makes it hard to snapshot-test, hash, cache, or diff. Platforms that render in more than one language end up with subtly different payloads per stack.
Key decisions
One core, three bindings
All logic lives in easeo-core. Python and Node.js wrap the same engine, and the cross-language conformance suite asserts byte-for-byte identical output.
Pure determinism
No timestamps, randomness, environment reads, or hidden I/O. The same inputs always produce the same payload, so output can be hashed and committed.
SEO contracts for CI
build_seo_contract emits machine-readable SEO intent that can be committed and validated as code, catching metadata regressions in review.
Scoped extension registries
HookRegistry and SchemaRegistry add post-processing and custom JSON-LD without touching the core, and are scoped to a config rather than global.
Results
Tradeoffs
- ·Not a framework: adapters marshal inputs, they do not own application lifecycle
- ·Not a scoring, keyword-analysis, crawling, or content-rewriting tool
- ·Renders a head snippet, not a full document; alpha release status