crawlmark-mcp 0.0.0-stage → 0.1.1

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.
Files changed (216) hide show
  1. package/.env.example +177 -0
  2. package/LICENSE +21 -0
  3. package/README.md +748 -2
  4. package/config/clients.example.yaml +66 -0
  5. package/dist/ai-visibility.js +122 -0
  6. package/dist/analysis/ai-crawlers.js +90 -0
  7. package/dist/analysis/alerts.js +61 -0
  8. package/dist/analysis/bing.js +258 -0
  9. package/dist/analysis/bots.js +43 -0
  10. package/dist/analysis/brand-terms.js +495 -0
  11. package/dist/analysis/branded.js +49 -0
  12. package/dist/analysis/cidr.js +85 -0
  13. package/dist/analysis/competitor-suggestions.js +220 -0
  14. package/dist/analysis/crawl-parse.js +57 -0
  15. package/dist/analysis/crawl.js +168 -0
  16. package/dist/analysis/crux.js +110 -0
  17. package/dist/analysis/ctr-curve.js +44 -0
  18. package/dist/analysis/diff.js +102 -0
  19. package/dist/analysis/extract-isolated.js +69 -0
  20. package/dist/analysis/extract-worker.js +20 -0
  21. package/dist/analysis/findings.js +284 -0
  22. package/dist/analysis/gsc-pages-export.js +482 -0
  23. package/dist/analysis/gtm.js +246 -0
  24. package/dist/analysis/hreflang.js +137 -0
  25. package/dist/analysis/hygiene-parse.js +106 -0
  26. package/dist/analysis/hygiene.js +127 -0
  27. package/dist/analysis/indexing.js +249 -0
  28. package/dist/analysis/keyword-gap.js +61 -0
  29. package/dist/analysis/llms-txt.js +216 -0
  30. package/dist/analysis/logs.js +190 -0
  31. package/dist/analysis/opportunities.js +264 -0
  32. package/dist/analysis/ranks.js +58 -0
  33. package/dist/analysis/render-extract.js +142 -0
  34. package/dist/analysis/render.js +76 -0
  35. package/dist/analysis/robots.js +154 -0
  36. package/dist/analysis/structured-data.js +101 -0
  37. package/dist/analysis/tech-issues.js +182 -0
  38. package/dist/brand-inference.js +107 -0
  39. package/dist/brand-terms.js +72 -0
  40. package/dist/cli-help.js +415 -0
  41. package/dist/cli.js +813 -0
  42. package/dist/clients.js +533 -0
  43. package/dist/competitors.js +165 -0
  44. package/dist/config.js +156 -0
  45. package/dist/crawl-cli.js +80 -0
  46. package/dist/data-cli.js +36 -0
  47. package/dist/index-coverage-cli.js +96 -0
  48. package/dist/index.js +24 -0
  49. package/dist/lib/atomic-file.js +25 -0
  50. package/dist/lib/audits.js +59 -0
  51. package/dist/lib/brand.js +171 -0
  52. package/dist/lib/budget.js +215 -0
  53. package/dist/lib/cache.js +46 -0
  54. package/dist/lib/chrome.js +50 -0
  55. package/dist/lib/claude-config.js +193 -0
  56. package/dist/lib/client-lists.js +146 -0
  57. package/dist/lib/clients-file.js +219 -0
  58. package/dist/lib/clients.js +689 -0
  59. package/dist/lib/codex-config.js +252 -0
  60. package/dist/lib/competitor-denylist.js +107 -0
  61. package/dist/lib/concurrency.js +14 -0
  62. package/dist/lib/country.js +57 -0
  63. package/dist/lib/crawls.js +50 -0
  64. package/dist/lib/dates.js +76 -0
  65. package/dist/lib/egress-proxy.js +292 -0
  66. package/dist/lib/entry.js +39 -0
  67. package/dist/lib/env-file.js +117 -0
  68. package/dist/lib/env.js +102 -0
  69. package/dist/lib/gbp-candidates.js +20 -0
  70. package/dist/lib/google-access.js +65 -0
  71. package/dist/lib/google-auth.js +308 -0
  72. package/dist/lib/gtm.js +166 -0
  73. package/dist/lib/home.js +55 -0
  74. package/dist/lib/inspections.js +149 -0
  75. package/dist/lib/issue-snapshots.js +79 -0
  76. package/dist/lib/log-files.js +294 -0
  77. package/dist/lib/migrate.js +89 -0
  78. package/dist/lib/name-parts.js +65 -0
  79. package/dist/lib/pages-exports.js +34 -0
  80. package/dist/lib/paths.js +14 -0
  81. package/dist/lib/provider-data.js +116 -0
  82. package/dist/lib/provider-ids.js +60 -0
  83. package/dist/lib/rank-history.js +129 -0
  84. package/dist/lib/rate.js +38 -0
  85. package/dist/lib/read-regular-file.js +45 -0
  86. package/dist/lib/snapshots.js +156 -0
  87. package/dist/lib/spend.js +32 -0
  88. package/dist/lib/store.js +374 -0
  89. package/dist/lib/terminal-links.js +151 -0
  90. package/dist/lib/terminal-text.js +19 -0
  91. package/dist/lib/timeout.js +76 -0
  92. package/dist/lib/token-store.js +43 -0
  93. package/dist/lib/ulid.js +17 -0
  94. package/dist/lib/update-check.js +252 -0
  95. package/dist/lib/url-guard.js +193 -0
  96. package/dist/lib/usage.js +55 -0
  97. package/dist/lib/vendor-mcp.js +155 -0
  98. package/dist/lib/webhook.js +40 -0
  99. package/dist/lib/win-quote.js +25 -0
  100. package/dist/lib/zip-read.js +98 -0
  101. package/dist/local-seo.js +353 -0
  102. package/dist/logs-cli.js +36 -0
  103. package/dist/prompts/index.js +175 -0
  104. package/dist/prompts/templates/audit-findings.md +18 -0
  105. package/dist/prompts/templates/build-report-template.md +12 -0
  106. package/dist/prompts/templates/client-health-check.md +10 -0
  107. package/dist/prompts/templates/find-competitors.md +17 -0
  108. package/dist/prompts/templates/getting-started.md +18 -0
  109. package/dist/prompts/templates/keyword-research.md +14 -0
  110. package/dist/prompts/templates/monthly-report-writeup.md +22 -0
  111. package/dist/prompts/templates/opportunity-review.md +23 -0
  112. package/dist/prompts/templates/review-brand-terms.md +11 -0
  113. package/dist/prompts/templates/template-report.md +14 -0
  114. package/dist/providers/ahrefs-shape.js +401 -0
  115. package/dist/providers/ahrefs-site-audit.js +116 -0
  116. package/dist/providers/ahrefs.js +532 -0
  117. package/dist/providers/axe.js +55 -0
  118. package/dist/providers/bing.js +305 -0
  119. package/dist/providers/browser.js +187 -0
  120. package/dist/providers/crawler-ipranges.js +75 -0
  121. package/dist/providers/crawler.js +411 -0
  122. package/dist/providers/crux.js +127 -0
  123. package/dist/providers/dataforseo-shape.js +446 -0
  124. package/dist/providers/dataforseo.js +629 -0
  125. package/dist/providers/discovery.js +69 -0
  126. package/dist/providers/ga4.js +90 -0
  127. package/dist/providers/google-login.js +122 -0
  128. package/dist/providers/google-oauth-client.js +70 -0
  129. package/dist/providers/google.js +194 -0
  130. package/dist/providers/gsc.js +208 -0
  131. package/dist/providers/gtm.js +164 -0
  132. package/dist/providers/lighthouse.js +107 -0
  133. package/dist/providers/render.js +263 -0
  134. package/dist/providers/semrush-shape.js +91 -0
  135. package/dist/providers/semrush.js +184 -0
  136. package/dist/providers/seo-data.js +368 -0
  137. package/dist/providers/units-billing.js +136 -0
  138. package/dist/ranks.js +286 -0
  139. package/dist/report-cli.js +376 -0
  140. package/dist/reports/ai-readiness.js +42 -0
  141. package/dist/reports/audit.js +174 -0
  142. package/dist/reports/branding-preview.js +121 -0
  143. package/dist/reports/branding-settings.js +210 -0
  144. package/dist/reports/export.js +183 -0
  145. package/dist/reports/gtm.js +27 -0
  146. package/dist/reports/highlights.js +180 -0
  147. package/dist/reports/indexing.js +304 -0
  148. package/dist/reports/local-crawl.js +157 -0
  149. package/dist/reports/log-analysis.js +146 -0
  150. package/dist/reports/monthly.js +206 -0
  151. package/dist/reports/opportunities.js +105 -0
  152. package/dist/reports/pages-import.js +251 -0
  153. package/dist/reports/paths.js +31 -0
  154. package/dist/reports/provider-sections.js +530 -0
  155. package/dist/reports/render/color.js +73 -0
  156. package/dist/reports/render/doc.js +175 -0
  157. package/dist/reports/render/docx.js +303 -0
  158. package/dist/reports/render/escape.js +53 -0
  159. package/dist/reports/render/html.js +350 -0
  160. package/dist/reports/render/image.js +35 -0
  161. package/dist/reports/render/markdown.js +100 -0
  162. package/dist/reports/render/narrative.js +75 -0
  163. package/dist/reports/render/pdf.js +40 -0
  164. package/dist/reports/render/sections.js +1114 -0
  165. package/dist/reports/render/svg.js +183 -0
  166. package/dist/reports/report-types.js +2 -0
  167. package/dist/reports/section.js +18 -0
  168. package/dist/reports/site-hygiene.js +548 -0
  169. package/dist/reports/technical-issues.js +231 -0
  170. package/dist/reports/template-preview.js +88 -0
  171. package/dist/reports/templates/builder.js +133 -0
  172. package/dist/reports/templates/builtin.js +186 -0
  173. package/dist/reports/templates/load.js +93 -0
  174. package/dist/reports/templates/new-cli.js +291 -0
  175. package/dist/reports/templates/period.js +148 -0
  176. package/dist/reports/templates/proposals.js +90 -0
  177. package/dist/reports/templates/run.js +742 -0
  178. package/dist/reports/templates/schema.js +394 -0
  179. package/dist/reports/templates/service.js +79 -0
  180. package/dist/reports/templates/write.js +688 -0
  181. package/dist/scheduled.js +224 -0
  182. package/dist/seo-snapshot-cli.js +101 -0
  183. package/dist/server.js +92 -0
  184. package/dist/setup/apps.js +415 -0
  185. package/dist/setup/banner.js +48 -0
  186. package/dist/setup/branding-step.js +192 -0
  187. package/dist/setup/checks.js +47 -0
  188. package/dist/setup/cli-setup.js +347 -0
  189. package/dist/setup/menu.js +81 -0
  190. package/dist/setup/prompter.js +273 -0
  191. package/dist/setup/status-providers.js +176 -0
  192. package/dist/setup/status-render.js +128 -0
  193. package/dist/setup/status.js +474 -0
  194. package/dist/setup/try-asking.js +47 -0
  195. package/dist/setup/ui-clack.js +205 -0
  196. package/dist/setup/ui.js +121 -0
  197. package/dist/setup/vendor-mcp-step.js +339 -0
  198. package/dist/setup/wizard.js +950 -0
  199. package/dist/tools/ai-visibility.js +30 -0
  200. package/dist/tools/bing.js +32 -0
  201. package/dist/tools/brand.js +62 -0
  202. package/dist/tools/competitors.js +226 -0
  203. package/dist/tools/crawl.js +92 -0
  204. package/dist/tools/gtm.js +22 -0
  205. package/dist/tools/index-import.js +47 -0
  206. package/dist/tools/local.js +65 -0
  207. package/dist/tools/logs.js +51 -0
  208. package/dist/tools/opportunities.js +69 -0
  209. package/dist/tools/ranks.js +51 -0
  210. package/dist/tools/raw.js +231 -0
  211. package/dist/tools/report-template-write.js +263 -0
  212. package/dist/tools/reports.js +474 -0
  213. package/dist/tools/setup.js +19 -0
  214. package/dist/tools/util.js +59 -0
  215. package/dist/user-url.js +51 -0
  216. package/package.json +76 -4
package/.env.example ADDED
@@ -0,0 +1,177 @@
1
+ # Copy to .env in the config home (gitignored), or run `crawlmark-cli setup`, which writes it for you with mode 0600.
2
+ # Relative paths below resolve against the config home, not the working directory.
3
+ #
4
+ # Config home: CRAWLMARK_HOME if set; else the project root for a source checkout (a .git directory, src/ next to dist/,
5
+ # or an existing .env or config/clients.yaml there); else ~/.crawlmark. CRAWLMARK_HOME itself can't be set in this file
6
+ # (the file is found through it): set it in your shell or the MCP client's server env. `crawlmark-cli setup migrate --to <dir>`
7
+ # copies an existing home somewhere else.
8
+ # CRAWLMARK_HOME=~/.crawlmark
9
+
10
+ # Google (Search Console + GA4) is optional. Without it, DataForSEO, Lighthouse and axe still work.
11
+ # How the server signs in to Google: oauth or service_account. Leave unset to auto-detect:
12
+ # service_account if GOOGLE_APPLICATION_CREDENTIALS is set, else oauth if both OAuth client vars are set, else no Google.
13
+ # oauth: a person signs in once with `crawlmark-cli auth login`; the token is stored at DATA_DIR/google-token.json.
14
+ # service_account: uses the JSON key at GOOGLE_APPLICATION_CREDENTIALS (also for unattended jobs).
15
+ GOOGLE_AUTH_MODE=
16
+
17
+ # OAuth client of type "Desktop app" from Google Cloud > Google Auth Platform > Clients. Required in oauth mode.
18
+ GOOGLE_OAUTH_CLIENT_ID=
19
+ GOOGLE_OAUTH_CLIENT_SECRET=
20
+
21
+ # Path to a Google service-account JSON key. Required in service_account mode, ignored in oauth mode.
22
+ # Setting it turns on service_account mode when GOOGLE_AUTH_MODE is unset.
23
+ GOOGLE_APPLICATION_CREDENTIALS=
24
+
25
+ # DataForSEO API credentials from https://app.dataforseo.com/api-access (the API password, not the account password).
26
+ # Needed for paid tools. `crawlmark-cli setup --step dataforseo` checks them for free and saves them.
27
+ DATAFORSEO_LOGIN=your-login@example.com
28
+ DATAFORSEO_PASSWORD=your-api-password
29
+
30
+ # Sandbox is free and returns fake data. Use https://api.dataforseo.com/v3 for real data.
31
+ DATAFORSEO_BASE_URL=https://sandbox.dataforseo.com/v3
32
+ # Alternative to the URL: DATAFORSEO_LIVE=true selects the live API when DATAFORSEO_BASE_URL is unset (the Claude Desktop bundle uses this).
33
+ # DATAFORSEO_LIVE=false
34
+
35
+ # Default provider for paid keyword, ranking, competitor and backlink data: dataforseo, ahrefs or semrush (any case).
36
+ # Blank means dataforseo. An unknown value doesn't stop the server; setup_status and every paid call report it.
37
+ # A client's dataProvider in clients.yaml overrides it. Live SERPs, on-page checks and crawls always use DataForSEO.
38
+ # `crawlmark-cli setup --step provider` sets it.
39
+ SEO_DATA_PROVIDER=
40
+
41
+ # Ahrefs API v3 key (optional): keyword volumes, rankings, competitors and backlinks from Ahrefs instead of DataForSEO.
42
+ # Needs the Lite plan or higher. Create it under Account settings > API keys (https://app.ahrefs.com/account/api-keys;
43
+ # only workspace owners and admins can open that page). `crawlmark-cli setup --step ahrefs` checks it for free and saves it.
44
+ AHREFS_API_KEY=
45
+ # Ahrefs API units crawlmark may use per calendar month (UTC), across all clients, and per client by default
46
+ # (a client's monthlyUnits.ahrefs in clients.yaml overrides the per-client value). Units are never converted to dollars.
47
+ AHREFS_MONTHLY_UNIT_CAP=50000
48
+ DEFAULT_CLIENT_MONTHLY_AHREFS_UNITS=10000
49
+
50
+ # Semrush (optional): keyword volume (v4 Get Keyword Metrics, 20 units per keyword) and backlinks (v4 overview) from Semrush.
51
+ # Semrush's v4 API has nothing else, so rankings, competitors and visibility come from DataForSEO or Ahrefs. The API needs
52
+ # a plan that includes API units (50,000 come with SEO Classic Pro and Guru, and Semrush One Starter and Pro+) or a bought
53
+ # unit package. SEMRUSH_API_KEY is a v4 key, from your profile > API keys; Semrush's older v3 keys aren't supported.
54
+ # Semrush has no free key check, so the key is checked by the first paid call. `crawlmark-cli setup --step semrush` saves it.
55
+ # (SEMRUSH_V4_API_KEY, the name 0.1.0 used for the v4 key, is still read and wins if both are set: in 0.1.0 SEMRUSH_API_KEY
56
+ # held the old v3 key. `setup --step semrush` saves SEMRUSH_API_KEY and removes SEMRUSH_V4_API_KEY.)
57
+ SEMRUSH_API_KEY=
58
+ # Semrush API units crawlmark may use per calendar month (UTC), across all clients, and per client by default
59
+ # (a client's monthlyUnits.semrush in clients.yaml overrides the per-client value).
60
+ SEMRUSH_MONTHLY_UNIT_CAP=20000
61
+ DEFAULT_CLIENT_MONTHLY_SEMRUSH_UNITS=5000
62
+
63
+ # Testing only (leave unset): point the Ahrefs, Semrush, CrUX and Bing clients at a local fake server. Read from the shell
64
+ # environment only; values in this file are ignored, and setup never writes them. https, or plain http to
65
+ # 127.0.0.1 / localhost / [::1] only; the server and `setup` print a stderr line while one is in use.
66
+ # AHREFS_BASE_URL=
67
+ # SEMRUSH_BASE_URL=
68
+ # CRUX_BASE_URL=
69
+ # BING_BASE_URL=
70
+ # CRAWLER_IPRANGES_BASE_URL=
71
+
72
+ # PageSpeed Insights API key (optional; adds real-user field data to lighthouse).
73
+ PSI_API_KEY=
74
+
75
+ # Chrome UX Report API key (optional): Core Web Vitals history for crux_history, the cwv report section and
76
+ # run_audit cruxHistory. A Google Cloud API key with the Chrome UX Report API enabled. Unset, PSI_API_KEY is tried
77
+ # (it works when its project has that API enabled). `crawlmark-cli setup --step crux` checks it for free and saves it.
78
+ CRUX_API_KEY=
79
+
80
+ # Bing Webmaster Tools API key (optional, free): bing_report and the bing_overview report section. In Bing Webmaster
81
+ # Tools: Settings > API Access > Generate API Key (one key per user, for all your verified sites). crawlmark only
82
+ # calls read methods with it. `crawlmark-cli setup --step bing` checks it for free and saves it.
83
+ BING_WEBMASTER_API_KEY=
84
+
85
+ # AI-search visibility (optional, PAID, off by default): ai_visibility and the ai_visibility report section, from
86
+ # DataForSEO's LLM Mentions API. $0.10 per request plus $0.001 per row (no request costs less than $0.10). DataForSEO has
87
+ # required a $100 monthly top-up for LLM Mentions access; its 2026-07-07 update says that was removed, so check your
88
+ # account first. The sandbox serves it free. Only "true" turns it on. Its own monthly cap across all clients (USD),
89
+ # checked on top of the client and global caps:
90
+ AI_VISIBILITY_ENABLED=
91
+ AI_VISIBILITY_MONTHLY_BUDGET_USD=2
92
+
93
+ # Google indexing (free): URL Inspection requests per Search Console property per Pacific-time day, for
94
+ # inspect_index_coverage, `crawlmark-cli index-coverage` and the indexing_issues report section (gsc_inspect_url and
95
+ # run_audit count too). Google allows 2,000 a day and 600 a minute per property; the defaults leave headroom for your
96
+ # other tools. Max 2000 and 600.
97
+ GSC_INSPECTION_DAILY_BUDGET=1000
98
+ GSC_INSPECTION_PER_MINUTE=60
99
+
100
+ # A stored provider snapshot (backlinks, keyword visibility, competitors) this many days old or newer is reused instead
101
+ # of a new paid call by the backlinks, organic_visibility and competitor_overview sections and tools and seo-snapshot;
102
+ # 0 always fetches. Max 31.
103
+ SNAPSHOT_REUSE_DAYS=7
104
+
105
+ # The client list. Discovered Search Console / GA4 domains are added to it automatically, and you can
106
+ # add your own (`crawlmark-cli clients add <domain>`). Created when first needed. See config/clients.example.yaml.
107
+ CLIENTS_FILE=./config/clients.yaml
108
+
109
+ # Defaults for discovered clients (and clients.yaml entries that leave these out).
110
+ # DataForSEO location code (2840 = United States) and language code.
111
+ DEFAULT_LOCATION_CODE=2840
112
+ DEFAULT_LANGUAGE_CODE=en
113
+ # Per-client monthly cap for paid data, in USD.
114
+ DEFAULT_CLIENT_MONTHLY_BUDGET_USD=5
115
+
116
+ # Extra rules for the suggest_competitors denylist (on top of the built-in list of social, review, marketplace,
117
+ # encyclopedia, video and big-box sites and .gov/.edu). A file with one rule per line (optional; gitignored by default)
118
+ # and/or a comma-separated list. Rules: domain.example (and subdomains), *.suffix, name.* (any short suffix), !domain (exempt).
119
+ COMPETITOR_DENYLIST_FILE=./config/competitor-denylist.txt
120
+ COMPETITOR_DENYLIST=
121
+
122
+ # Directory for the SQLite cache, spend ledger and Google OAuth token.
123
+ DATA_DIR=./data
124
+
125
+ # Report files written by export_report and `crawlmark-cli report` (<REPORTS_DIR>/<client>/<YYYY-MM>/), mode 0600.
126
+ # Templates live in config/report-templates.yaml; `crawlmark-cli report templates init` creates it.
127
+ REPORTS_DIR=./reports
128
+
129
+ # Server-log analysis (log_analysis): the directories it may read, comma-separated absolute paths, e.g.
130
+ # LOG_DIRS=/var/log/nginx,/var/log/apache2. The logs folder in the config home is always allowed. Unset (and no
131
+ # logs folder), log_analysis is unavailable; `crawlmark-cli logs <file>...` needs no setting. Logs are read on this
132
+ # machine only and never uploaded; IP addresses and user agents are never returned or stored.
133
+ LOG_DIRS=
134
+
135
+ # Search Console Pages report imports (import_index_report): the directories it may read exports from, comma-separated
136
+ # absolute paths, e.g. IMPORT_DIRS=/Users/me/Downloads. The imports folder in the config home is always allowed.
137
+ # `crawlmark-cli index-coverage import --client <domain> <file>` needs no setting. Files are parsed on this machine only.
138
+ IMPORT_DIRS=
139
+
140
+ # Hard monthly cap across all clients, in USD.
141
+ GLOBAL_MONTHLY_BUDGET_USD=50
142
+
143
+ # Optional: path to a Chrome/Chromium binary for Lighthouse and axe (read directly, not via config).
144
+ # CHROME_PATH=
145
+
146
+ # Chrome's sandbox is on by default. Set to true only where it cannot start (it is added automatically on Linux as root).
147
+ # CHROME_NO_SANDBOX=
148
+
149
+ # Set to true to let lighthouse, accessibility_check, render_check and audits reach loopback/private addresses
150
+ # (local development only). Without it, hostnames that resolve to such an address are refused, and headless Chrome's
151
+ # egress proxy blocks them for every request the page makes.
152
+ ALLOW_PRIVATE_URLS=
153
+
154
+ # Set to true to only accept URLs on a client domain (or a subdomain of one) from the client list, for lighthouse,
155
+ # accessibility_check, render_check, run_audit `urls` and every URL and redirect the local crawler (local_crawl) requests. Resources the page loads are not restricted (they still pass
156
+ # the private-address check). Values other than true/false are refused, so a typo never silently turns it off.
157
+ RESTRICT_TO_CLIENT_DOMAINS=
158
+
159
+ # Scheduled runs (crawlmark-cli check-traffic / audit / check-ranks): alert when non-branded clicks fall by at least this percent...
160
+ ALERT_TRAFFIC_DROP_PCT=25
161
+ # ...and by at least this many clicks (avoids alerts on tiny sites).
162
+ ALERT_MIN_CLICKS_LOST=50
163
+ # crawlmark-cli check-ranks --live: alert when a tracked keyword's live rank falls at least this many places
164
+ # (leaving the top 10 always alerts). Search Console averages never alert.
165
+ ALERT_RANK_DROP=5
166
+ # Optional incoming webhook (Slack-style) that gets {"text": "..."} when there are alerts. Must be https. Keep it secret.
167
+ ALERT_WEBHOOK_URL=
168
+
169
+ # Set to 1 to turn off the "Update available" check. Without it, `init`, `setup`, `--help` and `--version` ask the npm
170
+ # registry for crawlmark-mcp's latest version at most once a day (in a terminal only; never in CI, with --json, or from
171
+ # the MCP server). The request carries no query, headers or client data. NO_UPDATE_NOTIFIER=1 also turns it off.
172
+ CRAWLMARK_NO_UPDATE_CHECK=
173
+
174
+ # Testing the setup wizard only (leave unset): use this Claude Desktop config file and this `claude` binary
175
+ # instead of the real ones. Read from the shell environment only; values in this file are ignored.
176
+ # CRAWLMARK_CLAUDE_DESKTOP_CONFIG=
177
+ # CRAWLMARK_CLAUDE_BIN=
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Andrew Long
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.