Skip to Content
Activity Typescontent_brief — SEO Content Brief

content_brief — SEO Content Brief

FieldValue
Type keycontent_brief
LabelSEO Content Brief
Agent queuecontent-brief-writer
Plan tierFree+ (starter, growth, professional)
Credits/unit1
Monthly range1 per blog_post

What it produces

A structured SEO content brief for a single blog post: target keyword, secondary keywords, proposed title, recommended word count, outline (H2/H3 structure), angle/hook, competitor references, and internal linking suggestions. Output is stored in Activity.outputPayload as structured JSON.


Pipeline sequence

keyword_cluster (optional context) ──→ content-brief-writer ──→ Activity: done [auto-approved — no review] blog-writer picks up outputPayload

No HITL gates. The brief auto-approves on agent completion.


Status machine

The content brief does not have a dedicated content model. Status is tracked on the parent Activity record.

Activity statusMeaning
pendingScheduled, waiting for dependencies
queuedSubmitted to BullMQ
in_progressWorker running
doneBrief written, outputPayload saved
failedWorker error

The Deliverable linked to this activity moves from generatingapproved automatically when the activity reaches done.


HITL gates

None. Content briefs are never shown to the DM reviewer or the client for approval. The output feeds directly into the blog-writer’s input payload.


Dependencies

  • Optional input: keyword_cluster — if a keyword cluster was produced this month, its primary keyword and cluster data are injected as context into the brief writer’s prompt.
  • Depended on by: blog_post — the blog-writer’s input payload always includes the linked content brief’s outputPayload.

DB records created

RecordCreated byNotes
DeliverableTemplatedeliverable-planner1 brief per blog post quota
Activityactivity-plannertype = content_brief; dependsOn links to blog_post activity
Deliverablecontent-brief-writer workerAuto-approved on completion

No dedicated content model. The brief JSON lives in Activity.outputPayload.


Key rules

  • The planner must always pair 1 content_brief with each blog_post. Creating a blog post without a brief is invalid.
  • The content_brief activity should be scheduled to run before the blog_post activity (enforced via Activity.dependsOn).
  • There is no client-facing deliverable card for content briefs — they are an internal pipeline input, not a client deliverable.

© 2026 Leadmetrics — Internal use only