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
In this repository14 other files it gives its agents.
- ai-keyword-researchSkill
- ai-visibility-reportSkill
- answer-engine-contentSkill
- article-reviewSkill
- competitor-gapSkill
- content-briefSkill
- content-calendarSkill
- eraSkill
- geo-auditSkill
- llms-txtSkill
- on-page-seoSkill
- publish-to-siteSkill
- schema-markupSkill
- technical-seo-auditSkill
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
- Very specific: line 17
After competitor-gap showed that a third-party page names a rival and not the brand.
- Very specific: line 19
Not for: headline visibility numbers (ai-visibility-report), prompt-by-prompt losses to one rival (competitor-gap), or whether one page can …
- Distinctive: line 102
Read-only. This skill writes drafts.
- Distinctive: line 106
Never advise fake reviews, undisclosed paid placement, link purchases or sock-puppet community posts.
- Distinctive: line 111
Do not assume which page a citation points to from the domain alone.
- Distinctive: line 113
Do not copy third-party text into outreach.
≈ “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.
Files
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-gapshowed 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
- Resolve the brand.
list_brands→brand_idand the brand's website domain. - 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. - Domains.
list_cited_domains(brand_id, days, limit=50)→ each domain with its citation count and share of external citations, plusown_brand_cited_count. - 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 asown_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 assumeget_top_citationsbehaves the same, so label its links too, and read own and competitor pages from the citations of single answers (step 6). Classify third-party sources into placement types, using the domain and, where a web tool is available, the page itself:
Type What it is Typical action Review and comparison Category roundups, "best X" lists, software or product review sites Get listed, supply data, earn a review Community Reddit, forums, Q&A sites, community-run wikis Take part openly, answer real questions Press and analysts News, trade press, analyst reports, newsletters Pitch data, a quote or a launch Directory and marketplace Business directories, app stores, vendor marketplaces Complete and correct the listing Video and social Video platforms, social posts Publish a useful video or thread Reference and documentation Encyclopaedias, standards bodies, public docs Be accurately described; correct errors Unclear Cannot be placed without opening it Open it, or leave it out of the shortlist - 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 highestcitation_count, spread over engines. Open each withget_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). - What the engines go looking for.
list_search_queries(brand_id, sort_by=count, order=desc, limit=100), then again withsearchset to source-seeking words such asreddit,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. - 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_countwith the third-party total. - 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 pageThen:
- Domain table — domain · citations · share · owner (own / competitor / third-party) · type · seen in sample (prompts, engines).
- URL table — url · citations · page type · brand present? · competitors present? · what prompt it answers.
- 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_domainsafter four to six weeks. - Own domain — which own pages are cited, which prompts they win, and which are missing.
- 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.
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
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.

