500 Commits

Author SHA1 Message Date
Ben Senescu
0311e72a96
PostHog reports every server error as affecting as many users as it has events (#534) 2026-08-26 10:23:03 -04:00
Ben Senescu
8752269149
Stop cloning the raw Lighthouse report through Zod (#528) 2026-08-26 10:11:14 -04:00
Ben Senescu
94b730124b
DataForSEO's own server errors show as an unexpected error and retry 3x (#526) 2026-08-26 10:06:40 -04:00
Ben Senescu
67d68281e3
fix(mcp): accept expected partial outputs (#449) 2026-08-26 10:04:40 -04:00
Ben Senescu
b631715112
Blank page on older browsers: replace ES2023 array methods with Remeda (#535) 2026-08-26 10:02:03 -04:00
Ben Senescu
8db0dd3246
First site audit over MCP fails with a raw billing error (#525) 2026-08-26 09:59:35 -04:00
Ben Senescu
25c8f7be26
fix(client): quick fixes for top PostHog errors (#436) 2026-08-26 09:48:43 -04:00
Ben Senescu
3fc1f4ec34
fix(dataforseo): accept empty live SERPs (#451) 2026-08-26 09:48:32 -04:00
Ben Senescu
ce7570e898
Stop reporting GA4 quota exhaustion as an app exception (#527) 2026-08-26 09:40:47 -04:00
Ben Senescu
b592dc5043
fix(mcp): classify project input validation (#455) 2026-08-26 09:39:09 -04:00
Ben Senescu
7f9d73102e
Throttle chat store updates to fix React #185 in SAM chat (#522) 2026-08-26 09:38:33 -04:00
Ben Senescu
044d712580
Ignore TanStack Query CancelledError in client error tracking (#524) 2026-08-26 09:33:43 -04:00
Ben Senescu
fcb35a8145
fix: move the site-audit engine to a dedicated open-seo-audit worker (stops audit OOMs) (#530) 2026-08-25 23:12:26 -04:00
Ben Senescu
215ead8152
Replace dataforseo-client SDK with a thin fetch client (#532) 2026-08-25 22:23:55 -04:00
Ben Senescu
ac7ebfe13a
Add Dub referral conversion tracking (leads + sales) (#531) 2026-08-25 21:49:08 -04:00
Ben Senescu
7a611a7bad
Reorder onboarding source options by observed frequency, add Instagram (#533) 2026-08-25 20:49:46 -04:00
Ben Senescu
e0ed902f39
Allow commercial use in hosted terms Section 2.1 (#529)
Replace leftover 'personal, noncommercial' boilerplate with a license
covering internal business use and client-services work, permit using
generated Outputs in client deliverables, and carve Outputs out of the
Section 2.2 commercial-exploitation restriction.
2026-08-23 21:05:30 -04:00
Ben Senescu
c469a48ae9
Add Cursor marketplace plugin package (#521) 2026-08-23 20:18:24 -04:00
Ben Senescu
67f3743002 Update ChatGPT app submission metadata (#520) 2026-08-23 18:18:17 -04:00
Ben Senescu
6e02186a2b Add ChatGPT plugin submission manifest (#519) 2026-08-23 18:18:17 -04:00
Ben Senescu
d403954323 Add public support page (#518) 2026-08-23 18:18:17 -04:00
Ben Senescu
4ba2d6c175 Require exact hosted MCP origins (#515)
* Require exact hosted MCP origins

* Clarify exact MCP origin policy
2026-08-23 18:18:17 -04:00
Ben Senescu
e5e961bf48 Audit crawl: conservative OOM retries + window carry-over across chunks (#517)
* Audit crawl: retry chunks conservatively and stop re-learning the window per chunk

Production audits on heavy-page sites (500-700KB/page) died with
exceededMemory in the first crawl chunk, and the single step retry re-ran
the exact same profile and died again.

- claimChunk now reports isRetry (leftover leases from a dead attempt);
  a retried chunk crawls under RETRY_CRAWL_WINDOW (start 3, max 5,
  halved byte budget) instead of restarting at window 10.
- The adapted window carries across chunks via durable step results, so
  every ~200 pages no longer re-spikes to the initial window.
- First persist sub-batch shrinks to 5 pages so the byte bound sees the
  site's page weight before a full 25-page batch is in flight.
- In-flight HTML budget halved to 8 MiB (16 MiB never constrained the
  observed ~650KB pages: bound was 25, above the 20 max); growth now
  requires a full 25-page sample.
- Parse-time caps: 1,000 extracted links/images per page so mega-menu and
  crawler-trap pages can't bloat retained persist batches.

* Guard endWindow for instances replaying pre-deploy step results

* ci: un-export internal-only interfaces (knip)
2026-08-23 18:18:17 -04:00
Ben Senescu
4cd321e269 Blocked-audit alert: point to desktop crawlers instead of support email (#516)
* Blocked-audit alert: point to desktop crawlers instead of support email

* Soften blocked-audit alert opening

* Partial-block banner: recommend desktop crawlers, drop allowlist tip
2026-08-23 18:18:17 -04:00
Ben Senescu
5cb23418e1 Mask API key values in PostHog replays (#514) 2026-08-23 18:18:17 -04:00
Ben Senescu
6470b875ad Allow SurfMind Chrome extension MCP origin (#513) 2026-08-23 18:18:17 -04:00
Ben Senescu
47883b5d5a Fix GA4 measurement health for sparse API responses (#512) 2026-08-23 18:18:17 -04:00
Ben Senescu
b9c1b0255a Prompting post: add SEO skills overview section before FAQ (#511) 2026-08-23 18:18:17 -04:00
Jeremy Rivera
d2bfc256dc
feat(library): add FAQPage JSON-LD to the eight keyword-research spokes (#240) 2026-08-23 18:16:42 -04:00
Jeremy Rivera
56826f84d1
Competitive Analysis strategy library: pillar + 4 plays (#237) 2026-08-23 18:16:32 -04:00
Ben Senescu
cd6a782092
release: v0.1.6 (#509) 2026-08-19 14:34:24 -04:00
Ben Senescu
43265048df
Tame audit polling: SAM's status tool waits server-side; Lighthouse becomes opt-in for agents (#510) 2026-08-19 14:22:33 -04:00
Ben Senescu
a6f96c516e
Remove GA4 launch gating; dashboard shows an Organic traffic card once connected (#505) 2026-08-19 13:19:55 -04:00
Ben Senescu
9305ea89d6
Prompting post: keyword-optimized headers + FAQ (#508) 2026-08-19 13:03:52 -04:00
Ben Senescu
45d788d81d
Add prompting guide blog post; fix blog footer width, nav, and light-page theming (#507) 2026-08-19 12:48:46 -04:00
Ben Senescu
a5a953e478
Project memory + SAM skills: shared per-project AI context (spec 0010) (#493) 2026-08-19 09:46:07 -04:00
Ben Senescu
a3ca46a0c1
Add OpenSEO plugins for Claude Code and Codex CLI (#501) 2026-08-18 23:17:50 -04:00
Ben Senescu
a004759700
Revert "Prefix public agent skills with "openseo-" (#502)" (#503)
This reverts commit b9df03d20f0f20230072aaa49df1abf56422addb.
2026-08-18 23:00:37 -04:00
Ben Senescu
b9df03d20f
Prefix public agent skills with "openseo-" (#502) 2026-08-18 21:15:50 -04:00
Ben Senescu
cfa5bc2cf5
Gate GA4 MCP tools per-user; fix false ga4_malformed_response on empty comparison periods (#497) 2026-08-18 15:56:38 -04:00
Ben Senescu
7edb82192a
Update README.md 2026-08-18 15:22:45 -04:00
Ben Senescu
8149cd6c70
release: v0.1.5 (#496)
* release: v0.1.5

* save
2026-08-18 15:05:03 -04:00
Ben Senescu
7738f72333
Local SEO MCP tools: business profile, reviews, updates, categories, rank grid (#489) 2026-08-17 23:21:34 -04:00
Ben Senescu
052977f20d
Add Palestine as a Google-Ads-only country picker location (#492) 2026-08-17 22:52:47 -04:00
Ben Senescu
ff0ae47d19
Codex MCP “missing issuer” is a Codex 0.143–0.146 bug, not OpenSEO (#491) 2026-08-17 15:21:32 -04:00
Ben Senescu
61ebdb05ab
Google OAuth verification: privacy policy disclosures + GA4 reviewer access (#488)
* Add Google user data disclosures and Limited Use statement to privacy policy

* Show GA4 connect surfaces to the Google OAuth verification reviewer account

* List OpenAI as a potential AI model provider in the privacy policy
2026-08-15 18:27:59 -04:00
Ben Senescu
c8b3eb9b0a
Add exact URL / subfolder / domain / subdomain research scopes (EVE-56) (#487) 2026-08-14 21:52:32 -04:00
Ben Senescu
3df66ad9ae
Restore backlink feature URL (#484)
* Restore backlink feature URL

* Restore backlink checker page titles
2026-08-13 20:33:55 -04:00
Ben Senescu
db45a0dd6d
Fix MCP saved keyword metrics (#483) 2026-08-13 20:16:20 -04:00
Ben Senescu
72eaa09c32
Hide Analytics section when GA4 OAuth app is pending (#475) 2026-08-12 19:57:29 -04:00