Skip to content
← GoodVibeMarketer The Blueprint · Free

The architecture of the Editor's Stack, agent by agent.

Five agents. One shared file system. A site, a publication and a distribution pipeline that ship the same way every day. Same architecture, different voice. It flexes from a SaaS product to a personal brand. This page is the full document. Enough detail for a determined marketer to attempt it themselves.

Reference 01 · SaaS

MissingLinkz

Campaign-link infrastructure. Uncontested high-intent SEO, daily Writer Agent posting, X / LinkedIn / Reddit distribution.

Reference 02 · Personal brand

GoodVibeMarketer

Voice-driven thought leadership. Slower cadence on the website, sharper edge in the voice, weekly Newsletter Agent on Beehiiv.

01 · Philosophy

Infrastructure you own. Taste as the gate.

Most marketing infrastructure is rented. You publish to platforms you don't control, in templates someone else designed, against algorithms that change without warning. The Editor's Stack is the opposite.

The website is your code. The agents are your prompts. The newsletter list is owned, not borrowed. Distribution is drafted by agents but posted by humans on accounts you log into.

The mental model is small and stubborn:

01

Clarity over cleverness.

Every agent reads two documents before it does anything: a voice guide and an identity brief. If those two files are vague, every output is too.

02

Files over APIs, where possible.

Agents hand work to each other by writing to a shared folder of plain markdown. No queue server. No glue code. The file system is the message bus.

03

Drafts go to humans. Schedules go to machines.

Cron jobs run the agents. A pull request is the editorial gate. Nothing ships to the public without a person clicking merge.

04

Taste is the moat.

The agents are commodity. The voice and judgement are not.

The throughline. The MissingLinkz stack and the GoodVibeMarketer stack are the same architecture. Different voice, different cadence, different channels. Once you understand the shape, you can tune it for either a product company or a personal brand without re-inventing the pipes.

02 · System architecture

Five agents and one shared file system.

Each agent owns one job. They communicate by reading and writing files in a single directory. That directory lives in git, which means every state change is reviewable, revertible and auditable.

System architecture: Website, SEO, Writer, Social and Newsletter agents around a central shared file system in content-plan/. Every agent reads and writes specific files.
Five agents, one shared directory. Every arrow is a file read or write — no queue, no webhook.

The shared file system

The integration layer is a folder called content-plan/ at the repo root. It contains the documents every agent depends on plus the queues that pass work between them.

File Owned by Purpose
VOICE.mdHumanTone, rhythm, banned phrases. Read by every agent before it writes anything.
IDENTITY.mdHumanPositioning, audience, the things you must never sound like.
SEO_AUDIT.mdSEO AgentRolling 30-day audit schedule and findings log.
KEYWORD_TARGETS.mdSEO AgentMaster list of bottom-of-funnel keyword opportunities.
COMPETITORS.mdHuman + SEO AgentWho matters, what they're shipping.
AEO_PROMPTS.md + AEO_MONITOR.mdHuman + SEO AgentPrompts the SEO agent runs weekly against Perplexity; snapshot table of whether you're cited.
SEO_QUEUE.mdSEO → WriterArticle briefs handed from SEO to Writer.
PUBLISHED.mdWriter AgentSingle source of truth for what's live. Read by Social and Newsletter.
SOCIAL_DRAFTS/Social AgentOne markdown file per article. All four platforms inside.
SOCIAL_POSTED.mdHumanLive URLs after you post. Closes the loop.

The directory sits at content-plan/ at the repo root.

03 · The five agents

One job each. Strict input. Predictable output.

Every agent is configured the same way: a prompt file describes the job, a workflow file schedules it, the runtime is claude -p in headless mode. Cost caps are hard-coded. Nothing surprises you.

Agent Job Input Output Human step
Website Build pages, posts, components A brief, in conversation Pull request Review + merge
SEO Audit, research, brief Live site + competitor list Fixes, keywords, briefs Approve the draft PR
Writer Draft blog posts SEO_QUEUE.md briefs MDX posts in src/content/blog/ Optional pre-publish edit
Social Draft platform posts Last 7 days of published posts One file per article in SOCIAL_DRAFTS/ Review, post on three platforms
Newsletter Weekly issue Week's posts + research Draft in Beehiiv Approve before send
Agent 01

Website

Build pages, posts, components

The Website Agent is the dialogue you have with Claude Code at your terminal. It is the agent that built this very page. There is no cron job. The trigger is you, asking for a thing.

The reason this counts as an "agent" rather than "just using Claude" is that the rules are written down and the path to production is the same as any other change. The agent reads VOICE.md and the existing site to match conventions. It edits files. It runs the build. It commits and opens a pull request. A human merges. Cloudflare deploys. The website updates. Same path as a blog post or a workflow change.

SaaS · MissingLinkz

Used heavily during launch to ship the marketing site, pricing page, signup flow and post-signup education. Then it goes quiet between launches.

Personal brand · GoodVibeMarketer

Used continuously. New pages, copy revisions, component tweaks, the diagrams on this very page. The voice has to be sharper, so iteration is higher.


Agent 02

SEO

Audit, research, brief

Runs weekly on Sunday at 06:00 UTC via GitHub Actions. Four phases, committing after each so partial progress survives a crash.

  1. Audit. Up to five pages on a 30-day rolling schedule. Reads the source .astro or .md and the rendered HTML from production. Auto-fixes the safe stuff (meta description, alt text, OG / Twitter / JSON-LD). Flags the judgement calls.
  2. Research. Up to fifteen WebSearch calls and ten WebFetch calls. New finds land in KEYWORD_TARGETS.md and COMPETITORS.md.
  3. AEO monitoring. Every prompt in AEO_PROMPTS.md goes to Perplexity. If goodvibemarketer.com appears in the citations, that's a row in AEO_MONITOR.md. If not, we log who was cited instead.
  4. Brief. Up to five researched keywords become article briefs in SEO_QUEUE.md for the Writer Agent.

Workflow at .github/workflows/seo-agent.yml. Prompt instructions at content-plan/SEO_AGENT.md.

Cost caps are not advisory. They're in the prompt and the agent stops when it hits them. Target spend is under one dollar per run.

Prompt excerpt · SEO_AGENT.md
Cost caps:
1. Audit no more than 5 pages per run.
2. Cap WebSearch calls at 15 per run.
3. Cap WebFetch calls at 10 per run.
4. If you hit the caps, stop research and move to briefs.

Branching:
Never push commits directly to main. The workflow opens
a draft pull request on a dated branch for review.
SaaS · MissingLinkz

Keyword targets are uncontested, high-intent product queries. Audits prioritise pricing, comparison and integration pages.

Personal brand · GoodVibeMarketer

Keyword targets favour bottom-of-funnel topical authority ("brief writing for AI", "AI workflow for marketers"). AEO monitoring matters more because the audience is asking questions to LLMs.


Agent 03

Writer

Draft blog posts

Daily at 06:00 UTC. Reads the next unpublished brief in SEO_QUEUE.md (or core content from a content plan). Writes the post into src/content/blog/[slug].md. Updates PUBLISHED.md. Commits, opens a pull request.

Three rules sit above everything else in the Writer's prompt:

  1. Read VOICE.md first, every run. Not the cached version. The current one. If the voice has drifted, the next post must reflect it.
  2. Trojan Horse hook. Directly answer the reader's question in the first two hundred words. Then pivot to why the manual approach is incomplete and why the leverage view changes the answer.
  3. Bottom-of-funnel intent only. No "what is" articles. No generic guides. Comparison, transactional or technical how-to.

Workflow pattern: .github/workflows/daily-content-agent.yml. Instructions: CLAUDE.md.

SaaS · MissingLinkz

Higher volume: up to four posts per day during the launch fortnight, then two per day. Every post points at a product feature documented in PRODUCT_REFERENCE.md.

Personal brand · GoodVibeMarketer

Lower volume, sharper voice. One or two posts a week, drafted by the agent then heavily edited by hand. Volume isn't the moat. Voice is.


Agent 04

Social

Draft platform posts

Daily at 10:00 UTC, four hours after the Writer. Looks at posts published in the last seven days that don't yet have a draft. Up to three posts per run. For each one, writes a single markdown file at content-plan/SOCIAL_DRAFTS/YYYY-MM-DD-[slug].md containing four sections: LinkedIn, X, Reddit, Hacker News.

The agent drafts to files for every platform. A human posts LinkedIn, Reddit and Hacker News. X is the single exception, where a tighter auto-publish loop is allowed, and only with guardrails.

Platform Format Default behaviour
X / TwitterThread (5 to 10 tweets) or singleAuto-publish allowed in tighter loops
LinkedIn1000 to 1500 character post, hook in first two linesHuman review before posting
RedditTitle + 400 to 800 word body, product mentioned once at the endHuman review before posting
Hacker NewsDefault offOnly for launches or novel technical drops

Workflow pattern: .github/workflows/social-agent.yml. Instructions: SOCIAL_AGENT.md.

SaaS · MissingLinkz

Reddit matters more. Every article maps to one or two product-relevant subreddits. The agent flags promotional tone for review.

Personal brand · GoodVibeMarketer

LinkedIn matters more. Hooks are sharper. The X thread is the secondary surface, not the primary one.


Agent 05

Newsletter

Weekly issue

Weekly. A small pipeline of four sub-agents that run in sequence and hand off through files.

  1. Research. Surveys the week's news in the niche, the week's posts in PUBLISHED.md, and any flagged threads in the audit log.
  2. Writer. Drafts the issue against the voice guide. Opinionated take, three sections, one practical action.
  3. Illustrator. Generates the hero image and any inline diagrams (the diagrams on this page are written by the Website Agent in the same way).
  4. Publisher. Pushes the draft to Beehiiv via API. Tags the audience. Stops before send.

The human approves the Beehiiv draft and clicks send. The agent never schedules a send unattended.

SaaS · MissingLinkz

Two newsletters: a customer onboarding sequence (transactional, product-led) and a sales-and-marketing digest (top of funnel, weekly).

Personal brand · GoodVibeMarketer

One weekly issue. The voice is the product. It carries everything else.

04 · Handoffs

The file system is the message bus.

No queue server, no webhook glue. A keyword identified by the SEO Agent becomes a row in SEO_QUEUE.md. The Writer reads that file the next morning, drafts the post, marks the row done.

Handoffs: SEO Agent writes a brief to SEO_QUEUE.md. Writer Agent reads it, drafts a post in src/content/blog/, updates PUBLISHED.md. Social Agent reads PUBLISHED.md and writes drafts to SOCIAL_DRAFTS/. Newsletter Agent rolls the week's PUBLISHED.md entries into the weekly issue, with a human approval step before send.
SEO briefs Writer. Writer publishes and updates PUBLISHED.md. Social and Newsletter both read PUBLISHED.md downstream.

The Social Agent reads PUBLISHED.md four hours later and drafts the platform posts. The Newsletter Agent reads the same file at the end of the week.

Three properties fall out of this design that you don't get if you use a managed orchestrator:

  • Every handoff is reviewable. A pull request shows the diff of SEO_QUEUE.md before the Writer ever sees it.
  • Every handoff is revertible. git revert on a bad brief un-makes it.
  • You can run the same agent against the same input five times until you're happy. The files don't move while you iterate.
05 · The tech stack

Six services, one repo.

GitHub as source of truth. Claude Code as the agent runtime, scheduled by GitHub Actions. Cloudflare Pages deploys on push to main and provides per-branch previews.

GitHub as source of truth. Claude Code as the agent runtime, scheduled by GitHub Actions. Cloudflare Pages deploys on push to main and provides per-branch previews. Beehiiv handles the newsletter list and delivery via API. Stripe handles paid-tier checkout. Cloudflare Email Routing + the SEND_EMAIL Worker binding handles transactional email from forms.
Six services. GitHub is the source of truth everything else hangs off.

Each service does one thing. GitHub holds the source of truth — code, prompts, workflow files and secrets. Everything else hangs off it. The full setup notes are below.

Service Role Setup notes
GitHub Source of truth. Source code, agent prompts, workflow files, secrets. Private repo. Protect main. Required reviews for the SEO / Writer / Social branches if you can.
Claude Code Agent runtime. Both interactive (Website Agent) and headless (SEO, Writer, Social, Newsletter). Set ANTHROPIC_API_KEY as a repo secret. Workflows call claude -p with explicit --allowedTools and --max-turns caps.
GitHub Actions Scheduler. Cron schedules in .github/workflows/. Each agent has its own workflow file. workflow_dispatch for manual triggers.
Cloudflare Pages Hosting + deploy. Connect the repo. Auto-deploy on main. Branch previews on every PR. Wrangler bindings for SEND_EMAIL.
Beehiiv Newsletter list + delivery. Set BEEHIIV_API_KEY and BEEHIIV_PUBLICATION_ID as secrets. Use tags as routing (a different tag per signup form).
Stripe Payments for paid tiers. Hosted checkout. A webhook updates entitlements. Keys live in secrets, never in the repo.
Cloudflare Email Routing Transactional email from forms. Sender address verified. The Astro endpoint sends through the SEND_EMAIL Worker binding. No SMTP secrets needed.
Perplexity (optional) AEO monitoring source. Set PERPLEXITY_API_KEY. If missing, the SEO Agent skips Phase 3 instead of failing.

All credentials live in GitHub Actions secrets or Cloudflare environment variables. Nothing API-key-shaped goes in the repo.

06 · Editorial guardrails

Tone is in the prompt. Approval is in the PR.

The voice rules are not a vibe. They're a file. Every agent reads it before it writes. The same goes for what you are not. Both files are human-owned and never touched by agents.

The two source files

  • VOICE.md: how it sounds. Sentence rhythm, paragraph length, banned phrases (game-changing, revolutionary, unlock, supercharge, leverage-as-verb, dive into, level up, synergy, paradigm shift), UK spelling rules, the contrarian edge.
  • IDENTITY.md: who you are. Positioning, audience, what you are not (no motivational coaching, no academic detachment, no tech-bro evangelism, no transformation-consultant filler). Personal boundaries defined explicitly so the agent knows what's off-limits.

Who reviews what before it ships

Output Goes to review Auto-publishes
Website Agent: page or post editPull request, human mergeNo
SEO Agent: audit fixes and briefsDraft pull request, human mergeNo
Writer Agent: blog postPull request, human mergeNo
Social Agent: X / TwitterTight review for in-house postingYes, with guardrails
Social Agent: LinkedInAlways human-reviewedNo
Social Agent: RedditAlways human-reviewedNo
Newsletter: Beehiiv draftBeehiiv draft, approved before sendNo

The rule is small. Anything that touches the audience directly goes to a human first. X is the only place a tighter loop is acceptable, and only because the cost of a single bad tweet is low and the cost of being slow is high. Everything else waits for taste.

07 · Deployment and ongoing operations

One path for every change.

A blog post, a prompt edit, a new page, a workflow change. All of them ship through the same five steps. There is no special path for content.

Deployment pipeline. Commit, open a pull request, get a Cloudflare branch preview, review and merge, the change goes live. The same path applies whether the change is content, code or an agent prompt.
Commit, pull request, preview, review, merge, live. Same five steps regardless of what changed.

Commit, open a pull request, get a Cloudflare branch preview, review and merge, the change goes live. The same path applies whether the change is content, code or an agent prompt.

The weekly cadence

Weekly cadence chart: SEO Agent on Sunday at 06:00 UTC. Writer Agent daily at 06:00 UTC. Social Agent daily at 10:00 UTC, four hours after the Writer. Newsletter Agent on Thursday at 07:00 UTC. Human review windows on Sunday afternoon for the SEO PR and Thursday morning for the newsletter approval.
SEO on Sunday, Writer and Social daily, Newsletter on Thursday — with two fixed human review windows.

SEO Agent on Sunday at 06:00 UTC. Writer Agent daily at 06:00 UTC. Social Agent daily at 10:00 UTC, four hours after the Writer. Newsletter Agent on Thursday at 07:00 UTC. Human review windows on Sunday afternoon for the SEO PR and Thursday morning for the newsletter approval.

The weekly human touchpoints

If the system is running properly, the marketer's job each week is small, specific and visible.

When What Roughly
Sunday afternoonReview the SEO Agent's draft pull request. Approve fixes, triage flagged judgement calls, merge.20 minutes
Each weekday morningReview the Writer's draft pull request. Edit if it needs sharpening. Merge.15 minutes per post
Each weekday late morningOpen the day's SOCIAL_DRAFTS/ file. Post LinkedIn and (optionally) Reddit. Update SOCIAL_POSTED.md.15 minutes
Thursday morningOpen the Newsletter draft in Beehiiv. Read it cold. Edit. Send.30 minutes

That is the weekly job. Everything else has been written down and given to a machine.

08 · The throughline

Same architecture. Different voice.

Both reference implementations run identical wiring. The difference is in the configuration files.

Dimension SaaS · MissingLinkz Personal brand · GoodVibeMarketer
VoiceProduct-specific, useful, slightly understatedStrategic, slightly contrarian, opinion-led
Posting cadenceUp to four posts a day at launch, two daily afterOne or two posts a week, edited heavily
SEO postureUncontested high-intent product queriesTopical authority and AEO citations
Channel mixX · LinkedIn · Reddit (primary)LinkedIn · Newsletter (primary), X secondary
Newsletter shapeOnboarding sequence + weekly digestSingle weekly issue, the voice is the product
What carries growthSEO + Reddit + product-led signupsNewsletter + LinkedIn + paid Done-For-You
What's the sameAll five agents. Git as source of truth. The file system handoffs. Cloudflare Pages + GitHub Actions. The review path. Cost caps. The discipline of VOICE.md and IDENTITY.md.
09 · Build it yourself

A realistic checklist.

If you are a determined marketer with no engineering background but comfort using Claude Code, this is the path. Plan a week of evenings.

  1. Get the accounts. Anthropic (for an API key), GitHub, Cloudflare (Pages + Email Routing), a domain, Beehiiv, Perplexity (optional). Stripe only if you're charging.
  2. Write your voice. Spend two hours on VOICE.md. Tone, rhythm, fifteen banned phrases. Be brutal.
  3. Write your identity. Spend one hour on IDENTITY.md. Positioning in two sentences. Audience. Six things you are not.
  4. Stand up the site. Astro starter, deploy to Cloudflare Pages, get one page live before you write a line of agent code.
  5. Wire the SEO Agent first. It's the lowest risk because it can't ship anything to the public without your approval. Set the schedule to Sunday and a manual trigger.
  6. Run it once. Watch the PR. Read every line of its first draft pull request before you merge anything.
  7. Add the Writer Agent. Daily schedule. Read three of its first PRs cold before you stop reviewing them line-by-line.
  8. Add the Social Agent. Four hours after the Writer. Don't connect any platform API yet. Just write drafts and post by hand.
  9. Add the Newsletter Agent. The sub-pipeline (Research → Writer → Illustrator → Publisher). Keep the human approval before send.
  10. Tune for a quarter. Update VOICE.md when an agent drifts. Add to COMPETITORS.md as you learn. Move the schedule around the rhythm of your week.

If you reach step four and want a working template rather than starting from scratch, the Course (a structured walkthrough) and the Done-For-You build are below.

Most of what stops marketers shipping this isn't the code. It's writing down what they actually believe clearly enough that an agent can act on it. The architecture is the easy half. The brief is the work.

Stop feeling AI FOMO.

Book a free 30-minute discovery call. We work out where you're stuck and whether this is a fit. No pitch.

Book a discovery call