How we write and publish
a blog post. Properly.

A working tool, not a document. Fill in what you're writing, tick off steps as you go, time each phase. Your progress saves automatically in this browser.

Target time per blog
3-3.5hours

Active working time, not calendar time. Stretch goal: 2.5 hours once you've published 5+ posts and the rhythm is built. AI does the heavy lifting on the draft. Your value-add is the voice, the real ad-account examples, and editorial judgement.

Active blog
0 of 13 steps complete 0%
See live blog posts Blog Topics sheet

Roles & cadence

Exec owns initiating each blog. Pick the next topic from the agreed list and follow the workflow. No need to wait for approval to start. Rachel reviews async via Google Docs comments, then approves the finished post in the Service Admin Blog Review Queue. No meetings unless major direction change. Cadence: 2 posts per month, first and third Tuesday. Start a week ahead of each date.

Documents & tools.

Open the docs you need in tabs before you start. Tools are linked for when you reach the step that needs them.

Reference documents

Tools

Seven phases.
Twelve steps.

Click each phase to expand. Tick steps as you complete them. Time each phase against the target.

0:00 Target: 20 min
Pick your topic from the Blog Topics list & mark it Drafting
5 min

Open the Blog Topics list. Pick a topic that's been agreed with Rachel and is next in the queue. Check if it's a Founder (F) or Agency (A) audience post.

Update the status column to "Drafting" and add today's date. This stops anything getting lost month-to-month.

Lock in keywords from SEO seeds
10 min

Each post needs 1 primary keyword plus 3-5 secondary keywords.

  • Primary: the exact phrase someone would Google. Goes in title, first 100 words, one subheading, meta description.
  • Secondary: 3-5 supporting phrases including Reddit language (audience fatigue, pause losers, ROAS dropped).

Write these into your draft doc before you start. Locking them in now prevents rework later.

Skim competitor angles (optional)
5 min

Open the Competitors & Inspiration doc. Skim how others frame the same topic. The goal isn't to copy. It's to find an angle they're missing or doing badly. That's where The Peach System's edge sits: real ad-account experience.

0:00 Target: 45 min
Draft with Claude using your strategy + keywords
30 min

Open Claude.ai in a new tab. Start a new chat. Paste in:

  • Your topic
  • The audience (F or A)
  • Your primary keyword and 3-5 secondary keywords
  • A link to the Ramadan post as the style reference
  • A request for a 1,200-1,800 word draft with question-based section headings

Ask Claude to: include the primary keyword in the title, first 100 words, one subheading, and meta description. Cite stats with named sources only. End with a soft connection to The Peach System or The Digital Peach, no hard sell.

Refine in 2-3 follow-up prompts
15 min

Read what Claude returns. Ask for specific improvements:

  • "Tighten the opening, it's too generic"
  • "Suggest 3 alternative headlines under 70 characters"
  • "Remove any statistics that aren't from a named source"
  • "This paragraph feels textbook, make it feel like real ad-account experience"
Important: Always check for statistics Claude may have invented. If a number isn't traceable to a real source, ask Claude to remove it or replace it with a properly attributed one.
0:00 Target: 75 min
Move to Google Docs and rewrite section by section
60-75 min

Copy Claude's draft into a new Google Doc. This is where the real value-add happens. Work through it section by section.

  • Replace generic statements with specific examples from real ad accounts
  • Apply UK English spelling (optimisation, personalised, behaviour, colour)
  • Remove any em dashes
  • Strip italics from body copy
  • Add Rachel's voice: direct, practical, written from inside live ad accounts
  • Keep technical accuracy where Claude got it right, don't rewrite for the sake of it
Time check: If this phase runs over 75 minutes, Claude's first draft was weak. Go back to Phase 2 and refine the prompt rather than spending 2+ hours rewriting from scratch.
0:00 Target: 5 min
Share the Google Doc with Rachel
5 min

Share the doc with comment access. Tag Rachel in Slack or email with:

  • Link to the doc
  • Topic, primary keyword, audience (F or A)
  • Specific questions you want her input on

Rachel reviews and leaves inline comments. Default to async. No meeting unless something significant needs discussing.

0:00 Target: 45 min
Work through Rachel's comments
20-30 min

Address each comment. If something is unclear, ask in the comment thread before guessing. Resolve comments as you go so Rachel can see what's done.

Final proofread
15 min

One careful read-through. Check:

  • Spelling and grammar
  • Sentences that run too long or repeat themselves
  • UK English consistency
  • No em dashes
  • No italics in body
  • Primary keyword in title, first 100 words, and at least one subheading
  • Word count between 1,200 and 1,800
Optional AI check: Paste the final draft into GPTZero and cross-check with ZeroGPT. If either flags above 60% AI, the rewrite needs more voice and specific examples. Below 30-40% is fine. Detectors give false positives so don't redo good posts because of a borderline score.
0:00 Target: 15 min
Convert your final draft to markdown
10 min

Open a new Claude.ai chat. Click "Copy prompt" below, paste it into Claude, replace [PASTE THE DRAFT HERE] with your finished Google Doc content, and send.

Claude returns formatted markdown with frontmatter, headings, and house style applied. You don't touch the cover image URL or the featured setting here. The platform adds the cover image when you upload it, and Rachel decides featured at approval. Fill in any remaining text placeholders (category, keywords). The cover image and its alt text are handled in the next step.

Markdown conversion prompt
You are converting a finished blog post into a markdown file for The Peach System blog. The Peach System is a Meta ads reporting and analytics platform that reads a brand's ad account against its own history, built by The Digital Peach, a Meta Business Partner agency in Dubai. Do not change the substance of the draft. Format and polish it, and optimise it for search engines (SEO), answer engines (AEO) and generative engines (GEO). Return the complete markdown file, ready to paste, nothing else.

Use this exact frontmatter structure at the top:

---
title: "Lead with the primary keyword, written as a real headline, under 60 characters"
slug: "hand-chosen-seo-slug"
description: "150 to 160 characters, primary keyword in the first 155, written to earn the click"
publishDate: YYYY-MM-DD
updatedDate: YYYY-MM-DD  (only include if the draft mentions being revised)
author: "Rachel Lindsay"
category: "Choose ONE: Meta Ads, Attribution, Creative Strategy, Agency Ops, CRO, UAE Market"
readTime: "X min read"  (calculate as word_count / 200, rounded up)
coverImage: "COVER_IMAGE_PLACEHOLDER"
coverAlt: "A plain first-pass description of a likely cover image, including the topic. This gets replaced with the real alt text once the image exists."
featured: false
draft: false
keywords: ["keyword one", "keyword two", "keyword three", "keyword four", "keyword five"]  (5 to 7, primary keyword first, mix of head terms and long-tail)
---

PICK ONE PRIMARY KEYWORD:
Choose the single phrase this post should rank for. Put it in the title, the description, the first sentence of the intro, at least one ## heading, and the keywords array. Use related and long-tail variations naturally through the body. Never stuff or repeat it awkwardly.

SLUG, COVER IMAGE AND FEATURED:
- Set slug to the hand-chosen SEO slug. It becomes the post URL, so make it lowercase, hyphenated, under 60 characters, and built around the primary keyword. Do NOT just slugify the title (for example a post titled "Why Industry Benchmarks Aren't Your Data" might have slug "meta-ads-industry-benchmarks-not-your-data"). The platform reads this slug, names the cover image from it, and publishes the post at that URL.
- Leave coverImage exactly as "COVER_IMAGE_PLACEHOLDER". Do not invent a URL. The platform fills it in when the cover is uploaded.
- Always set featured: false and draft: false. Featuring is Rachel's decision at approval; publishing is gated by her approval, not this flag.

BODY STRUCTURE:
- Start with the intro straight after the frontmatter. No H1, the layout renders the title. Open with two or three short paragraphs: state the problem, give one concrete scenario the reader will recognise, name the consequence of getting it wrong. Work the primary keyword into the first sentence naturally.
- Use ## for section headings, most phrased as the exact question a reader would type or ask out loud ("What is a good ROAS on Meta ads?"). The final heading can be a short declarative statement that lands the thesis. Use ### sub-headings rarely.
- ANSWER FIRST, then expand. The first one or two sentences under each question heading must directly and fully answer that question in plain language, so the passage can stand alone as a featured snippet or be quoted by an AI answer engine. Then add the detail and examples.
- Write self-contained, quotable sentences. State facts as clear standalone claims that still make sense lifted out of context. Name things explicitly (The Peach System, Meta ads, the metric, the market) rather than leaning on "it" or "this", so answer and generative engines attribute them correctly.
- Define each key term in one plain sentence the first time it appears.
- Where a section is a list of points or metrics, use bullets and lead each one with a bold phrase then a full stop, then the explanation.
- Bold key statistics in the body.

SOURCES AND LINKS:
- No fabricated metrics or testimonials. If the draft cites a statistic without a clear named source, flag it with [SOURCE NEEDED] rather than inventing one.
- Attribute every statistic inline: "According to [Source name], [statistic]." Add the hyperlink where the URL is obvious, otherwise flag [LINK NEEDED].
- Link to other Peach System posts with descriptive anchor text and full URLs (https://www.thepeachsystem.com/blog/...). Every link must have a real destination.

STYLE:
- UK English spelling: optimisation, personalised, behaviour, colour, organise, realise. Reject US spellings even if grammar tools suggest them.
- No em dashes. Use commas, full stops, or spaced hyphens ( - ).
- No italics in body copy. Italics allowed only in the footer line.
- Mostly 2 to 4 sentence paragraphs, single-sentence paragraphs sparingly for emphasis.
- First person plural where natural ("we check", "in our experience"), direct and practical, from inside live ad accounts.
- Body length 1200 to 2000 words. Flag if the draft falls outside this range.

CLOSING:
- End with a short section that restates the core idea in one or two quotable lines, then a final paragraph pointing the reader to The Peach System with a link (https://thepeachsystem.com) and, where it fits, one related post.
- Then a horizontal rule (---), then this italic footer verbatim:
  *[The Peach System](https://thepeachsystem.com) is a Meta ads reporting and analytics platform that reads your ad account against your own history and tells you what changed, why, and what to do next. Built by The Digital Peach, a Meta Business Partner agency in Dubai.*

REFERENCE POST: The Ramadan Meta Ads post at https://blog.thepeachsystem.com/ramadan-meta-ads-uae is the tone and structure to match.

WHAT TO DO:
1. Read the draft below.
2. Generate the frontmatter. Set slug to the hand-chosen SEO slug. Leave coverImage as "COVER_IMAGE_PLACEHOLDER", featured: false, draft: false. Leave [PLACEHOLDER] where other info is genuinely missing.
3. Format the body per the rules above. Do not change the substance, only format and polish.
4. Hyperlink named sources where obvious, flag [LINK NEEDED] if unsure, and bold statistics that have named sources.
5. Return the complete markdown file ready to paste into the Publish Blog page.

NOW CONVERT THE FOLLOWING DRAFT INTO MARKDOWN:

[PASTE THE DRAFT HERE]
Resolve every placeholder tag before publishing
5 min

Before you take the markdown to the Publish Blog page, scan the entire output for any of these tags:

  • [SOURCE NEEDED] - a statistic Claude could not verify. Either find a real, named source and add it inline ("According to [Source], [stat]") or cut the sentence entirely.
  • [LINK NEEDED] - a citation that needs a hyperlink. Find the source URL and add it, or cut.
  • [PLACEHOLDER] - missing frontmatter info (category, keywords). Fill it in. The cover alt text is done in the next step, so leave coverAlt as it is for now.

Then check one thing that is not bracketed: the slug field. That is the post's URL. Make sure it is the clean, keyword-led slug you want, not a long slugified title. If it is wrong, fix it here, because the platform names the cover image from it and publishes the post at that URL.

Leave COVER_IMAGE_PLACEHOLDER exactly as it is. That one is meant to stay. The platform replaces it when you upload the cover. Every other bracketed tag must be gone before you publish. If you cannot verify a stat, cut it, don't leave the tag in and hope someone notices.

Once every text placeholder is resolved, you are ready for the cover image step.

Get the cover image and its alt text
5 min

You need one cover image for the post. Ideal size 1200x630 px, JPG or PNG, under 5MB.

Go back to the same Claude chat that made your markdown, the one that already knows what this post is about. Upload the cover image there and say:

  • "Here is the cover image for this post. Write the coverAlt line for it, and tell me the exact filename to save it as."

Because that chat has the whole post in context, the alt text it writes will match the post, not just describe the picture. Claude gives you two things:

  • The alt text. In your markdown, replace whatever is on the coverAlt: line with this. That is the one line you are changing by hand.
  • The filename, which is your slug plus the image type, for example meta-ads-industry-benchmarks.jpg. Save your image file with that name.
You do not need to touch the coverImage line. Leave it as COVER_IMAGE_PLACEHOLDER. When you drop the image on the Publish Blog page in the next phase, the platform names it from the slug and fills in the URL for you. Naming the file to match the slug just keeps things tidy on your side.

When your markdown has the real alt text in it and your image file is named and saved, you are ready to publish.

0:00 Target: 5 min
Submit the post in Service Admin & mark it Submitted
5 min

Open Service Admin · Publish Blog (this opens straight on the publish screen). Then:

  • Paste the complete markdown into the box. The platform reads the frontmatter and shows you the parsed title, slug, category and date to confirm.
  • Drag in your cover image. Ideal: 1200x630 px, JPG or PNG, under 5MB. The platform names it from the slug and uploads it for you, so you never touch Cloudflare.
  • Click Submit for approval. This creates the post and opens it for Rachel to review.

Update the Blog Topics sheet: change the status from "Drafting" to "Submitted". That is your last action in the sheet. You do not mark anything "Published" - the platform tracks live posts automatically.

What happens next is Rachel's job, not yours. Rachel opens the Blog Review Queue, checks the preview, decides whether to feature it, and publishes. Cloudflare deploys and the post is live in 2-3 minutes. You can see it appear in the Review Queue's published list and on the live blog.

What to do.
What not to do.

These rules are baked into the Claude prompts but worth knowing by heart.

Do

  • Write from real ad-account experience
  • UK English (optimisation, personalised, behaviour)
  • Short paragraphs, 2 to 4 sentences each
  • Attribute statistics to named sources
  • Practical advice with specific examples
  • Soft close, no aggressive sales pitches
  • Question-based section headings
  • Primary keyword in title, first 100 words, one subheading
  • 1,200 to 1,800 word count

Don't

  • Em dashes anywhere
  • Italics in body copy
  • Fabricated metrics or testimonials
  • "We helped X get Y%" claims
  • Generic marketing theory
  • Hard sells in the body
  • Walls of text without breaks
  • US spellings
  • Competitor name-drops
  • Rotating headlines or fake scarcity

Common pitfalls.

These cost time. Catch them early.

Spending 2+ hours rewriting Claude's draft
If you're over 75 min in Phase 3, the Claude draft was weak. Don't push through. Go back, refine your prompt, let Claude give you a better starting point.
Claude inventing statistics or quotes
Always check for numbers, percentages, or quotes you didn't ask for. If they're not from a named real source, tell Claude to remove them.
Headline too long
Anything over 70 characters gets cut off in Google search results. Aim for 50-65.
Overwriting the cover image placeholder
Leave coverImage as COVER_IMAGE_PLACEHOLDER in the markdown. The platform fills it in when you upload the cover. If you paste a real URL there it can clash with the upload. Every other bracketed tag, though, must be resolved before you submit.
Wrong category name
Must be exactly one of: Meta Ads, Attribution, Creative Strategy, Agency Ops, CRO, or UAE Market. Case-sensitive. The platform rejects anything else.
Forgetting to lock in keywords before drafting
Decide primary + secondary keywords in Phase 1. Trying to fit them in after the draft wastes time and reads unnaturally.
Progress saved