@leadpulse/pseo
v0.1.0
Published
Programmatic SEO content engine: scaffold, compile, and render markdown-driven pSEO pages (integrations, comparisons, alternatives, roundups, head-to-head) for any landing page.
Maintainers
Readme
pseo
A programmatic-SEO content engine. Markdown is the source of truth for your SEO pages; you (or your LLM/agent) author pages, components, and layouts, and the engine compiles and renders them for any landing page.
The package ships the structure only — no built-in pages, layouts, or components. Everything is generated by your harness and read from your project.
Install
Published to GitHub Packages. Point the @daweng-pam scope at the GitHub
registry (project .npmrc or ~/.npmrc):
@daweng-pam:registry=https://npm.pkg.github.com# Run directly, no install:
npx @daweng-pam/pseo init
# Or install as a dev dependency:
npm i -D @daweng-pam/pseo
pnpm add -D @daweng-pam/pseoRequires Node >= 20. Zero runtime dependencies.
Quickstart
# 1. First-time setup: publish target + output frameworks.
npx @daweng-pam/pseo init
# 2. Scaffold a markdown page (source of truth).
npx @daweng-pam/pseo create /integrations/facebook-to-hubspot "Sync Facebook leads to HubSpot"
# 3. Compile every page to JSON + React/HTML output.
npx @daweng-pam/pseo compile
# Inspect what exists in the project.
npx @daweng-pam/pseo list pages
npx @daweng-pam/pseo list layouts
npx @daweng-pam/pseo list componentsCommands
| Command | Description |
| --- | --- |
| pseo init | Wizard: writes content-engine.config.json + empty components.json / layouts.json. |
| pseo create <path> [desc] | Scaffold a markdown page at <path> (writes pages/<slug>.md + compiles it). Options: --layout, --industry, --content-type. |
| pseo compile | Compile every page in pages/ to JSON + rendered React/HTML under the output dir. |
| pseo list pages\|layouts\|components | List authored pages, layouts, or components. |
Project layout
content-engine.config.json # publish target + frameworks + domain
components.json # component definitions (your harness authors these)
layouts.json # layout definitions (your harness authors these)
pages/*.md # markdown page source of truth
content/*.json # compiled page data
content/render/<fw>/* # rendered React (.tsx) / HTML (.html)How it works with an LLM / agent
Pages, components, and layouts are authored by your harness, then compiled:
- Components —
add_component(MCP) or editcomponents.json: name + props schema. The React/HTML renderer maps a component name to its renderer. - Layouts —
add_layout(MCP) or editlayouts.json: a named list of sections ({ name, kind }wherekindisslotorblocks). Layouts are resolved by the page's explicitlayout, thencontentType, thenindustry. - Pages — markdown with YAML front-matter + fenced component blocks
(
```chart,```table, …).pseo compileturns them into JSON + rendered output.
The companion @daweng-pam/content-engine-mcp package exposes the same store
over MCP so agents can do all of this non-interactively, and
@daweng-pam/content-engine-react renders the result in a React app.
Page data format
A page is front-matter + blocks:
---
slug: facebook-to-hubspot
title: Facebook to HubSpot
metaDescription: Sync Facebook leads to HubSpot in real time.
h1: Facebook to HubSpot Integration
contentType: integration
layout: integration
---
A markdown introduction.
```chart
title: Leads per month
labels: Jan, Feb, Mar
data: 120, 180, 240
The front-matter grammar is `key: value` + indented `- item` lists; fenced
blocks use the same grammar for their props.