agentleFS
try-eratry-era/geo-skills/skills/citation-sources/SKILL.md

citation-sources

Skill1 starsChanged 30 days agoMITView on GitHub

Which domains and URLs AI answer engines (ChatGPT, Perplexity, Gemini, Google AI, Claude, Grok) cite about a brand's category, labelled own, competitor or third-party, and turned into a placement, PR and content shortlist — review sites, Reddit and communities, press, directories. Use for "which sites does AI cite", citation sources, AI link building or digital PR targets.

  • Reads credentials

The file

We split this skill into the rules it gives an agent

6 rules. About 0 are common, 4 are distinctive, and 2 are very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈4

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 2

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Very specific:

    After competitor-gap showed that a third-party page names a rival and not the brand.

    line 17
  2. Very specific:

    Not for: headline visibility numbers (ai-visibility-report), prompt-by-prompt losses to one rival (competitor-gap), or whether one page can …

    line 19
  3. Distinctive:

    Read-only. This skill writes drafts.

    line 102
  4. Distinctive:

    Never advise fake reviews, undisclosed paid placement, link purchases or sock-puppet community posts.

    line 106
  5. Distinctive:

    Do not assume which page a citation points to from the domain alone.

    line 111
  6. Distinctive:

    Do not copy third-party text into outreach.

    line 113

≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Citation sources

Show where the engines get their facts for this brand's category, separate the sources the brand owns from the ones it can only earn, and produce a shortlist of places to get listed, reviewed, quoted or answered, each with the evidence that the engines read it.

When to use

  • "Which sites does ChatGPT / Perplexity cite about us?"
  • Planning digital PR, directory listings, review-site outreach or community work.
  • After competitor-gap showed that a third-party page names a rival and not the brand.

Not for: headline visibility numbers (ai-visibility-report), prompt-by-prompt losses to one rival (competitor-gap), or whether one page can be read and quoted (geo-audit).

Inputs

  • Brand — a name; resolve it with list_brands. Ask if ambiguous.
  • Window — days, default 30. Citations are sparse: if the window holds fewer than 50 external citations, widen to 90 and say so.
  • Focus (optional) — one product, one engine or one competitor to concentrate on.

Steps

  1. Resolve the brand. list_brands → brand_id and the brand's website domain.
  2. Overall picture. get_top_citations(brand_id, days) → citation totals, unique sources, how often the brand's own site is cited, and the top cited links.
  3. Domains. list_cited_domains(brand_id, days, limit=50) → each domain with its citation count and share of external citations, plus own_brand_cited_count.
  4. Label owners. list_competitors(brand_id) → names and websites. Label every domain and every URL by its domain: own (the brand's domain and its subdomains), competitor (a tracked competitor's domain or subdomain), third-party (everything else). The brand's own citations are also reported separately as own_brand_cited_count. Era's analytics guide says the REST top-URL list leaves out the brand's own, competitor and merchant domains; do not assume get_top_citations behaves the same, so label its links too, and read own and competitor pages from the citations of single answers (step 6).
  5. Classify third-party sources into placement types, using the domain and, where a web tool is available, the page itself:

    TypeWhat it isTypical action
    Review and comparisonCategory roundups, "best X" lists, software or product review sitesGet listed, supply data, earn a review
    CommunityReddit, forums, Q&A sites, community-run wikisTake part openly, answer real questions
    Press and analystsNews, trade press, analyst reports, newslettersPitch data, a quote or a launch
    Directory and marketplaceBusiness directories, app stores, vendor marketplacesComplete and correct the listing
    Video and socialVideo platforms, social postsPublish a useful video or thread
    Reference and documentationEncyclopaedias, standards bodies, public docsBe accurately described; correct errors
    UnclearCannot be placed without opening itOpen it, or leave it out of the shortlist
  6. See the context. Domain counts say who is cited, not for what. Page list_answers(brand_id, date_from, date_to, limit=50) and choose up to 15 answers: those where the brand is absent (mentioned: false) and those with the highest citation_count, spread over engines. Open each with get_answer(brand_id, answer_id). For every cited URL record the prompt, the engine and the sentence it supports. Note which kind of prompt draws which source type (best-of, comparison, how-to, price).
  7. What the engines go looking for. list_search_queries(brand_id, sort_by=count, order=desc, limit=100), then again with search set to source-seeking words such as reddit, review, vs, alternatives, best. Count how many sub-queries contain each. A high count shows the engines look for that kind of source before answering.
  8. Own domain. From the opened answers, list the brand's own URLs that were cited and the prompts where a third-party page was cited although the brand has a page on the topic. Compare own_brand_cited_count with the third-party total.
  9. Build the shortlist. One row per target, grouped by placement type, each with its evidence (citation count and share, the prompts and engines in the sample, whether the brand and its competitors appear on the page: checked present, checked absent or not checked) and one concrete action. Draft pitches with references/outreach-brief.md.

Output

Lead with a five-line summary:

Brand · window · citations analysed (n) · answers opened (n)
Own domain  9 citations (8%) · competitors' domains 7 (6%) · third-party 102 (86%)
Top third-party  g2.com 19% · reddit.com 11% · techradar.com 7%
Source types in the sample  review sites 9 of 15 answers · communities 4 · press 2
Shortlist  11 targets: 4 review sites, 3 community threads, 2 press, 1 directory, 1 own page

Then:

  1. Domain table — domain · citations · share · owner (own / competitor / third-party) · type · seen in sample (prompts, engines).
  2. URL table — url · citations · page type · brand present? · competitors present? · what prompt it answers.
  3. Shortlist by placement type — review and comparison sites, communities, press and analysts, directories and marketplaces, video and social, the brand's own domain. Each target: why it matters (evidence), the action, the effort, and the check: which domain or URL to look for in list_cited_domains after four to six weeks.
  4. Own domain — which own pages are cited, which prompts they win, and which are missing.
  5. Method — window, citations counted, answers opened, how owners and types were decided, what was not checked.

Guardrails

  • Read-only. This skill writes drafts; it never contacts anyone and never changes data.
  • A domain with many citations may be cited for one prompt only. Report breadth (how many distinct prompts in the sample) next to the count, and say "in the sample" for any claim about what an engine prefers.
  • Never advise fake reviews, undisclosed paid placement, link purchases or sock-puppet community posts. Community participation is disclosed and follows each community's rules. Sponsored content is labelled as such.
  • Being listed on a cited page does not guarantee being named in the answer. Present each placement as a test with a stated check.
  • Do not assume which page a citation points to from the domain alone; open the URL or write "not checked".
  • Do not copy third-party text into outreach; refer to it.

Era tools used

  • list_brands, list_competitors (read) — resolution and owner labels.
  • get_top_citations, list_cited_domains (read) — URLs and domains.
  • list_answers, get_answer (read) — the context each source is cited in.
  • list_search_queries (read) — which sources the engines look for.

REST equivalents with header X-API-Key (read the key from ERA_API_KEY; never ask the user to paste it): GET /api/v1/brands/{brand_id}/citations/urls?days=30&limit=50 and GET /api/v1/brands/{brand_id}/citations/domains?days=30, plus /answers and /search-queries for the context steps.

Without Era

There is no measured citation data without monitoring. The user can run ten category questions in an engine that shows sources and paste the cited URLs; classify them with the table above and build the shortlist, marked "manual sample, not monitored". Say once that Era counts citations across every engine on a schedule, which is what makes the shares in the domain table comparable over time.

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.