Commit Graph

  • 7b9ee0e4fa release: v0.1.8 (#604) main v0.1.8 Ben Senescu 2026-09-11 20:14:31 -07:00
  • a52856e02f Update Claude connector setup instructions (#603) Ben Senescu 2026-09-11 19:36:03 -07:00
  • 8e73223754 Restore links in Vellum SEO workflow blog post (#601) Ben Senescu 2026-09-11 12:28:45 -07:00
  • b39e732155 Add Vellum and OpenSEO SEO workflow blog post (#600) Ben Senescu 2026-09-10 17:43:51 -07:00
  • 1940928e32 Simplify Google integrations and support full account removal (#598) Ben Senescu 2026-09-10 14:00:06 -07:00
  • 22ef28f817 Revert "Search the Google Analytics / Search Console pickers, and clear them …" (#597) Ben Senescu 2026-09-08 22:26:24 -04:00
  • 1a470f0da2 Search the Google Analytics / Search Console pickers, and clear them on disconnect (#566) Ben Senescu 2026-09-08 22:22:08 -04:00
  • 6edf052c32 Pace site audits and resume after longer rate-limit cooldowns (#595) Ben Senescu 2026-09-08 22:10:10 -04:00
  • abcf4144f1 Site audits slow down and retry when a site rate limits them, instead of calling every page blocked (#579) Ben Senescu 2026-09-08 14:39:16 -04:00
  • 6274e32b67 Release retained source strings in audits and SAM (#593) Ben Senescu 2026-09-07 18:40:19 -04:00
  • 0b40de6f11 Bring Search Console back into signup before agent setup (#592) Ben Senescu 2026-09-06 12:55:05 -04:00
  • 13a8292600 Simplify signup and move setup into the dashboard (#589) Ben Senescu 2026-09-06 00:57:20 -04:00
  • 41450c8c37 Fix small development blockers and clean up the papercut backlog (#586) Ben Senescu 2026-09-04 21:08:10 -04:00
  • 48125763c2 Rank tracking can now track a keyword with its capitalization (#575) Ben Senescu 2026-09-04 16:57:27 -04:00
  • 4a4e8acfda feat(sam): report every turn, step, and client failure to PostHog (#573) Ben Senescu 2026-09-04 10:03:15 -04:00
  • 2028172555 fix(sam): bound turn size, meter spend per step, upgrade Think to 0.17.0 (#571) Ben Senescu 2026-09-03 23:03:04 -04:00
  • 361d488dff chore: remove the onboarding chat (#572) Ben Senescu 2026-09-03 20:00:57 -04:00
  • 366fec6bb1 fix(sam): stop chat recovery from re-running OOM-killed turns (#569) Ben Senescu 2026-09-03 12:40:48 -04:00
  • 78a7e283ac perf(audit): store each page's link targets as one JSON row in the scratchpad DO (#568) Ben Senescu 2026-09-03 00:31:17 -04:00
  • dd04695722 Site Audit strategy library: pillar + 4 strategies (#322) Jeremy Rivera 2026-09-11 22:05:55 -05:00
  • 3632f40852 Blog: What Broke the $99 Ceiling (#277) Jeremy Rivera 2026-09-03 10:54:34 -05:00
  • 5b242b225a Blog: Two Surfaces, Two Timelines (#278) Jeremy Rivera 2026-09-03 10:54:23 -05:00
  • ac9ee482d2 Revert "fix(audit): back off and retry on 429 instead of recording the page a…" (#564) v0.1.7 Ben Senescu 2026-08-28 16:16:44 -04:00
  • ad2d28ea6f fix(ga4): honor full date ranges instead of clamping to 90 days (#563) Ben Senescu 2026-08-28 16:15:22 -04:00
  • bb099ad65a fix(audit): back off and retry on 429 instead of recording the page as blocked (#562) Ben Senescu 2026-08-28 15:27:23 -04:00
  • accac73e16 feat(billing): collect business name, address, and tax ID at checkout (#558) Ben Senescu 2026-08-27 18:56:26 -04:00
  • b0248f2acd release: v0.1.7 (#554) Ben Senescu 2026-08-27 18:31:03 -04:00
  • 749b38118d fix: show GA4 MCP rows in Claude text output (#553) Ben Senescu 2026-08-27 18:02:13 -04:00
  • ea162a4391 feat(orgs): multi-user workspaces — roles, invitations, membership enforcement (#473) Ben Senescu 2026-08-26 16:54:08 -04:00
  • 4d7fb661f0 Switch chat agents to GPT-5.6 Luna (max reasoning) (#499) Ben Senescu 2026-08-26 16:39:51 -04:00
  • 61b32ec647 fix: extend OAuth state cookie lifetime to match the 10-minute state TTL (#544) Ben Senescu 2026-08-26 14:37:46 -04:00
  • b32c0bd841 fix: surface Google connect failures to the user instead of dead-ending (#549) Ben Senescu 2026-08-26 13:23:20 -04:00
  • 9b12e073a8 fix: replace the broken per-key API rate limit with a real 5000/min per-user /mcp limit (#545) Ben Senescu 2026-08-26 12:09:31 -04:00
  • f35bbb8753 chore: add internal observability-triage skill (query recipes + known-noise filters) (#540) Ben Senescu 2026-08-26 12:08:50 -04:00
  • 11a874ed3b chore: log Lighthouse runtime errors at warn and include strategy (#539) Ben Senescu 2026-08-26 11:51:59 -04:00
  • c7ff28c30a chore: log rank-check live call failures with error code and keyword, warn on upstream flakes (#542) Ben Senescu 2026-08-26 11:51:26 -04:00
  • 824e914eb1 fix(mcp): refuse subscriptions/listen streams — MCP serving is stateless (EVE-95) (#548) Ben Senescu 2026-08-26 11:48:20 -04:00
  • 0abde80109 fix: add 10s timeout to Loops fetches (#543) Ben Senescu 2026-08-26 11:41:22 -04:00
  • 95551a425a chore: log expected credit refusals in backlink snapshot refresh at info (#541) Ben Senescu 2026-08-26 11:39:50 -04:00
  • 7918fdb8c7 fix: remove duplicate retry:false in useKeywordSerpAnalysis query options (#547) Ben Senescu 2026-08-26 11:34:57 -04:00
  • 022a7f1944 SERP analysis: depth 20 by default, load top 100 on demand; classify DataForSEO timeouts (#523) Ben Senescu 2026-08-26 11:17:18 -04:00
  • a1c6eb6b11 fix: meta-only-response test used toSorted, banned by the ES2022 lib floor (#537) Ben Senescu 2026-08-26 10:37:50 -04:00
  • 0311e72a96 PostHog reports every server error as affecting as many users as it has events (#534) Ben Senescu 2026-08-26 10:23:03 -04:00
  • 8752269149 Stop cloning the raw Lighthouse report through Zod (#528) Ben Senescu 2026-08-26 10:11:14 -04:00
  • 94b730124b DataForSEO's own server errors show as an unexpected error and retry 3x (#526) Ben Senescu 2026-08-26 10:06:40 -04:00
  • 67d68281e3 fix(mcp): accept expected partial outputs (#449) Ben Senescu 2026-08-26 10:04:40 -04:00
  • b631715112 Blank page on older browsers: replace ES2023 array methods with Remeda (#535) Ben Senescu 2026-08-26 10:02:03 -04:00
  • 8db0dd3246 First site audit over MCP fails with a raw billing error (#525) Ben Senescu 2026-08-26 09:59:35 -04:00
  • 25c8f7be26 fix(client): quick fixes for top PostHog errors (#436) Ben Senescu 2026-08-26 09:48:43 -04:00
  • 3fc1f4ec34 fix(dataforseo): accept empty live SERPs (#451) Ben Senescu 2026-08-26 09:48:32 -04:00
  • ce7570e898 Stop reporting GA4 quota exhaustion as an app exception (#527) Ben Senescu 2026-08-26 09:40:47 -04:00
  • b592dc5043 fix(mcp): classify project input validation (#455) Ben Senescu 2026-08-26 09:39:09 -04:00
  • 7f9d73102e Throttle chat store updates to fix React #185 in SAM chat (#522) Ben Senescu 2026-08-26 09:38:33 -04:00
  • 044d712580 Ignore TanStack Query CancelledError in client error tracking (#524) Ben Senescu 2026-08-26 09:33:43 -04:00
  • fcb35a8145 fix: move the site-audit engine to a dedicated open-seo-audit worker (stops audit OOMs) (#530) Ben Senescu 2026-08-25 23:12:26 -04:00
  • 215ead8152 Replace dataforseo-client SDK with a thin fetch client (#532) Ben Senescu 2026-08-25 22:23:55 -04:00
  • ac7ebfe13a Add Dub referral conversion tracking (leads + sales) (#531) Ben Senescu 2026-08-25 21:49:08 -04:00
  • 7a611a7bad Reorder onboarding source options by observed frequency, add Instagram (#533) Ben Senescu 2026-08-25 20:49:46 -04:00
  • e0ed902f39 Allow commercial use in hosted terms Section 2.1 (#529) Ben Senescu 2026-08-23 21:05:30 -04:00
  • c469a48ae9 Add Cursor marketplace plugin package (#521) Ben Senescu 2026-08-23 20:18:24 -04:00
  • 67f3743002 Update ChatGPT app submission metadata (#520) Ben Senescu 2026-08-22 12:41:19 -04:00
  • 6e02186a2b Add ChatGPT plugin submission manifest (#519) Ben Senescu 2026-08-22 12:25:03 -04:00
  • d403954323 Add public support page (#518) Ben Senescu 2026-08-22 11:27:15 -04:00
  • 4ba2d6c175 Require exact hosted MCP origins (#515) Ben Senescu 2026-08-21 19:01:54 -04:00
  • e5e961bf48 Audit crawl: conservative OOM retries + window carry-over across chunks (#517) Ben Senescu 2026-08-21 18:29:42 -04:00
  • 4cd321e269 Blocked-audit alert: point to desktop crawlers instead of support email (#516) Ben Senescu 2026-08-21 17:56:15 -04:00
  • 5cb23418e1 Mask API key values in PostHog replays (#514) Ben Senescu 2026-08-21 17:39:44 -04:00
  • 6470b875ad Allow SurfMind Chrome extension MCP origin (#513) Ben Senescu 2026-08-21 15:41:44 -04:00
  • 47883b5d5a Fix GA4 measurement health for sparse API responses (#512) Ben Senescu 2026-08-20 17:22:30 -04:00
  • b9c1b0255a Prompting post: add SEO skills overview section before FAQ (#511) Ben Senescu 2026-08-19 16:26:03 -04:00
  • d2bfc256dc feat(library): add FAQPage JSON-LD to the eight keyword-research spokes (#240) Jeremy Rivera 2026-08-23 17:16:42 -05:00
  • 56826f84d1 Competitive Analysis strategy library: pillar + 4 plays (#237) Jeremy Rivera 2026-08-23 17:16:32 -05:00
  • cd6a782092 release: v0.1.6 (#509) v0.1.6 Ben Senescu 2026-08-19 14:34:24 -04:00
  • 43265048df Tame audit polling: SAM's status tool waits server-side; Lighthouse becomes opt-in for agents (#510) Ben Senescu 2026-08-19 14:22:33 -04:00
  • a6f96c516e Remove GA4 launch gating; dashboard shows an Organic traffic card once connected (#505) Ben Senescu 2026-08-19 13:19:55 -04:00
  • 9305ea89d6 Prompting post: keyword-optimized headers + FAQ (#508) Ben Senescu 2026-08-19 13:03:52 -04:00
  • 45d788d81d Add prompting guide blog post; fix blog footer width, nav, and light-page theming (#507) Ben Senescu 2026-08-19 12:48:46 -04:00
  • a5a953e478 Project memory + SAM skills: shared per-project AI context (spec 0010) (#493) Ben Senescu 2026-08-19 09:46:07 -04:00
  • a3ca46a0c1 Add OpenSEO plugins for Claude Code and Codex CLI (#501) Ben Senescu 2026-08-18 23:17:50 -04:00
  • a004759700 Revert "Prefix public agent skills with "openseo-" (#502)" (#503) Ben Senescu 2026-08-18 23:00:37 -04:00
  • b9df03d20f Prefix public agent skills with "openseo-" (#502) Ben Senescu 2026-08-18 21:15:50 -04:00
  • cfa5bc2cf5 Gate GA4 MCP tools per-user; fix false ga4_malformed_response on empty comparison periods (#497) Ben Senescu 2026-08-18 15:56:38 -04:00
  • 7edb82192a Update README.md Ben Senescu 2026-08-18 15:22:45 -04:00
  • 8149cd6c70 release: v0.1.5 (#496) v0.1.5 Ben Senescu 2026-08-18 15:05:03 -04:00
  • 7738f72333 Local SEO MCP tools: business profile, reviews, updates, categories, rank grid (#489) Ben Senescu 2026-08-17 23:21:34 -04:00
  • 052977f20d Add Palestine as a Google-Ads-only country picker location (#492) Ben Senescu 2026-08-17 22:52:47 -04:00
  • ff0ae47d19 Codex MCP “missing issuer” is a Codex 0.143–0.146 bug, not OpenSEO (#491) Ben Senescu 2026-08-17 15:21:32 -04:00
  • 61ebdb05ab Google OAuth verification: privacy policy disclosures + GA4 reviewer access (#488) Ben Senescu 2026-08-15 18:27:59 -04:00
  • c8b3eb9b0a Add exact URL / subfolder / domain / subdomain research scopes (EVE-56) (#487) Ben Senescu 2026-08-14 21:52:32 -04:00
  • 3df66ad9ae Restore backlink feature URL (#484) Ben Senescu 2026-08-13 20:33:55 -04:00
  • db45a0dd6d Fix MCP saved keyword metrics (#483) Ben Senescu 2026-08-13 20:16:20 -04:00
  • 72eaa09c32 Hide Analytics section when GA4 OAuth app is pending (#475) Ben Senescu 2026-08-12 19:57:29 -04:00
  • 75aec8424f Detect paid plans from Autumn entitlement flags (#482) Ben Senescu 2026-08-12 11:35:07 -04:00
  • a1ed6ece4b Add strategy library index and navigation (#479) Ben Senescu 2026-08-11 22:53:02 -04:00
  • bd402844fa Add public product roadmap (#480) Ben Senescu 2026-08-11 22:38:47 -04:00
  • 0a11839a1c Clarify contribution and pull request guidance (#457) Ben Senescu 2026-08-11 21:51:15 -04:00
  • 84e8d0be99 Serve legacy MCP JSON requests statelessly to stop per-request server retention (#478) Ben Senescu 2026-08-11 20:15:48 -04:00
  • 16eb599270 MCP API key support (hosted mode) (#438) Ben Senescu 2026-08-11 19:20:44 -04:00
  • 7a1748af4e Exclude PDF assets from prerendering (#476) Ben Senescu 2026-08-10 23:03:20 -04:00
  • edc2c07af2 Add blog post: Ranking for the Wrong Half of Your Audience (#185) Jeremy Rivera 2026-08-10 12:43:53 -05:00