// Generate SEO-optimised, bilingual blog articles with featured images, in-article photography, and distinctive per-article design. Creates article content in docs/{lang}/blog/, builds Astro blog pages with Article JSON-LD, and updates the blog index. Works for any client website and any topic. Use when the user says "write a blog article", "create a blog post", "publish a blog", "write about [topic]", or wants to add content to the blog section.
[HINT] Download the complete skill directory including SKILL.md and all related files
name
blog-writer
description
Generate SEO-optimised, bilingual blog articles with featured images, in-article photography, and distinctive per-article design. Creates article content in docs/{lang}/blog/, builds Astro blog pages with Article JSON-LD, and updates the blog index. Works for any client website and any topic. Use when the user says "write a blog article", "create a blog post", "publish a blog", "write about [topic]", or wants to add content to the blog section.
Blog Writer โ Article Generation Skill
Acknowledgement: Shared by Peter Bamuhigire, techguypeter.com, +256 784 464178.
Use When
Use this skill when the user wants a blog article, thought piece, or publishable article page.
Load it when the task includes writing, article planning, or blog-page execution.
Do Not Use When
The user only needs ideation rather than article drafting.
The request is about proposal writing or unrelated to content publishing.
Required Inputs
The topic, angle, audience, and publishing goal.
Any project files, design constraints, source material, and available images.
Workflow
Plan the article before drafting: audience, buyer stage, outline, and format.
Gather or process the supporting assets and context the article needs.
Use the workflow below to draft, structure, and package the article for publication.
For premium thought leadership or commercial articles, load ../premium-commercial-writing/SKILL.md to strengthen the argument, proof, reader journey, and AI-search discoverability.
Run quality, SEO, design, and publication checks before final delivery.
Quality Standards
Keep the article human-sounding, useful, and structurally strong.
Match the projectโs existing technical and design conventions when building pages.
Preserve compatibility with existing repository workflows and file paths.
Anti-Patterns
Do not skip planning or quality gates for publishable content.
Do not produce generic AI-sounding copy or design filler.
Do not publish without checking links, images, and build behavior when a site is involved.
Outputs
A publishable article and any associated metadata, page, or index updates required by the project.
References
Local references/ files for writing craft, strategy, voice, and design.
../blog-idea-generator/SKILL.md if ideation is still needed before drafting.
../premium-commercial-writing/SKILL.md for premium commercial articles, public case studies, thought leadership, and SEO/AI-search friendly expertise content.
Generate detailed, rich, educating, and captivating blog articles with authentic human voice, professional photography, and full SEO optimisation. Each article is a marketing asset โ a demonstration of expertise that builds trust and attracts clients through organic search.
Use the frontend-design plugin throughout article page creation for distinctive, high-quality design.
Before Writing
Read these files first:
docs/en/company-profile.md (and all enabled language versions) โ author background, services, expertise
src/pages/en/blog.astro โ current blog index structure (check for existing articles)
src/pages/fr/blog.astro โ French blog index (if FR enabled)
src/layouts/BaseLayout.astro โ layout props, structured data, design system
src/styles/global.css โ current styles (add prose styles if missing)
Existing articles in src/pages/{lang}/blog/ โ count them to determine layout variation
photo-bank/ โ scan for article photos the user has uploaded
src/assets/images/_catalog.json โ current image catalog
Read the reference files as needed during writing:
references/human-voice-standards.md โ READ FIRST โ AI vocabulary/phrase/structure blacklists, human voice techniques, self-check (ensures content sounds 100% human)
references/storytelling.md โ authentic stories, human touch, cultural markers
references/editorial-standards.md โ punctuation, capitalisation, numbers, grammar, British spelling
references/article-design.md โ image requirements, layout variations, design variety system
references/ideation-and-research.md โ ideation techniques, research methods, competitor analysis, headline generation
references/topic-ideas.md โ curated topic suggestions (project-specific, if present)
blog-idea-generator/references/content-formats.md โ 20 content formats with structural templates (How-to, Case study, List, Opinion, Guide, Story, Comparison, etc.)
sales-copywriting/references/fascination-bullets.md โ 21 bullet point templates for engaging list items and key takeaways
sales-copywriting/references/closing-and-guarantees.md โ closing templates for strong article conclusions and CTAs
User Input
The user provides:
Article title (or topic idea)
Brief summary (2-5 sentences describing what the article should cover)
Photos uploaded to photo-bank/ (at least 3: 1 featured/hero + 2 in-article)
From this simple prompt, generate the complete article pipeline below.
Article Content Pipeline
Step 0: Read Idea Summary (if available)
If references/topic-ideas.md exists and contains a summary for this article's topic:
Read the full 200-word hybrid summary for this topic
Extract and use as planning inputs:
Audience โ target reader segment
Buyer Stage โ awareness, consideration, or decision
Format โ content format (how-to, case study, list, etc.) โ read blog-idea-generator/references/content-formats.md for the structural template
Angle โ the specific twist that differentiates this article
Key Points โ section headings or core coverage areas
CTA Goal โ what action the reader should take
SEO Keywords โ primary and secondary targets
Tier โ SEO driver, authority builder, or thought leadership
The idea summary is a starting point, not a straitjacket โ adapt based on research in Step 1
If no idea summary exists, proceed directly to Step 1.
Step 1: Research and Plan
Read the company profile to understand the author's expertise and experience. Build a voice profile (see references/human-voice-standards.md โ Voice DNA Extraction): analyse the author's sentence patterns, vocabulary, opinions, register from their docs. Extract 5-10 characteristic sentences as tone anchors.
Identify the target audience segment for this article (see references/content-strategy.md)
Identify the reader types this article must serve: Scanner, Deep Diver, Sceptic, Action-Taker (see references/reader-experience.md)
Determine which buyer journey stage the article targets: Awareness, Consideration, or Decision
Identify 2-3 target SEO keywords from the topic (see Keyword Strategy below)
Choose the content organisation pattern (see references/writing-craft.md)
Choose an opening hook technique (question, startling fact, story, current event, bold assertion, poster child, scene-setter, significant detail, profile lead โ see references/writing-craft.md)
Map the 5 touchpoints: pre-touch (title/meta), first touch (hero/opening), core touch (body), last touch (conclusion/CTA), in-touch (related articles/newsletter)
Produce an outline with 5-8 section headings (h2s)
Identify which stories from the author's experience to include (see references/storytelling.md)
Present the outline to the user for approval before writing
Step 2: Process Article Photos
Scan photo-bank/ for photos the user uploaded for this article
Measure dimensions of each photo
Copy to src/assets/images/ following the photo-manager pipeline
Assign roles: featured (hero), landscape (in-article), portrait (in-article)
If fewer than 3 photos are available, note what is needed and proceed with available images
Step 3: Write English Article
Save to docs/en/blog/{slug}.md:
---
title: "Article Title in Title Case"
slug: "article-slug-here"
date: "YYYY-MM-DD"
author: "Author Name"
category: "Category Name"
description: "SEO meta description โ under 155 characters, includes primary keyword and location."
keywords: ["primary keyword", "secondary keyword", "tertiary keyword"]
featured_image: "filename-of-hero-image.jpg"
images: ["landscape-image.jpg", "portrait-image.jpg"]
read_time: "X min read"
---
Article body here...
Writing requirements (detailed in references/writing-craft.md):
1,500-2,500 words โ detailed, rich, educational. Every word earns its place.
Opening hook โ first paragraph grabs attention. Never open with a definition or generic statement. Consider poster child, scene-setter, significant detail, or profile lead types (see references/writing-craft.md).
Nut 'graph โ if the opening uses a story or anecdote, follow it (paragraphs 2-4) with a grounding paragraph that states what the article is actually about. Without this, soft openings feel directionless.
Pain point formula โ demonstrate understanding of the reader's problem before offering solutions.
At least one story from the author's real experience with specific details (places, outcomes, lessons).
Concrete language โ specific numbers, named places, real examples. No vague abstractions.
Active voice โ at least 90% of sentences. Passive voice only when the actor is unknown or unimportant.
Sentence variety โ average 15-20 words. Mix short (8-10) with medium (25-30). Never exceed 35.
One idea per paragraph โ 2-4 sentences each. Topic sentence leads.
Scannable โ clear h2 headings, bulleted lists where enumerable, bold for key terms.
Internal links โ link to relevant service, portfolio, about, and contact pages.
Image placement markers โ indicate where in-article images should appear: [IMAGE: landscape-image.jpg โ caption text]
Full circle ending โ reconnect the conclusion to the opening. If you opened with a poster child, bring them back. If you opened with a scene, return to it transformed. Readers feel closure and reward.
CTA conclusion โ end with a clear, natural call to action (not a sales pitch).
Clarity โ use "because" not "since", "although" not "while", "can" for ability, "might" for possibility. No ambiguous words for multilingual readers.
Conciseness โ cut filler ("in order to" โ "to", "due to the fact that" โ "because"). Delete weak modifiers (really, very, quite, basically).
Linking flow โ every paragraph connects to the previous one with a logical bridge or transition word.
Human voice requirements (from references/human-voice-standards.md):
Zero AI vocabulary โ never use Tier 1 blacklist words (delve, tapestry, landscape, leverage, navigate, foster, realm, etc.). Check every sentence.
Zero AI phrases โ never open with "In today's...", "Have you ever wondered...", "It's important to note...". See full blacklist.
Burstiness mandatory โ every 500-word section must contain 3+ sentences under 8 words and 1+ sentence over 25 words.
Take positions โ at least 3 clear opinions per article. "I recommend" not "One might consider".
Client language โ mine vocabulary from docs/ files and use the client's own words.
Strategic contractions โ 2-4 per 500 words (don't, can't, it's). Never in headlines.
Sensory detail in stories โ what it looked like, felt like, sounded like. Not just what happened.
Write then cut โ draft 30% more than needed, then cut ruthlessly in revision.
Max 2 em dashes per article. Vary paragraph lengths (1 sentence, then 4, then 2).
Step 4: Write French Article
Save to docs/fr/blog/{slug}.md with identical frontmatter structure.
This is adaptation, not translation. The French article must:
Restructure paragraphs for natural French flow
Use francophone African examples (Dakar, Abidjan, Douala) where English uses anglophone ones
Feel like it was written in French first
Use formal register throughout (vous, never tu)
Follow West African francophone business conventions (see voice guides below)
1,800-3,000 words โ French naturally expands 20-30% from English
Accents mandatory on every character (รฉ, รจ, รช, รง, ร , รน, รด, รฎ)
Quality Gate: Verify Against Idea Summary
If this article was generated from an idea summary (Step 0), verify alignment before proceeding to design:
Audience match โ article addresses the specified reader segment
Format compliance โ article follows the structural template for the specified format
Key points covered โ all key points from the summary are addressed in the article
Angle delivered โ the unique angle is evident, not generic
SEO keywords placed โ primary keyword in title, first 100 words, at least one h2, and conclusion
CTA goal achieved โ conclusion drives the specified action
Pass the featured image as the OG image: <BaseLayout ... ogImage={heroImg.src}> โ each article must use its own featured image for Open Graph, not the default site OG image
Use heroImg.src in the JSON-LD image field: "image": \${siteUrl}${heroImg.src}``
The featured image must be landscape orientation (wider than tall) for optimal OG display
Add prose styles to global.css if not already present
See references/article-design.md for layout variations, image treatment, and design variety system.
Step 6: Update Blog Index
Update src/pages/en/blog.astro and src/pages/fr/blog.astro:
Add the new article card with featured image thumbnail, title, category, date, read time, excerpt
If this is the first real article: remove "Coming Soon" cards and remove noindex meta tag
Keep the newsletter section
Order articles newest-first
Step 7: SEO Verification
Verify every SEO requirement (see full SEO checklist below):
Title tag under 60 chars with primary keyword
Meta description under 155 chars with primary keyword + location
Primary keyword in first 100 words, at least one h2, and conclusion
Internal links to service/portfolio/contact pages
Featured image has descriptive alt text with keyword
Canonical URL correct
Hreflang links between EN and FR versions
Step 8: Build and Verify
Run npm run build and confirm:
No build errors
Article pages render correctly in both languages
All images load and are optimised
Blog index shows the new article
English Voice
Write as the author would write for a business audience โ the register of a senior professional writing a LinkedIn article or industry blog. Not academic, not casual.
Read references/storytelling.md for authentic human touch and cultural markers.
Simple and clear. Short sentences. One idea per paragraph. No jargon without explanation.
British spelling. organisation, programme, centre, colour, specialise.
Warm but professional. Polite, measured, confident. Not stiff, not chatty.
First person where natural. "In my experience" and "I have found" โ the author has authority.
Practical focus. Every article should leave the reader with something they can use.
Real examples. Reference actual business contexts and projects from the company profile.
Use
Avoid
practical, effective, significant
cutting-edge, game-changing, revolutionary
I have found that
It is widely acknowledged that
In our experience
Research conclusively demonstrates
This approach works because
This paradigm shift enables
I recommend
One might consider
This works
This can potentially
Two approaches matter
There are several approaches
Contraction calibration: Use contractions sparingly for natural rhythm (don't, can't, it's โ 2-4 per 500 words). Zero contractions sounds like AI or academia. Too many sounds casual.
Commit, don't hedge: Say what you think. "This is the best approach for SMEs" not "This could arguably be considered a viable approach." Readers trust writers who commit.
Read references/editorial-standards.md for punctuation, capitalisation, numbers, and grammar rules.
French Voice
Write as a bilingual professional would for francophone African business readers โ Dakar boardrooms and Abidjan tech meetups, not Parisian literary prose.
Formal but accessible. Vous throughout. Professional register. Not stiff or bureaucratic.
Concrete vocabulary. "entreprise" not "firme", "mettre en place" not "implรฉmenter", "formation" not "enseignement".
No anglicisms where French words exist. Say "logiciel" not "software", "numรฉrique" not "digital", "rรฉseau" not "network". Technical terms (ERP, API, SaaS) stay in English.
Accents mandatory. Every รฉ, รจ, รช, รง, ร , รน must be correct. Gender agreement verified.
SEO Requirements (Every Article)
On-Page SEO Checklist
Title tag โ {Article Title} โ {Author Name} (under 60 chars). Must contain primary keyword. Don't write cute-only headlines โ combine creative hook with search-practical keywords: "The Three-Hour Problem: Fixing Slow Reconciliation in Multi-Branch Retail". See references/writing-craft.md headline rules.
Meta description โ under 155 chars. Must include primary keyword + geographic location.
Hreflang โ links between all language versions (automatic from BaseLayout)
Open Graph โ title, description, featured image via ogImage={heroImg.src} prop on BaseLayout (each article uses its own featured image, not the default site OG image)
Sitemap โ remove noindex after first real article so blog pages are indexed
Page speed โ all images optimised via Astro <Image>, lazy loading on in-article images
Keyword Research Per Article
Every article targets at least one keyword cluster. Research what the target audience searches for:
Use the primary service terms from the company profile
Featured image present, minimum 1200px wide, loading="eager"
At least 2 in-article images (1 landscape + 1 portrait)
All images have descriptive alt text
All images use Astro <Image> component
Images distributed through article body, not clustered
Design
Layout variation differs from the previous article
Design matches article tone and website brand
Mobile-responsive at 375px, 768px, 1280px
Author bio section present
frontend-design plugin used for design decisions
SEO
Title tag under 60 chars with primary keyword
Meta description under 155 chars with keyword + location
Primary keyword in first 100 words, one h2, and conclusion
Article JSON-LD schema with all required fields including image (heroImg.src)
OG image uses article's featured image via ogImage={heroImg.src} (not default site OG)
Featured image is landscape orientation for optimal OG/social sharing display
Internal links to at least 3 other pages
Featured image alt text includes primary keyword
Hreflang tags present
Technical
npm run build passes with no errors
Blog index updated with new article card
noindex removed from blog pages (if first real article)
All images tracked in _catalog.json
References
File
When to Read
references/writing-craft.md
During outlining and writing โ 7-step process, lead types (9 techniques), article arc (nut 'graph, full circle), sentence craft, headline SEO formula, clarity, conciseness
references/content-strategy.md
During planning โ audience segments, buyer journey, SEO strategy, pillar content, touchpoints
references/reader-experience.md
During planning and review โ touchpoint mapping, reader types, quality gates, tone calibration
references/storytelling.md
During writing โ authentic stories, cultural markers, the human touch
references/editorial-standards.md
During proofing โ punctuation, capitalisation, numbers, grammar, British spelling
references/article-design.md
During page building โ layout variations, image placement, design variety
When suggesting topics โ curated list with keyword targets (project-specific, generated by blog-idea-generator skill)
Cross-cutting skills that apply throughout:
language-standards โ language and tone standards for all languages
east-african-english โ detailed English voice guide (if present in project)
brand-alignment โ visual and messaging consistency with the overall website brand
seo โ multi-language SEO, hreflang, language-specific sitemaps (ensures articles are SEO-ready)
sales-copywriting โ headline formulas, fascination bullets, closing techniques (always active for all articles)
Blog Index Page Structure
The blog index page (/en/blog/, /fr/blog/) is one of the most visited pages. Don't just show a grid of latest posts. Structure it for discovery:
Blog focus statement (1-2 sentences at the top) โ tell readers what you blog about
Featured posts row โ 2-3 hand-picked posts (most popular, posts with lead magnets)
Newsletter signup โ prominently placed for visitors impressed by your content
Topic categories โ list several post categories so readers can jump to topics of interest
Latest posts grid โ chronological listing below the curated sections
Heading Substance Test
After writing a blog post, scroll through reading only the section headings. If a reader could learn everything from the headings alone, the article lacks substance โ you've written "X obvious things about Y" formatted beautifully but without depth.
Fix: Don't just repeat what everyone else says. Add your own perspective, look at the topic from an unexpected angle, add a twist in the headings while keeping them clear, inject personality and humour.
Blog Taxonomy Rules
If the site has blog categories and tags:
All categories should contain approximately equal numbers of posts
If one category is twice as large as the rest, split it into two
Do not assign too many categories or tags to a single post
Remove tags or categories used only once or twice
Show categories early on the page (near the top), not hidden at the bottom in small grey text
Each category and tag page should have a title and short description