Install
openclaw skills install cook-a-skill-content-blog-socialFull end-to-end SEO + GEO content creation pipeline for crypto/Web3 teams. Trigger this skill when the user wants to: write a blog post or article, research keywords, generate a content brief or outline, mine community comments for UGC insights, optimize content for SEO or AI search engines (GEO), score or audit an existing article, or check if writing sounds AI-generated. Also trigger automatically at the start of every new session to scan X for trending topics relevant to the user's project spec — propose hot keywords before the user asks. Accepts a project spec .md file as primary input. Also works with plain keyword or topic. Run all stages in sequence when starting from scratch. Enter mid-pipeline if user provides an existing draft or only asks for one stage.
openclaw skills install cook-a-skill-content-blog-socialEnd-to-end pipeline: trending topic → keyword research → brief → UGC enrichment → human-style draft → visual & link enrichment → SEO + GEO optimization → scored QA report.
[0] X TREND MONITOR → auto-run on session start, propose hot keywords
[1] KEYWORD RESEARCH → scored, data-backed selection
[2] CONTENT BRIEF → outline + keyword map + UGC insertion points
[3] UGC ENRICHMENT → mine comments → ready-to-paste blog sections
[4] DRAFT → human-style, data-backed, zero AI patterns
[4.5] VISUAL & LINKS → data charts (matplotlib) + inline hyperlinks on every citation
[5] SEO + GEO → on-page checklist + AI-bot-friendly formatting
[6] QA REPORT → rubric score + publish verdict
Enter at any stage. Run all stages from scratch. Start at Stage 5 for existing drafts.
Quick commands:
run full pipeline → Stage 0 → Stage 6start from stage [N] → enter at any stagescore my draft → Stage 5 → Stage 6enrich my draft → Stage 4.5 only (charts + links on existing draft)Reference files (read when detail is needed):
references/scoring-rubrics.md — all scoring tables (trend, keyword, UGC, SEO, GEO)references/ai-patterns-blacklist.md — full list of AI phrases to never writereferences/output-templates.md — exact output format for each stagereferences/example-run.md — real example: keyword "what is liquid staking"Required: project_spec (.md) + keyword_or_topic
Optional: ugc_urls (skip Stage 3 if absent), blog_draft, language (default: English), word_count (default: 1500–2000), tone (default: auto-detect from spec)
If project_spec is missing: stop and ask for it before starting.
Run automatically at the start of every new session, before the user says anything.
project_spec.md → extract: domain/niche, audience, product themes, competitor namessite:x.com [domain keyword] -filter:replies[domain keyword] trending twitter 2025[domain keyword] discussion OR debate twitter[competitor name] twitter sentiment 2025crypto twitter trending today[domain keyword] CT crypto twitter discussionreferences/scoring-rubrics.md Stage 0references/output-templates.md Stage 0Fallback if web search off: skip, say "Stage 0 unavailable. Provide a keyword to start Stage 1." Fallback if no trends found: list 3 evergreen topics from spec context.
google trends [keyword] 2025 → directionsite:x.com [keyword] + [keyword] trending twitter 2025 → buzz + debate angle[keyword] search volume 2025 + ubersuggest [keyword] → volume estimate[keyword] → extract People Also Ask + Related Searchesreferences/scoring-rubrics.md Stage 1[estimated].references/output-templates.md Stage 1Edge cases: keyword too broad → suggest 3–5 long-tail alternatives. Doesn't match spec → warn + confirm.
← UGC: community counterpoints / ← UGC: case studies / ← UGC: FAQreferences/output-templates.md Stage 2FAQ section: minimum 5 entries. Mandatory for GEO.
Skip if no ugc_urls. Note "UGC: Missing" in QA report.
Why it matters: Reddit ~21% of Google AI Overview citations. Real UGC = 2–3x AI search visibility. E-E-A-T "Experience" signal = cannot be faked by AI content.
For each URL:
web_fetch → extract post body + all comments with engagement metrics
references/scoring-rubrics.md Stage 3references/output-templates.md Stage 3Hard rules: never fabricate, never include usernames, never include spam/memes, max 6 FAQs + 4 case studies.
Edge cases: <10 comments → warn "limited data". All score <3 → "No high-value comments, try different URL."
Write full article: follow Stage 2 outline exactly, insert Stage 3 UGC blocks at flagged points.
Before writing: write Meta Title (≤60 chars, primary keyword near front) + Meta Description (≤160 chars, primary keyword + hook)
Intro: specific fact or bold claim opener. Primary keyword within first 100 words. Write featured snippet candidate block (40–60 words, direct definition or numbered steps) — place within first H2.
Body: answer-first each H2 (1–2 sentence direct answer before elaboration). Min 1 data point per major section. Find real stats first: search [topic] statistics 2025. If unavailable: [DATA NEEDED: search "[query]"]. Source format: stat — Source, Year. UGC blocks at exact insertion points.
Data minimum: 3 data points total per article. Never invent statistics.
Paragraphs: 3–4 lines max. Define technical terms inline on first use.
AI patterns: never write any phrase from references/ai-patterns-blacklist.md. If caught: stop, rewrite with fact or direct claim.
Conclusion: synthesize 2–3 takeaways. Do not restate all H2s as bullet points. Specific CTA.
Internal links: suggest 2–3, anchor text uses secondary keywords.
Output format → see references/output-templates.md Stage 4
Runs automatically after Stage 4 is complete. Cannot be skipped — required for publish-ready output.
— Source, Year is a missed E-E-A-T trust signalScan the draft for data points that meet at least one of these criteria:
| Criterion | Example |
|---|---|
| Change over time (2+ periods) | "TVL grew from $2B to $8B in 6 months" |
| Compares 2+ assets or metrics | "Lido APY 3.8% vs solo staking 3.2%" |
| Inflow / outflow trend | "$1.2B ETF inflows in Q1 2025" |
| Index or score over time | "Fear & Greed Index: 12/100" |
| Ratio that changed | "ETH staking ratio: 18% → 27% in 12 months" |
| 3+ data points in a series | Monthly DEX volume figures |
Chart types by data shape:
| Data type | Chart type |
|---|---|
| Performance over time | Line chart with fill-under |
| Inflows / outflows | Bar chart — green positive, red negative |
| Index or score over time | Bar chart with color-coded zones |
| Ratio or comparison over time | Line or area chart |
| Single-point comparison | Horizontal bar or stat callout box |
Chart design standards (apply to every chart):
#F7F7F7 (light gray), no heavy gridlines#E8650A (orange, default for crypto/Web3 — adjust to project brand if spec defines one)Source: [Name] | [Notes]Maximum 6 charts per article. More than 6 slows page load. Excess data points → stat callout boxes instead.
If no qualifying data points found: output a styled stat callout box for that statistic instead of a chart.
Use Python + matplotlib. Execute in the computing environment.
For each chart, produce:
Chart [N]: [What it shows]. [Time period]. Sources: [Name].[Chart type] showing [metric] from [start] to [end]. [Key finding in one sentence].Place each chart immediately after the paragraph that first introduces its data. Never stack two charts back-to-back without body text between them.
Scan the entire draft for every inline source citation. Patterns to find:
| Pattern | Example |
|---|---|
— [Source, Year] | — CoinDesk, Jan 2025 |
per [Source] | per DeFiLlama |
according to [Source] | according to Messari |
[Source] reports | Dune Analytics reports |
([Source]) | (CoinGecko) |
For each citation:
[publication] [topic] [approximate date][VERIFY URL][SOURCE NEEDED] — never invent a sourceLink rules:
Append this block to the enriched draft:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
STAGE 4.5 — VISUAL & LINK ENRICHMENT SUMMARY
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Charts generated: [N] / [max 6]
- Chart 1: [title] → placed after [section name]
- Chart 2: [title] → placed after [section name]
Source links resolved: [N] / [total citations found]
- [Source name] → [URL] ✅
- [Source name] → [URL] ⚠️ [VERIFY URL — linked to homepage]
Unlinked citations flagged: [N]
- "[claim]" → [SOURCE NEEDED]
Alt text strings:
Chart 1: "[alt text]"
Chart 2: "[alt text]"
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
GEO = Generative Engine Optimization. Goal: easy for Perplexity, Google SGE, ChatGPT Search to parse and cite.
number unit — Source, Year, no pronoun ambiguityGEO output block → see references/output-templates.md Stage 5
Scoring rubric → see references/scoring-rubrics.md Stage 5
Score using 100-point rubric → see references/scoring-rubrics.md Stage 6
Thresholds: 85–100 = Publish-ready | 70–84 = Minor fixes | Below 70 = Needs revision
Output format → see references/output-templates.md Stage 6
| Case | Action |
|---|---|
project_spec missing | Stop. Ask for spec before starting. |
| Keyword too broad | Stop. Suggest 3–5 long-tail alternatives. Wait for choice. |
| Keyword doesn't match spec | Warn. Ask for confirmation. |
| Deep technical content | Flag [SME REVIEW]. Never fabricate. |
| User requests Vietnamese | Switch all output to Vietnamese. Same formats. |
| Word count <500 or >5000 | Warn. Recommend 800–2500. |
| SEO score below 70 | List specific fixes with section references. |
| Web search unavailable | Skip Stage 0. Flag affected stages. Fall back to training knowledge, label [estimated]. |
| UGC URL behind login wall | Skip URL. Ask: "Paste comment text directly." |
| No high-value UGC comments | "No high-value comments. Try a different URL." |
| No ugc_urls provided | Skip Stage 3. Mark UGC = Missing in QA. |
| Stage 0 finds no trends | List 3 evergreen topics from spec context. |
| User enters mid-pipeline | Start at appropriate stage. Ask what they have. |
| Stage 4.5: no chart-worthy data | Output stat callout boxes for all key numbers. Flag: "No time-series or comparison data found — consider adding benchmark data in Stage 4 revision." |
| Stage 4.5: more than 6 chart-worthy points | Prioritize: (1) comparisons, (2) trends, (3) index scores. Remainder → stat callout boxes. |
| Stage 4.5: all source URLs paywalled | Link to publisher homepages. Flag every instance [VERIFY URL]. List all in enrichment summary. |
| Stage 4.5: source article not found | Link to publication homepage + flag [SOURCE NEEDED — could not verify]. |
| Stage 4.5: citation is vague ("analysts say") | Flag [SOURCE NEEDED]. Never invent a source. |
| Stage 4.5: web search unavailable | Skip link resolution. Flag all citations [HYPERLINK NEEDED — web search off]. Charts still generated from in-draft data. |
[VERIFY], [DATA NEEDED], [SOURCE NEEDED], and [VERIFY URL] flags require human review before publishing