@canonry/canonry 4.177.1 → 4.177.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -72,21 +72,17 @@ sync flow does NOT echo the private key back in any response.
|
|
|
72
72
|
## Connecting a WordPress source
|
|
73
73
|
|
|
74
74
|
The WordPress adapter pulls events from the **Canonry Traffic Logger**
|
|
75
|
-
WordPress plugin, which captures
|
|
76
|
-
|
|
77
|
-
Application Password.
|
|
78
|
-
|
|
79
|
-
> **Cache blind spot.**
|
|
80
|
-
>
|
|
81
|
-
>
|
|
82
|
-
>
|
|
83
|
-
>
|
|
84
|
-
>
|
|
85
|
-
>
|
|
86
|
-
> views go uncounted. Exclude AI user-agents from the cache (and any
|
|
87
|
-
> CDN), or capture from access/edge logs instead. The
|
|
88
|
-
> `traffic.source.cache-blindspot` doctor check warns whenever a
|
|
89
|
-
> WordPress source is connected.
|
|
75
|
+
WordPress plugin, which is PHP-only: it captures non-admin GET page-loads
|
|
76
|
+
**that reach PHP** and exposes a paginated REST endpoint protected by an
|
|
77
|
+
Application Password. It has no browser-side capture path.
|
|
78
|
+
|
|
79
|
+
> **Cache blind spot.** Cache-served requests never execute PHP, so they
|
|
80
|
+
> produce no plugin event. A full-page cache (LiteSpeed, WP Rocket, W3 Total
|
|
81
|
+
> Cache, WP Super Cache) or any CDN can therefore make the source look active
|
|
82
|
+
> while real page views, AI crawlers, and live AI user-fetches such as
|
|
83
|
+
> `Claude-User` and `ChatGPT-User` go uncounted. To use this source for
|
|
84
|
+
> AI-agent traffic, bypass **every** cache layer for the selected AI user
|
|
85
|
+
> agents, or capture from access/edge logs instead.
|
|
90
86
|
|
|
91
87
|
**Which user-agents to exclude from the cache** (one per line in
|
|
92
88
|
LiteSpeed's "Do Not Cache User Agents", WP Rocket's
|
|
@@ -94,23 +90,61 @@ LiteSpeed's "Do Not Cache User Agents", WP Rocket's
|
|
|
94
90
|
Agents"):
|
|
95
91
|
|
|
96
92
|
```
|
|
97
|
-
Claude-User
|
|
98
|
-
ClaudeBot
|
|
99
|
-
ChatGPT-User
|
|
100
|
-
OAI-SearchBot
|
|
101
93
|
GPTBot
|
|
94
|
+
OAI-SearchBot
|
|
95
|
+
OAI-AdsBot
|
|
96
|
+
ChatGPT-User
|
|
97
|
+
openai-mcp
|
|
98
|
+
ClaudeBot
|
|
99
|
+
Claude-
|
|
100
|
+
anthropic-ai
|
|
102
101
|
PerplexityBot
|
|
103
102
|
Perplexity-User
|
|
103
|
+
ShapBot
|
|
104
|
+
Shap-User
|
|
105
|
+
Google-Agent
|
|
106
|
+
Google-GeminiNotebook
|
|
107
|
+
Google-NotebookLM
|
|
108
|
+
Google-CloudVertexBot
|
|
109
|
+
Bytespider
|
|
110
|
+
Applebot
|
|
111
|
+
meta-externalagent
|
|
112
|
+
CCBot
|
|
113
|
+
cohere-ai
|
|
114
|
+
Diffbot
|
|
115
|
+
MistralAI-User
|
|
116
|
+
MistralAI-Index
|
|
117
|
+
MistralAI-Training
|
|
118
|
+
MistralBot
|
|
119
|
+
DeepSeekBot
|
|
120
|
+
xAI-Bot
|
|
121
|
+
Grok-Bot
|
|
122
|
+
GrokBot
|
|
123
|
+
YouBot
|
|
124
|
+
DuckAssistBot
|
|
125
|
+
Amazonbot
|
|
126
|
+
Amzn-SearchBot
|
|
127
|
+
Amzn-User
|
|
104
128
|
```
|
|
105
129
|
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
130
|
+
This list mirrors Canonry's current classifier: answer-engine user-fetch,
|
|
131
|
+
crawl, search, and training agents for which WordPress has no cache-independent
|
|
132
|
+
measurement surface. `ClaudeBot` covers Anthropic's unhyphenated core crawler;
|
|
133
|
+
`Claude-` is a separate family rule so newly named `Claude-*Bot` variants
|
|
134
|
+
inherit the bypass. Do NOT add traditional search agents
|
|
135
|
+
`Googlebot`, `bingbot`, `DuckDuckBot`, `YandexBot`, or `Baiduspider`: caching
|
|
136
|
+
helps them crawl efficiently, and the important Google/Bing crawl evidence is
|
|
137
|
+
available through their webmaster tools.
|
|
138
|
+
|
|
139
|
+
> **1.1.0 -> 1.1.1 measurement boundary.** Plugin 1.1.0 briefly added a
|
|
140
|
+
> JavaScript beacon to recover browser/referral page views served from cache.
|
|
141
|
+
> Plugin 1.1.1 removes it and returns to PHP-only capture. This intentionally
|
|
142
|
+
> means cache-served browser referrals can again be absent even when GA4
|
|
143
|
+
> reports sessions; neither version made cache-served crawler requests visible
|
|
144
|
+
> to PHP. Annotate the upgrade time, do not interpret a trend spanning it as
|
|
145
|
+
> like-for-like traffic, and purge HTML from both the WordPress cache and every
|
|
146
|
+
> outer CDN. A temporary `/wp-json/canonry/v1/pv` compatibility route returns
|
|
147
|
+
> `204` for scripts stranded in old cached HTML, but never records an event.
|
|
114
148
|
|
|
115
149
|
```bash
|
|
116
150
|
# 1. Install the plugin. Download the latest release zip from the
|
|
@@ -978,7 +1012,7 @@ The doctor checks are adapter-agnostic. When they fail or warn:
|
|
|
978
1012
|
| `traffic.source.queue-backlog` | `traffic.queue-backlog.within-drain-budget` | 1–1,000 Queue messages remain. If no new messages arrive, the next scheduled sync can drain them. Run a manual sync to accelerate. |
|
|
979
1013
|
| `traffic.source.queue-backlog` | `traffic.queue-backlog.remaining` | More than 1,000 Queue messages remain. Run a manual sync. If the backlog persists, shorten the traffic-sync schedule. |
|
|
980
1014
|
| `traffic.source.credentials` | `traffic.credentials.resolve-failed` | Reconnect from the host that owns the source credentials. Queue pull requires a non-empty Account Queues Edit token paired by source ID. |
|
|
981
|
-
| `traffic.source.cache-blindspot` | `traffic.cache-blindspot.wordpress-plugin` |
|
|
1015
|
+
| `traffic.source.cache-blindspot` | `traffic.cache-blindspot.wordpress-plugin` | Cache-served requests never execute PHP and produce no event, so a source can look active while real page views go uncounted. Exclude selected AI user agents from every page-cache and CDN layer, or switch to a log/edge source. Warns only, not a failure. |
|
|
982
1016
|
| `traffic.source.worker-version` | `traffic.worker-version.waiting-for-first-event` | Send a smoke-test request through the Worker. For Queue delivery, run a sync to ingest it. Then run the doctor again. |
|
|
983
1017
|
| `traffic.source.worker-version` | `traffic.worker-version.stale` | Regenerate and redeploy the Worker from the credential-owning host with the source's existing delivery mode, then verify the route or Queue binding. |
|
|
984
1018
|
|
|
@@ -1043,21 +1077,18 @@ domains, or PII are surfaced.
|
|
|
1043
1077
|
|
|
1044
1078
|
## Limits & caveats
|
|
1045
1079
|
|
|
1046
|
-
- **The WordPress plugin is
|
|
1047
|
-
|
|
1048
|
-
|
|
1049
|
-
|
|
1050
|
-
|
|
1051
|
-
|
|
1052
|
-
|
|
1053
|
-
|
|
1054
|
-
|
|
1055
|
-
`
|
|
1056
|
-
|
|
1057
|
-
|
|
1058
|
-
every request that reaches the service, missing only what a CDN placed
|
|
1059
|
-
in front of Cloud Run serves from its own edge cache. Only the
|
|
1060
|
-
hook-based `wordpress` adapter has the always-present blind spot.
|
|
1080
|
+
- **The WordPress plugin is PHP-only.** The `wordpress` adapter records only
|
|
1081
|
+
requests that reach PHP. Cache-served page requests, including AI crawlers
|
|
1082
|
+
and live AI user-fetches, go uncounted even while crawls of uncached
|
|
1083
|
+
sitemaps, assets, or cache misses appear. On a cached WordPress site, treat
|
|
1084
|
+
this source as a floor unless the selected AI user agents bypass every
|
|
1085
|
+
page-cache and CDN layer. The static doctor warning surfaces this limitation
|
|
1086
|
+
without requesting the origin. Otherwise, use a cache-independent
|
|
1087
|
+
`cloud-run`, `vercel`, or edge-log source. Adapter coverage
|
|
1088
|
+
differs: `vercel` ingests edge request logs so cache hits are captured (it
|
|
1089
|
+
records the `cache` HIT/MISS label), and `cloud-run` logs every request that
|
|
1090
|
+
reaches the service, missing only what a CDN ahead of Cloud Run serves at its
|
|
1091
|
+
own edge.
|
|
1061
1092
|
- **Path-level citation cross-reference is not implemented yet.** The
|
|
1062
1093
|
citation store is domain-grain (`query_snapshots.cited_domains`). A
|
|
1063
1094
|
future iteration that lands URL-grain citation evidence will extend
|
|
@@ -1078,17 +1109,21 @@ domains, or PII are surfaced.
|
|
|
1078
1109
|
`traffic_sources.source_type` and a `TrafficSourceValidator`
|
|
1079
1110
|
registration.
|
|
1080
1111
|
|
|
1081
|
-
### Page caches and
|
|
1082
|
-
|
|
1083
|
-
A page cache (LiteSpeed, WP Rocket, Super Cache, any
|
|
1084
|
-
drop-in)
|
|
1085
|
-
|
|
1086
|
-
|
|
1087
|
-
|
|
1088
|
-
|
|
1089
|
-
|
|
1090
|
-
|
|
1091
|
-
|
|
1092
|
-
|
|
1093
|
-
|
|
1094
|
-
|
|
1112
|
+
### Page caches and PHP-only coverage
|
|
1113
|
+
|
|
1114
|
+
A page cache (LiteSpeed, WP Rocket, Super Cache, or any
|
|
1115
|
+
`advanced-cache.php` drop-in) can serve a request before WordPress boots. The
|
|
1116
|
+
plugin therefore has one capture lane only: PHP. It cannot recover a
|
|
1117
|
+
cache-served crawler, user fetch, referral, or browser page view after the
|
|
1118
|
+
fact.
|
|
1119
|
+
|
|
1120
|
+
For the AI agents measured by this source, configure cache bypasses at every
|
|
1121
|
+
layer that can answer the public request: the WordPress cache, a host/CDN cache,
|
|
1122
|
+
and any edge cache. A LiteSpeed exclusion alone is insufficient when an outer
|
|
1123
|
+
CDN can return a cached response first.
|
|
1124
|
+
|
|
1125
|
+
Cache exclusions for the selected AI agents can recover crawler and user-fetch
|
|
1126
|
+
coverage, but they do not recover ordinary browser referrals served from cache.
|
|
1127
|
+
Use GA4 for landed browser visits or edge/access logs for cache-independent
|
|
1128
|
+
request coverage. The `traffic.source.cache-blindspot` doctor check is a static
|
|
1129
|
+
warning; it does not request or impersonate traffic against the public origin.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@canonry/canonry",
|
|
3
|
-
"version": "4.177.
|
|
3
|
+
"version": "4.177.2",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "Self-hosted AI visibility (AEO) platform: track how ChatGPT, Claude, Gemini, and Perplexity cite your domain, join it with Search Console, GA4, server-side traffic, and paid media, and fix what you find through agent tools (CLI, REST, MCP). Local SQLite.",
|
|
6
6
|
"license": "FSL-1.1-ALv2",
|
|
@@ -70,31 +70,31 @@
|
|
|
70
70
|
"@types/node-cron": "^3.0.11",
|
|
71
71
|
"tsup": "^8.5.1",
|
|
72
72
|
"tsx": "^4.19.0",
|
|
73
|
-
"@ainyc/canonry-api-
|
|
73
|
+
"@ainyc/canonry-api-client": "0.0.0",
|
|
74
74
|
"@ainyc/canonry-contracts": "0.0.0",
|
|
75
|
+
"@ainyc/canonry-api-routes": "0.0.0",
|
|
75
76
|
"@ainyc/canonry-config": "0.0.0",
|
|
76
|
-
"@ainyc/canonry-api-client": "0.0.0",
|
|
77
77
|
"@ainyc/canonry-db": "0.0.0",
|
|
78
78
|
"@ainyc/canonry-integration-bing": "0.0.0",
|
|
79
|
-
"@ainyc/canonry-integration-cloud-run": "0.0.0",
|
|
80
|
-
"@ainyc/canonry-integration-cloudflare-queue": "0.0.0",
|
|
81
79
|
"@ainyc/canonry-integration-cloudflare-worker": "0.0.0",
|
|
82
|
-
"@ainyc/canonry-integration-
|
|
80
|
+
"@ainyc/canonry-integration-cloudflare-queue": "0.0.0",
|
|
81
|
+
"@ainyc/canonry-integration-cloud-run": "0.0.0",
|
|
83
82
|
"@ainyc/canonry-integration-google": "0.0.0",
|
|
83
|
+
"@ainyc/canonry-integration-commoncrawl": "0.0.0",
|
|
84
84
|
"@ainyc/canonry-integration-google-ads": "0.0.0",
|
|
85
|
-
"@ainyc/canonry-integration-google-places": "0.0.0",
|
|
86
85
|
"@ainyc/canonry-integration-google-business-profile": "0.0.0",
|
|
86
|
+
"@ainyc/canonry-integration-google-places": "0.0.0",
|
|
87
87
|
"@ainyc/canonry-integration-google-tag-manager": "0.0.0",
|
|
88
|
-
"@ainyc/canonry-integration-wordpress": "0.0.0",
|
|
89
88
|
"@ainyc/canonry-integration-openai-ads": "0.0.0",
|
|
90
|
-
"@ainyc/canonry-integration-
|
|
89
|
+
"@ainyc/canonry-integration-wordpress": "0.0.0",
|
|
91
90
|
"@ainyc/canonry-intelligence": "0.0.0",
|
|
91
|
+
"@ainyc/canonry-provider-claude": "0.0.0",
|
|
92
92
|
"@ainyc/canonry-provider-cdp": "0.0.0",
|
|
93
|
-
"@ainyc/canonry-provider-gemini": "0.0.0",
|
|
94
93
|
"@ainyc/canonry-provider-local": "0.0.0",
|
|
95
94
|
"@ainyc/canonry-provider-openai": "0.0.0",
|
|
96
|
-
"@ainyc/canonry-provider-
|
|
97
|
-
"@ainyc/canonry-provider-perplexity": "0.0.0"
|
|
95
|
+
"@ainyc/canonry-provider-gemini": "0.0.0",
|
|
96
|
+
"@ainyc/canonry-provider-perplexity": "0.0.0",
|
|
97
|
+
"@ainyc/canonry-integration-traffic": "0.0.0"
|
|
98
98
|
},
|
|
99
99
|
"scripts": {
|
|
100
100
|
"build": "tsx scripts/copy-agent-assets.ts && tsup && tsx build-web.ts",
|