Agent skill
marketing-geo-placement
Turn the domains answer engines actually cite into a ranked backlog of surfaces to get onto — listicles, directories, communities, review sites — each with an owner, a next action, and a status.
Filed under Content and SEO.
From b2bforce/b2bforce · 29 skills · 2 · pushed 2026-08-21
What it does when it runs
Turn the domains answer engines actually cite into a ranked backlog of surfaces to get onto — listicles, directories, communities, review sites — each with an owner, a next action, and a status. Use after intel-ai-visibility, or when asked how to get recommended by AI, mentioned in LLM answers, or onto third-party rankings.
Read from the skill and the 0 files bundled beside it. A skill’s own description is written to be selected by an agent, so it describes the job and not the dependencies.
- Keys and connectors you must supply
- None found.
- Hosts it reaches
- No third-party host appears in the skill or its bundled files.
- Tool permissions it declares
- No
allowed-toolsin the frontmatter. It only issues instructions, so there is nothing to bound. - Actions present in the files
- None. Instructions only.
Install it
View source on GitHub ↗git clone --depth 1 --filter=blob:none --sparse https://github.com/b2bforce/b2bforce.git /tmp/b2bforce git -C /tmp/b2bforce sparse-checkout set ".agents/skills/marketing-geo-placement" mkdir -p ~/.claude/skills/marketing-geo-placement cp -R "/tmp/b2bforce/.agents/skills/marketing-geo-placement/." ~/.claude/skills/marketing-geo-placement/
Picked up without a restart. A project skill of the same name is shadowed by your personal one. For one repository only, swap ~/.claude/skills for .claude/skills. Claude Code docs ↗
The folder is the same in every client that implements the format — 46 of them — so if yours is not above, only the destination changes.
The skill
Source on GitHub ↗Reproduced in full from b2bforce/b2bforce/blob/7682ed90c62190a0f3c09eb135596d08bd6890bc/.agents/skills/marketing-geo-placement/SKILL.md, which is licensed MIT (skill frontmatter). 1,063 words, 9 headings.
GEO Placement
Converts visibility findings into work. Without this, intel-ai-visibility is a
dashboard in Markdown, and the repo already has an opinion about dashboards that
nobody acts on.
The reason this is the higher-value half: for service-firm queries, third-party listicles and rankings collect a larger share of citations than the firms' own websites, and community sources like Reddit are frequently the single most-cited domain in a vertical. Meanwhile most cited domains appear in only one vertical — which means there is usually no entrenched incumbent on the surfaces that matter for a given niche. That is the opening, and it is the part on-site optimization cannot reach.
It also means the classic reflex — write more of our own content — is aimed at the minority of citations. The firm's own site matters, but it is not where most of the answer comes from.
Read First
Brand scope. In a multi-brand workspace placements are per brand — workspace/marketing/placements/{brand}/{domain}.md — because status and owner describe the brand×domain pair, and citation_count counts only that brand's runs. Never sum citations across brands. See the Brand Scope Gate in AGENTS.md.
workspace/intelligence/ai-visibility/runs/*/*.md— thecited_domainsfrom every run. This is the input; without runs there is nothing to rank.workspace/intelligence/ai-visibility/share-of-answer.md— which prompts the firm loses, and to whom.workspace/marketing/placements/— existing targets and their status.workspace/firm/profile.mdandworkspace/firm/services/*.md— what the firm can credibly claim on a third-party surface.
If no runs exist, stop and run intel-ai-visibility first. Do not assemble a placement
list from general knowledge of directories — the point is the domains the engines cite
for this firm's prompts, which is rarely the obvious list.
Ranking Targets
Count how often each domain is cited across runs, then weight by how reachable it is. A domain cited twice that accepts submissions beats a domain cited five times that does not take outside listings at all.
source_type | What the firm can actually do |
|---|---|
listicle | Pitch inclusion in a "best {category}" roundup. Highest leverage, usually reachable. |
directory | Complete and verify a profile. Slow, mechanical, and often effective — verified profiles attract materially more citations than bare ones. |
community | Participate honestly where the firm has standing. Never astroturf. |
review_site | Ask real clients for reviews — which is a client-qbr referral-adjacent ask, not a purchase |
publication | Contribute or get quoted |
own_site | Already the content pipeline's job; note it and move on |
Prioritize by citation_count, then by whether a competitor is already listed there.
A surface that cites a tracked competitor and not the firm is the clearest gap
available.
Output
Owner resolution. Once workspace/firm/people/ has entries, owner: must be a person slug from that registry, not free text (scripts/validate-brands.sh checks it).
workspace/marketing/placements/{domain}.md — one file per domain, flat folder.
---
domain: clutch.co
source_type: directory
citation_count: 14
prompts_cited_in: [best-drupal-migration-agency-mid-market, drupal-consultancy-poland]
competitors_present: [northwind-studio]
firm_present: false
status: new # new | pitched | listed | declined | not_viable
action: Claim and verify the profile; add three client reviews.
owner: Marta
next_check: 2026-09-01
first_seen: 2026-07-25
updated: 2026-07-25
---
Body: what this surface is, why an engine cites it, what inclusion actually requires (submission, pitch, payment, client reviews), and what was tried with the result.
not_viable is a real and useful status — a domain that does not accept outside
listings should be recorded once as closed rather than reappearing in every review.
When the gap is content, not placement
Some prompts fail because the firm has nothing to cite, not because it is missing from
a directory. In that case do not invent a placement target. Append an idea to
workspace/marketing/content/ideas/{content_type}--{buying_stage}--{slug}.md with the
failing prompt as the buyer_question, and let the existing pipeline handle it.
That reuse is the point: the repo already has ideas → draft → validate. This skill adds a source of demand for it, not a parallel content path.
Rules
- Only rank domains that appear in actual run files. Never add a directory because it is well known.
- Never invent a citation count, and never claim the firm is listed somewhere without checking.
- No astroturfing. Community placement means participating where the firm has genuine standing. Fake reviews, sockpuppet posts, and paid-for-organic-looking mentions are out — they are the fastest way to lose both the surface and the reputation the firm sells on.
- Reviews come from real clients who agreed. Cross-check
referenceableinworkspace/clients/{slug}/!_account.mdbefore asking. - This skill stops at the backlog. It does not write outreach emails —
sales-prospecting-sequenceowns outreach copy, and a pitch for inclusion is a different message from a sales sequence anyway. - One file per domain. Do not create a folder per domain; the flat folder plus frontmatter is the index.
- Re-rank when a new batch lands, and move statuses rather than rewriting history.
Measuring It
The only honest success metric here is placements moved new → listed, and then
whether the next intel-ai-visibility batch names the firm more often. Those are
different things and the second one lags by months.
Being listed is an output. Being named in answers is the outcome. If the firm wants
this tracked properly over time, that is firm-pdca-setup with share-of-answer.md as
the source of truth — not a number asserted in a report.
Testing Requirements
- Run with no
ai-visibility/runs/present; confirm it stops and points atintel-ai-visibilityinstead of producing a generic directory list. - Run against runs citing one directory and one community domain; confirm both get a
file with the correct
source_typeand a concreteaction. - Confirm a domain cited for a competitor but not the firm is prioritized.
- Confirm a prompt failing for lack of firm content produces a content idea rather than a placement file.
- Confirm no
citation_countappears that cannot be counted from run files.
Related Skills
| Skill | When |
|---|---|
intel-ai-visibility | Produces the runs and cited domains this consumes |
marketing-content-ideas | Receives gaps that are content problems, not placement problems |
client-qbr | Where a real client review or reference is actually asked for |
intel-competitor-monitoring | Which competitors to check each surface for |
firm-pdca-setup | Tracks whether placements changed the visibility rate |
Other skills for the same job
Different authors, same problem. Matched on the words in the skill name, across every library in the catalogue except this one.
- co-marketing by coreyhaines31 · 45,947
- community-marketing by coreyhaines31 · 45,947
- influencer-marketing by coreyhaines31 · 45,947
- marketing-council by coreyhaines31 · 45,947
- marketing-ideas by coreyhaines31 · 45,947
- marketing-loops by coreyhaines31 · 45,947
- marketing-plan by coreyhaines31 · 45,947
- marketing-psychology by coreyhaines31 · 45,947
Need help setting it up?
This page tells you what marketing-geo-placement does and what it needs. Cheetah builds the agent setup it runs inside: data, CRM, sequencing and the guardrails.
Book a call →The directory stays free. There is nothing gated behind this.