Skills blog-generator
Analyzes journal entries and chat history to identify high-value topics and automatically generate blog posts.
git clone https://github.com/openclaw/skills
T=$(mktemp -d) && git clone --depth=1 https://github.com/openclaw/skills "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/austindixson/blog-generator" ~/.claude/skills/openclaw-skills-blog-generator && rm -rf "$T"
T=$(mktemp -d) && git clone --depth=1 https://github.com/openclaw/skills "$T" && mkdir -p ~/.openclaw/skills && cp -r "$T/skills/austindixson/blog-generator" ~/.openclaw/skills/openclaw-skills-blog-generator && rm -rf "$T"
skills/austindixson/blog-generator/SKILL.mdBlog Generator | OpenClaw Skill
Description
Analyzes journal entries and chat history to identify high-value topics and automatically generate blog posts.
Blog Generator | OpenClaw Skill
Automatically generates blog posts by analyzing journal entries, chat history, and recent activity to identify high-value, high-search-volume topics related to OpenClaw.
Usage
- As a scheduled cron job to automatically generate blog content weekly or daily
- Manually to create blog posts from recent journal analysis
- To identify and document high-value solutions and discoveries
# X-format articles as HTML; humanizer runs between generations; header from visual-explainer python3 /Users/ghost/.openclaw/workspace/skills/blog-generator/scripts/blog_generator.py # Skip humanizer (e.g. no OPENROUTER_API_KEY) python3 /Users/ghost/.openclaw/workspace/skills/blog-generator/scripts/blog_generator.py --no-humanize # Custom humanizer or visual-explainer paths python3 /Users/ghost/.openclaw/workspace/skills/blog-generator/scripts/blog_generator.py --humanizer-path /Users/ghost/Downloads/humanizer-1.0.0 --visual-explainer-path /Users/ghost/.openclaw/workspace/skills/visual-explainer-main # Classic format (overview/problem/solution), still HTML python3 /Users/ghost/.openclaw/workspace/skills/blog-generator/scripts/blog_generator.py --format classic # JSON output python3 /Users/ghost/.openclaw/workspace/skills/blog-generator/scripts/blog_generator.py --days 14 --max-topics 5 --json
What this skill does
- Scans journal entries from the last N days for interesting topics (discoveries, obstacles, solutions)
- Identifies high-value topics based on keyword relevance and problem-solving value
- Researches search volume and keyword opportunities (heuristic-based, can be enhanced with APIs)
- Generates structured blog posts with overview, problem, solution, and takeaways sections
- Saves blog posts to
as HTML only (X-article format, header from visual-explainer, humanizer between generations)/Users/ghost/.openclaw/blogs/
Integration as a Cron Job
This skill is designed to run periodically (daily or weekly) via OpenClaw cron to automatically generate blog content.
Example Cron Job Configuration (Daily):
{ "payload": { "kind": "agentTurn", "message": "Run blog-generator skill to analyze journal entries and generate high-value blog posts.", "model": "openrouter/google/gemini-2.5-flash", "thinking": "low", "timeoutSeconds": 300 }, "schedule": { "kind": "cron", "cron": "0 9 * * *" }, "delivery": { "mode": "announce" }, "sessionTarget": "isolated", "name": "Blog Post Generator" }
Example Cron Job Configuration (Weekly):
{ "payload": { "kind": "agentTurn", "message": "Run blog-generator skill with --days 7 --max-topics 3 to generate weekly blog posts from journal analysis.", "model": "openrouter/google/gemini-2.5-flash", "thinking": "low", "timeoutSeconds": 300 }, "schedule": { "kind": "cron", "cron": "0 10 * * 1" }, "delivery": { "mode": "announce" }, "sessionTarget": "isolated", "name": "Weekly Blog Generator" }
Output Format
HTML only (no Markdown). Output is in the format accepted by X articles: one header (from visual-explainer), then article body with no interlaced visuals.
- File:
/Users/ghost/.openclaw/blogs/YYYYMMDD_slugified-title.html - Article structure: X-style (long-form): punchy hook, short paragraphs, "two types of people" framing, pivot, stakes. Use
for overview/problem/solution.--format classic - Header: From visual-explainer only. Default path:
. The skill’s/Users/ghost/.openclaw/workspace/skills/visual-explainer-main
is called withscripts/generate_header.py
and returns ansection: "header"
(hero with title and optional summary). No diagrams or images in the body.html_snippet - Humanizer: Runs between generations by default. Each article’s body is sent through
(requires/Users/ghost/Downloads/humanizer-1.0.0
) before rendering to HTML. UseOPENROUTER_API_KEY
to skip.--no-humanize
Topic Scoring
Topics are scored based on:
- High-value keywords: OpenClaw-specific terms, problem-solving language
- Content type: Solutions score highest, then obstacles, then discoveries
- Content depth: Longer, more detailed content scores higher
- Search volume indicators: Keywords like "how to", "tutorial", "fix" increase value
Requirements
- Journal entries in
/Users/ghost/.openclaw/journal/ - Blogs directory writable at
/Users/ghost/.openclaw/blogs/ - Chat history analyzer skill (for journal entries)
How it works
- Scans journal directory for markdown files from the last N days
- Extracts topics from discoveries, obstacles, and solutions sections
- Scores topics based on keyword relevance and value
- Selects top N high-value topics
- Generates structured blog posts with problem/solution format
- Saves posts to blogs directory with timestamped filenames
Enhancement Opportunities
- Integrate with Google Keyword Planner API for real search volume data
- Use AI model to enhance blog post quality and SEO optimization
- Cross-reference with existing blog posts to avoid duplicates
- Generate multiple variations of posts for A/B testing