New: Earn 20% as an AgentAlley affiliate. Share your link and earn on every sale you refer. Join now New: Earn 20% as an affiliate. Join now

Establish durable brand and voice context for cross-skill

Blog Brand: Durable Editorial Context

by AgriciDaniel · MIT license · ★ 2,219 on GitHub · updated Sep 18

Blog Brand: Durable Editorial Context cover

Establish durable brand and voice context for cross-skill consumption. Generates BRAND.md (audience, positioning, do/don't editorial rules, taboo phrases, competitor differentiation) and VOICE.md (existing persona JSON re-expressed as…

---
name: blog-brand
description: >
  Establish durable brand and voice context for cross-skill consumption.
  Generates BRAND.md (audience, positioning, do/don't editorial rules, taboo
  phrases, competitor differentiation) and VOICE.md (existing persona JSON
  re-expressed as readable prose), both written to the project root. When
  present, the blog orchestrator auto-loads these files for write, rewrite,
  brief, outline, calendar, and strategy workflows. Pairs with blog-persona, which manages the structured persona
  JSON. Use when user says "blog brand", "create brand context", "brand
  voice doc", "BRAND.md", "VOICE.md", "establish editorial brand",
  "brand guidelines for blog".
user-invokable: true
argument-hint: "[init|show|update]"
license: MIT
---

# Blog Brand: Durable Editorial Context

Overview

Generates two project-root files that the blog orchestrator auto-loads for supported writing and planning commands when present:

Manual install (npx, ZIP)
Claude Codenpx skills add AgriciDaniel/claude-blog --skill blog-brand -g -a claude-code
Claude Code (manual)mkdir -p ~/.claude/skills && curl -sL https://codeload.github.com/AgriciDaniel/claude-blog/tar.gz/2500d4c76503 \ | tar -xz -C ~/.claude/skills --strip-components=2 claude-blog-2500d4c76503/skills/blog-brand
Windows (PowerShell)New-Item -ItemType Directory -Force "$HOME\.claude\skills" | Out-Null; Invoke-WebRequest "https://m.agentalley.io/zip/9439e7793b1d52ff9921/blog-brand.zip" -OutFile "$env:TEMP\blog-brand.zip"; Expand-Archive "$env:TEMP\blog-brand.zip" -DestinationPath "$HOME\.claude\skills" -Force
Claude.ai / desktopDownload the ZIP and upload it under Settings → Capabilities → Skills.
Codex, Cursor, other agentsPoint them at SKILL.md. The other files are plain text.

Connects with Agent Alley MCP · agentalley.io/mcp

Files included

  • SKILL.md9.0 KB
Read the files here
AgriciDaniel/2500d4c1 file
Shared references1SKILL.md reads these from elsewhere in the repo. Not in the ZIP.Get them on GitHub ↗
SKILL.md
Show the full text241 lines

Blog Brand: Durable Editorial Context

Generates two project-root files that the blog orchestrator auto-loads for supported writing and planning commands when present:

  • BRAND.md: who the audience is, what the brand stands for, what to never say
  • VOICE.md: how the brand sounds, structurally and lexically

These are the editorial equivalent of impeccable's PRODUCT.md / DESIGN.md pattern: persistent context that survives across sessions and propagates to every command.

Why this exists

Today, persona JSON (from blog-persona) is loaded by some skills and not others. Topic-cluster context lives inside cluster vaults. Competitor positioning lives nowhere. Each blog command re-derives "what is the brand" from whatever context it has.

BRAND.md and VOICE.md fix this: one canonical source, loaded by the blog orchestrator at the start of every command.

When neither file exists, behavior is unchanged from v1.7.1. Backward compatible.

Commands

Command Purpose
/blog brand init Interactive interview, writes BRAND.md and VOICE.md to project root
/blog brand show Display current contents (or report missing)
/blog brand update Re-run the interview with current values as defaults

Init Workflow

Run the 5-step interactive interview. Ask each step, wait for response, then proceed. If blog-persona JSON already exists, pre-fill voice answers from it.

Step 1: Audience

Ask:

  • Primary audience role (e.g. "head of marketing at a 50-500 person B2B SaaS")
  • Secondary audience (optional)
  • Reader expertise level: beginner / intermediate / advanced / mixed
  • Problems the reader is actively trying to solve (3 to 5 bullets)
  • Common misconceptions the audience holds (used to anchor information gain)
Step 2: Positioning and Canonical Entity

Ask:

  • Official entity name (legal or public brand name)
  • Homepage URL (canonical brand front door)
  • Logo URL or file path (preferred square or SVG asset)
  • sameAs profiles (LinkedIn, X, YouTube, Crunchbase, GitHub, or other official profiles)
  • Wikidata Q-ID if one exists; leave blank if not notable
  • One-sentence brand mission (what the brand helps people do)
  • Distinctive point of view (the contrarian or non-obvious belief that shapes content)
  • What this brand is NOT (anti-positioning, what to never be confused with)
  • Top 3 direct competitors with the one-line differentiator vs each
Step 3: Editorial rules

Ask:

  • Do list (3 to 7 things the blog will always do; e.g. "cite primary sources only," "name the practitioner not the product")
  • Don't list (3 to 7 things the blog will never do; e.g. "no clickbait titles," "no listicle filler")
  • Taboo phrases (specific words or phrases this brand never uses; separate from the repository's optional project style list)
  • Required disclosures (e.g. affiliate disclosure, AI-content disclosure, conflict-of-interest patterns)
Step 4: Topic boundaries

Ask:

  • Topics fully in scope (core content pillars)
  • Topics partially in scope (adjacent; covered only with original angle)
  • Topics out of scope (will not cover; redirect to partner content)
  • Recurring formats / column names if any (e.g. "Monthly Field Notes," "Reader Q&A")
Step 5: Voice (auto-fill from blog-persona if present)

Ask:

  • Pronoun stance: first-person (we / I), second-person (you), third-person (the team), or mixed
  • Acceptable contractions: full / partial / none
  • Sentence ceiling: max words per sentence as a hard cap
  • Paragraph ceiling: max words per paragraph (default 150)
  • Headline patterns to favor: numbered / question / promise / statement
  • Headline patterns to avoid: any patterns banned for this brand
  • Summary box label: from blog-persona, or pick one

Output Files

BRAND.md template

Write to project root as:

# Brand Context

> This file is auto-loaded by all blog sub-skills. Last updated: YYYY-MM-DD.

## Audience

- **Primary**: [role + context]
- **Secondary**: [if any]
- **Expertise**: [level]
- **Active problems**:
  - [problem 1]
  - [problem 2]
  - [problem 3]
- **Common misconceptions**:
  - [misconception 1]
  - [misconception 2]

## Positioning

- **Official entity name**: [brand/entity]
- **Homepage**: [canonical URL]
- **Logo**: [URL or file path]
- **sameAs profiles**:
  - [profile URL 1]
  - [profile URL 2]
- **Wikidata Q-ID**: [QID or none]
- **Mission**: [one sentence]
- **Distinctive POV**: [contrarian or non-obvious belief]
- **What we are NOT**: [anti-positioning]
- **Competitors**:
  - [Competitor A]: [our one-line differentiator]
  - [Competitor B]: [our one-line differentiator]
  - [Competitor C]: [our one-line differentiator]

## Editorial Rules

### Always do
- [rule 1]
- [rule 2]
- [rule 3]

### Never do
- [rule 1]
- [rule 2]
- [rule 3]

### Taboo phrases
- [phrase 1]
- [phrase 2]

### Required disclosures
- [disclosure rule]

## Topic Scope

- **In scope**: [pillars]
- **Partial scope**: [adjacent topics]
- **Out of scope**: [topics to refuse]
- **Recurring formats**: [if any]
VOICE.md template

Write to project root as:

# Voice Context

> This file is auto-loaded by all blog sub-skills. Last updated: YYYY-MM-DD.

## Pronoun stance
[first-person / second-person / third-person / mixed]

## Lexical rules
- **Contractions**: [full / partial / none]
- **Sentence ceiling**: [N words max]
- **Paragraph ceiling**: [N words max, default 150]
- **Summary label**: [Key Takeaways / TL;DR / etc.]

## Headline patterns
- **Favor**: [list]
- **Avoid**: [list]

## Voice fingerprint (from blog-persona)
- Funny vs serious: [0.0 to 1.0]
- Formal vs casual: [0.0 to 1.0]
- Respectful vs irreverent: [0.0 to 1.0]
- Enthusiastic vs matter-of-fact: [0.0 to 1.0]

## Readability target
- Audience tier: [consumer / professional / technical]
- Flesch Grade: [range]
- Flesch Ease: [range]

## Reference samples
- [URL 1] (extracted patterns: [summary])
- [URL 2] (extracted patterns: [summary])

Show Workflow

  1. Check for BRAND.md and VOICE.md at project root.
  2. If both exist, print a summary table (key sections only) and the file paths.
  3. If one or both are missing, print which are missing and suggest /blog brand init.

Update Workflow

Same as Init, but pre-fills every answer with the current value. The user can press enter to accept or type a new value. After collecting all answers, overwrite both files with the new contents and update the Last updated: line.

Integration with the blog orchestrator

When /blog write, /blog rewrite, /blog brief, /blog outline, /blog calendar, or /blog strategy runs, the orchestrator (skills/blog/SKILL.md) checks for BRAND.md and VOICE.md at the project root. If present, the contents are injected into the system prompt for downstream agents (blog-researcher, blog-writer, blog-seo, blog-reviewer).

If absent, behavior is unchanged. The orchestrator does not prompt the user to create them; they are opt-in context.

Relationship to blog-persona

Concern blog-persona blog-brand
Structured persona JSON for programmatic use Yes No
Readable brand context for cross-skill prompts No Yes
Audience and positioning No Yes
Taboo phrases and editorial don'ts Partial (don't list) Full (taboo + disclosures + scope)
Competitor differentiation No Yes
Topic boundaries No Yes
Voice fingerprint (tone sliders) Yes (canonical) Mirror (read-only)

blog-brand does not replace blog-persona; it consumes it. The persona JSON remains the source of truth for tone dimensions, sentence-length distribution, and contraction frequency. VOICE.md mirrors the readable parts so prompts are self-contained.

If no persona exists when /blog brand init runs, the voice questions still produce a VOICE.md. Users who want programmatic enforcement can run /blog persona create after.

Error Handling

  • Project root unclear: ask the user where to write the files. Default is the current working directory.
  • Files already exist on init: ask whether to overwrite or run update instead.
  • Persona referenced but missing: ask whether to leave the persona reference blank or create one.
  • Reader provides minimal answers: prompt for at least 2 audience bullets and 3 editorial rules; refuse to write skeletons.
1---
2name: blog-brand
3description: >
4 Establish durable brand and voice context for cross-skill consumption.
5 Generates BRAND.md (audience, positioning, do/don't editorial rules, taboo
6 phrases, competitor differentiation) and VOICE.md (existing persona JSON
7 re-expressed as readable prose), both written to the project root. When
8 present, the blog orchestrator auto-loads these files for write, rewrite,
9 brief, outline, calendar, and strategy workflows. Pairs with blog-persona, which manages the structured persona
10 JSON. Use when user says "blog brand", "create brand context", "brand
11 voice doc", "BRAND.md", "VOICE.md", "establish editorial brand",
12 "brand guidelines for blog".
13user-invokable: true
14argument-hint: "[init|show|update]"
15license: MIT
16---
17 
18# Blog Brand: Durable Editorial Context
19 
20Generates two project-root files that the blog orchestrator auto-loads for supported writing and planning commands when present:
21 
22- `BRAND.md`: who the audience is, what the brand stands for, what to never say
23- `VOICE.md`: how the brand sounds, structurally and lexically
24 
25These are the editorial equivalent of impeccable's PRODUCT.md / DESIGN.md pattern: persistent context that survives across sessions and propagates to every command.
26 
27## Why this exists
28 
29Today, persona JSON (from `blog-persona`) is loaded by some skills and not others. Topic-cluster context lives inside cluster vaults. Competitor positioning lives nowhere. Each blog command re-derives "what is the brand" from whatever context it has.
30 
31`BRAND.md` and `VOICE.md` fix this: one canonical source, loaded by the `blog` orchestrator at the start of every command.
32 
33When neither file exists, behavior is unchanged from v1.7.1. Backward compatible.
34 
35## Commands
36 
37| Command | Purpose |
38|---|---|
39| `/blog brand init` | Interactive interview, writes BRAND.md and VOICE.md to project root |
40| `/blog brand show` | Display current contents (or report missing) |
41| `/blog brand update` | Re-run the interview with current values as defaults |
42 
43## Init Workflow
44 
45Run the 5-step interactive interview. Ask each step, wait for response, then proceed. If `blog-persona` JSON already exists, pre-fill voice answers from it.
46 
47### Step 1: Audience
48 
49Ask:
50- **Primary audience role** (e.g. "head of marketing at a 50-500 person B2B SaaS")
51- **Secondary audience** (optional)
52- **Reader expertise level**: beginner / intermediate / advanced / mixed
53- **Problems the reader is actively trying to solve** (3 to 5 bullets)
54- **Common misconceptions the audience holds** (used to anchor information gain)
55 
56### Step 2: Positioning and Canonical Entity
57 
58Ask:
59- **Official entity name** (legal or public brand name)
60- **Homepage URL** (canonical brand front door)
61- **Logo URL or file path** (preferred square or SVG asset)
62- **sameAs profiles** (LinkedIn, X, YouTube, Crunchbase, GitHub, or other official profiles)
63- **Wikidata Q-ID** if one exists; leave blank if not notable
64- **One-sentence brand mission** (what the brand helps people do)
65- **Distinctive point of view** (the contrarian or non-obvious belief that shapes content)
66- **What this brand is NOT** (anti-positioning, what to never be confused with)
67- **Top 3 direct competitors** with the one-line differentiator vs each
68 
69### Step 3: Editorial rules
70 
71Ask:
72- **Do list** (3 to 7 things the blog will always do; e.g. "cite primary sources only," "name the practitioner not the product")
73- **Don't list** (3 to 7 things the blog will never do; e.g. "no clickbait titles," "no listicle filler")
74- **Taboo phrases** (specific words or phrases this brand never uses; separate
75 from the repository's optional project style list)
76- **Required disclosures** (e.g. affiliate disclosure, AI-content disclosure, conflict-of-interest patterns)
77 
78### Step 4: Topic boundaries
79 
80Ask:
81- **Topics fully in scope** (core content pillars)
82- **Topics partially in scope** (adjacent; covered only with original angle)
83- **Topics out of scope** (will not cover; redirect to partner content)
84- **Recurring formats / column names** if any (e.g. "Monthly Field Notes," "Reader Q&A")
85 
86### Step 5: Voice (auto-fill from blog-persona if present)
87 
88Ask:
89- **Pronoun stance**: first-person (we / I), second-person (you), third-person (the team), or mixed
90- **Acceptable contractions**: full / partial / none
91- **Sentence ceiling**: max words per sentence as a hard cap
92- **Paragraph ceiling**: max words per paragraph (default 150)
93- **Headline patterns to favor**: numbered / question / promise / statement
94- **Headline patterns to avoid**: any patterns banned for this brand
95- **Summary box label**: from blog-persona, or pick one
96 
97## Output Files
98 
99### BRAND.md template
100 
101Write to project root as:
102 
103```markdown
104# Brand Context
105 
106> This file is auto-loaded by all blog sub-skills. Last updated: YYYY-MM-DD.
107 
108## Audience
109 
110- **Primary**: [role + context]
111- **Secondary**: [if any]
112- **Expertise**: [level]
113- **Active problems**:
114 - [problem 1]
115 - [problem 2]
116 - [problem 3]
117- **Common misconceptions**:
118 - [misconception 1]
119 - [misconception 2]
120 
121## Positioning
122 
123- **Official entity name**: [brand/entity]
124- **Homepage**: [canonical URL]
125- **Logo**: [URL or file path]
126- **sameAs profiles**:
127 - [profile URL 1]
128 - [profile URL 2]
129- **Wikidata Q-ID**: [QID or none]
130- **Mission**: [one sentence]
131- **Distinctive POV**: [contrarian or non-obvious belief]
132- **What we are NOT**: [anti-positioning]
133- **Competitors**:
134 - [Competitor A]: [our one-line differentiator]
135 - [Competitor B]: [our one-line differentiator]
136 - [Competitor C]: [our one-line differentiator]
137 
138## Editorial Rules
139 
140### Always do
141- [rule 1]
142- [rule 2]
143- [rule 3]
144 
145### Never do
146- [rule 1]
147- [rule 2]
148- [rule 3]
149 
150### Taboo phrases
151- [phrase 1]
152- [phrase 2]
153 
154### Required disclosures
155- [disclosure rule]
156 
157## Topic Scope
158 
159- **In scope**: [pillars]
160- **Partial scope**: [adjacent topics]
161- **Out of scope**: [topics to refuse]
162- **Recurring formats**: [if any]
163```
164 
165### VOICE.md template
166 
167Write to project root as:
168 
169```markdown
170# Voice Context
171 
172> This file is auto-loaded by all blog sub-skills. Last updated: YYYY-MM-DD.
173 
174## Pronoun stance
175[first-person / second-person / third-person / mixed]
176 
177## Lexical rules
178- **Contractions**: [full / partial / none]
179- **Sentence ceiling**: [N words max]
180- **Paragraph ceiling**: [N words max, default 150]
181- **Summary label**: [Key Takeaways / TL;DR / etc.]
182 
183## Headline patterns
184- **Favor**: [list]
185- **Avoid**: [list]
186 
187## Voice fingerprint (from blog-persona)
188- Funny vs serious: [0.0 to 1.0]
189- Formal vs casual: [0.0 to 1.0]
190- Respectful vs irreverent: [0.0 to 1.0]
191- Enthusiastic vs matter-of-fact: [0.0 to 1.0]
192 
193## Readability target
194- Audience tier: [consumer / professional / technical]
195- Flesch Grade: [range]
196- Flesch Ease: [range]
197 
198## Reference samples
199- [URL 1] (extracted patterns: [summary])
200- [URL 2] (extracted patterns: [summary])
201```
202 
203## Show Workflow
204 
2051. Check for `BRAND.md` and `VOICE.md` at project root.
2062. If both exist, print a summary table (key sections only) and the file paths.
2073. If one or both are missing, print which are missing and suggest `/blog brand init`.
208 
209## Update Workflow
210 
211Same as Init, but pre-fills every answer with the current value. The user can press enter to accept or type a new value. After collecting all answers, overwrite both files with the new contents and update the `Last updated:` line.
212 
213## Integration with the blog orchestrator
214 
215When `/blog write`, `/blog rewrite`, `/blog brief`, `/blog outline`, `/blog calendar`, or `/blog strategy` runs, the orchestrator (`skills/blog/SKILL.md`) checks for `BRAND.md` and `VOICE.md` at the project root. If present, the contents are injected into the system prompt for downstream agents (`blog-researcher`, `blog-writer`, `blog-seo`, `blog-reviewer`).
216 
217If absent, behavior is unchanged. The orchestrator does not prompt the user to create them; they are opt-in context.
218 
219## Relationship to blog-persona
220 
221| Concern | blog-persona | blog-brand |
222|---|---|---|
223| Structured persona JSON for programmatic use | Yes | No |
224| Readable brand context for cross-skill prompts | No | Yes |
225| Audience and positioning | No | Yes |
226| Taboo phrases and editorial don'ts | Partial (don't list) | Full (taboo + disclosures + scope) |
227| Competitor differentiation | No | Yes |
228| Topic boundaries | No | Yes |
229| Voice fingerprint (tone sliders) | Yes (canonical) | Mirror (read-only) |
230 
231`blog-brand` does not replace `blog-persona`; it consumes it. The persona JSON remains the source of truth for tone dimensions, sentence-length distribution, and contraction frequency. `VOICE.md` mirrors the readable parts so prompts are self-contained.
232 
233If no persona exists when `/blog brand init` runs, the voice questions still produce a `VOICE.md`. Users who want programmatic enforcement can run `/blog persona create` after.
234 
235## Error Handling
236 
237- **Project root unclear**: ask the user where to write the files. Default is the current working directory.
238- **Files already exist on init**: ask whether to overwrite or run update instead.
239- **Persona referenced but missing**: ask whether to leave the persona reference blank or create one.
240- **Reader provides minimal answers**: prompt for at least 2 audience bullets and 3 editorial rules; refuse to write skeletons.
241 
View all files on GitHub →

Details

Updated
Sep 18, 2026
License
MIT
Stars on the repo
★ 2,219
Checked
Source
AgriciDaniel/claude-blog ↗
Creator
AgriciDaniel · 130 listings
View creator

Made with blog-brand

Blog Brand: Durable Editorial Context — claude-blog /blog write demo: end-to-end article generation with the 5-gate Delivery Contract (from the AgriciDaniel/claude-blog README)
Blog Brand: Durable Editorial Context — claude-blog /blog write demo: end-to-end article generation with the 5-gate Delivery Contract (from the AgriciDaniel/claude-blog README)

by AgriciDaniel

Similar skills

See all →
SkillA monthly or weekly content calendar01 content calendar globalminhnv0807/ai-business-skills · by minhnv0807Use when the user needs a monthly or weekly content calendar — posting schedule per channel, funnel ratio, content pillars, repurposing matrix, and an owner per slot. Trigger on 'content calendar', 'posting schedule', 'what should we post this month', 'editorial calendar', 'social media plan', 'we post randomly with no plan'. Also use when the user only says the team keeps running out of things to post. Not for — the brief for one specific post, see `36-content-brief-global`; the caption text itself, see `37-social-caption-global`; deciding next period content from last period data, see `40-next-content-plan-global`; a paid campaign timeline, see `02-campaign-brief-global`.★ 599 GitHub starsSkillGenerate a weekly Facebook Page content plan from a themeFacebook Page Content Plannersergebulaev/facebook-skills · by sergebulaevGenerate a weekly Facebook Page content plan from a theme, audience, and content pillars. Produces per-day picks (short post vs story post, hook formula, angle, posting time, primary goal), a short-to-story post mix, a daily comment-reply target, and a share-optimized goal-mix balance check across shares, comments, and reactions. Use when the user wants to plan a week of Page content. Not for drafting one post (use fb-post-writer) or replying to comments (use fb-engagement-drafter).★ 49 GitHub starsPromptCreate a detailed plan to review guides, blog postsComprehensive content review planf/prompts.chat · by Erkam DemirciCreate a detailed plan to review guides, blog posts, and comparison pages for potential issues, verify them, and implement fixes.New listingPromptCreate a detailed studio beauty editorial close-up shotStudio Beauty Editorial (close-up, pro)f/prompts.chat · by DorukCreate a detailed studio beauty editorial close-up shot prompt. The prompt will include specific instructions on subject demographics, pose, setting, camera details, lighting, and mood to achieve a high-end beauty campaign feel. It will also define technical constraints and negative prompts to avoid unwanted elements.New listingMCPCreates comprehensive content outlines and topic clustersSEO content plannerwshobson/agents · by wshobsonCreates comprehensive content outlines and topic clusters for SEO. Plans content calendars and identifies topic gaps. Use PROACTIVELY for content strategy and planning.★ 39.9k GitHub starsMCPBuilds content engines that rank, convert, and compoundContent strategistalirezarezvani/claude-skills · by alirezarezvaniBuilds content engines that rank, convert, and compound. Thinks in systems — topic clusters, not individual posts. Every piece earns its place or gets killed. Use when content needs to behave like a system rather than a stream of posts — e.g., designing a topic-cluster plan to grow organic traffic from zero, or auditing an editorial calendar and killing pieces that don't convert after 90 days. (For single-asset, on-brand copy production, see cs-content-creator.)★ 26.3k GitHub stars

More from AgriciDaniel

SkillThe Lighthouse Agentic Browsing fractionAgentic Browsing ReadinessAgriciDaniel/claude-seo · by AgriciDanielAudit and fix agent readiness: the Lighthouse Agentic Browsing fraction, accessibility tree for agents, robots.txt and Content-Signal for AI agents, WAF treatment of agent traffic, llms.txt, Markdown delivery, ai-catalog.json, /.well-known discovery files, and WebMCP tools. Exclude AI citability and brand signals (seo-geo) and commerce protocol depth (seo-ecommerce).★ 17.4k GitHub starsSkillOptimize content for AI Overviews , ChatGPT web searchAI Search / GEO Optimization (May 2026)AgriciDaniel/claude-seo · by AgriciDanielOptimize content for AI Overviews (formerly SGE), ChatGPT web search, Perplexity, and other AI-powered search experiences. Generative Engine Optimization (GEO) analysis including brand mention signals, AI crawler accessibility, llms.txt compliance, passage-level citability scoring, and platform-specific optimization. Use when user says "AI Overviews", "SGE", GEO", "AI search", "LLM optimization", "Perplexity", "AI citations", ChatGPT search", or "AI visibility".★ 17.4k GitHub starsSkillReferring domains, anchor text distributionBacklink Profile AnalysisAgriciDaniel/claude-seo · by AgriciDanielBacklink profile analysis: referring domains, anchor text distribution, toxic link detection, competitor gap analysis. Works with free APIs (Moz, Bing Webmaster, Common Crawl) and DataForSEO extension. Use when user says backlinks, link profile, referring domains, anchor text, toxic links, link gap, link building, disavow, or backlink audit.★ 17.4k GitHub starsSkillYou share your Amazon advertising numbers and goals; you getAmazon Ads AuditAgriciDaniel/claude-ads · by AgriciDanielYou share your Amazon advertising numbers and goals; you get back a plain-language review of what's draining your budget and what to change first.★ 9.5k GitHub starsSkillPaste what you're spending on Apple Search AdsApple Ads AuditAgriciDaniel/claude-ads · by AgriciDanielPaste what you're spending on Apple Search Ads and your recent numbers; get back a plain review of what's wasting money and what to fix first.★ 9.5k GitHub starsSkillPaste the sales and spend numbers each ad platform claimsAttribution AuditAgriciDaniel/claude-ads · by AgriciDanielPaste the sales and spend numbers each ad platform claims, and get back a plain explanation of why they disagree and which figure to trust.★ 9.5k GitHub stars