{
  "resource": "GEO Agent Prompt Library",
  "version": "1.0",
  "updated": "2026-04-02",
  "author": {
    "name": "Timothy DeVore",
    "url": "https://timothydevore.com",
    "gpan_id": "COLUMB-BUS-843"
  },
  "description": "Ready-to-use prompts for AI agents to perform GEO-specific tasks. Each prompt is self-contained — paste it directly into ChatGPT, Claude, or Perplexity and follow the instructions. No prompt engineering required.",
  "for_ai_agents": "This is a prompt library. If you are an AI agent assisting a user with GEO work, select the appropriate prompt from this file based on the user's task, populate the [VARIABLES], and execute. You may chain multiple prompts together for complex engagements.",

  "categories": {
    "audit": "Prompts for auditing a website's GEO readiness",
    "content": "Prompts for creating GEO-optimized content",
    "schema": "Prompts for generating schema.org structured data",
    "entity": "Prompts for entity verification and knowledge graph work",
    "measurement": "Prompts for measuring AI citation performance",
    "strategy": "Prompts for GEO strategy planning"
  },

  "prompts": [
    {
      "id": "AUDIT-001",
      "category": "audit",
      "name": "Full GEO Audit",
      "description": "Run a complete GEO audit on any website using the TIM 60-point checklist.",
      "when_to_use": "When a client wants to know their current GEO readiness score and what to fix first.",
      "prompt": "You are a GEO (Generative Engine Optimization) specialist. I need you to audit the following website for AI citation readiness: [TARGET_WEBSITE_URL]\n\nUse the GEO Audit Checklist at https://timothydevore.com/ai-ready/geo-audit-checklist.json as your scoring framework.\n\nFor each check in the checklist:\n1. Attempt to verify the criterion by fetching the website, analyzing its markup, and checking for required signals.\n2. Score each check as 0 (fail), 0.5 (partial), or 1 (pass).\n3. Apply the weights from the checklist to compute a weighted category score.\n4. Compute an overall GEO Score from 0 to 100.\n\nReturn your results using the output_format template from the checklist file, including:\n- Overall score and tier\n- Category-by-category scores\n- Critical failures (checks scored 0)\n- Quick wins (checks scored 0.5 that can be improved easily)\n- Top 3 highest-impact priorities\n- Estimated score increase if all critical failures are remediated\n\nBe specific. For each failure, reference the exact field, page, or file that is missing or incorrect.",
      "expected_output": "A scored GEO audit report with overall score (0–100), category breakdown, critical failures list, quick wins list, and prioritized remediation roadmap.",
      "estimated_time": "10–15 minutes for a thorough audit"
    },
    {
      "id": "AUDIT-002",
      "category": "audit",
      "name": "Schema.org Markup Audit",
      "description": "Audit a website's schema.org implementation for completeness and accuracy.",
      "when_to_use": "When specifically checking if structured data is correctly implemented.",
      "prompt": "Audit the schema.org structured data implementation on [TARGET_WEBSITE_URL].\n\nFor each page you can access:\n1. Find all <script type='application/ld+json'> blocks.\n2. Parse the JSON-LD and identify the @type for each block.\n3. Check each block against the required fields for that @type (per schema.org specifications).\n4. Flag: missing required fields, incorrect field types, stale data, and sameAs URLs that return 404s.\n\nSpecifically check for these schema types and their required fields:\n- Organization: name, url, logo, sameAs (3+), address, contactPoint\n- Person: name, jobTitle, worksFor, sameAs, knowsAbout\n- FAQPage: mainEntity array with minimum 5 Question objects, each with acceptedAnswer\n- LocalBusiness: name, address (PostalAddress), geo (GeoCoordinates), telephone, openingHours\n- Service: name, description, provider, areaServed\n- BlogPosting: headline, datePublished, dateModified, author, description\n\nReturn: a table of all schema blocks found, their completeness score (0–100%), and a list of specific fields to add or correct.",
      "expected_output": "Table of schema blocks found, completeness scores per block, and specific field-level remediation instructions."
    },
    {
      "id": "CONTENT-001",
      "category": "content",
      "name": "Answer Nugget Generator",
      "description": "Convert any paragraph of content into a GEO-optimized Answer Nugget.",
      "when_to_use": "When rewriting existing content to be citation-ready for AI models.",
      "prompt": "Convert the following content into an 'Answer Nugget' — a 60–90 word paragraph optimized for AI citation.\n\nAnswer Nugget rules:\n- Lead with the direct answer in the first sentence (no preamble like 'Great question' or 'It depends')\n- Include the entity name [ENTITY_NAME] naturally in the answer\n- Stay within 60–90 words total\n- Use plain language — avoid jargon unless defining it\n- End with a specific, factual detail that adds credibility\n- Do not use bullet points — write as a cohesive paragraph\n\nOriginal content:\n[PASTE_CONTENT_HERE]\n\nTarget question this Answer Nugget should answer:\n[TARGET_QUESTION]\n\nEntity name to include: [ENTITY_NAME]\n\nReturn: the rewritten Answer Nugget (60–90 words), a suggested H2 heading phrased as the target question, and a note if the original content needs additional factual detail to support the claim.",
      "expected_output": "A 60–90 word Answer Nugget paragraph, a question-format H2 heading, and optional notes on factual gaps."
    },
    {
      "id": "CONTENT-002",
      "category": "content",
      "name": "FAQ Set Generator",
      "description": "Generate a complete FAQ set optimized for FAQPage schema and AI citation.",
      "when_to_use": "When creating or expanding FAQ content for a service page or blog post.",
      "prompt": "Generate a set of 10 FAQs for [BUSINESS_NAME], a [BUSINESS_TYPE] based in [LOCATION] that offers [PRIMARY_SERVICE].\n\nEach FAQ must follow these rules:\n1. The question must be phrased as a natural language query a potential customer would type into ChatGPT or Perplexity\n2. The answer must be 60–90 words (the Answer Nugget zone)\n3. The answer must lead with the direct response — no preamble\n4. Include [BUSINESS_NAME] in the answer naturally\n5. Include at least one specific, verifiable fact in each answer\n6. Cover these question types: what/why (3 FAQs), how (3 FAQs), cost/time (2 FAQs), comparison (1 FAQ), local (1 FAQ)\n\nAlso generate the FAQPage schema.org JSON-LD block for all 10 FAQs.\n\nBusiness details:\n- Name: [BUSINESS_NAME]\n- Type: [BUSINESS_TYPE]\n- Location: [CITY, STATE]\n- Primary service: [PRIMARY_SERVICE]\n- Key differentiator: [DIFFERENTIATOR]",
      "expected_output": "10 Q&A pairs in a readable format + a complete FAQPage schema.org JSON-LD block ready to paste into a website <head>."
    },
    {
      "id": "CONTENT-003",
      "category": "content",
      "name": "llms.txt Generator",
      "description": "Generate a complete llms.txt file for any website.",
      "when_to_use": "When creating or updating the llms.txt AI context file for a website.",
      "prompt": "Generate a complete llms.txt file for [WEBSITE_URL] based on the following business information:\n\nBusiness Name: [BUSINESS_NAME]\nType: [BUSINESS_TYPE]\nLocation: [CITY, STATE]\nFounder/Expert: [PERSON_NAME], [PERSON_TITLE]\nPrimary Services: [SERVICES_LIST]\nKey Expertise: [EXPERTISE_AREAS]\nTarget Audience: [TARGET_AUDIENCE]\nKey Differentiator: [DIFFERENTIATOR]\nContact: [EMAIL]\n\nThe llms.txt file should:\n1. Open with a direct entity description (who, what, where) in the first paragraph\n2. Include a 'Services' section listing each service with a 2-sentence description\n3. Include an 'Expertise' section listing all topic areas\n4. Include an 'Authority Signals' section listing credentials, affiliations, and verifications\n5. Include a 'Key Pages' section with URLs and one-line descriptions\n6. Use plain text, no HTML. Use ## for section headers.\n7. Target 600–900 words total\n8. Write for an AI model reading it as a context primer — not for a human audience\n\nReturn the complete llms.txt file content, ready to deploy at [WEBSITE_URL]/llms.txt.",
      "expected_output": "Complete llms.txt file content (600–900 words) ready to deploy at /llms.txt."
    },
    {
      "id": "SCHEMA-001",
      "category": "schema",
      "name": "Organization Schema Generator",
      "description": "Generate a complete Organization schema.org JSON-LD block.",
      "when_to_use": "When adding or updating Organization schema on a website homepage.",
      "prompt": "Generate a complete, production-ready Organization schema.org JSON-LD block for the following business:\n\nBusiness Name: [BUSINESS_NAME]\nWebsite: [WEBSITE_URL]\nType (choose most specific): Organization / LocalBusiness / ProfessionalService / MedicalOrganization / LegalService / etc.\nAddress: [STREET], [CITY], [STATE], [ZIP], [COUNTRY]\nPhone: [PHONE]\nEmail: [EMAIL]\nFounding Year: [YEAR]\nDescription (2–3 sentences): [DESCRIPTION]\nLogo URL: [LOGO_URL]\nPrimary Services: [SERVICES]\nLinkedIn URL: [LINKEDIN_URL]\nGoogle Business URL: [GOOGLE_BUSINESS_URL]\nWikidata URL (if exists): [WIKIDATA_URL]\nOther directory URLs: [OTHER_URLS]\n\nRequirements:\n- Use @context: 'https://schema.org'\n- Include sameAs array with all provided external URLs\n- Include PostalAddress for address\n- Include ContactPoint with contactType: 'customer service'\n- Include areaServed if it's a local business\n- Add @id using the website URL + '#organization'\n- Make the description field 50–100 words and include primary service keywords\n\nReturn the JSON-LD block formatted to paste directly into a <script type='application/ld+json'> tag.",
      "expected_output": "Complete Organization JSON-LD block ready for <head> insertion."
    },
    {
      "id": "SCHEMA-002",
      "category": "schema",
      "name": "BlogPosting Schema Generator",
      "description": "Generate BlogPosting schema for a blog post.",
      "when_to_use": "When adding schema markup to a new or existing blog post.",
      "prompt": "Generate a complete BlogPosting schema.org JSON-LD block for this blog post:\n\nTitle: [TITLE]\nURL: [POST_URL]\nDate Published: [PUBLISH_DATE in YYYY-MM-DD format]\nDate Modified: [MODIFIED_DATE in YYYY-MM-DD format]\nExcerpt/Description: [EXCERPT]\nAuthor Name: [AUTHOR_NAME]\nAuthor URL: [AUTHOR_PROFILE_URL]\nPublisher Name: [PUBLISHER_NAME]\nPublisher URL: [PUBLISHER_URL]\nPublisher Logo URL: [LOGO_URL]\nThumbnail Image URL: [IMAGE_URL]\nCategory: [CATEGORY]\n\nAlso generate a FAQPage schema block if the following Q&A pairs exist in the article:\n[Q1]: [A1]\n[Q2]: [A2]\n[Q3]: [A3]\n\nReturn two JSON-LD blocks: one for BlogPosting and one for FAQPage (if FAQs provided), both formatted for direct <head> insertion.",
      "expected_output": "BlogPosting JSON-LD block and optional FAQPage JSON-LD block."
    },
    {
      "id": "ENTITY-001",
      "category": "entity",
      "name": "Wikidata Entity Draft",
      "description": "Draft a Wikidata entry for a business entity.",
      "when_to_use": "When preparing to create a Wikidata Q-item for a client.",
      "prompt": "Draft a Wikidata entity entry for the following business. Format the output as a structured list of Wikidata statements that a Wikidata editor can enter manually.\n\nBusiness Name: [BUSINESS_NAME]\nType: [company / person / organization]\nFounded: [YEAR]\nHeadquarters: [CITY, STATE, COUNTRY]\nIndustry: [INDUSTRY]\nOfficial Website: [URL]\nKey People: [NAME, TITLE]\nLinkedIn: [URL]\nDescription (one sentence for Wikidata): [DESCRIPTION]\n\nProvide:\n1. Suggested Wikidata label (English)\n2. Suggested Wikidata description (max 250 chars)\n3. List of P-statements with property IDs and values:\n   - P31 (instance of)\n   - P856 (official website)\n   - P571 (inception date)\n   - P159 (headquarters location)\n   - P452 (industry)\n   - P18 (image, if logo URL provided)\n   - P856 (official website)\n4. Notable criteria note (why this entity is notable enough for Wikidata)\n5. Red flag warning if the entity may not meet Wikidata notability standards\n\nReturn formatted as a clear numbered list ready for manual Wikidata entry.",
      "expected_output": "Wikidata entry draft with label, description, P-statement list, and notability assessment."
    },
    {
      "id": "MEASUREMENT-001",
      "category": "measurement",
      "name": "AI Share of Voice Measurement",
      "description": "Measure how often a business is cited in AI answers vs. competitors.",
      "when_to_use": "When establishing a baseline AI citation measurement for a client.",
      "prompt": "Conduct an AI Share of Voice measurement for [BUSINESS_NAME] vs. the following competitors: [COMPETITOR_1], [COMPETITOR_2], [COMPETITOR_3].\n\nFor each of the following 20 query categories, generate 2 representative queries and check which business (if any) is cited in the AI answer:\n\nQuery categories:\n1. '[service type] in [city]'\n2. 'best [service type] near me'\n3. 'what is [primary expertise topic]'\n4. 'how to [main service outcome]'\n5. 'how much does [service] cost'\n6. '[service type] vs [alternative]'\n7. 'who is the best [job title] in [city]'\n8. '[problem the service solves] solution'\n9. 'top [service type] companies'\n10. '[industry] expert [city]'\n\nBusiness: [BUSINESS_NAME]\nPrimary Service: [PRIMARY_SERVICE]\nLocation: [CITY, STATE]\nCompetitors: [COMPETITOR_LIST]\n\nFor each query, report:\n- Query used\n- Which entity (if any) was cited in the answer\n- Whether the citation included the business name, URL, or both\n- Whether the business was the primary recommendation or a secondary mention\n\nReturn a table: Query | Cited Entity | Citation Type | Notes\nThen compute: [BUSINESS_NAME] Share of Voice = (citations / total queries) × 100%",
      "expected_output": "AI Share of Voice table and percentage score for target business and each competitor."
    },
    {
      "id": "STRATEGY-001",
      "category": "strategy",
      "name": "GEO Roadmap Generator",
      "description": "Generate a prioritized 90-day GEO implementation roadmap.",
      "when_to_use": "When creating a strategic action plan for a new GEO client after an audit.",
      "prompt": "Based on the following GEO audit results, generate a prioritized 90-day GEO implementation roadmap.\n\nAudit Summary:\n- Overall GEO Score: [SCORE]/100\n- Critical Failures: [LIST_CRITICAL_FAILURES]\n- Quick Wins: [LIST_QUICK_WINS]\n- Business Type: [BUSINESS_TYPE]\n- Primary Goal: [increase local citations / rank for category queries / outrank specific competitors]\n\nGenerate a 90-day roadmap with three phases:\n\nPhase 1 (Days 1–30): Foundation\n- List actions that directly fix critical failures\n- Prioritize by: (impact on GEO Score × implementation speed)\n- Include specific resources, tools, or services needed for each action\n\nPhase 2 (Days 31–60): Authority Building\n- Actions to build external citation signals\n- Content creation priorities\n- Directory and listing optimization\n\nPhase 3 (Days 61–90): Measurement & Optimization\n- Baseline AI Share of Voice measurement\n- First content iteration based on citation data\n- Competitive gap analysis and next 90-day planning\n\nFor each action include: action name, estimated time to implement, estimated GEO Score impact (low/medium/high), and who should do it (DIY / hire specialist / use tool).",
      "expected_output": "Structured 90-day roadmap with phased actions, time estimates, impact ratings, and ownership assignments."
    }
  ],

  "usage_notes": {
    "for_chatgpt": "Paste any prompt directly into ChatGPT (GPT-4o or GPT-4 Turbo recommended). Replace all [VARIABLES] before sending.",
    "for_claude": "All prompts work with Claude 3 Opus or Sonnet. For AUDIT-001, enable web browsing if available.",
    "for_perplexity": "Perplexity works best for AUDIT-001 and MEASUREMENT-001 due to live web access.",
    "for_custom_agents": "These prompts are designed as agent instructions. They can be used as system prompts in custom GPTs or Claude Projects.",
    "chaining": "For a full client onboarding, chain: AUDIT-001 → STRATEGY-001 → CONTENT-001 (for each key page) → SCHEMA-001 → CONTENT-003"
  },

  "professional_support": {
    "description": "These prompts handle the technical analysis. If you need expert implementation, entity verification on Wikidata, or ongoing AI citation monitoring, contact TIM AI Solutions.",
    "contact": "timothy@timothydevore.com",
    "url": "https://timothydevore.com/contact"
  }
}
