WP Manifestindependent plugin directory
manifest / content / semantic-posts

SemanticPosts WP Registry grade A. No security issues foundWP RegistryNo security issues foundOpen the reportA

WordPress plugin: related posts that are actually related, without slowing your site down.

★ 0stars
11release downloads
v0.2.2latest · 5mo ago

Install

Download semantic-posts-0.2.2.zip From the v0.2.2 release on GitHub, May 21, 2026

Upload it under Plugins → Add New Plugin → Upload Plugin, then activate.

Install straight from GitHub with WP-CLI:

wp plugin install https://github.com/christinoleo/semantic-posts/releases/download/v0.2.2/semantic-posts-0.2.2.zip
No built-in updater. New versions won't appear under Dashboard → Updates. Install new releases yourself, or let Git Updater track the repository.

Related posts that are actually related, without slowing your site down.

A WordPress plugin that uses semantic embeddings to surface "next reads" with substantially better relevance than category matching — while staying lighter on page-load cost than every existing alternative.

Status: Planning complete. Implementation in progress.


Why this exists

WordPress site owners are stuck between two bad options for related posts:

  • Accurate but slow: YARPP, Contextual Related Posts. Compute relevance per pageview via brute-force MySQL queries. Several are still on managed-host disallow lists (WP Engine bans 4 of them as of May 2026).
  • Fast but dumb: Jetpack Related Posts, Same Category Posts. Category matching surfaces the same 3 recent posts on every page.

SemanticPosts is the third option: precompute once at index time, serve from cache.

How it works

  1. When you save a post, the plugin generates an embedding via OpenAI (background, rate-limited).
  2. A Similarity Graph maintains the top-N most-related posts per post in postmeta, updated incrementally on every save.
  3. On every page view, related posts come from cached postmeta — 2 indexed queries, zero HTTP.

Result: page-load cost lower than category-matching plugins, recommendation quality higher than brute-force semantic alternatives, and the plugin doesn't trip any managed-host audit.

Self-contained. No external vector database. No Qdrant, no Pinecone, no Supabase, no Typesense. Works on commodity WordPress hosting with nothing beyond an OpenAI API key.

Architecture summary

The plugin is split into two paths separated by a hard wall:

  • Render path (every page view): allowed exactly get_post_meta + WP_Query. Zero HTTP. <1MB memory delta. <5ms TTFB delta. Page-cache-compatible (deterministic HTML per post).
  • Indexing path (background only): WP-Cron or WP-CLI. All OpenAI calls happen here. Memory-bounded (~8.6MB peak per tick regardless of corpus size). Resumable across cron-tick deaths.

Cold-start indexing uses a phased approach: brute-force pairwise for the first 200 posts (Phase 1 bootstrap), then graph-traversal kNN walk for posts beyond (Phase 2, visit budget 300, L=5 random entry points). See ADR-0008.

Pure-PHP cosine compute viability was measured before architecture froze: ~10 min for 5,000-post pairwise on a 256MB shared host, ~39MB of base64-encoded float32 postmeta storage. See spike 0001.

Project structure

docs/
├── CONTEXT.md                          # Domain glossary
├── adr/0001..0008-*.md                 # Architecture Decision Records (locked)
└── spikes/0001-php-cosine-viability.md # Pure-PHP cosine compute viability spike

_bmad-output/planning-artifacts/        # Planning artifacts
├── project-brief.md                    # Positioning, market, kill criteria
├── prds/prd-semanticPosts-2026-05-20/  # PRD + addendum + decision log
├── architecture.md                     # Architecture, patterns, EV registry
└── epics.md                            # 4 epics, 37 stories, FR coverage

spike/                                  # PHP cosine spike (Docker fixture)

Implementation tracking

Work is broken into 18 tracer-bullet issues, each cutting end-to-end through the stack. See open issues.

  • Epic 1 (Foundation & First-Render Path) — #1 through #4
  • Epic 2 (Semantic Indexing Pipeline) — #5 through #12
  • Epic 3 (Operational Surface) — #13 through #16
  • Epic 4 (Launch Readiness) — #17 through #18

Labels: afk (implementable end-to-end without human input) / hitl (requires manual step — review, evaluation, or external action). Epic labels mark which epic each issue belongs to.

Scope and discipline

This is a disposable 1-week MVP with an explicit 90-day kill criterion per the project brief:

  • Day 90: if active installs < 500, the project ends.
  • Day 90: if active installs ≥ 1,000, a Pro tier ships.
  • Anything past Day 180 is upside, not commitment.

The repo is public for transparency (host audit story, marketing-site backing) — not because the project actively solicits contributions. Issues and PRs are welcome but managed at solo-maintainer cadence.

Distribution

Free on WordPress.org with the user's own OpenAI API key. Pro tier is deferred and ships only if Day-90 milestones hit.

License

GPL-2.0-or-later — required for WordPress.org plugin distribution. Pro tier inherits the same license per WordPress plugin freemium convention (protection comes from license-key-gated updates and hosted features, not from license terms).

Releases

9 releases. Each count is every asset in that release; expand a row for the breakdown.

Tag
Published
Assets
Downloads
v0.2.2 latest
May 21, 2026 5mo ago
semantic-posts-0.2.2.zip
5
May 21, 2026 5mo ago
semantic-posts-0.2.1.zip
1
May 21, 2026 5mo ago
semantic-posts-0.2.0.zip
1
May 21, 2026 5mo ago
semantic-posts-0.1.5.zip
1
May 20, 2026 5mo ago
semantic-posts-0.1.4.zip
1
May 20, 2026 5mo ago
semantic-posts-0.1.3.zip
0
May 20, 2026 5mo ago
semantic-posts-0.1.2.zip
1
May 20, 2026 5mo ago
semantic-posts-0.1.1.zip
1
May 20, 2026 5mo ago
semantic-posts-0.1.0.zip
0
A grade

Security

SemanticPosts 0.2.2 · audited by WP Registry

No security issues found.

Audited release
0.2.2
Findings
none
Worst severity
—
Content hash
b71dc951bb9881b86867cc7a…

WP Registry hashes the installable build and reports on that exact bytes-for-bytes copy. Embargoed findings are withheld until they are disclosed, so a clean verdict means nothing public is outstanding. WP Manifest does not audit code itself.