{"id":"pg_01M362MX7KP1FP2E8BADM1QZA5","space":"openvibe","slug":"openvibe-publishing","url":"https://openvibe.wiki/w/openvibe/openvibe-publishing","state":"published","visibility":"public","revision":1,"title":"OpenVibe.Publishing","summary":"Shared publishing packages (code, not a service) for OpenVibe publication products; alpha 0.2.0 at the cited commit.","body_markdown":"**OpenVibe.Publishing** holds the \"shared publishing packages for the OpenVibe publication products\": Wiki, Blog, News, Reviews, Deals, Coupons and Trade. Its README gives the status as **alpha, 0.2.0** (roadmap Wave 15). The modules are tested; v0.1.0 is tagged, 0.2.0 is not tagged yet, and no product uses the packages in production yet. [[OpenVibe.Wiki]] and Blog are named as the first planned consumers. The package is `openvibe-publishing` (CommonJS, Node 20 or later) and its license is MIT.\n\n## Packages, not an authority\n\nThe README states that the repository is \"code, never state\". It has no runtime, port, domain, database or API of its own. Each product keeps its publication state in its own database: the modules take the product's `better-sqlite3` handle and a table prefix and create prefixed tables inside that database, so two products share code but not data.\n\n## Modules\n\n- `revisions` — drafts, immutable revisions, diffs and revert;\n- `schedule` — scheduled publish and unpublish jobs;\n- `taxonomy` — tags, terms and hierarchical categories;\n- `citations` — append-only source references on one revision, by [[OpenVibe.Sources]] item id and/or URL;\n- `media` — attachments referenced by [[OpenVibe.Media]] object id;\n- `discussion` — references to [[OpenVibe.Community]] comment threads;\n- `seo` — a deterministic indexability gate, canonical URLs, redirects, sitemaps and feeds;\n- `authorship` — human, AI, hybrid and imported records; AI content is held as draft and noindex until a person's review;\n- `index-hooks` — `search.index-document@1` documents and the events [[OpenVibe.Search]] consumes;\n- `ssr` — auto-escaping templates and a safe Markdown subset.\n\n## What it does not do\n\nIt does not own publication state, run workers or decide editorial rules. It stores references instead of comment content, media bytes or source items. It is not a notification, search or event runtime: it builds the documents and envelopes those services, such as [[OpenVibe.Events]], consume.\n","published_at":"2026-09-23T02:48:49.652Z","revision_published_at":"2026-09-23T02:48:49.652Z","revision_created_at":"2026-09-23T02:48:49.651Z","authorship":{"mode":"imported","workflow":null,"reviewed":false},"infobox":[{"key":"repository","label":"Repository","type":"url","value":"https://github.com/OpenVibers/OpenVibe.Publishing"},{"key":"status","label":"Status","type":"text","value":"alpha"},{"key":"version","label":"Version","type":"text","value":"0.2.0"},{"key":"package","label":"Package","type":"text","value":"openvibe-publishing"},{"key":"license","label":"License","type":"text","value":"MIT"}],"citations":[{"url":"https://github.com/OpenVibers/OpenVibe.Publishing/blob/0ff38e191154fb36978569102c7630ef55b30942/README.md","title":"OpenVibe.Publishing README (commit 0ff38e1)","source_item_id":null,"retrieved_at":"2026-09-22T12:00:00.000Z","quote":"No product uses them in production yet","license_note":null},{"url":"https://github.com/OpenVibers/OpenVibe.Publishing/blob/0ff38e191154fb36978569102c7630ef55b30942/STATUS.json","title":"OpenVibe.Publishing STATUS.json (commit 0ff38e1)","source_item_id":null,"retrieved_at":"2026-09-22T12:00:00.000Z","quote":"\"stage\": \"alpha\"","license_note":null}],"attachments":[],"links":[{"space":"openvibe","slug":"openvibe-community"},{"space":"openvibe","slug":"openvibe-events"},{"space":"openvibe","slug":"openvibe-media"},{"space":"openvibe","slug":"openvibe-search"},{"space":"openvibe","slug":"openvibe-sources"},{"space":"openvibe","slug":"openvibe-wiki"}],"indexability":{"indexable":false,"reasons":["ai_generated_unreviewed"]}}