Systems Lab

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.

activeSelf-containedInstructions only1,063 words

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-tools in the frontmatter. It only issues instructions, so there is nothing to bound.
Actions present in the files
None. Instructions only.

Ask about marketing-geo-placement

Opens your assistant with this page's verified links already in the prompt.

Is this safe to install?ClaudeChatGPT
Adapt it to my stackClaudeChatGPT
What else do I need for it to workClaudeChatGPT
Rather ask a human? Talk to Cheetah
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.

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.

  1. workspace/intelligence/ai-visibility/runs/*/*.md — the cited_domains from every run. This is the input; without runs there is nothing to rank.
  2. workspace/intelligence/ai-visibility/share-of-answer.md — which prompts the firm loses, and to whom.
  3. workspace/marketing/placements/ — existing targets and their status.
  4. workspace/firm/profile.md and workspace/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_typeWhat the firm can actually do
listiclePitch inclusion in a "best {category}" roundup. Highest leverage, usually reachable.
directoryComplete and verify a profile. Slow, mechanical, and often effective — verified profiles attract materially more citations than bare ones.
communityParticipate honestly where the firm has standing. Never astroturf.
review_siteAsk real clients for reviews — which is a client-qbr referral-adjacent ask, not a purchase
publicationContribute or get quoted
own_siteAlready 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

  1. Only rank domains that appear in actual run files. Never add a directory because it is well known.
  2. Never invent a citation count, and never claim the firm is listed somewhere without checking.
  3. 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.
  4. Reviews come from real clients who agreed. Cross-check referenceable in workspace/clients/{slug}/!_account.md before asking.
  5. This skill stops at the backlog. It does not write outreach emails — sales-prospecting-sequence owns outreach copy, and a pitch for inclusion is a different message from a sales sequence anyway.
  6. One file per domain. Do not create a folder per domain; the flat folder plus frontmatter is the index.
  7. 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 newlisted, 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

  1. Run with no ai-visibility/runs/ present; confirm it stops and points at intel-ai-visibility instead of producing a generic directory list.
  2. Run against runs citing one directory and one community domain; confirm both get a file with the correct source_type and a concrete action.
  3. Confirm a domain cited for a competitor but not the firm is prioritized.
  4. Confirm a prompt failing for lack of firm content produces a content idea rather than a placement file.
  5. Confirm no citation_count appears that cannot be counted from run files.

Related Skills

SkillWhen
intel-ai-visibilityProduces the runs and cited domains this consumes
marketing-content-ideasReceives gaps that are content problems, not placement problems
client-qbrWhere a real client review or reference is actually asked for
intel-competitor-monitoringWhich competitors to check each surface for
firm-pdca-setupTracks 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.

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.