install
source · Clone the upstream repo
git clone https://github.com/openclaw/skills
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/openclaw/skills "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/arberx/canonry" ~/.claude/skills/clawdbot-skills-canonry && rm -rf "$T"
manifest:
skills/arberx/canonry/SKILL.mdsource content
Canonry
Open-source AEO (Answer Engine Optimization) monitoring platform. Track how AI answer engines cite your domain across Gemini, ChatGPT, Claude, and Perplexity.
Website: ainyc.ai | Docs: github.com/AINYC/canonry
When to Use
- Tracking keyphrase citations across AI providers
- Running technical SEO audits (14‑factor scoring)
- Implementing structured data (JSON‑LD)
- Diagnosing indexing gaps via Google Search Console / Bing Webmaster Tools
- Optimizing
, sitemaps, robots.txt for AI crawlersllms.txt - Submitting URLs to Google Indexing API and Bing IndexNow
- Analyzing competitor citation patterns
Core Philosophy
- Measure outcomes — AI models are black boxes; track citations, don't assume causality
- Signal over noise — Focus on high‑intent queries; avoid granular targeting until base visibility exists
- CLI‑native — API‑driven changes over manual CMS clicks; faster, repeatable, auditable
Toolchain
canonry (AEO Monitoring)
# List projects canonry project list # Run a sweep (all providers) canonry run <project> --wait # Check per‑phrase citation status canonry evidence <project> # Show latest run summary canonry status <project> # Add/remove keyphrases canonry keyword add <project> "polyurea roof coating" canonry keyword remove <project> "best roof coating for a warehouse" # Submit URLs to Bing canonry bing request-indexing <project> <url> # Submit to Google Indexing API canonry google request-indexing <project> <url>
aeo-audit (Technical SEO Analysis)
# Run audit (JSON output) npx @ainyc/aeo-audit@latest "https://example.com" --format json # 14‑factor scoring includes: # - Structured Data (JSON‑LD) # - Content Depth # - AI‑Readable Content (llms.txt, llms‑full.txt) # - E‑E‑A‑T Signals # - FAQ Content # - Citations & Authority Signals # - Definition Blocks # - Technical SEO (H1, alt text, meta)
Google Search Console / Bing WMT
# GSC coverage summary canonry google coverage <project> # Bing coverage summary canonry bing coverage <project> # Force refresh cached data canonry google refresh <project> canonry bing refresh <project>
Workflow
1. Diagnose
# Baseline AEO visibility canonry run <project> --wait canonry evidence <project> # Technical SEO audit npx @ainyc/aeo-audit@latest "https://client.com" --format json > audit.json
2. Prioritize
Gaps sorted by impact:
- Missing H1 → immediate content patch
- No structured data → JSON‑LD injection
- Thin content → definition blocks ("What is…")
- County‑level targeting → refine after base visibility
- E‑E‑A‑T signals → Person schema, author tags (needs client input)
3. Execute
- Schema injection: LocalBusiness + FAQPage JSON‑LD via site‑appropriate method (Elementor Custom Code, theme hooks, etc.)
- Content patches: H1, meta title/description, image alt text via REST API or CMS
- AI‑readable files: Upload
,llms.txt
to site rootllms‑full.txt - Indexing requests: Submit all URLs to Google Indexing API + Bing IndexNow
- Keyphrase strategy: Trim to 8‑12 high‑intent queries; remove noise
4. Monitor
- Weekly canonry sweeps to track citation changes
- Correlate visibility shifts with deployment dates
- Watch for competitor displacement in keyphrases
5. Report
Clear, data‑first summaries:
“Lost
on Gemini — two competitors moved in. Here’s what to fix.”emergency dentist brooklyn
Common Patterns
New Site (0 citations)
- Focus on indexing first: submit sitemap to GSC/Bing, request indexing
- Implement base schema (LocalBusiness, Service)
- Create
with service‑area detailsllms.txt - Trim keyphrases to 8‑12 core queries
- Expect 4‑8 weeks for first citations
Established Site (regression)
- Compare canonry runs to identify when loss occurred
- Check for recent competitor content or site changes
- Validate schema is still present and error‑free
- Re‑submit affected URLs to indexing APIs
County‑Level Targeting
# Service areas in llms.txt / schema Michigan: - Oakland County (Troy, Auburn Hills, Pontiac) - Macomb County (Sterling Heights, Shelby Township) - Wayne County (Detroit, Dearborn) - Lapeer County (HQ: Almont) Florida: - Miami‑Dade County (Miami, Coral Gables) - Broward County (Fort Lauderdale, Hollywood) - Palm Beach County (West Palm Beach, Boca Raton)
- Reference counties in schema
andareaServedllms.txt - Do not create separate keyphrases per county until base visibility exists
WordPress/Elementor Specifics
- REST API user with Application Passwords (
)/wp‑json/wp/v2/ - Elementor data patched via
meta field_elementor_data - Schema injection via Elementor Pro Custom Code (
CPT)elementor_snippet - Yoast SEO title/description fields often NOT REST‑writable → manual WP Admin edit
may be hidden (security plugin) → file uploads require manual WP File Managerwp‑login.php
Example: Full AEO Audit + Action Plan
# 1. Audit npx @ainyc/aeo-audit@latest "https://client.com" --format json > audit.json # 2. Parse score cat audit.json | jq '.overallScore, .overallGrade' # 3. Check AEO baseline canonry status client-project canonry evidence client-project # 4. Generate action list cat audit.json | jq -r '.factors[] | select(.score < 70) | "- \(.name): \(.score)/100 (\(.grade)) - \(.recommendations[0])"'
Boundaries & Safety
- Never touch live WordPress without explicit approval
- Back up
before any config edit~/.canonry/config.yaml - Never fabricate citation data — if a sweep hasn’t run, say so
- Client data stays private — canonry repo is public; no real domains in issues
- Respect API rate limits — batch operations, avoid tight loops
Tools: canonry v1.37+, @ainyc/aeo‑audit v1.3+
Website: ainyc.ai | Reference: AINYC AEO Methodology