Get the FREE Ultimate OpenClaw Setup Guide →

content-writer

npx machina-cli add skill jikig-ai/soleur/content-writer --openclaw
Files (1)
SKILL.md
4.9 KB

Content Writer

Generate full publication-ready article drafts with brand-consistent voice, Eleventy frontmatter, JSON-LD structured data, and optional FAQ sections. Content is validated against the brand guide and presented for user approval before writing to disk.

Phase 0: Prerequisites

<critical_sequence>

Before generating content, verify both prerequisites. If either fails, display the error message and stop.

1. Brand Guide

Check if knowledge-base/overview/brand-guide.md exists.

If missing:

No brand guide found. Run the brand-architect agent first to establish brand identity: Use the brand-architect agent to define our brand.

Stop execution.

2. Blog Infrastructure

Check if an Eleventy config file exists (eleventy.config.js or .eleventy.js).

If missing:

No Eleventy config found. Run the docs-site skill to scaffold blog infrastructure first.

Stop execution.

</critical_sequence>

Phase 1: Parse Input

Parse the arguments provided after the skill name:

  • <topic> (required): the article topic or title
  • --outline "..." (optional): article structure as inline text (Markdown list format)
  • --keywords "kw1, kw2, kw3" (optional): target keywords, comma-separated
  • --path <output-path> (optional): where to write the file

Default output path (if --path not provided): auto-generate from topic slug as blog/posts/YYYY-MM-DD-<slug>.md. If blog/posts/ does not exist, check for other common blog directories (posts/, articles/, blog/). If none exist, ask the user for the output path.

Phase 2: Generate Draft

Read the brand guide sections that inform content generation:

  1. Read ## Voice -- apply brand voice, tone, do's and don'ts
  2. Read ## Channel Notes > ### Blog -- apply blog-specific guidelines (if the section exists)
  3. Read ## Identity -- use mission and positioning for content alignment

Generate a full article draft that:

  • Follows the brand voice from ## Voice

  • Incorporates target keywords naturally (if --keywords provided)

  • Follows the provided outline structure (if --outline provided)

  • Includes complete Eleventy frontmatter:

    ---
    title: "<Article Title>"
    date: "YYYY-MM-DD"
    description: "<Meta description, 120-160 characters, includes primary keyword>"
    tags:
      - <relevant-tag>
    layout: "post.njk"
    ---
    
  • Includes JSON-LD Article structured data after the frontmatter:

    <script type="application/ld+json">
    {
      "@context": "https://schema.org",
      "@type": "Article",
      "headline": "<title>",
      "datePublished": "<date>",
      "description": "<description>"
    }
    </script>
    
  • Generates a FAQ section with FAQPage schema if the topic naturally raises 2+ questions. Include the FAQ schema inline:

    <script type="application/ld+json">
    {
      "@context": "https://schema.org",
      "@type": "FAQPage",
      "mainEntity": [
        {
          "@type": "Question",
          "name": "<question>",
          "acceptedAnswer": {
            "@type": "Answer",
            "text": "<answer>"
          }
        }
      ]
    }
    </script>
    

If existing posts are present in the target directory, read 1-2 of them to match frontmatter schema, layout name, and tag conventions.

Phase 3: User Approval

Present the generated draft with word count displayed. Use the AskUserQuestion tool with three options:

  • Accept -- Write article to disk
  • Edit -- Provide feedback to revise the draft (return to Phase 2 with feedback incorporated)
  • Reject -- Discard the draft and exit

If "Edit" is selected, ask for specific feedback, then regenerate incorporating the changes. The user can choose Edit as many times as needed.

Phase 4: Write to Disk

On acceptance, write the article to the output path.

Report: "Article written to <path>. Review and commit when ready."

Important Guidelines

  • All content requires explicit user approval before writing -- no auto-write
  • Brand guide is a hard prerequisite. Without it, the skill cannot generate brand-consistent content.
  • Read the brand guide Voice section during draft generation, not as a separate post-hoc validation pass
  • If outline is provided, follow it. If not, generate a reasonable article structure from the topic.
  • Do not scaffold blog infrastructure. If missing, direct the user to the docs-site skill.
  • JSON-LD should use schema.org/Article type. Use BlogPosting if writing into a blog/ directory.
  • Frontmatter fields should match existing posts in the target directory when possible.
  • If the brand guide's ## Channel Notes > ### Blog section is missing, generate content using only the ## Voice section (no error).

Source

git clone https://github.com/jikig-ai/soleur/blob/main/plugins/soleur/skills/content-writer/SKILL.mdView on GitHub

Overview

content-writer generates full publication-ready article drafts that align with the brand voice and structure. It outputs Eleventy frontmatter, JSON-LD data, and optional FAQ sections, then presents the draft for user approval before writing to disk.

How This Skill Works

The tool first validates prerequisites: a brand guide at knowledge-base/overview/brand-guide.md and a functioning Eleventy setup. It then parses input such as topic, optional outline, keywords, and output path. Finally, it generates a complete draft with frontmatter and JSON-LD, optionally adds FAQPage data, and awaits user approval before saving to disk.

When to Use It

  • Drafting a new blog post that must reflect the brand voice and identity.
  • Creating a post with SEO keywords and a defined outline.
  • Generating content that includes JSON-LD structured data for better search visibility.
  • When starting from a topic and optional outline to accelerate publishing.
  • Before publishing to ensure frontmatter, data, and branding are consistent with existing posts.

Quick Start

  1. Step 1: Provide topic, optional outline, keywords, and path if needed.
  2. Step 2: Ensure knowledge-base/overview/brand-guide.md and an Eleventy config exist.
  3. Step 3: Review the generated draft and choose Accept to write to disk, Edit to revise, or Reject to discard.

Best Practices

  • Verify the brand guide exists and is up to date before drafting.
  • Ensure Eleventy blog infrastructure is scaffolded and accessible.
  • Provide a clear topic, outline, and target keywords if SEO is important.
  • Review the generated frontmatter, JSON-LD, and optional FAQ for accuracy.
  • Keep the output path aligned with your blog directory to avoid write errors.

Example Use Cases

  • Topic: 'How to Build a Brand Voice Guide' with an outline and SEO keywords.
  • Topic: '5 Tips for Consistent Blog Tone' with keywords and a short outline.
  • Topic: 'Case Study: Rebranding Launch' including a FAQ section.
  • Topic: 'Beginner's Guide to Eleventy Frontmatter' with structural notes.
  • Topic: 'Optimizing Meta Descriptions for Blog Posts' with targeted keywords.

Frequently Asked Questions

Add this skill to your agents
Sponsor this space

Reach thousands of developers