Seo Writer

Context-first SEO article writing with Obsidian + Claude Code. 12-step pipeline with brand context layer.

Context-First SEO Writing with Obsidian + Claude Code

Write SEO articles that know your brand, audience, and strategy — not generic content from a blank page.

The Technique

Most AI-generated content starts from zero every time. You paste a keyword, get a generic article, and spend hours fixing the tone, adding brand voice, and connecting it to your strategy.

This vault flips that. You build a context layer once — brand identity, audience personas, tone of voice, content pillars, keywords — and every article written through the pipeline inherits that context automatically.

┌──────────────────────────────────────────────────────────┐
│                                                          │
│  ┌────────────┐              ┌─────────────────────┐    │
│  │  WORKSPACE │─────────────▶│  ARTICLE PIPELINE   │    │
│  │  (context) │              │  (12 steps)         │    │
│  │            │              │                     │    │
│  │  BRAND     │              │  1-6:  Research     │    │
│  │  AUDIENCE  │              │  7-10: Write        │    │
│  │  TOV       │              │  11-12: Finalize    │    │
│  │  PILLARS   │              │                     │    │
│  │  KEYWORDS  │              └─────────────────────┘    │
│  │  ...       │                       │                 │
│  └────────────┘                       ▼                 │
│                              ┌─────────────────────┐    │
│                              │  OUTPUT              │    │
│                              │  research/           │    │
│                              │  content/            │    │
│                              │  briefs/             │    │
│                              └─────────────────────┘    │
│                                                          │
│  Obsidian links everything. Graph view shows connections.│
└──────────────────────────────────────────────────────────┘

Why Not Just Prompt Directly?

"Write an article about X"This vault: /article-master "X"
ToneGenericYour brand voice (from TOV.md)
StructureAI decidesSERP-driven: what's actually ranking
KeywordsGuessedReal data: volume, difficulty, intent
CannibalizationNo checkChecked against your existing content
Brand rulesNone"Do NOT" list, words to avoid
Pillar alignmentNoneMaps to your content strategy
ValidationHope for the best30+ automated checks
ConsistencyEvery article is differentEvery article shares the same context
MemoryStarts from zero each timeLearns from past articles (LEARNINGS.md)

The difference compounds. Article #1 is slightly better. Article #20 is in a different league — because the context layer grows with every piece you publish.

See a complete example with a fictional brand in the example/ directory.

Vault Structure

.
├── workspace/                 Context layer (8 files)
│   ├── BRAND.md               Identity, domain, USP, design tokens
│   ├── AUDIENCE.md            Personas, pain points, segments
│   ├── TOV.md                 Voice spectrum, writing rules, page-type tone shifts
│   ├── PILLARS.md             Content pillars and topic distribution
│   ├── KEYWORDS.md            Keyword clusters mapped to pillars
│   ├── COMPETITORS.md         Competitive landscape and content gaps
│   ├── STRATEGY.md            Priorities, goals, decisions log
│   └── LEARNINGS.md           What worked, what failed (grows over time)
│
├── article-master/            12-step pipeline
│   ├── SKILL.md               Orchestrator
│   ├── article-research/      Steps 1-6: SERP analysis, structure, semantic map
│   ├── article-write/         Steps 7-10: Brief, draft, gap analysis, revision
│   ├── article-finalize/      Steps 11-12: Validation, schema, meta, linking
│   └── references/
│       ├── blog-guidelines.md
│       └── landing-page-guidelines.md
│
├── research/                  Output: research notes
├── content/                   Output: drafts and finals
├── briefs/                    Output: Obsidian brief notes
├── findings/                  Output: validation results (JSON)
├── .obsidian/                 Minimal config (dataview plugin)
├── CLAUDE.md                  Project context for Claude Code
└── .claude/commands/          Slash commands
    ├── article-master.md      /article-master <keyword>
    ├── article-research.md    /article-research <keyword>
    ├── article-write.md       /article-write
    ├── article-finalize.md    /article-finalize
    └── onboard.md             /onboard setup wizard

Multi-Client Setup

This vault is one vault per client. For multiple clients, clone the repo once per client:

git clone <this-repo> acme-seo
git clone <this-repo> beta-corp-seo

Each vault is fully independent — its own workspace, research, content, and Obsidian graph. No risk of cross-contamination between clients.

Quick Start

1. Clone and open in Obsidian

git clone <this-repo> my-brand
cd my-brand

Open the folder as a vault in Obsidian. Install the Dataview community plugin when prompted.

2. Set up your workspace

With Claude Code (recommended)

/onboard

The wizard guides you through each file, asks focused questions, and writes your answers. Takes ~20 minutes for the full set, ~10 for the minimum.

Manually

Fill the workspace files in this order — each one builds on the previous:

#FileTimeWhat it capturesMinimum?
1BRAND.md~5 minName, domain, USP, languages, voice attributesYes
2AUDIENCE.md~5 minPrimary persona, pain points, buying triggersYes
3TOV.md~5 minVoice spectrum (5 dimensions), writing rules, key messagesYes
4PILLARS.md~5 min3-4 content themes with topics
5KEYWORDS.md~5 minKeyword clusters mapped to pillars
6COMPETITORS.md~5 minTop 3 competitors, strengths/weaknesses
7STRATEGY.md~3 minCurrent phase, priorities, goals
8LEARNINGS.mdGrows over time as you publish

The first 3 files (BRAND, AUDIENCE, TOV) are the minimum needed to run the article pipeline. The rest improve quality but don't block you.

3. Write your first article

/article-master "your target keyword"

The pipeline runs in 3 phases with pauses between each:

Phase 1: RESEARCH (Steps 1-6)
  Analyze SERP, extract competitor headings, build outline,
  map semantic context, extract insights
  → research/article-<slug>-research.md
  → PAUSE for review

Phase 2: WRITE (Steps 7-10)
  Generate SEO brief, write draft, gap analysis vs competitors,
  integrate gaps into final draft
  → content/article-<slug>-draft.md
  → PAUSE for review

Phase 3: FINALIZE (Steps 11-12)
  Validate (title/meta/density/headings/brand alignment),
  add schema markup, internal linking plan, social meta, alt text
  → content/article-<slug>-final.md
  → briefs/article-<slug>.md (Obsidian note)

Flags:

  • --landing — landing page instead of blog article
  • --auto — skip pauses, run all 12 steps continuously

You can also run phases individually:

  • /article-research "keyword" — only research
  • /article-write — only writing (reads research from disk)
  • /article-finalize — only finalization (reads draft from disk)

The 12 Steps

#StepWhat it does
1SERPTop 10 competitor analysis, SERP features, intent classification
2HeadingsH1/H2/H3 extraction from top 3-5 competitors
3StructureSuperior outline: competitor patterns + unique angles
4ContentDepth analysis: examples, data, visuals, E-E-A-T signals
5ContextSemantic map: related keywords, LSI terms, cannibalization check
6InsightsVoice patterns, hook analysis, CTA patterns from competitors
7BriefSEO metadata + section-by-section writing instructions
8Draft 1Full article draft (Gulpease 60-70 readability)
9Gap AnalysisDraft vs competitor coverage: topics, keywords, structure
10Draft 2Integrate gaps, maintain readability
11Validate30+ checks: title, meta, density, headings, brand alignment
12FinalizeSchema markup, internal links, social meta, image alt text

Output Files

FileLocationPurpose
Researchresearch/article-<slug>-research.mdSERP data, headings, outline, semantic map
Draftcontent/article-<slug>-draft.mdArticle draft with frontmatter
Finalcontent/article-<slug>-final.mdProduction-ready article
Briefbriefs/article-<slug>.mdObsidian note with wikilinks to workspace
Findingsfindings/article-<slug>-YYYY-MM-DD.jsonValidation results from Step 11

Each file is self-contained — no in-memory dependency between phases. You can run research today and write tomorrow.

Requirements

ToolRequired?What for
ObsidianYesVault navigation, graph view, wikilinks
Claude CodeYesRuns the pipeline and onboard wizard
Dataview pluginRecommendedQueries across notes (future dashboards)
DataForSEOOptionalAutomates Step 1 (SERP data) and Step 5 (keyword data). Without it, do these steps manually.

How the Context Layer Works

Every workspace file is linked to the others via Obsidian wikilinks. When the article pipeline loads context in Phase 0, it reads:

  • BRAND.md → domain, name, voice attributes, design tokens for landing pages
  • AUDIENCE.md → who you're writing for, their pain points
  • TOV.md → how to write (spectrum positions, rules, page-type adjustments)
  • PILLARS.md → which pillar this article belongs to
  • KEYWORDS.md → cannibalization check, cluster mapping
  • COMPETITORS.md → competitive context
  • STRATEGY.md → current priorities
  • LEARNINGS.md → patterns to avoid

This context flows into every step. The brief references TOV for tone. The validation checks BRAND for banned words. The schema uses domain from BRAND. The outline connects to PILLARS.

License

MIT

Related

How to Install

  1. Download the ZIP or clone the repository
  2. Open the folder as a vault in Obsidian (File → Open Vault)
  3. Obsidian will prompt you to install required plugins

Stats

Stars

0

Forks

0

License

MIT

Last updated 12h ago

Categories

Tags

article-writingclaude-codecontent-writingobsidianseo