Blog Generator
by @austindixson
Analyzes journal entries and chat history to identify high-value topics and automatically generate blog posts.
clawhub install blog-generatorπ About This Skill
name: blog-generator displayName: Blog Generator | OpenClaw Skill description: Analyzes journal entries and chat history to identify high-value topics and automatically generate blog posts. version: 1.0.0
Blog 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
# X-format articles as HTML; humanizer runs between generations; header from visual-explainer
python3 /Users/ghost/.openclaw/workspace/skills/blog-generator/scripts/blog_generator.pySkip humanizer (e.g. no OPENROUTER_API_KEY)
python3 /Users/ghost/.openclaw/workspace/skills/blog-generator/scripts/blog_generator.py --no-humanizeCustom 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-mainClassic format (overview/problem/solution), still HTML
python3 /Users/ghost/.openclaw/workspace/skills/blog-generator/scripts/blog_generator.py --format classicJSON output
python3 /Users/ghost/.openclaw/workspace/skills/blog-generator/scripts/blog_generator.py --days 14 --max-topics 5 --json
What this skill does
/Users/ghost/.openclaw/blogs/ as HTML only (X-article format, header from visual-explainer, humanizer between generations)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.
/Users/ghost/.openclaw/blogs/YYYYMMDD_slugified-title.html--format classic for overview/problem/solution./Users/ghost/.openclaw/workspace/skills/visual-explainer-main. The skillβs scripts/generate_header.py is called with section: "header" and returns an html_snippet (hero with title and optional summary). No diagrams or images in the body./Users/ghost/Downloads/humanizer-1.0.0 (requires OPENROUTER_API_KEY) before rendering to HTML. Use --no-humanize to skip.Topic Scoring
Topics are scored based on:
Requirements
/Users/ghost/.openclaw/journal//Users/ghost/.openclaw/blogs/How it works
1. Scans journal directory for markdown files from the last N days 2. Extracts topics from discoveries, obstacles, and solutions sections 3. Scores topics based on keyword relevance and value 4. Selects top N high-value topics 5. Generates structured blog posts with problem/solution format 6. Saves posts to blogs directory with timestamped filenames
Enhancement Opportunities
π‘ Examples
# X-format articles as HTML; humanizer runs between generations; header from visual-explainer
python3 /Users/ghost/.openclaw/workspace/skills/blog-generator/scripts/blog_generator.pySkip humanizer (e.g. no OPENROUTER_API_KEY)
python3 /Users/ghost/.openclaw/workspace/skills/blog-generator/scripts/blog_generator.py --no-humanizeCustom 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-mainClassic format (overview/problem/solution), still HTML
python3 /Users/ghost/.openclaw/workspace/skills/blog-generator/scripts/blog_generator.py --format classicJSON output
python3 /Users/ghost/.openclaw/workspace/skills/blog-generator/scripts/blog_generator.py --days 14 --max-topics 5 --json