# Blog

> Run a blog, news section, or article hub on a website built with MCP Village — publishing posts regularly to get found in search and keep readers. Use when the owner wants to "start a blog", "add a news/articles section", or publish posts, whether it's a standalone publication or a content section on a business site. The platform handles the SEO plumbing; this covers structure and posts.

- Skill: `biznitos/blog` (Agent Skill)
- Install (CLI): `npx skillmds@latest add biznitos/blog`
- Raw SKILL.md: https://api.skillmd.com/api/skills/biznitos/blog/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Marketing & Growth
- Author: biznitos (https://skillmd.com/u/biznitos)
- Updated: 2026-09-22
- Page: https://skillmd.com/skills/biznitos/blog

---


# Blog & articles

A blog, news section, or article hub — for a standalone writer/publication or a
content section bolted onto any business site. Wins on **publishing regularly →
getting found → keeping readers** (search traffic + subscribers). The platform
does the SEO plumbing automatically; you focus on structure and great posts.

## What the platform does for you (don't hand-build these)
When you publish article-type posts (`type: "blog"` / `"article"` / `"news"`),
mcpvillage automatically:
- emits **`BlogPosting` + `BreadcrumbList`** structured data on each post page,
- sets **`og:type=article`** with published/modified dates + author,
- serves an **RSS feed at `/feed.xml`** (auto-linked in the page `<head>`),
- exposes **`post.reading_time`**, **`post.author`**, **`post.updated_at`** to
  your templates, and includes posts in `/sitemap.xml`.

So a post just needs good content + a cover image — the SEO is handled.

## How a blog wins
Readers arrive from search or a share, judge in seconds, and either bounce or
stay. So: a clean, scannable **listing** that sells each post (title + excerpt +
cover + date/read-time), **readable** post pages, and an obvious way to
**subscribe** so the reader comes back.

1. **Confirm facts** — `get_site`. Who's writing, the topics, the author
   name(s), how often, whether this is a standalone blog or a section of a
   business site, and the subscribe goal (newsletter / RSS). Ask.
2. **Structure** (layout paradigm + core vocabulary):
   - **Blog index** (`/blog`) — the listing: `{% posts type: "blog" %}` rendering
     each as a card (cover, title, excerpt, date, `{{ post.reading_time }} min`).
     Add **`{% paginate type: "blog" per: 10 %}`** once there are many posts.
   - **Post pages** — one `create_post` per article (`type: "blog"`, a
     `permalink` like `/blog/my-first-post`, `title`, `excerpt`, `cover_image`,
     `body` as HTML, `tags`, and `data: {author: "..."}`). The default post
     template renders cleanly; write `/templates/blog` only to customize.
   - **Categories/tags** — filter with `{% posts type: "blog" tag: "guides" %}`.
   - **Subscribe** — an email-capture form (the main conversion) + a link to
     `/feed.xml` for RSS readers.
   - **About / author** — credibility for E-E-A-T (who's writing and why trust
     them); set `data.author` on posts so it flows into the byline + structured
     data.
3. **Lead form** — subscribe `/_/f/subscribe`: `name`, `email`. (Rolls into
   `contacts` — the owner's reader list.)
4. **Trust signals** — a real author with a bio + photo, consistent publishing
   dates, sources/links, clear topic focus, reading time, easy subscription.
5. **SEO** — `get_skill("seo-baseline")`. Per post, set a sharp `meta_title` +
   `meta_description` and a `cover_image` (becomes the `og:image`). The blog as a
   whole is the business's `set_seo(business_type: ...)`; individual posts get
   `BlogPosting` automatically.
6. **Design** — typography-first and readable (generous measure, strong heading
   scale, comfortable line-height); let the writing breathe. See the design docs.
7. **Variants** — **Standalone blog/publication:** the blog *is* the site; home =
   the latest posts. **Business blog:** a `/blog` section feeding the main site's
   SEO; link posts back to services. **News/changelog:** `type: "news"`/`"update"`,
   dated and terse. **Personal:** pair with `get_skill("personal-creator")`.
8. Tell the owner the live URL, the `/feed.xml`, and that they can publish a new
   post, edit one, or change the byline just by telling you.

