FLOW SEO Framework
AgriciDaniel/claude-seo
Brings the FLOW framework's stage-specific SEO prompts into the agent, from keyword discovery through backlinks, on-page work and conversion to local SEO, loaded on demand.
Publish an article to a site you own — with a searched-for title, a real author, a licensed cover image, linked sources, and (optionally) one planned backlink.
$ npx skills add OpenClaudia/openclaudia-skills --skill publish-article -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install OpenClaudia/openclaudia-skills publish-article --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/publish-article .claude/skills/publish-article && 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 "publish-article" agent skill from https://github.com/OpenClaudia/openclaudia-skills/tree/main/skills/publish-article into .claude/skills/publish-article/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "publish-article", 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/publish-articleType 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 publish-article -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install OpenClaudia/openclaudia-skills publish-article --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/publish-article .agents/skills/publish-article && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "publish-article" agent skill from https://github.com/OpenClaudia/openclaudia-skills/tree/main/skills/publish-article into .agents/skills/publish-article/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "publish-article", 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 publish-article -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install OpenClaudia/openclaudia-skills publish-article --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/publish-article .cursor/skills/publish-article && 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 "publish-article" agent skill from https://github.com/OpenClaudia/openclaudia-skills/tree/main/skills/publish-article into .cursor/skills/publish-article/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "publish-article", 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/publish-article--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 publish-article -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install OpenClaudia/openclaudia-skills publish-article --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/publish-article .gemini/skills/publish-article && 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 "publish-article" agent skill from https://github.com/OpenClaudia/openclaudia-skills/tree/main/skills/publish-article into .gemini/skills/publish-article/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "publish-article", 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 publish-articleInstalls 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 publish-article -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/publish-article .github/skills/publish-article && 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 "publish-article" agent skill from https://github.com/OpenClaudia/openclaudia-skills/tree/main/skills/publish-article into .github/skills/publish-article/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "publish-article", 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 publish-article -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 publish-article --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/publish-article .opencode/skills/publish-article && 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 "publish-article" agent skill from https://github.com/OpenClaudia/openclaudia-skills/tree/main/skills/publish-article into .opencode/skills/publish-article/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "publish-article", 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.
publish-articlePublish an article to a site you own — with a searched-for title, a real author, a licensed cover image, linked sources, and (optionally) one planned backlink.
Publish Article is an agent skill from OpenClaudia/openclaudia-skills. Publish an article to a site you own — with a searched-for title, a real author, a licensed cover image, linked sources, and (optionally) one planned backlink. Use when the user says "publish an article", "put this on our blog", "publish this draft", "add a backlink", or hands over finished copy to ship. Covers the pre-publish gates that decide whether a published page earns anything.
Its SKILL.md is about 4.5k 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 Marketing & SEO, covering Link building and Social media graphics. 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.
5 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 these tools, so the agent can use them without asking each time:
BashReadWriteEditWebFetchWebSearchFrom allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
curlFrom 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:
twitter.complatform.twitter.comFrom URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Publish Article loads about 4.5k tokens when it runs. Until then it costs about 101 tokens; SKILL.md has 2,671 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 noted patterns worth knowing about, such as sudo or a known installer.
allowed-tools: Bash, Read, Write, Edit, WebFetch, WebSearchAutomated 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). 2,671 words, ~4,515 tokens.
.claude/skills/publish-article/SKILL.md (or your agent's skills folder).Writing the article is the easy half. This skill covers the half that decides whether the published page earns traffic, citations, or link value: what it is titled for, who it is attributed to, what image it carries, what it links out to, and whether the thing you intended actually rendered.
Every rule below has a check you can run before publishing. A rule without a check gets skipped, so run the checks.
This is the decision that most determines whether the page is worth publishing, and it is the one usually made by instinct while drafting. Print this table before the first word:
| Candidate head phrase | Monthly volume | Difficulty | In the target topic's family? |
|---|
Volume is measured, never assumed. A phrase invented from the article's own finding ("the 1.3% narration gap", "the delivery problem") has zero volume by construction — nobody searches a coinage they have never read. Clever titles are the default failure mode here, not an occasional slip.
The winning phrase must belong to the topic family you are actually competing in. This is the
subtler failure and it survives the volume check cleanly. Linking to a slide-deck product,
ai training video generator (250/mo) beats ai training slides (0/mo) on volume and is still
the wrong answer: it ranks the article for a video need while the target sells slides, weakening
the topical signal at exactly the moment the choice looks optimised. Take the best-supported
phrase from the right family over a bigger number in a neighbouring one.
Keyword tools badly understate AI and long-tail volume — do not read a 0 as "no demand". A tool can report 0 for a phrase your own Search Console shows taking clicks at position 1. Where search-console data and a keyword tool disagree, the console wins; the tool is only there to rank candidates against each other.
Fixing this after publishing is cheap on any CMS that keeps a redirect from the old slug — do it rather than living with it. The window closes once the URL is indexed or cited.
A backlink's value is carried by its anchor text and by whether the surrounding article is about the same thing as the target page. Both are decided up front and stated, never improvised while drafting:
| Site | Article angle | Anchor | Anchor type |
|---|
Read the anchors already pointing at that target page first. New anchors are chosen against the existing distribution, not in isolation.
here, this tool, the bare brand name) passes almost nothing for the keyword being fought
for. Spend one only after the keyword-bearing anchors are in place.AI training presentation maker reads like a
keyword and is one nobody types; AI training presentation is the phrase with real demand.A press release, company blog post, or wire story is a lead, not an article. Add something a reader cannot get by opening the source:
Before publishing, print: sources used, the original finding, table row count, chart type, word count. If the draft is mainly a rephrased announcement, research further instead of publishing.
When the user provides an article, draft, title, or passage and asks to publish it, that text is approved copy, not a brief. Never rewrite it without explicit permission.
<title>. No multi-clause headline with an em-dash
subtitle; trim to the single core hook.Demis Hassabis steps down, Jeff Dean leaves Google
outranks Who runs Google AI now? because both names and the company are literal query terms.The Information Drew Dario Amodei as a Prophet has two proper nouns and misses the query, which is Anthropic IPO. Who reported it
belongs in the byline, never the title.statue,
cast, review, price, or specs costs you the highest-volume word available. Cut the
kicker, keep the noun.# heading or
repeat the title (demote body headings to H2+).A real author is attributed — never the CMS default, "Staff", or a null fallback. The author record has a name and a bio, avatar preferred. Create one if needed rather than shipping the fallback. Never fabricate credentials or expertise.
Public domain or CC0 — never CC BY, CC BY-SA, or anything else carrying someone's terms,
even though attribution would technically satisfy them. Use the Commons API
(list=search&srnamespace=6, then prop=imageinfo&iiprop=extmetadata, filter on
LicenseShortName) and send a real User-Agent or it 403s. Credit a public-domain cover in an
italic line at the foot of the article.curl -I returns 200, absolute https://, not a placeholder.distinct(images) == count(articles). Omitting the
field and letting the platform generate one beats shipping a duplicate.grep -c '](http' <body> is ≥ 2. On one audit of ten freshly
published articles, six cited their sources in prose and linked none of them — the crawler
correctly reported zero external links.len(body.split()), never len(body). A character count does not enforce a word
threshold.When the story's source or imagery is an X post, embed the post instead of copying its image: the image is served under the author's platform licence, credit is built in, and there is no copyright exposure.
All four must be true before embedding:
<blockquote class="twitter-tweet" data-dnt="true"><p lang="en" dir="ltr">FULL TWEET TEXT
HERE</p>— Author Name (@handle) <a
href="https://twitter.com/handle/status/TWEET_ID">Month D, YYYY</a></blockquote>
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>data-theme="dark" on dark-background sites. The default embed renders as a white card
that glares on a dark page.Read the replies too, and use their theories as commentary. Mine the replies for interpretations — theories about what the post means, skeptical counter-reads, domain experts adding context — not engagement counts. Work two or three into a reaction section, attribute the read to the repliers, quote a short phrase where it is vivid, and weigh the theory against the post's own claims. Joke replies are usable once as colour, never as the analysis. If the replies contain only jokes, say so in one line — that emptiness is itself a finding.
Earned citations are the only backlinks that compound. Derived from a full-network backlink audit across a dozen publications: every organic link earned went to a page that was the most convenient place to source one specific checkable claim. Homepages and roundups earned nothing.
what-does-yann-lecuns-world-model-mean-explained — and the name in it does half the work. A
question with no proper noun is not a query anyone types./posts/ → /articles/ migration stranded five DR 49 dofollow citations on 404s until a
redirect was added. Changing a slug means shipping the redirect in the same change.Read the destination's own API docs or repo conventions rather than assuming. Two failure modes are near-universal and worth checking explicitly:
For a code-based destination, read the repo's instructions, make the smallest edit matching the existing pattern, and ship through that repo's own workflow. Do not add a content system for one page.
rel, never the markdown. Many CMSs and site templates add
rel="nofollow" to external links by default; a placement that ships nofollow passes no
ranking value, which was the entire deliverable, and nothing in the publish flow warns you.
Source citations stay nofollow — only the intended target gets the exception.rel check straight after an edit reads the
old content and looks like the change failed. Trigger revalidation or wait out the window, then
re-check.Only call it done when the title, author, and image bar passes on the rendered page.
None mandatory. Optional, depending on what the destination and the gates need:
| Purpose | Typical source |
|---|---|
| Keyword volume and difficulty (Gate 1) | Ahrefs, Semrush, or DataForSEO — see ahrefs-research, semrush-research |
| Real query data for the target page | Google Search Console — see search-console |
| Cover image generation | any image model — see ai-image-gen |
| Public-domain imagery | Wikimedia Commons API, no key required |
| Publishing | your own CMS or repo credentials |
© 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/publish-article of OpenClaudia/openclaudia-skills.
Open the folder on GitHubat commit 28bf209
Publish Article 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 |
|---|---|---|---|---|---|---|
| Publish Article this skillOpenClaudia/openclaudia-skills | 713 | — | ~4.5k | Automated safety check: Notes | MIT | |
| FLOW SEO FrameworkAgriciDaniel/claude-seo | 19k | 2 repos | ~1.4k | Automated safety check: Pass | MIT | |
| SEO DataforseoAgriciDaniel/codex-seo | 797 | 2 repos | ~4.6k | Automated safety check: Pass | MIT | |
| Backlink CheckRyze-AI-Adgent/open-seo-mcp-skills | 4.6k | — | ~515 | Automated safety check: Pass | MIT | |
| Beyondseobeyondtahir/beyondseo | 161 | — | ~4.3k | Automated safety check: Pass | MIT | |
| Webobsidianxnohat/webobsidian | 268 | — | ~2.1k | Automated safety check: Pass | MIT |
AgriciDaniel/claude-seo
Brings the FLOW framework's stage-specific SEO prompts into the agent, from keyword discovery through backlinks, on-page work and conversion to local SEO, loaded on demand.
AgriciDaniel/codex-seo
Live SEO data via DataForSEO MCP server. An agent skill from AgriciDaniel/codex-seo.
Ryze-AI-Adgent/open-seo-mcp-skills
Backlink profile for any domain — referring domains, authority, anchors, new/lost links, and a side-by-side vs a competitor.
beyondtahir/beyondseo
Audit websites, apply authorised SEO improvements and plan content, competitors and backlinks with evidence, design checks and optional project monitoring.
xnohat/webobsidian
Read, write, search, and manage notes in a WebObsidian vault through its Agent REST API (/api/v1).
alisamadiii/Portfolio
Full SEO/metadata setup and audit for client websites (Astro, Next.js, any static site).
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
Publish an article to a site you own — with a searched-for title, a real author, a licensed cover image, linked sources, and (optionally) one planned backlink. Publish Article is an agent skill from OpenClaudia/openclaudia-skills. Publish an article to a site you own — with a searched-for title, a real author, a licensed cover image, linked sources, and (optionally) one planned backlink.
Publish Article fits situations like: the user says publish an article; put this on our blog; publish this draft; hands over finished copy to ship.
Run `npx skills add OpenClaudia/openclaudia-skills --skill publish-article -a claude-code`. Or copy the skill folder (skills/publish-article in OpenClaudia/openclaudia-skills) into .claude/skills/publish-article in your project. Claude Code loads it when a task matches its description.
Run `npx skills add OpenClaudia/openclaudia-skills --skill publish-article -a codex`. Or copy the skill folder (skills/publish-article in OpenClaudia/openclaudia-skills) into .agents/skills/publish-article 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 publish-article -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/publish-article, .gemini/skills/publish-article, .github/skills/publish-article and .opencode/skills/publish-article in your project.
Going by SKILL.md and its folder, Publish Article needs the command-line tools its instructions call (curl). Its frontmatter pre-approves these tools: Bash, Read, Write, Edit, WebFetch, WebSearch.
SKILL.md names 2 domains. In commands or code: twitter.com and platform.twitter.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 notes only (pre-approves every shell command (allowed-tools: bash)), nothing it rates as a warning. It is not a guarantee. Review the folder before installing.
Publish Article is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 4.5k tokens (SKILL.md is roughly 18k 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 Publish Article: FLOW SEO Framework (AgriciDaniel/claude-seo, 19k stars), SEO Dataforseo (AgriciDaniel/codex-seo, 797 stars), Backlink Check (Ryze-AI-Adgent/open-seo-mcp-skills, 4.6k stars) and Beyondseo (beyondtahir/beyondseo, 161 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.