NotFair Plugin is a collection of open-source SEO, generative-engine-optimization, and marketing workflows that AI agents can follow. It helps agents audit websites, analyze search and advertising data, plan campaigns, and make reviewable marketing changes; the catalogue entries are its skills, instructions, MCP connection, and plugin.
Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx agentmods add skills/nowork-studio/notfair-plugin/content-plannernpx skills add nowork-studio/notfair-plugin --skill content-plannergit clone --depth 1 https://github.com/nowork-studio/notfair-pluginWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/nowork-studio/notfair-plugin/content-planner)<a href="https://agentmods.dev/skills/nowork-studio/notfair-plugin/content-planner"><img src="https://agentmods.dev/badge/skills/nowork-studio/notfair-plugin/content-planner.svg" alt="Measured on agentmods" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5 | $0.00123 | $0.02423 |
| Opus 5 | $0.00062 | $0.01211 |
| Sonnet 5 | $0.00025 | $0.00485 |
| Haiku 4.5 | $0.00012 | $0.00242 |
Grade A, and why
content-planner scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 5d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 243 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Content Planner
You are NotFair's content strategist for the unfair SEO/Ads agent. Your job is
not to brainstorm topic ideas — that's keyword-research. Your job is to
mine the user's actual Search Console data, find the highest-click-potential
opportunities for this site, and produce a dated calendar the user can publish
against.
The output is a structured content-calendar.json plus a Markdown summary. The
JSON is consumed by the notfair-content-calendar viewer (a local server that
renders the calendar in the browser).
Boundary with sibling skills:
keyword-research— start from a seed, discover the keyword universecontent-planner(this skill) — start from GSC, prioritize your opportunities, schedule themcontent-writer— take one planned topic and write the full post
Step 1 — Setup (config + GSC)
Read and follow ../seo-analysis/SKILL.md Step 1 for GSC connection. The
planner cannot run without GSC — if no GSC property is connected, stop and
walk the user through OAuth. Don't invent data.
Resolve {data_dir} the same way the Google Ads preamble does (.notfair/ in
the repo if .notfair.json exists, else ~/.notfair/). The calendar lives at
{data_dir}/content-calendar.json.
Step 2 — Pull GSC opportunity data
Pull a wide net once, filter in memory. Fewer round-trips, better correlation.
For the chosen GSC property, fetch last 90 days of:
- Query × Page report — top 5000 rows. The Cartesian view is the only one that lets you reason about intent (page is the answer surface, query is the demand).
- Page-only report — top 1000 rows. Lets you spot pages that already attract a lot of impressions but underperform CTR.
- Country + device breakdowns for the top 100 pages — needed for prioritization when traffic concentrates in one segment.
Cache the raw pull at {data_dir}/gsc-cache.json with a fetchedAt timestamp.
Re-use the cache for 7 days — opportunities don't shift hourly.
What ships with it
2 files beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 5d ago First seen · 243 lines · 123 tokens per session scan A 3d76afd3e63f
content-planner is a skill published in the GitHub repository nowork-studio/notfair-plugin (3,447 stars, last pushed 6d ago), licensed MIT. It adds 123 tokens to every session and 2,423 once invoked, about $0.0006 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.
Other skills, from other repositories
domscribe
Work with Domscribe — the pixel-to-code bridge. Use when setting up, initializing, or configuring Domscribe for a project, OR when editing or modifying UI components (React, Vue, Next.js, Nuxt), implementing features from captured UI annotations, querying runtime context for source locations, exploring component…
forge-connector
Guides building and deploying Atlassian Forge Teamwork Graph connector apps that ingest external data into Atlassian's Teamwork Graph, making it searchable in Rovo Search and surfaced in Rovo Chat. Use when the user wants to build a Forge connector, ingest external data into Atlassian, connect a third-party tool (e.g.…
forge-cost-optimizer
Optimizes Atlassian Forge apps to reduce platform consumption and avoid unnecessary costs using Atlassian's "Optimise Forge platform costs" guidance. Use when the user asks to optimize Forge app costs, reduce Forge invocations, lower GB-seconds, reduce storage or log usage, tune memory, replace polling, improve…
forge-app-review
Performs a lightweight pre-release readiness review of Atlassian Forge apps across manifest/module wiring, architecture, runtime compatibility, dependency posture, tests, deploy readiness, and obvious security, cost, or reliability smells. Use when the user asks "review my Forge app", "pre-deploy check", "is this app…
logic-review
Find logic bugs in a single file or function via semi-formal execution tracing (Premises → Trace → Divergence → Trigger → Remedy). Trigger when a user shares code and suspects something is wrong without naming a concrete failure — phrases like "review this", "does this look right", "check this function", "audit this…
run-iteration-eval
Run the Logic-Lens content-eval pipeline for one iteration and produce a scored summary.json — use to measure a skill change. Wraps scripts/run-content-evals.sh (runner, costs tokens) and scripts/grade-iteration.py (grader, free, re-runnable). ALWAYS sync the plugin cache first. Use when the user wants to "run the…