adapto:content-seed
The express lane over the content pipeline (content-pipeline.md). It
runs a condensed research → plan → create → upload cycle with greenfield defaults and minimal
questions, to quickly fill a fresh site with a few on-brand draft pieces. It is not a separate write
path — it uses the same drafts, _adapto_seo, ledger, and gated upload as the full pipeline; it just skips
the deliberation. For a real content cycle, use the full pipeline.
When to use
- "Seed some starter content", "give me a few starter drafts fast", "populate the site so it isn't empty" —
typically right after
adapto:schema-apply.
When not to use
- A considered content cycle (research, top-N planning, cornerstone writing) → the full pipeline
(
adapto:content-research → adapto:content-plan → adapto:content-create → adapto:content-upload).
- Translating existing content →
adapto:translate. · Just checking the environment → adapto:doctor.
Inputs
- The brain (
.adapto/project/) if present — for voice/audience; absent → neutral, generic starters.
.adapto/schema.json — collection targets (for any collection-item starters); absent → Articles/Pages only.
- Tenant + language (confirm the working tenant).
- A tiny bit of direction: how many pieces / which types (defaults below).
Outputs
- A few draft pieces in Adapto: ~2–3 Articles (provenance-tagged), home + about Pages, and 2–3 rows per
custom collection — created via the pipeline's md→draft→upload path (so they carry
_adapto_seo + ledger rows).
- Next step: review the drafts on the dev server, then
adapto:publish to take them live; or run the full
pipeline (adapto:content-research …) for a proper cycle; adapto:seo-wire to render their metadata.
Preconditions
- Preflight with the
adapto:doctor checks.
- Hard-block on an authenticated CLI (
adapto auth me) and a selected tenant — it ends by writing
drafts to the CMS; confirm the working tenant.
.adapto/schema.json for collection-item starters (else Articles/Pages only). adapto CLI >= 0.1.3.
Plan phase
A condensed cycle, gated before any CMS write:
- Auto-propose a small slate from the brain (or neutral defaults): titles/topics + counts (defaults:
~3 Articles, home + about Pages, 2–3 rows per custom collection in
schema.json). Take one edit pass
(add/remove/rename, adjust counts) — don't interrogate field-by-field. Mark which Articles link to which
categories.
- Draft the pieces as Markdown (the
adapto-writer path, content-pipeline.md §2) so the user can review
them, and write them to .adapto/drafts/ with ledger rows. The express lane skips deliberation, not
the quality gates — drafts follow seo-standards.md and
prose-standards.md like the full pipeline: the writer's prose
self-check, the deterministic em-dash grep on each draft body, and the adapto-editor critique pass all
run exactly as in adapto:content-create.
- Print the upload plan (the
adapto:content-upload plan): create-vs-update, the schema gate, _adapto_seo
items, provenance session id — and ask as a pickable question (Approve / Change something /
Discuss this). No cost/token figures. Nothing to create → say so and stop.
Apply phase
Runs only after approval — the same write path as adapto:content-upload:
- Convert each approved draft md→HTML, create the Article/Page/collection item as
draft
(--source '{"type":"ai_generated","name":"<session>"}' on Articles), mirror _adapto_seo, advance the
ledger to uploaded; link Articles to categories.
- Loop cleanly (judge success from each call's
--json, exit 0 on success — §8).
- Then restart the dev server (stop→start) and keep it running so the new drafts appear — never kill it
(§14). Point to review →
adapto:publish, or the full pipeline for the next cycle.
Errors and recovery
- No
.adapto/schema.json → seed Articles + Pages only; skip collection items; point to adapto:schema-apply.
- No brain → use neutral generic starters; note content will be sharper after
adapto:project-define.
- Slug already exists (dedup via the ledger /
get-by-slug) → skip that piece; never duplicate.
- Schema gate / drift / partial failure → handled exactly as
adapto:content-upload (it's the same path).
- Not authenticated / no tenant → stop; offer both auth paths —
Log in or Register (conventions.md §11) — then tenant selection.
Forbidden actions
- Never omit
--source on an Article write — it mislabels content as internal/CLI (forbidden-actions.md).
- Never publish — everything lands
draft (draft-first); the user reviews then adapto:publish.
- Never write without an approved plan; never assume the working tenant.
- Never fabricate an author; never invent fields outside the schema; never modify the read-client.
1---2name: adapto-content-seed3description: The express lane — quickly stand up a few on-brand starter drafts by running a condensed research→plan→create→upload cycle with greenfield defaults and minimal questions. For "just give me a few starter pieces fast"; the full pipeline is the considered path. Plan-then-apply; everything lands as draft.4---56# adapto:content-seed78The **express lane** over the content pipeline ([content-pipeline.md](../../shared/content-pipeline.md)). It9runs a **condensed research → plan → create → upload** cycle with **greenfield defaults and minimal10questions**, to quickly fill a fresh site with a few on-brand **draft** pieces. It is **not a separate write11path** — it uses the same drafts, `_adapto_seo`, ledger, and gated upload as the full pipeline; it just skips12the deliberation. For a real content cycle, use the full pipeline.1314## When to use15- "Seed some starter content", "give me a few starter drafts fast", "populate the site so it isn't empty" —16 typically right after `adapto:schema-apply`.1718## When not to use19- A considered content cycle (research, top-N planning, cornerstone writing) → the full pipeline20 (`adapto:content-research` → `adapto:content-plan` → `adapto:content-create` → `adapto:content-upload`).21- Translating existing content → `adapto:translate`. · Just checking the environment → `adapto:doctor`.2223## Inputs24- **The brain** (`.adapto/project/`) if present — for voice/audience; absent → neutral, generic starters.25- **`.adapto/schema.json`** — collection targets (for any collection-item starters); absent → Articles/Pages only.26- **Tenant** + language (confirm the working tenant).27- A tiny bit of direction: how many pieces / which types (defaults below).2829## Outputs30- A few **draft** pieces in Adapto: ~2–3 Articles (provenance-tagged), home + about Pages, and 2–3 rows per31 custom collection — created via the pipeline's md→draft→upload path (so they carry `_adapto_seo` + ledger rows).32- **Next step:** review the drafts on the dev server, then `adapto:publish` to take them live; or run the full33 pipeline (`adapto:content-research` …) for a proper cycle; `adapto:seo-wire` to render their metadata.3435## Preconditions36- **Preflight** with the `adapto:doctor` checks.37- **Hard-block** on an authenticated CLI (`adapto auth me`) **and** a selected tenant — it ends by writing38 drafts to the CMS; confirm the **working tenant**.39- `.adapto/schema.json` for collection-item starters (else Articles/Pages only). `adapto` CLI `>= 0.1.3`.4041## Plan phase42A condensed cycle, gated before any CMS write:431. **Auto-propose a small slate** from the brain (or neutral defaults): titles/topics + counts (defaults:44 ~3 Articles, home + about Pages, 2–3 rows per custom collection in `schema.json`). Take **one edit pass**45 (add/remove/rename, adjust counts) — don't interrogate field-by-field. Mark which Articles link to which46 categories.472. **Draft the pieces** as Markdown (the `adapto-writer` path, content-pipeline.md §2) so the user can review48 them, and write them to `.adapto/drafts/` with ledger rows. The express lane skips deliberation, **not49 the quality gates** — drafts follow [seo-standards.md](../../shared/seo-standards.md) and50 [prose-standards.md](../../shared/prose-standards.md) like the full pipeline: the writer's prose51 self-check, the deterministic em-dash grep on each draft body, and the `adapto-editor` critique pass all52 run exactly as in `adapto:content-create`.533. **Print the upload plan** (the `adapto:content-upload` plan): create-vs-update, the schema gate, `_adapto_seo`54 items, provenance session id — and ask as a **pickable question** (`Approve` / `Change something` /55 `Discuss this`). No cost/token figures. Nothing to create → say so and stop.5657## Apply phase58Runs only after approval — the same write path as `adapto:content-upload`:59- Convert each approved draft md→HTML, **create** the Article/Page/collection item as `draft`60 (`--source '{"type":"ai_generated","name":"<session>"}'` on Articles), mirror `_adapto_seo`, advance the61 ledger to `uploaded`; link Articles to categories.62- Loop cleanly (judge success from each call's `--json`, exit 0 on success — §8).63- **Then restart the dev server (stop→start) and keep it running** so the new drafts appear — **never kill it**64 (§14). Point to review → `adapto:publish`, or the full pipeline for the next cycle.6566## Errors and recovery67- **No `.adapto/schema.json`** → seed Articles + Pages only; skip collection items; point to `adapto:schema-apply`.68- **No brain** → use neutral generic starters; note content will be sharper after `adapto:project-define`.69- **Slug already exists** (dedup via the ledger / `get-by-slug`) → skip that piece; never duplicate.70- **Schema gate / drift / partial failure** → handled exactly as `adapto:content-upload` (it's the same path).71- **Not authenticated / no tenant** → stop; offer both auth paths — `Log in` or `Register` ([conventions.md](../../shared/conventions.md) §11) — then tenant selection.7273## Forbidden actions74- Never omit `--source` on an Article write — it mislabels content as `internal`/`CLI` (forbidden-actions.md).75- Never publish — everything lands `draft` (draft-first); the user reviews then `adapto:publish`.76- Never write without an approved plan; never assume the working tenant.77- Never fabricate an author; never invent fields outside the schema; never modify the read-client.