Khazix WeChat Article Writer
KKKKhazix/khazix-skills
Writes long-form WeChat official account articles in the personal style of the Khazix account, from briefs, links, PDFs or rough notes, with a topic quality check.
Generate a full SEO-optimized blog post. An agent skill from OpenClaudia/openclaudia-skills.
$ npx skills add OpenClaudia/openclaudia-skills --skill write-blog -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install OpenClaudia/openclaudia-skills write-blog --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/OpenClaudia/openclaudia-skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/write-blog .claude/skills/write-blog && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "write-blog" agent skill from https://github.com/OpenClaudia/openclaudia-skills/tree/main/skills/write-blog into .claude/skills/write-blog/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "write-blog", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/OpenClaudia/openclaudia-skills/tree/main/skills/write-blogType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add OpenClaudia/openclaudia-skills --skill write-blog -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install OpenClaudia/openclaudia-skills write-blog --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/OpenClaudia/openclaudia-skills.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/write-blog .agents/skills/write-blog && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "write-blog" agent skill from https://github.com/OpenClaudia/openclaudia-skills/tree/main/skills/write-blog into .agents/skills/write-blog/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "write-blog", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add OpenClaudia/openclaudia-skills --skill write-blog -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install OpenClaudia/openclaudia-skills write-blog --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/OpenClaudia/openclaudia-skills.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/write-blog .cursor/skills/write-blog && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "write-blog" agent skill from https://github.com/OpenClaudia/openclaudia-skills/tree/main/skills/write-blog into .cursor/skills/write-blog/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "write-blog", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/OpenClaudia/openclaudia-skills.git --path skills/write-blog--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add OpenClaudia/openclaudia-skills --skill write-blog -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install OpenClaudia/openclaudia-skills write-blog --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/OpenClaudia/openclaudia-skills.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/write-blog .gemini/skills/write-blog && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "write-blog" agent skill from https://github.com/OpenClaudia/openclaudia-skills/tree/main/skills/write-blog into .gemini/skills/write-blog/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "write-blog", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install OpenClaudia/openclaudia-skills write-blogInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add OpenClaudia/openclaudia-skills --skill write-blog -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/OpenClaudia/openclaudia-skills.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/write-blog .github/skills/write-blog && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "write-blog" agent skill from https://github.com/OpenClaudia/openclaudia-skills/tree/main/skills/write-blog into .github/skills/write-blog/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "write-blog", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add OpenClaudia/openclaudia-skills --skill write-blog -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install OpenClaudia/openclaudia-skills write-blog --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/OpenClaudia/openclaudia-skills.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/write-blog .opencode/skills/write-blog && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "write-blog" agent skill from https://github.com/OpenClaudia/openclaudia-skills/tree/main/skills/write-blog into .opencode/skills/write-blog/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "write-blog", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
write-blogGenerate a full SEO-optimized blog post. An agent skill from OpenClaudia/openclaudia-skills.
Write Blog is an agent skill from OpenClaudia/openclaudia-skills. Generate a full SEO-optimized blog post. Use when the user says "write a blog post", "blog article", "write about", "create content for", "SEO article", "blog content", "write a post about", or provides a keyword and asks for a written article.
Its SKILL.md is about 3.7k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It sits in Writing & Content, covering Blog and article writing. The repository describes itself as: 77 open-source marketing skills for Claude Code, Codex, and other AI coding agents. SEO, content, email, ads, analytics, and growth. The licence is MIT.
7 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 28bf209. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
curljqFrom the folder's file list and the shell code blocks in SKILL.md.
Hosts in commands or code, which the agent is likely to contact:
api.unsplash.comunsplash.comapi.semrush.comFrom URLs in SKILL.md, links to its own repository left out.
Names these keys or tokens, usually read from environment variables:
SEMRUSH_API_KEYFrom names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Write Blog loads about 3.7k tokens when it runs. Until then it costs about 64 tokens; SKILL.md has 1,413 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from OpenClaudia/openclaudia-skills at commit 28bf209, republished under its MIT licence (© OpenClaudia). 1,413 words, ~3,719 tokens.
.claude/skills/write-blog/SKILL.md (or your agent's skills folder).You are an expert SEO content writer. Create comprehensive, well-researched blog posts optimized for both search engines and readers. Follow the E-E-A-T framework (Experience, Expertise, Authoritativeness, Trustworthiness).
Before writing a single word, gather intelligence:
1A. Understand the keyword Ask or infer:
1B. Get Keyword Data (if SemRush API available)
If SEMRUSH_API_KEY is set, pull real keyword metrics to inform the content strategy:
# Get keyword data for the target keyword
curl -s "https://api.semrush.com/?type=phrase_all&key=${SEMRUSH_API_KEY}&phrase={keyword}&database=us&export_columns=Ph,Nq,Cp,Co,Nr"The response is semicolon-delimited with columns:
Use these insights to:
1C. Analyze the SERP (if tools available) Use WebSearch to check what currently ranks:
1D. Build the outline from SERP intelligence Your outline should cover everything the top results cover, plus unique sections they miss.
Build a detailed outline before writing. Every blog post follows this master structure:
# [H1: Title - includes primary keyword, compelling, 50-60 chars for title tag]
Meta Title: [50-60 characters, primary keyword front-loaded]
Meta Description: [150-160 characters, includes keyword, has CTA, creates curiosity]
URL Slug: [primary-keyword-short-descriptive]
## Introduction (100-150 words)
- Hook: Open with a surprising stat, question, or relatable problem
- Context: Why this topic matters RIGHT NOW
- Promise: What the reader will learn/gain
- Primary keyword appears in first 100 words
## [H2: First major section - includes secondary keyword]
### [H3: Subsection if needed]
- Key points to cover
- Data or examples to include
## [H2: Second major section]
### [H3: Subsection]
...
## [H2: Practical/Actionable Section]
(How-to steps, templates, checklists, frameworks)
## [H2: Expert Tips / Advanced Section]
(Differentiator content - what competitors don't cover)
## [H2: Common Mistakes / What to Avoid]
(Addresses "People Also Ask" questions)
## [H2: FAQ]
### [H3: Question 1?]
Answer (2-4 sentences, targets featured snippet)
### [H3: Question 2?]
...
## Conclusion (100-150 words)
- Summarize key takeaways (3-5 bullet points)
- Restate the main value delivered
- Clear CTA: what should the reader do next?
## Internal Links Plan
- Link TO: [3-5 related pages on the site]
- Link FROM: [Pages that should link to this post]Follow these writing rules strictly:
Choose the best pattern for the intent:
| Intent | Formula | Example |
|---|---|---|
| How-to | "How to {Action} ({Qualifier})" | "How to Start a Blog (Step-by-Step Guide)" |
| Listicle | "{Number} {Adjective} {Topic} for {Year/Audience}" | "15 Best SEO Tools for Small Business (2025)" |
| Guide | "{Topic}: The {Adjective} Guide for {Year}" | "Email Marketing: The Complete Guide for 2025" |
| Comparison | "{A} vs {B}: {Differentiator}" | "Notion vs Obsidian: Which Is Better for Teams?" |
| Question | "{Question}? {Promise}" | "Is SEO Dead? What the Data Actually Shows" |
Title rules:
{What the article covers} + {Unique value prop} + {CTA or curiosity hook}Examples:
Meta description rules:
Readability:
Structure & Scannability:
SEO Integration (natural, not forced):
E-E-A-T Signals:
| Article Type | Target Words | Sections (H2) | Images | Internal Links | External Links |
|---|---|---|---|---|---|
| How-to Guide | 2000-3000 | 6-10 | 5-10 | 5-8 | 3-5 |
| Listicle | 2500-4000 | 1 per item + intro/conclusion | 1 per item | 5-10 | 3-5 |
| Ultimate Guide | 3000-5000 | 8-15 | 8-15 | 8-12 | 5-8 |
| Comparison | 1500-2500 | 5-8 | 3-5 | 3-5 | 2-4 |
| Opinion/Thought | 1000-1500 | 4-6 | 2-3 | 3-5 | 2-3 |
| News/Update | 800-1200 | 3-5 | 1-3 | 3-5 | 3-5 |
Target featured snippets with these patterns:
Paragraph snippet (definition/what is):
## What Is {Topic}?
{Topic} is {clear 40-60 word definition that directly answers the question}.
{Additional context in 1-2 more sentences}.List snippet (how-to/best of):
## How to {Action}
1. **{Step 1 title}** - Brief description
2. **{Step 2 title}** - Brief description
3. **{Step 3 title}** - Brief description
...Table snippet (comparison/data):
## {Comparison Topic}
| {Column 1} | {Column 2} | {Column 3} |
|------------|------------|------------|
| {Data} | {Data} | {Data} |Image suggestions: For each major section, suggest an image:
[IMAGE: {Description of what the image should show}]
Alt text: "{Descriptive alt text with keyword where natural}"Image types to suggest:
Sourcing Featured Images from Unsplash (if UNSPLASH_CLIENT_ID available):
Use the Unsplash API to find high-quality, royalty-free featured images for the blog post:
# Search Unsplash for a relevant featured image
curl -s "https://api.unsplash.com/search/photos?query={topic}&per_page=5&orientation=landscape" \
-H "Authorization: Client-ID ${UNSPLASH_CLIENT_ID}"Parsing the response:
The JSON response contains a results array. For each photo, extract:
# Parse with jq to get image URLs, photographer info, and download links
curl -s "https://api.unsplash.com/search/photos?query={topic}&per_page=5&orientation=landscape" \
-H "Authorization: Client-ID ${UNSPLASH_CLIENT_ID}" | \
jq -r '.results[] | {
id: .id,
description: .description,
image_url: .urls.regular,
full_url: .urls.full,
download_link: .links.download,
photographer_name: .user.name,
photographer_url: .user.links.html,
unsplash_url: .links.html
}'Key fields from the response:
.urls.regular - Optimized image (1080px wide, good for blog featured images).urls.full - Full resolution image.urls.small - Thumbnail (400px wide, good for social sharing previews).links.download - Trigger a download (Unsplash tracks this for photographer stats).user.name - Photographer's name (required for attribution).user.links.html - Photographer's Unsplash profile URLUnsplash attribution requirement:
Unsplash requires attribution whenever you use a photo. Include this in the blog post:
Photo by [Photographer Name](https://unsplash.com/@username?utm_source=your_app&utm_medium=referral) on [Unsplash](https://unsplash.com/?utm_source=your_app&utm_medium=referral)Place the attribution either:
Tip: Search with specific, descriptive queries rather than broad terms. For example, use "remote team video call" instead of "business" for better results. You can also filter by color, content_filter (low/high), and order_by (relevant/latest).
Internal link placement:
External link rules:
Every blog post should end with a FAQ section targeting "People Also Ask":
## Frequently Asked Questions
### {Question matching PAA or long-tail keyword}?
{Direct answer in 2-4 sentences. Front-load the answer.
Provide additional context after the direct answer.
This format optimizes for both featured snippets and FAQ rich results.}
### {Second question}?
{Answer}FAQ rules:
Before delivering the post, verify:
SEO Checklist:
Readability Checklist:
E-E-A-T Checklist:
Deliver the blog post in this format:
---
title: "{Meta title - 50-60 chars}"
description: "{Meta description - 150-160 chars}"
slug: "{url-slug}"
keywords: ["{primary}", "{secondary1}", "{secondary2}"]
date: "{YYYY-MM-DD}"
author: "{Author name}"
---
# {H1 Headline}
{Full article content with all formatting, links, and image placeholders}After the article, provide:
© OpenClaudia, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in skills/write-blog of OpenClaudia/openclaudia-skills.
Open the folder on GitHubat commit 28bf209
Write Blog next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Write Blog this skillOpenClaudia/openclaudia-skills | 713 | — | ~3.7k | Automated safety check: Pass | MIT | |
| Khazix WeChat Article WriterKKKKhazix/khazix-skills | 21k | 1 repos | ~2.9k | Automated safety check: Pass | MIT | |
| Figurevectorize-io/hindsight | 47k | — | ~1.9k | Automated safety check: Pass | MIT | |
| SepiaNanako0129/sepia | 3k | — | ~3.6k | Automated safety check: Pass | MIT | |
| Blog Post Draftingluongnv89/claude-howto | 42k | — | ~2.1k | Automated safety check: Pass | MIT | |
| Notion To Blogwasp-lang/wasp | 19k | — | ~922 | Automated safety check: Pass | MIT |
KKKKhazix/khazix-skills
Writes long-form WeChat official account articles in the personal style of the Khazix account, from briefs, links, PDFs or rough notes, with a topic quality check.
vectorize-io/hindsight
Draw an animated figure (boxes, arrows, moving data) as one self-contained SVG for a GitHub README, PR, issue or blog post.
Nanako0129/sepia
Make AI-generated writing read as human-written, in fiction and in professional prose.
luongnv89/claude-howto
Guides drafting a blog post from an idea and optional source material: research, brainstorming, outlining and version-tracked drafts, with user approval at each step.
wasp-lang/wasp
Transfer a blog post from Notion to the Wasp blog. An agent skill from wasp-lang/wasp.
nteract/semiotic
Author a new entry for the Semiotic blog. An agent skill from nteract/semiotic.
OpenClaudia/openclaudia-skills
Build an interactive competitive-traffic report for any company and its rivals — monthly visits (SimilarWeb), organic search traffic and Domain Rating (Ahrefs) — as one self-contained HTML page with…
OpenClaudia/openclaudia-skills
Score how hard a keyword is to rank for in the AI-search era — page-level URL Rating of real competitors (not just domain DR), Ahrefs keyword difficulty, and whether a given site already ranks or is…
OpenClaudia/openclaudia-skills
Audit EVERY Google Search Console property at once — rank all sites by clicks and impressions with period-over-period deltas, then diff keywords per site to surface what is newly ranking, rising…
OpenClaudia/openclaudia-skills
Fetch website traffic estimates (monthly visits, traffic sources, top countries, keywords, engagement, ranks) for any domain from SimilarWeb.
OpenClaudia/openclaudia-skills
Manages Ahrefs API usage in Python using ahrefs-python library.
OpenClaudia/openclaudia-skills
Design, plan, and analyze A/B tests with statistical rigor. An agent skill from OpenClaudia/openclaudia-skills.
Categories
Generate a full SEO-optimized blog post. An agent skill from OpenClaudia/openclaudia-skills. Write Blog is an agent skill from OpenClaudia/openclaudia-skills. Generate a full SEO-optimized blog post.
Write Blog fits situations like: the user says write a blog post; create content for; write a post about; provides a keyword and asks for a written article.
Run `npx skills add OpenClaudia/openclaudia-skills --skill write-blog -a claude-code`. Or copy the skill folder (skills/write-blog in OpenClaudia/openclaudia-skills) into .claude/skills/write-blog in your project. Claude Code loads it when a task matches its description.
Run `npx skills add OpenClaudia/openclaudia-skills --skill write-blog -a codex`. Or copy the skill folder (skills/write-blog in OpenClaudia/openclaudia-skills) into .agents/skills/write-blog in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add OpenClaudia/openclaudia-skills --skill write-blog -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/write-blog, .gemini/skills/write-blog, .github/skills/write-blog and .opencode/skills/write-blog in your project.
Going by SKILL.md and its folder, Write Blog needs the command-line tools its instructions call (curl and jq) and credentials named SEMRUSH_API_KEY. Our summary lists: A credential in SEMRUSH_API_KEY.
SKILL.md names 3 domains. In commands or code: api.unsplash.com, unsplash.com and api.semrush.com; the agent is likely to contact these when it follows the instructions. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Write Blog is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 3.7k tokens (SKILL.md is roughly 15k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Write Blog: Khazix WeChat Article Writer (KKKKhazix/khazix-skills, 21k stars), Figure (vectorize-io/hindsight, 47k stars), Sepia (Nanako0129/sepia, 3k stars) and Blog Post Drafting (luongnv89/claude-howto, 42k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
OpenClaudia (a GitHub organization) maintains it in OpenClaudia/openclaudia-skills, which has 713 GitHub stars. The repository holds 74 skills in this directory. The repository was last updated on September 18, 2026.
Source: OpenClaudia/openclaudia-skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.