Omarchy Plugin Charts
SourceEmbeddable chart images for catalog stats. Omachi serves the time series as JSON; shieldcn renders the SVG.
Live examples
/api/charts/plugin/ussego.otoru/hearts/api/charts/plugin/ussego.otoru/views/api/charts/plugin/ussego.otoru/copies/api/charts/author/ussego/copies/api/charts/omastats/published/api/charts/omastats/total/api/charts/omastats/updated/api/charts/omastats/verifiedEndpoints
GET /api/charts/omastats/{published|updated|verified|total}- Catalog-wide time series from
plugins,update_events, andverification_events. totalis the cumulative plugin count; it never drops.
GET /api/charts/plugin/{id}/{hearts|views|copies}- A single plugin's stat history, e.g.
ussego.otoru.
GET /api/charts/author/{login}/{hearts|views|copies}- An author's total, summed across all their plugins.
Query parameters
groupByBucket size: day, month, or year. Defaults:day for updated/verified, month forpublished/total.toStatusFilter verified events to one transition, e.g. broken.Response
{"title": "plugins published", "total": 1553, "points": [{"date": "2026-07-01", "count": 21}, ...]}The count/date keys are what shieldcn's query and dateQuery JSONPath selectors pick up.
Rendering
Point shieldcn's chart endpoint at the JSON; it fetches the JSON, applies the JSONPath, and renders:
https://shieldcn.dev/chart/json.svg?url=https://stats.ussego.com/api/charts/omastats/published&query=$.points[*].count&dateQuery=$.points[*].date&title=Plugins+published
The url must be extensionless: shieldcn's fetcher rejects dot-suffixed URLs, so drop the .json.
Embed in markdown:
