🔗

Answer Engine Citation Tracker

The new SEO is being cited by AI. Track whether Perplexity, ChatGPT, Gemini, and others link to your pages.

Track Your URL

Where to Check

Weekly Citation Log

Engine Status Last checked Notes
Perplexity Search query + inspect Sources
ChatGPT / GPT-4o Browse with Bing may cite sources
Gemini / Google SGE Check AI Overview links
Microsoft Copilot Look for Learn more links
Claude No web citations yet
Perplexity Pages Persistent topic pages with sources

How to increase citations

  • Answer first: Put the direct answer in the first paragraph, then explain.
  • Schema.org: Use FAQPage, HowTo, and ItemList structured data.
  • Unique data: Original benchmarks, calculators, and comparisons get cited more.
  • Keep URLs stable: Changing slugs breaks citations.

Automated monitoring

For now, manual checks are the most reliable. We are building a scheduled scanner that will:

  • Run weekly Perplexity queries against your target list.
  • Screenshot and log citations in your Obsidian vault.
  • Alert you when new citations appear or disappear.

Use in Hermes Agent

🔒 Subscriber early access

This tool is available as a Hermes Agent Python script. Public download unlocks Jul 17, 2026; subscribers get it now.

🔐

Hermes script locked

Unlocks publicly on Jul 17, 2026. Subscribers get the .py file today.

Subscribe to unlock

🤖 Use this tool in your agent

✓ Agent-ready code

Copy the snippet below into your agent, newsletter, or script. The tool page at hermesdispatch.dev/tools/answer-engine-citation-tracker/ is the canonical contract: inputs, outputs, and formulas.

python
# Hermes Dispatch Tool — Answer Engine Citation Tracker
# Source: https://hermesdispatch.dev/tools/answer-engine-citation-tracker/
# Description: Generate test links for Perplexity, ChatGPT, Gemini, and Copilot to check if a page is cited.
# License: MIT (generated by hermesdispatch.dev)
#
# INSTALL:
#   1. Save this file as ~/.hermes/hermes-agent/tools/answer_engine_citation_tracker.py
#   2. Restart Hermes or run /reset in a session
#
# MANUAL REGISTRY:
#   from tools.answer_engine_citation_tracker import register
#   register()

import json

def _ok(result):
    return json.dumps({"success": True, "data": result}, indent=2)

def _err(message):
    return json.dumps({"success": False, "error": message}, indent=2)

TOOL_NAME = "answer_engine_citation_tracker"
TOOLSET = "seo"

SCHEMA = {
    "type": "function",
    "function": {
        "name": TOOL_NAME,
        "description": "Generate answer-engine citation test links for a URL and query. Returns Perplexity, ChatGPT, Gemini, and Copilot URLs an agent can open to verify whether a page is cited.",
        "parameters": {
            "type": "object",
            "properties": {
                "url": {"type": "string", "description": "Page URL to monitor for citations."},
                "query": {"type": "string", "description": "Query to test on each answer engine."}
            },
            "required": ["url", "query"]
        }
    }
}

def citation_test_links(url, query):
    from urllib.parse import quote
    encoded = quote(query)
    return _ok({
        "target_url": url,
        "query": query,
        "test_links": {
            "perplexity": f"https://www.perplexity.ai/search?q={encoded}",
            "chatgpt": f"https://chat.openai.com/?q={encoded}",
            "gemini": f"https://gemini.google.com/app?q={encoded}",
            "copilot": f"https://copilot.microsoft.com/?q={encoded}",
        },
        "note": "Open each link and check whether the target_url appears in the answer sources.",
    })

def HANDLER(args):
    try:
        return citation_test_links(args.get("url", ""), args.get("query", ""))
    except Exception as e:
        return _err(str(e))

def register():
    try:
        from tools.registry import registry
        registry.register(name=TOOL_NAME, toolset=TOOLSET, schema=SCHEMA, handler=HANDLER)
    except ImportError:
        print("Hermes registry not found; skipping manual registration.")

if __name__ == "__main__":
    print(HANDLER({"url": "https://hermesdispatch.dev", "query": "best GPU for local LLM"}))

Want early access to the next locked tool? Subscribe to The Hermes Dispatch.

🚀 Get AI automation insights daily

15:00 MST. One-click unsubscribe.

Subscribe