{
  "run_id": "Auriti-Labs--geo-optimizer-skill-claude-haiku-5-5-1792970480572843970",
  "checker": {
    "claims": [
      {
        "claim": "The README says geo audit scores a site 0-100 with prioritized fixes",
        "command": "<guest-path> audit --url https://example.com",
        "evidence": "GEO AUDIT \u2014 https://example.com\n  github.com/auriti-labs/geo-optimizer-skill\n\ud83d\udd0d \ud83d\udd0d \ud83d\udd0d \ud83d\udd0d \ud83d\udd0d \ud83d\udd0d \ud83d\udd0d \ud83d\udd0d \ud83d\udd0d \ud83d\udd0d \ud83d\udd0d \ud83d\udd0d \ud83d\udd0d \ud83d\udd0d \ud83d\udd0d \ud83d\udd0d \ud83d\udd0d \ud83d\udd0d \ud83d\udd0d \ud83d\udd0d \n\n   Status: 200 | Size: 577 bytes | Duration: 623ms\n\n============================================================\n  1. ROBOTS.TXT \u2014 AI Bot Access\n============================================================\n  \u274c robots.txt not found\n\n============================================================\n  2. LLMS.TXT \u2014 AI Index File (Other AI agents \u00b7 not used by Google Search)\n============================================================\n  \u274c llms.txt not found \u2014 essential for AI indexing!",
        "expected": "audit report for example.com",
        "input": "https://example.com",
        "kind": "claim",
        "outcome": "Real input produced the expected result: GEO AUDIT",
        "returncode": 0,
        "source": "Run `geo audit --url https://yoursite.com` and read the priority list",
        "source_checked": true,
        "source_file": "README.md",
        "verdict": "yes"
      },
      {
        "claim": "The README lists geo_check_bots as an MCP tool that checks bot access via robots.txt",
        "command": "<guest-path> tools/call {\"tool\": \"geo_check_bots\", \"arguments\": {\"url\": \"https://example.com\"}}",
        "evidence": "example.com\\\",\\n  \\\"robots_found\\\": false,\\n  \\\"citation_bots_ok\\\": false,\\n  \\\"bots\\\": {\\n    \\\"GPTBot\\\": {\\n      \\\"description\\\": \\\"OpenAI (ChatGPT training)\\\",\\n      \\\"status\\\": \\\"missing\\\",\\n      \\\"tier\\\": \\\"training\\\"\\n    },\\n    \\\"OAI-SearchBot\\\": {\\n      \\\"description\\\": \\\"OpenAI (ChatGPT search citations)\\\",\\n      \\\"status\\\": \\\"missing\\\",\\n      \\\"tier\\\": \\\"search\\\"\\n    },\\n    \\\"ChatGPT-User\\\": {\\n      \\\"description\\\": \\\"OpenAI (ChatGPT on-demand fetch)\\\",\\n      \\\"status\\\": \\\"missing\\\",\\n      \\\"tier\\\": \\\"user\\\"\\n    },\\n    \\\"ClaudeBot\\\": {\\n      \\\"description\\\": \\\"Anthropi",
        "expected": "bot access result for example.com",
        "input": "{\"tool\": \"geo_check_bots\", \"arguments\": {\"url\": \"https://example.com\"}}",
        "kind": "claim",
        "outcome": "Real input produced the expected result: example.com",
        "source": "| `geo_check_bots` | Check bot access via robots.txt |",
        "source_checked": true,
        "source_file": "README.md",
        "verdict": "yes"
      }
    ],
    "cycle_checks": [
      {
        "claim": "Scheduled or looping main behavior",
        "command": "",
        "evidence": "Entry points inspected (geo CLI commands audit/monitor/track/fix, geo-mcp stdio server, src/geo_optimizer/web/app.py). The README says 'The hosted platform runs the same engine on a schedule'; the local package has no cron, loop, or --once/--now scheduler. Local runs are one-shot commands.",
        "expected": "identify the product trigger",
        "input": "source inspection",
        "kind": "cycle",
        "outcome": "Entry points inspected (geo CLI commands audit/monitor/track/fix, geo-mcp stdio server, src/geo_optimizer/web/app.py). The README says 'The hosted platform runs the same engine on a schedule'; the local package has no cron, loop, or --once/--now scheduler. Local runs are one-shot commands.",
        "source": "repository entry points",
        "verdict": "yes"
      }
    ],
    "details": {
      "argv": [
        "<guest-path>"
      ],
      "kind": "mcp",
      "scope": "product operation",
      "serverInfo": {
        "name": "geo-optimizer",
        "version": "1.30.0"
      },
      "tool_result": {
        "content": [
          {
            "text": "{\n  \"url\": \"https://example.com\",\n  \"robots_found\": false,\n  \"citation_bots_ok\": false,\n  \"bots\": {\n    \"GPTBot\": {\n      \"description\": \"OpenAI (ChatGPT training)\",\n      \"status\": \"missing\",\n      \"tier\": \"training\"\n    },\n    \"OAI-SearchBot\": {\n      \"description\": \"OpenAI (ChatGPT search citations)\",\n      \"status\": \"missing\",\n      \"tier\": \"search\"\n    },\n    \"ChatGPT-User\": {\n      \"description\": \"OpenAI (ChatGPT on-demand fetch)\",\n      \"status\": \"missing\",\n      \"tier\": \"user\"\n    },\n    \"ClaudeBot\": {\n      \"description\": \"Anthropic (Claude training)\",\n      \"status\": \"missing\",\n      \"tier\": \"training\"\n    },\n    \"Claude-SearchBot\": {\n      \"description\": \"Anthropic (Claude search citations)\",\n      \"status\": \"missing\",\n      \"tier\": \"search\"\n    },\n    \"Claude-User\": {\n      \"description\": \"Anthropic (Claude on-demand fetch)\",\n      \"status\": \"missing\",\n      \"tier\": \"user\"\n    },\n    \"PerplexityBot\": {\n      \"description\": \"Perplexity AI (index builder)\",\n      \"status\": \"missing\",\n      \"tier\": \"search\"\n    },\n    \"Perplexity-User\": {\n      \"description\": \"Perplexity (citation fetch on-demand)\",\n      \"status\": \"missing\",\n      \"tier\": \"user\"\n    },\n    \"Googlebot\": {\n      \"description\": \"Google (Search + AI Overviews)\",\n      \"status\": \"missing\",\n      \"tier\": \"search\"\n    },\n    \"Google-Extended\": {\n      \"description\": \"Google (Gemini/Vertex training opt-out \\u2014 not a crawler)\",\n      \"status\": \"missing\",\n      \"tier\": \"training\"\n    },\n    \"Google-CloudVertexBot\": {\n      \"description\": \"Google (Vertex AI)\",\n      \"status\": \"missing\",\n      \"tier\": \"training\"\n    },\n    \"Bingbot\": {\n      \"description\": \"Microsoft (Bing/Copilot search)\",\n      \"status\": \"missing\",\n      \"tier\": \"search\"\n    },\n    \"Applebot-Extended\": {\n      \"description\": \"Apple (AI training)\",\n      \"status\": \"missing\",\n      \"tier\": \"training\"\n    },\n    \"cohere-ai\": {\n      \"description\": \"Cohere (language models)\",\n      \"status\": \"missing\",\n      \"tier\": \"training\"\n    },\n    \"DuckAssistBot\": {\n      \"description\": \"DuckDuckGo AI\",\n      \"status\": \"missing\",\n      \"tier\": \"search\"\n    },\n    \"Bytespider\": {\n      \"description\": \"ByteDance/TikTok AI\",\n      \"status\": \"missing\",\n      \"tier\": \"training\"\n    },\n    \"meta-externalagent\": {\n      \"description\": \"Meta AI (Facebook/Instagram AI)\",\n      \"status\": \"missing\",\n      \"tier\": \"training\"\n    },\n    \"Meta-ExternalFetcher\": {\n      \"description\": \"Meta (content fetch on-demand)\",\n      \"status\": \"missing\",\n      \"tier\": \"user\"\n    },\n    \"facebookexternalhit\": {\n      \"description\": \"Meta (social preview + AI)\",\n      \"status\": \"missing\",\n      \"tier\": \"user\"\n    },\n    \"Amazonbot\": {\n      \"description\": \"Amazon (Alexa/search AI)\",\n      \"status\": \"missing\",\n      \"tier\": \"search\"\n    },\n    \"AI2Bot\": {\n      \"description\": \"Allen Institute (AI research)\",\n      \"status\": \"missing\",\n      \"tier\": \"training\"\n    },\n    \"AI2Bot-Dolma\": {\n      \"description\": \"Allen Institute (Dolma dataset)\",\n      \"status\": \"missing\",\n      \"tier\": \"training\"\n    },\n    \"xAI-Bot\": {\n      \"description\": \"xAI (Grok search citations)\",\n      \"status\": \"missing\",\n      \"tier\": \"search\"\n    },\n    \"Applebot\": {\n      \"description\": \"Apple (general web crawl + Siri AI)\",\n      \"status\": \"missing\",\n      \"tier\": \"search\"\n    },\n    \"PetalBot\": {\n      \"description\": \"Huawei (PetalSearch AI, EU/Asia)\",\n      \"status\": \"missing\",\n      \"tier\": \"training\"\n    },\n    \"YouBot\": {\n      \"description\": \"You.com AI search\",\n      \"status\": \"missing\",\n      \"tier\": \"search\"\n    },\n    \"CCBot\": {\n      \"description\": \"Common Crawl (used by many AI labs)\",\n      \"status\": \"missing\",\n      \"tier\": \"training\"\n    }\n  },\n  \"summary\": {\n    \"allowed\": 0,\n    \"blocked\": 0,\n    \"missing\": 27\n  }\n}",
            "type": "text"
          }
        ],
        "isError": false,
        "structuredContent": {
          "result": "{\n  \"url\": \"https://example.com\",\n  \"robots_found\": false,\n  \"citation_bots_ok\": false,\n  \"bots\": {\n    \"GPTBot\": {\n      \"description\": \"OpenAI (ChatGPT training)\",\n      \"status\": \"missing\",\n      \"tier\": \"training\"\n    },\n    \"OAI-SearchBot\": {\n      \"description\": \"OpenAI (ChatGPT search citations)\",\n      \"status\": \"missing\",\n      \"tier\": \"search\"\n    },\n    \"ChatGPT-User\": {\n      \"description\": \"OpenAI (ChatGPT on-demand fetch)\",\n      \"status\": \"missing\",\n      \"tier\": \"user\"\n    },\n    \"ClaudeBot\": {\n      \"description\": \"Anthropic (Claude training)\",\n      \"status\": \"missing\",\n      \"tier\": \"training\"\n    },\n    \"Claude-SearchBot\": {\n      \"description\": \"Anthropic (Claude search citations)\",\n      \"status\": \"missing\",\n      \"tier\": \"search\"\n    },\n    \"Claude-User\": {\n      \"description\": \"Anthropic (Claude on-demand fetch)\",\n      \"status\": \"missing\",\n      \"tier\": \"user\"\n    },\n    \"PerplexityBot\": {\n      \"description\": \"Perplexity AI (index builder)\",\n      \"status\": \"missing\",\n      \"tier\": \"search\"\n    },\n    \"Perplexity-User\": {\n      \"description\": \"Perplexity (citation fetch on-demand)\",\n      \"status\": \"missing\",\n      \"tier\": \"user\"\n    },\n    \"Googlebot\": {\n      \"description\": \"Google (Search + AI Overviews)\",\n      \"status\": \"missing\",\n      \"tier\": \"search\"\n    },\n    \"Google-Extended\": {\n      \"description\": \"Google (Gemini/Vertex training opt-out \\u2014 not a crawler)\",\n      \"status\": \"missing\",\n      \"tier\": \"training\"\n    },\n    \"Google-CloudVertexBot\": {\n      \"description\": \"Google (Vertex AI)\",\n      \"status\": \"missing\",\n      \"tier\": \"training\"\n    },\n    \"Bingbot\": {\n      \"description\": \"Microsoft (Bing/Copilot search)\",\n      \"status\": \"missing\",\n      \"tier\": \"search\"\n    },\n    \"Applebot-Extended\": {\n      \"description\": \"Apple (AI training)\",\n      \"status\": \"missing\",\n      \"tier\": \"training\"\n    },\n    \"cohere-ai\": {\n      \"description\": \"Cohere (language models)\",\n      \"status\": \"missing\",\n      \"tier\": \"training\"\n    },\n    \"DuckAssistBot\": {\n      \"description\": \"DuckDuckGo AI\",\n      \"status\": \"missing\",\n      \"tier\": \"search\"\n    },\n    \"Bytespider\": {\n      \"description\": \"ByteDance/TikTok AI\",\n      \"status\": \"missing\",\n      \"tier\": \"training\"\n    },\n    \"meta-externalagent\": {\n      \"description\": \"Meta AI (Facebook/Instagram AI)\",\n      \"status\": \"missing\",\n      \"tier\": \"training\"\n    },\n    \"Meta-ExternalFetcher\": {\n      \"description\": \"Meta (content fetch on-demand)\",\n      \"status\": \"missing\",\n      \"tier\": \"user\"\n    },\n    \"facebookexternalhit\": {\n      \"description\": \"Meta (social preview + AI)\",\n      \"status\": \"missing\",\n      \"tier\": \"user\"\n    },\n    \"Amazonbot\": {\n      \"description\": \"Amazon (Alexa/search AI)\",\n      \"status\": \"missing\",\n      \"tier\": \"search\"\n    },\n    \"AI2Bot\": {\n      \"description\": \"Allen Institute (AI research)\",\n      \"status\": \"missing\",\n      \"tier\": \"training\"\n    },\n    \"AI2Bot-Dolma\": {\n      \"description\": \"Allen Institute (Dolma dataset)\",\n      \"status\": \"missing\",\n      \"tier\": \"training\"\n    },\n    \"xAI-Bot\": {\n      \"description\": \"xAI (Grok search citations)\",\n      \"status\": \"missing\",\n      \"tier\": \"search\"\n    },\n    \"Applebot\": {\n      \"description\": \"Apple (general web crawl + Siri AI)\",\n      \"status\": \"missing\",\n      \"tier\": \"search\"\n    },\n    \"PetalBot\": {\n      \"description\": \"Huawei (PetalSearch AI, EU/Asia)\",\n      \"status\": \"missing\",\n      \"tier\": \"training\"\n    },\n    \"YouBot\": {\n      \"description\": \"You.com AI search\",\n      \"status\": \"missing\",\n      \"tier\": \"search\"\n    },\n    \"CCBot\": {\n      \"description\": \"Common Crawl (used by many AI labs)\",\n      \"status\": \"missing\",\n      \"tier\": \"training\"\n    }\n  },\n  \"summary\": {\n    \"allowed\": 0,\n    \"blocked\": 0,\n    \"missing\": 27\n  }\n}"
        }
      },
      "tool_result_checked": true,
      "tool_schema_bytes": 8365,
      "tools": [
        "geo_audit",
        "geo_fix",
        "geo_llms_generate",
        "geo_citability",
        "geo_schema_validate",
        "geo_compare",
        "geo_gap_analysis",
        "geo_ai_discovery",
        "geo_check_bots",
        "geo_trust_score",
        "geo_negative_signals",
        "geo_factual_accuracy"
      ],
      "working": true
    },
    "evidence_strength": "readme_checked",
    "example_checks": [
      {
        "claim": "Quick start one-shot audit of a site",
        "command": "<guest-path> audit --url https://example.com",
        "deferred": false,
        "evidence": "t requires JavaScript to render (25 words in raw HTML). AI crawlers don't execute JS. Implement SSR, SSG, or pre-rendering.\n\n  \ud83d\udca1 One-shot audit. The free plan at https://geoready.dev saves your reports and runs\n     one real AI answer check a week; weekly score monitoring starts on Pro.\n\n  \u2192 Web report for this URL (free, no account):\n     https://geoready.dev/report/audit?url=https://example.com\n\n\u23f3 Fetching page, robots.txt, llms.txt and AI files...\n\u23f3 Analyzing schema, meta tags and content...\n\u23f3 Checking CDN access for AI bots...\n\u23f3 Running trust, brand and extra checks...\n\u2705 Analysis complete.",
        "expected": "audit report printed",
        "input": "geo audit --url https://example.com",
        "kind": "example",
        "outcome": "command completed successfully",
        "returncode": 0,
        "source": "README.md Quick Start",
        "verdict": "yes"
      },
      {
        "claim": "Contributor test suite runs offline with HTTP mocked",
        "command": "<guest-path> tests/ -q -p no:cacheprovider",
        "deferred": false,
        "evidence": "'s 'tmp_path' fixture with absolute paths instead.\n    with runner.isolated_filesystem():\n\ntests/test_v21_coverage.py::TestSchemaCmdFaqOltreTre::test_riga_198_piu_di_tre_faq_mostra_contatore\n  <guest-path> DeprecationWarning: 'isolated_filesystem' is deprecated and will be removed in Click 9.0. Use 'tempfile.TemporaryDirectory' or pytest's 'tmp_path' fixture with absolute paths instead.\n    with runner.isolated_filesystem():\n\n-- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html\n2281 passed, 31 skipped, 8 warnings in 66.15s (0:01:06)",
        "expected": "all tests pass",
        "input": "pytest tests/ -v",
        "kind": "example",
        "outcome": "command completed successfully",
        "returncode": 0,
        "source": "README.md Contributing",
        "verdict": "yes"
      }
    ],
    "status": "PASS"
  },
  "diagnosis": null
}
