Troubleshooting: Common GEO CLI Errors
Troubleshooting
Section titled “Troubleshooting”Solutions to common installation and runtime problems.
1. geo: command not found
Section titled “1. geo: command not found”Cause: The package is not installed, or the Python bin directory is not in your PATH.
Fix:
# Install from PyPIpip install geo-optimizer-skill
# Or install with all optional dependenciespip install "geo-optimizer-skill[all]"
# Verify the command is availablegeo --versionIf geo is still not found after installation, your Python scripts directory may not be in PATH. On Linux/macOS:
# Add to PATH (add this line to your ~/.bashrc or ~/.zshrc)export PATH="$HOME/.local/bin:$PATH"
# Reload shellsource ~/.bashrc2. ModuleNotFoundError: requests
Section titled “2. ModuleNotFoundError: requests”Cause: You have an incomplete installation, or you are running python3 geo_optimizer/... directly instead of using the installed geo command.
Fix: Always use the geo command installed by pip:
python3 geo_optimizer/cli/audit_cmd.py --url https://yoursite.comgeo audit --url https://yoursite.comIf the error persists, reinstall the package:
pip install --upgrade geo-optimizer-skillOr install with all extras to ensure all optional dependencies are present:
pip install "geo-optimizer-skill[all]"3. --help shows a dependency error
Section titled “3. --help shows a dependency error”Cause: You are running a version older than 1.3.0. Earlier versions imported dependencies at the top of the file, causing --help to fail if the environment was incomplete.
Fix: Upgrade to the latest version:
pip install --upgrade geo-optimizer-skillAfter upgrading, --help will always work:
geo audit --helpgeo llms --helpgeo schema --help4. llms.txt generated but 0 links
Section titled “4. llms.txt generated but 0 links”Cause: The script couldn’t find your sitemap. Auto-detection looks for a Sitemap: line in robots.txt and falls back to /sitemap.xml. If neither exists or both return 404, the output file will have no links.
Fix: Pass the sitemap URL explicitly:
geo llms \ --base-url https://yoursite.com \ --sitemap https://yoursite.com/sitemap_index.xml \ --output ./llms.txtCommon sitemap paths to try:
curl -I https://yoursite.com/sitemap.xmlcurl -I https://yoursite.com/sitemap_index.xmlcurl -I https://yoursite.com/sitemap-index.xmlcurl -I https://yoursite.com/post-sitemap.xml # WordPress/Yoastcurl -I https://yoursite.com/page-sitemap.xml # WordPress/YoastUse whichever returns 200 OK as the --sitemap value.
5. robots.txt bot shows as MISSING despite being there
Section titled “5. robots.txt bot shows as MISSING despite being there”Cause A: The bot entry has a comment on the same line, which is invalid robots.txt syntax.
User-agent: ClaudeBot # Anthropic citation botUser-agent: ClaudeBotAllow: /robots.txt does not support inline comments. # must be on its own line.
Cause B: Extra whitespace or a typo in the user-agent name.
User-agent: ClaudebotUser-agent: ClaudeBotUser-agent names are case-sensitive. ClaudeBot ≠ Claudebot.
Cause C: A Disallow: / lower in the file overrides the specific Allow.
User-agent: ClaudeBotAllow: / ← this works
User-agent: *Disallow: / ← but this doesn't override the above in most parsersTo be safe, place specific bot entries before the catch-all User-agent: * block.
6. WebSite schema found but score is still low
Section titled “6. WebSite schema found but score is still low”Cause: WebSite schema is the baseline (worth 2 points in v3.18+). The biggest GEO impact comes from FAQPage schema, which is worth 3 points and directly feeds into AI-generated answers. Brand & Entity Signals (10 pts new in v3.18.2) are also a major opportunity.
Fix: Add FAQPage schema to pages with Q&A content:
# Option 1: generate from a JSON filegeo schema --type faq --faq-file faqs.json --file page.html --inject
# Option 2: generate and print to copy manuallygeo schema --type faq --faq-file faqs.jsonAlso ensure your sameAs links are in place — they now feed brand_kg_readiness (3 pts):
{ "@type": "Organization", "sameAs": [ "https://www.linkedin.com/company/yourcompany", "https://en.wikipedia.org/wiki/YourCompany" ]}See Schema Injector and FAQPage best practices.
7. sitemap.xml returns 404
Section titled “7. sitemap.xml returns 404”Cause: Your sitemap is not at the standard /sitemap.xml path, or hasn’t been generated.
Fix — find your sitemap:
# Check robots.txt for Sitemap: directivecurl https://yoursite.com/robots.txt | grep -i sitemap
# Try common WordPress pathscurl -I https://yoursite.com/sitemap_index.xmlcurl -I https://yoursite.com/wp-sitemap.xmlcurl -I https://yoursite.com/post-sitemap.xml
# Try common Next.js / Astro pathscurl -I https://yoursite.com/server-sitemap.xmlcurl -I https://yoursite.com/sitemap-0.xmlOnce found, pass it explicitly:
geo llms \ --base-url https://yoursite.com \ --sitemap https://yoursite.com/wp-sitemap.xmlFix — generate a sitemap:
If you have no sitemap at all, generate one first. For Astro, use @astrojs/sitemap. For Next.js, use next-sitemap. For WordPress, use the Yoast SEO plugin. For generic sites, use an online tool or xml-sitemaps.com.
8. Timeout error on --url
Section titled “8. Timeout error on --url”Cause: The target site is slow to respond, or temporarily unreachable.
⚠️ Note:
--verboseis not yet implemented — it currently has no effect.
Common fixes:
# Test if the site is reachablecurl -I https://yoursite.com
# Test from a different network or VPN if you suspect IP blocking# Check if the site returns 200 or a redirect chain (3xx)curl -L -I https://yoursite.comIf the site consistently times out, wait a few minutes and retry. The audit does not cache results between CLI invocations.
9. inject failed: no <head> tag
Section titled “9. inject failed: no <head> tag”Cause: The HTML file passed to --inject does not have a standard </head> closing tag, which the injector uses as the insertion point.
Fix — manual injection:
Open your HTML file and add the schema block manually, just before the closing </head> tag:
<!-- GEO Schema --> <script type="application/ld+json"> { "@context": "https://schema.org", "@type": "FAQPage", "mainEntity": [...] } </script></head>Generate the schema JSON first (without --inject):
geo schema --type faq --faq-file faqs.jsonCopy the output and paste it manually into your file.
Alternative: If your file is a template (Jinja2, Twig, PHP), add the schema to the base layout where the </head> tag lives.
10. Install on Windows
Section titled “10. Install on Windows”Issue: geo-optimizer-skill is a standard Python package and installs via pip on any platform, including Windows.
Solution: Install with pip
pip install geo-optimizer-skillgeo audit --url https://yoursite.comIf you need to use a virtual environment (recommended):
python -m venv .venv.venv\Scripts\activatepip install geo-optimizer-skillgeo audit --url https://yoursite.comAlternative: WSL2 (Windows Subsystem for Linux)
If you prefer a Linux environment:
# Run in PowerShell as Administratorwsl --installAfter WSL2 installs and you restart:
# Inside the WSL terminal (Ubuntu by default)pip install geo-optimizer-skillgeo audit --url https://yoursite.comWSL2 gives you a full Linux environment. Python 3.9+ is included by default in Ubuntu 22.04+.