crawlmark-mcp 0.0.0-stage → 0.1.0

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 (215) hide show
  1. package/.env.example +178 -0
  2. package/LICENSE +21 -0
  3. package/README.md +682 -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 +186 -0
  38. package/dist/brand-inference.js +107 -0
  39. package/dist/brand-terms.js +72 -0
  40. package/dist/cli-help.js +417 -0
  41. package/dist/cli.js +812 -0
  42. package/dist/clients.js +536 -0
  43. package/dist/competitors.js +165 -0
  44. package/dist/config.js +157 -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 +683 -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 +68 -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 +108 -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 +85 -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/webhook.js +40 -0
  98. package/dist/lib/win-quote.js +25 -0
  99. package/dist/lib/zip-read.js +98 -0
  100. package/dist/local-seo.js +353 -0
  101. package/dist/logs-cli.js +36 -0
  102. package/dist/prompts/index.js +175 -0
  103. package/dist/prompts/templates/audit-findings.md +18 -0
  104. package/dist/prompts/templates/build-report-template.md +12 -0
  105. package/dist/prompts/templates/client-health-check.md +10 -0
  106. package/dist/prompts/templates/find-competitors.md +17 -0
  107. package/dist/prompts/templates/getting-started.md +18 -0
  108. package/dist/prompts/templates/keyword-research.md +14 -0
  109. package/dist/prompts/templates/monthly-report-writeup.md +22 -0
  110. package/dist/prompts/templates/opportunity-review.md +23 -0
  111. package/dist/prompts/templates/review-brand-terms.md +11 -0
  112. package/dist/prompts/templates/template-report.md +14 -0
  113. package/dist/providers/ahrefs-shape.js +401 -0
  114. package/dist/providers/ahrefs-site-audit.js +116 -0
  115. package/dist/providers/ahrefs.js +532 -0
  116. package/dist/providers/axe.js +55 -0
  117. package/dist/providers/bing.js +305 -0
  118. package/dist/providers/browser.js +187 -0
  119. package/dist/providers/crawler-ipranges.js +75 -0
  120. package/dist/providers/crawler.js +411 -0
  121. package/dist/providers/crux.js +127 -0
  122. package/dist/providers/dataforseo-shape.js +446 -0
  123. package/dist/providers/dataforseo.js +629 -0
  124. package/dist/providers/discovery.js +69 -0
  125. package/dist/providers/ga4.js +90 -0
  126. package/dist/providers/google-login.js +122 -0
  127. package/dist/providers/google-oauth-client.js +70 -0
  128. package/dist/providers/google.js +194 -0
  129. package/dist/providers/gsc.js +208 -0
  130. package/dist/providers/gtm.js +164 -0
  131. package/dist/providers/lighthouse.js +107 -0
  132. package/dist/providers/render.js +263 -0
  133. package/dist/providers/semrush-shape.js +385 -0
  134. package/dist/providers/semrush-site-audit.js +175 -0
  135. package/dist/providers/semrush.js +591 -0
  136. package/dist/providers/seo-data.js +356 -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 +1113 -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 +239 -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 +738 -0
  178. package/dist/reports/templates/schema.js +384 -0
  179. package/dist/reports/templates/service.js +79 -0
  180. package/dist/reports/templates/write.js +675 -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 +80 -0
  190. package/dist/setup/prompter.js +273 -0
  191. package/dist/setup/status-providers.js +178 -0
  192. package/dist/setup/status-render.js +128 -0
  193. package/dist/setup/status.js +480 -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/wizard.js +967 -0
  198. package/dist/tools/ai-visibility.js +30 -0
  199. package/dist/tools/bing.js +32 -0
  200. package/dist/tools/brand.js +62 -0
  201. package/dist/tools/competitors.js +226 -0
  202. package/dist/tools/crawl.js +92 -0
  203. package/dist/tools/gtm.js +22 -0
  204. package/dist/tools/index-import.js +47 -0
  205. package/dist/tools/local.js +65 -0
  206. package/dist/tools/logs.js +51 -0
  207. package/dist/tools/opportunities.js +69 -0
  208. package/dist/tools/ranks.js +51 -0
  209. package/dist/tools/raw.js +232 -0
  210. package/dist/tools/report-template-write.js +263 -0
  211. package/dist/tools/reports.js +474 -0
  212. package/dist/tools/setup.js +19 -0
  213. package/dist/tools/util.js +59 -0
  214. package/dist/user-url.js +51 -0
  215. package/package.json +76 -4
package/.env.example ADDED
@@ -0,0 +1,178 @@
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 volumes, rankings, competitors and backlinks from Semrush. Needs an SEO Toolkit Business
51
+ # plan plus a separately bought API unit package (the balance is zero right after the upgrade).
52
+ # SEMRUSH_API_KEY is the v3 key, under Subscription info > API units; it is used for every v3 report and the free
53
+ # balance check. `crawlmark-cli setup --step semrush` checks it for free and saves it.
54
+ SEMRUSH_API_KEY=
55
+ # Optional v4 key (your Semrush profile > API keys). When set, backlinks use the v4 overview; when unset, the older v3
56
+ # report. Semrush has no free check for v4 keys, so it is first checked when backlinks_summary runs.
57
+ SEMRUSH_V4_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
+ # SEMRUSH_BALANCE_URL=
69
+ # CRUX_BASE_URL=
70
+ # BING_BASE_URL=
71
+ # CRAWLER_IPRANGES_BASE_URL=
72
+
73
+ # PageSpeed Insights API key (optional; adds real-user field data to lighthouse).
74
+ PSI_API_KEY=
75
+
76
+ # Chrome UX Report API key (optional): Core Web Vitals history for crux_history, the cwv report section and
77
+ # run_audit cruxHistory. A Google Cloud API key with the Chrome UX Report API enabled. Unset, PSI_API_KEY is tried
78
+ # (it works when its project has that API enabled). `crawlmark-cli setup --step crux` checks it for free and saves it.
79
+ CRUX_API_KEY=
80
+
81
+ # Bing Webmaster Tools API key (optional, free): bing_report and the bing_overview report section. In Bing Webmaster
82
+ # Tools: Settings > API Access > Generate API Key (one key per user, for all your verified sites). crawlmark only
83
+ # calls read methods with it. `crawlmark-cli setup --step bing` checks it for free and saves it.
84
+ BING_WEBMASTER_API_KEY=
85
+
86
+ # AI-search visibility (optional, PAID, off by default): ai_visibility and the ai_visibility report section, from
87
+ # DataForSEO's LLM Mentions API. $0.10 per request plus $0.001 per row (no request costs less than $0.10). DataForSEO has
88
+ # required a $100 monthly top-up for LLM Mentions access; its 2026-07-07 update says that was removed, so check your
89
+ # account first. The sandbox serves it free. Only "true" turns it on. Its own monthly cap across all clients (USD),
90
+ # checked on top of the client and global caps:
91
+ AI_VISIBILITY_ENABLED=
92
+ AI_VISIBILITY_MONTHLY_BUDGET_USD=2
93
+
94
+ # Google indexing (free): URL Inspection requests per Search Console property per Pacific-time day, for
95
+ # inspect_index_coverage, `crawlmark-cli index-coverage` and the indexing_issues report section (gsc_inspect_url and
96
+ # run_audit count too). Google allows 2,000 a day and 600 a minute per property; the defaults leave headroom for your
97
+ # other tools. Max 2000 and 600.
98
+ GSC_INSPECTION_DAILY_BUDGET=1000
99
+ GSC_INSPECTION_PER_MINUTE=60
100
+
101
+ # A stored provider snapshot (backlinks, keyword visibility, competitors) this many days old or newer is reused instead
102
+ # of a new paid call by the backlinks, organic_visibility and competitor_overview sections and tools and seo-snapshot;
103
+ # 0 always fetches. Max 31.
104
+ SNAPSHOT_REUSE_DAYS=7
105
+
106
+ # The client list. Discovered Search Console / GA4 domains are added to it automatically, and you can
107
+ # add your own (`crawlmark-cli clients add <domain>`). Created when first needed. See config/clients.example.yaml.
108
+ CLIENTS_FILE=./config/clients.yaml
109
+
110
+ # Defaults for discovered clients (and clients.yaml entries that leave these out).
111
+ # DataForSEO location code (2840 = United States) and language code.
112
+ DEFAULT_LOCATION_CODE=2840
113
+ DEFAULT_LANGUAGE_CODE=en
114
+ # Per-client monthly cap for paid data, in USD.
115
+ DEFAULT_CLIENT_MONTHLY_BUDGET_USD=5
116
+
117
+ # Extra rules for the suggest_competitors denylist (on top of the built-in list of social, review, marketplace,
118
+ # encyclopedia, video and big-box sites and .gov/.edu). A file with one rule per line (optional; gitignored by default)
119
+ # and/or a comma-separated list. Rules: domain.example (and subdomains), *.suffix, name.* (any short suffix), !domain (exempt).
120
+ COMPETITOR_DENYLIST_FILE=./config/competitor-denylist.txt
121
+ COMPETITOR_DENYLIST=
122
+
123
+ # Directory for the SQLite cache, spend ledger and Google OAuth token.
124
+ DATA_DIR=./data
125
+
126
+ # Report files written by export_report and `crawlmark-cli report` (<REPORTS_DIR>/<client>/<YYYY-MM>/), mode 0600.
127
+ # Templates live in config/report-templates.yaml; `crawlmark-cli report templates init` creates it.
128
+ REPORTS_DIR=./reports
129
+
130
+ # Server-log analysis (log_analysis): the directories it may read, comma-separated absolute paths, e.g.
131
+ # LOG_DIRS=/var/log/nginx,/var/log/apache2. The logs folder in the config home is always allowed. Unset (and no
132
+ # logs folder), log_analysis is unavailable; `crawlmark-cli logs <file>...` needs no setting. Logs are read on this
133
+ # machine only and never uploaded; IP addresses and user agents are never returned or stored.
134
+ LOG_DIRS=
135
+
136
+ # Search Console Pages report imports (import_index_report): the directories it may read exports from, comma-separated
137
+ # absolute paths, e.g. IMPORT_DIRS=/Users/me/Downloads. The imports folder in the config home is always allowed.
138
+ # `crawlmark-cli index-coverage import --client <domain> <file>` needs no setting. Files are parsed on this machine only.
139
+ IMPORT_DIRS=
140
+
141
+ # Hard monthly cap across all clients, in USD.
142
+ GLOBAL_MONTHLY_BUDGET_USD=50
143
+
144
+ # Optional: path to a Chrome/Chromium binary for Lighthouse and axe (read directly, not via config).
145
+ # CHROME_PATH=
146
+
147
+ # Chrome's sandbox is on by default. Set to true only where it cannot start (it is added automatically on Linux as root).
148
+ # CHROME_NO_SANDBOX=
149
+
150
+ # Set to true to let lighthouse, accessibility_check, render_check and audits reach loopback/private addresses
151
+ # (local development only). Without it, hostnames that resolve to such an address are refused, and headless Chrome's
152
+ # egress proxy blocks them for every request the page makes.
153
+ ALLOW_PRIVATE_URLS=
154
+
155
+ # Set to true to only accept URLs on a client domain (or a subdomain of one) from the client list, for lighthouse,
156
+ # 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
157
+ # the private-address check). Values other than true/false are refused, so a typo never silently turns it off.
158
+ RESTRICT_TO_CLIENT_DOMAINS=
159
+
160
+ # Scheduled runs (crawlmark-cli check-traffic / audit / check-ranks): alert when non-branded clicks fall by at least this percent...
161
+ ALERT_TRAFFIC_DROP_PCT=25
162
+ # ...and by at least this many clicks (avoids alerts on tiny sites).
163
+ ALERT_MIN_CLICKS_LOST=50
164
+ # crawlmark-cli check-ranks --live: alert when a tracked keyword's live rank falls at least this many places
165
+ # (leaving the top 10 always alerts). Search Console averages never alert.
166
+ ALERT_RANK_DROP=5
167
+ # Optional incoming webhook (Slack-style) that gets {"text": "..."} when there are alerts. Must be https. Keep it secret.
168
+ ALERT_WEBHOOK_URL=
169
+
170
+ # Set to 1 to turn off the "Update available" check. Without it, `init`, `setup`, `--help` and `--version` ask the npm
171
+ # registry for crawlmark-mcp's latest version at most once a day (in a terminal only; never in CI, with --json, or from
172
+ # the MCP server). The request carries no query, headers or client data. NO_UPDATE_NOTIFIER=1 also turns it off.
173
+ CRAWLMARK_NO_UPDATE_CHECK=
174
+
175
+ # Testing the setup wizard only (leave unset): use this Claude Desktop config file and this `claude` binary
176
+ # instead of the real ones. Read from the shell environment only; values in this file are ignored.
177
+ # CRAWLMARK_CLAUDE_DESKTOP_CONFIG=
178
+ # 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.