Prompt

How do I set up an SEO content assistant for blog outline generation with approval workflow?

Latest observation

Jul 21, 2026 · OpenAI APIWeb search: off

Here’s a practical way to set up an SEO content assistant for blog outline generation with an approval workflow.

1) Define the workflow

A simple, effective flow is:

  1. User inputs topic
  2. Assistant researches SEO intent
  3. Assistant generates blog outline
  4. Human reviews/edits
  5. Approve / reject / request revision
  6. Final outline is saved and sent to the writer or CMS

For most teams, the key is that the assistant should not publish automatically. It should create a draft and wait for approval.


2) Decide the inputs the assistant needs

For good outlines, collect structured input like:

  • Topic / seed keyword
  • Target audience
  • Search intent
  • Primary keyword
  • Secondary keywords
  • Content goal: informational / commercial / transactional
  • Brand tone
  • Desired word count range
  • Competitors or reference URLs
  • Internal links to include
  • Approval owner / reviewer

Example intake form fields:

{
  "topic": "email marketing for small businesses",
  "primary_keyword": "email marketing for small business",
  "audience": "small business owners",
  "intent": "informational",
  "tone": "practical, friendly",
  "word_count": "1200-1600",
  "secondary_keywords": ["email campaign ideas", "email automation", "newsletter tips"]
}

3) Create the outline generation prompt

Your prompt should instruct the assistant to produce a structured outline, not the full article.

Example system instruction

You are an SEO content strategist. Generate blog post outlines based on the provided topic and keywords. Optimize for search intent, include H1/H2/H3 structure, suggest FAQs, and keep outlines actionable. Do not write the full article. Output in JSON so it can be reviewed and approved.

Example output format

{
  "title": "Email Marketing for Small Businesses: A Practical Guide",
  "search_intent": "Informational",
  "primary_keyword": "email marketing for small business",
  "outline": [
    {
      "heading": "Introduction",
      "subpoints": [
        "Why email marketing matters for small businesses",
        "What readers will learn"
      ]
    },
    {
      "heading": "Why email marketing works",
      "subpoints": [
        "Low cost",
        "High ROI",
        "Direct customer communication"
      ]
    }
  ],
  "faq": [
    "How often should small businesses send emails?",
    "What is the best email marketing platform?"
  ],
  "seo_notes": [
    "Use primary keyword in title and intro",
    "Add internal links to related guides"
  ]
}

4) Add approval workflow states

Use explicit statuses so content can move cleanly through review.

Recommended states:

  • draft
  • needs_review
  • approved
  • changes_requested
  • rejected
  • archived

A basic rule set:

  • Assistant creates outline → needs_review
  • Reviewer approves → approved
  • Reviewer requests changes → changes_requested
  • Assistant regenerates/revises outline → back to needs_review

5) Implement role-based permissions

Separate who can do what:

  • Requester: submits topic
  • Assistant: generates draft outline
  • Reviewer/Editor: approves or requests changes
  • Admin: configures workflow and prompts

This prevents accidental publishing and keeps ownership clear.


6) Store each outline as a record

Use a database record for every outline so you can track version history and decisions.

Suggested fields:

  • id
  • topic
  • primary_keyword
  • outline_json
  • status
  • created_by
  • assigned_reviewer
  • version
  • feedback
  • approved_at
  • updated_at

This makes approvals auditable.


7) Add revision handling

When reviewers request changes, capture structured feedback like:

  • Add competitor comparison
  • Shorten intro
  • Include FAQ
  • Improve keyword placement
  • Remove weak section
  • Change tone to more expert-level

Then let the assistant regenerate only the affected sections rather than the whole outline.


8) Build guardrails for SEO quality

Have the assistant check for:

  • Search intent match
  • Keyword stuffing avoidance
  • Logical heading hierarchy
  • Coverage of related subtopics
  • Duplicate or thin sections
  • Clear CTA or next step
  • FAQ opportunities
  • Internal linking suggestions

You can also have it produce a short SEO rationale so reviewers understand why the outline was structured that way.


9) Suggested architecture

A simple implementation could be:

  • Frontend: form for topic submission + review UI
  • Backend API: handles outline generation, status changes, approvals
  • LLM call: generates outline JSON
  • Database: stores drafts, versions, approvals
  • Notification system: emails/Slack for review requests

Example flow:

  1. User submits topic in UI
  2. Backend sends prompt to LLM
  3. LLM returns JSON outline
  4. Backend saves as needs_review
  5. Reviewer sees outline in dashboard
  6. Reviewer clicks approve/request changes
  7. Backend updates status and logs action

10) If using a no-code tool

You can do this with:

  • Airtable or Notion for records
  • Zapier or Make for automation
  • OpenAI for generation
  • Slack/Email for approvals

Example:

  • New Airtable row = generate outline
  • Save outline to Airtable
  • Notify editor in Slack
  • Editor changes status field to approved/requested
  • Automation sends revisions back to the assistant

11) Best practice prompt pattern

Use a prompt like this:

Input

  • Topic
  • Audience
  • Primary keyword
  • Secondary keywords
  • Intent
  • Word count
  • Brand style
  • Constraints

Output

  • Title options
  • H1
  • H2/H3 outline
  • FAQ
  • SEO notes
  • Content gaps
  • Suggested internal links

Keep the output machine-readable, ideally JSON, so your workflow can reliably parse it.


12) Minimal example workflow logic

Pseudo-logic:

if new_topic_submitted:
    outline = generate_outline(topic, keywords, audience)
    save(outline, status="needs_review")

if reviewer_approves:
    update_status("approved")

if reviewer_requests_changes:
    save_feedback()
    outline = revise_outline(feedback, current_outline)
    save(outline, status="needs_review")

13) What to avoid

  • Letting the assistant publish directly
  • Generating outlines without keyword or intent data
  • Allowing free-form outputs only, without structure
  • Skipping version history
  • No approval owner assigned
  • No clear revision loop

14) Recommended starter setup

If you want the simplest useful version:

  • Form for topic submission
  • LLM prompt that outputs JSON outline
  • Database with approval statuses
  • Reviewer dashboard
  • Slack/email alert for pending review
  • Approve / request changes buttons

If you want, I can also provide:

  1. a ready-to-use prompt template for the outline generator,
  2. a database schema, or
  3. a sample workflow in Zapier/Make or code.

Observation history

Unlock observation history

Create a free Obsurfable account to unlock historical responses, model comparisons, and deeper brand intelligence.

How did Obsurfable measure this prompt?

Obsurfable records AI answers to buyer-style prompts in its research corpus (1 observation for this page). Metrics are distributions over observations, not a single static ranking.

Which AI systems does Obsurfable collect answers from?

OpenAI, ChatGPT, Google, Gemini, Google AI Mode, Anthropic, Claude, Perplexity, Grok, DeepSeek, Mistral, Copilot, and Meta AI.