agentleFS
busyeugenebusyeugene/content-marketing-skills/blog-post/SKILL.md

blog-post

Skill1 starsChanged 7 months agoMITView on GitHub

Use when the user wants to draft a full blog post or article from a content brief. Reads a brief file plus editorial-guidelines.md and produces a publication-ready markdown draft with SEO meta, internal links, and optional hero image.

  • Reads credentials

27 other projects use a version of this.

Adopted by

Most recently taken up by

Used with

Projects with it also use remote-db-sync, tia-frontend-design-site and 4 more.

Other files people use alongside this one.

Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
  • alfredangSkill

    remote-db-sync

    Push local DB content (menus, settings, taxonomy, pages, posts) to the production database via bearer-token-protected sync APIs. Use when the user wants to publish local CMS/admin edits to the live site without logging into the production admin UI, or to extend the sync surface for new tables. Triggers — "push to production", "sync to remote", "deploy menu/settings/page/post", "the live site doesn't show my change".

    Also in 3 projects that use this

  • alfredangSkill

    tia-frontend-design-site

    This site's own design system for Tertiary Infotech Academy (tertiaryinfotech.edu.sg) — light mint public pages, a dark animated matrix-green hero with the fibre-optic globe, generated artwork, Exo 2 + Inter, compact non-template layouts, live-online copy. Load with the user-level tia-frontend-design skill whenever building, restyling or reviewing ANY UI in this repo.

    Also in 3 projects that use this

  • anshul-garg27Skill

    newsletter

    Create engaging email newsletters with subject lines, sections, and CTAs for Substack, Beehiiv, ConvertKit, or plain email

    Also in 3 projects that use this

  • ukunal91appSkill

    lead-magnets

    When the user wants to create, plan, or optimize a lead magnet for email capture or lead generation. Also use when the user mentions "lead magnet," "gated content," "content upgrade," "downloadable," "ebook," "cheat sheet," "checklist," "template download," "opt-in," "freebie," "PDF download," "resource library," "content offer," "email capture content," "Notion template," "spreadsheet template," or "what should I give away for emails." Use this for planning what to create and how to distribute it. For interactive tools as lead magnets, see free-tool-strategy. For writing the actual content, see copywriting. For the email sequence after capture, see email-sequence.

    Also in 3 projects that use this

  • VercelSkill

    find-skills

    Helps users discover and install agent skills when they ask questions like "how do I do X", "find a skill for X", "is there a skill that can...", or express interest in extending capabilities. This skill should be used when the user is looking for functionality that might exist as an installable skill.

    Also in 3 projects that use this

  • +1 more from alfredang

The file

Show its rules and text

We split this skill into the rules it gives an agent

14 rules. 0 are common, 7 are distinctive, and 7 are very specific to this project.

  • 0

    Common

    Most of the 23 edited versions we read keep these.

  • 7

    Distinctive

    This author's own choices. Worth a look.

  • 7

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    No required keys — the skill drafts from the brief alone.

    line 15
  2. Very specific:

    Read the brief file (the --- frontmatter tells you keyword, intent, target word count, refresh_of).

    line 33
  3. Very specific:

    Read editorial-guidelines.md (or fallback).

    line 34
  4. Very specific:

    Read {SKILL_BASE}/../_shared/seo-best-practices.md for the SEO ruleset.

    line 35
  5. Very specific:

    If refresh_of is set in the brief frontmatter, fetch the current URL via the scraping fallback chain and load the existing article so you …

    line 36
  6. Very specific:

    None: leave hero_image empty.

    line 97
  7. Distinctive:

    Before writing to disk, check:

    line 101
  8. Distinctive:

    Every entity from the brief's must-cover list appears at least once.

    line 104
  9. Distinctive:

    Every PAA from the brief is answered.

    line 105
  10. Distinctive:

    If any check fails, fix it before writing.

    line 112
  11. Very specific:

    Write to posts/<slug>.md. Print a 5-line summary:

    line 116
  12. Very specific:

    Notion: create a page in NOTION_DATABASE_ID with frontmatter fields mapped to database properties and the body as rich text.

    line 125
  13. Distinctive:

    Google Docs: create a doc in the service account's Drive, convert markdown to Docs formatting, print the Docs URL.

    line 126
  14. Distinctive:

    Notion/Docs push fails: write the local file anyway and print the error.

    line 133

“Common” is measured: kept by at least 6 in 10 of the 23 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Blog Post

Turn a briefs/<slug>.md (produced by the content-brief skill, or hand-written to the same schema) into a complete, publication-ready markdown article.

Setup

No required keys — the skill drafts from the brief alone. Optional keys unlock extras:

  • UNSPLASH_ACCESS_KEY or PEXELS_API_KEY — pick a hero image from stock libraries.
  • FAL_API_KEY or IDEOGRAM_API_KEY — generate an AI hero image instead.
  • NOTION_API_KEY + NOTION_DATABASE_ID — push the draft into Notion for editor review.
  • GOOGLE_DOCS_SERVICE_ACCOUNT_JSON — push the draft into Google Docs instead.

Inputs

  1. Brief path (required). Glob briefs/*.md and let the user pick if not specified.
  2. Editorial guidelines path — defaults to ./editorial-guidelines.md. If missing, fall back to {SKILL_BASE}/../_shared/b2b-saas-voice-reference.md and warn the user.
  3. Hero image mode: none / stock / generated. Ask via AskUserQuestion if optional keys are available.
  4. Handoff destination: local file only / Notion / Google Docs. Ask if the relevant key is set.

Process

1. Load everything

  • Read the brief file (the --- frontmatter tells you keyword, intent, target word count, refresh_of).
  • Read editorial-guidelines.md (or fallback).
  • Read {SKILL_BASE}/../_shared/seo-best-practices.md for the SEO ruleset.
  • If refresh_of is set in the brief frontmatter, fetch the current URL via the scraping fallback chain and load the existing article so you can preserve what works and only rewrite the weak sections.

2. Plan before drafting

Produce a short internal plan (not written to disk yet):

  • Confirm the H1 choice from the brief's title options (pick the one that best matches intent + voice; explain the choice in 1 line).
  • Confirm TL;DR.
  • Confirm the section order and word budget.
  • Identify 2–3 places where the editorial guidelines' "unique angle" rule can inject original observation, data, or opinion.

3. Draft section by section

Draft each H2 against its word budget. For every section:

  • Lede sentence states the section's claim or answer directly.
  • Evidence — at least one concrete fact, example, or number.
  • Transition — a single sentence bridging to the next section only if it earns its place.
  • Obey the editorial guidelines on:
    • POV (we/you/I/third)
    • Contractions
    • Sentence length ceiling
    • Banned words (run a final pass to eliminate them)
    • Preferred-word and product-naming conventions
  • Obey the SEO rules in seo-best-practices.md:
    • Primary keyword in first 100 words, in H1, in at least one H2
    • Cover every entity in the brief's entities table
    • Answer every PAA (either inline or in a dedicated section)
    • 2–4 outbound authoritative links
    • Internal links to the brief's suggested targets using descriptive anchor text

4. Write meta and frontmatter

Frontmatter fields:

---
title: "{H1}"
slug: "{slug}"
meta_title: "{50–60 chars}"
meta_description: "{140–160 chars}"
keyword: "{from brief}"
author: "{from editorial guidelines or TBD}"
date: "{YYYY-MM-DD}"
status: draft
canonical: ""
schema: "{Article|HowTo|FAQPage}"
hero_image: ""
hero_alt: ""
internal_links:
  - url: "{…}"
    anchor: "{…}"
outbound_links:
  - url: "{…}"
    anchor: "{…}"
---

5. Hero image (optional)

  • Stock mode: query Unsplash/Pexels with 2–3 semantic terms derived from the H1. Pick a landscape image with relevance > aesthetic. Write the URL and a descriptive (not keyword-stuffed) alt into frontmatter.
  • Generated mode: build a prompt from the H1 and voice attributes; call fal.ai or Ideogram; save the URL. Alt text describes the generated scene.
  • None: leave hero_image empty.

6. Self-review pass

Before writing to disk, check:

  1. Word count within ±20% of target.
  2. Every entity from the brief's must-cover list appears at least once.
  3. Every PAA from the brief is answered.
  4. Primary keyword density between 0.5% and 1.5%.
  5. No banned words.
  6. Flesch reading ease is in the guidelines' target range (estimate by rule of thumb if no tool is available).
  7. First 100 words contain the keyword and state the payoff.
  8. Closer recommends a specific next action.

If any check fails, fix it before writing.

7. Write the file

Write to posts/<slug>.md. Print a 5-line summary:

  • Path
  • Word count
  • Keyword + density
  • Number of internal links / outbound links
  • Any skipped self-review checks with the reason

8. Handoff (optional)

  • Notion: create a page in NOTION_DATABASE_ID with frontmatter fields mapped to database properties and the body as rich text. Print the Notion URL.
  • Google Docs: create a doc in the service account's Drive, convert markdown to Docs formatting, print the Docs URL.

Fallbacks

  • No editorial guidelines: fall back to the shared voice reference and print a warning.
  • No brief: refuse and tell the user to run content-brief first, or point to a hand-written brief.
  • Hero image APIs fail: continue without a hero image; leave fields empty.
  • Notion/Docs push fails: write the local file anyway and print the error.

Verification

  1. posts/<slug>.md exists with complete frontmatter.
  2. Self-review summary is printed; all checks pass or the failures are explicitly listed.
  3. Running proofreading-style-check on the output against the same editorial-guidelines.md returns zero critical findings (warnings are acceptable).

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.