318 Commits

Author SHA1 Message Date
Ben Senescu
dd429ec4f0
Sync Autumn billing status to Loops and add billing backfill (#269) 2026-06-14 17:19:26 -04:00
Ben Senescu
f8d5ffd285
Scheduled rank checks run through DataForSEO's task queue (#268) 2026-06-13 11:20:42 -04:00
Ben Senescu
5f03992b78
release: v0.0.20 (#266) 2026-06-12 14:29:49 -04:00
Ben Senescu
b809f87b5e
Hybrid keyword data: Google Ads coverage for non-Labs countries + opt-in clickstream volumes (#262) 2026-06-12 14:08:11 -04:00
Ben Senescu
e41b52ca56
MCP directory metadata, resources/prompts handlers, full param descriptions (#260) 2026-06-11 16:11:24 -04:00
Ben Senescu
0525513b0c
save (#259) 2026-06-11 09:45:44 -04:00
Ben Senescu
16b92ccea3
Backlinks: server-side pagination, sorting, filters, and a one-per-domain view (#258) 2026-06-10 23:27:04 -04:00
Ben Senescu
977c69c3de
Replace project deletion with archive/restore (soft delete) (#257)
Project deletion cascaded through saved keywords, rank tracking, and
audits, and the endpoint had no role check (Codex security finding).
Instead of gating a destructive delete, remove it: archiving stamps
archived_at, hides the project everywhere (lists, project context,
rank-check cron), and preserves all data. Archived projects can be
restored from the Manage projects page.

The restore input is named archivedProjectId because the global
ensureUserMiddleware resolves any projectId in input data against
active projects and would 404 before the handler runs.
2026-06-10 15:42:55 -04:00
Ben Senescu
f7e5729a09
SERP title/meta optimization for striking-distance keywords (#254) 2026-06-10 14:21:55 -04:00
Ben Senescu
8a85b7b794
AI Visibility: competitor Share of Voice + clarity fixes for AI citations (#248) 2026-06-09 22:33:11 -04:00
Ben Senescu
2db6fdec71
Refine rank tracking onboarding and add ahrefs backlinks filter (#253) 2026-06-09 22:17:13 -04:00
Ben Senescu
c38b453ab0
Add Ahrefs Domain Rating enrichment to the Backlinks table (#249) 2026-06-09 21:42:30 -04:00
Ben Senescu
fbef08fe8e
Remove unnecessary rank tracking details cards 2026-06-09 21:28:50 -04:00
Ben Senescu
383531c5cd
Rank tracking: trends & data exploration (#247) 2026-06-09 21:06:50 -04:00
Ben Senescu
076a7fb6d7
Multi-project support per organization (#246) 2026-06-09 20:12:09 -04:00
Ben Senescu
e16f8d5647
Bump release notes to v0.0.18 (#244)
* Bump version to 0.0.18

* Trim release notes for v0.0.18
2026-06-05 16:29:25 -04:00
Ben Senescu
d459006f40
Restore and update 'Why use OpenSEO?' section
Reintroduce 'Why use OpenSEO?' section with key features.
2026-06-05 16:28:01 -04:00
Ben Senescu
6be0a54b15
Update README.md 2026-06-05 16:26:57 -04:00
Ben Senescu
93705f125d
Move guides to blogs and add best open source tools post (#243) 2026-06-05 15:37:42 -04:00
Ben Senescu
1495660631
fix errors and onboarding problems (#242) 2026-06-05 15:22:32 -04:00
Ben Senescu
cc5d6bc632
gsc: handle stale Search Console grants during property listing (#241) 2026-06-04 23:46:33 -04:00
Ben Senescu
8ea55a3e77
fix gsc onboarding nudge state (#240) 2026-06-04 23:25:01 -04:00
Ben Senescu
96f365a473
billing: Autumn webhook + customer status sync (#239) 2026-06-04 23:04:55 -04:00
Ben Senescu
f46e0b9539
Update image source in README.md 2026-06-04 18:15:13 -04:00
Ben Senescu
c8fcdcda20
website: google search console mcp landing page (#237) 2026-06-04 18:07:00 -04:00
Ben Senescu
7a26be46cc
Self-hosted Google Search Console (#236) 2026-06-04 18:06:16 -04:00
Ben Senescu
23c38ca4e5
GSC MCP part 1 (#233) 2026-06-04 13:50:26 -04:00
Ben Senescu
1fd7b2cbce
Replace image in README.md
Updated image in README.md to a new source.
2026-06-02 16:41:05 -04:00
Ben Senescu
738497e749
Update section title and table of contents in README 2026-06-02 16:18:44 -04:00
Ben Senescu
9660838c1f
Update images in README.md 2026-06-02 16:17:14 -04:00
Ben Senescu
319b4d7772
website: open source seo page (#235) 2026-06-02 15:56:38 -04:00
Ben Senescu
dae5cfd68e
readme: Add banner image (#234) 2026-06-02 14:27:20 -04:00
Ben Senescu
b64ef56b4d
refactor: unify dataforseo sdk usage (#231) 2026-06-01 09:48:11 -04:00
Ben Senescu
06e15dc70f
Add per-feature usage breakdown to billing page (#232) 2026-05-31 18:42:41 -04:00
Ben Senescu
e93e30e19e
Fix auth mode resolution to use runtime worker env (#212) 2026-05-31 17:21:54 -04:00
Ben Senescu
3d38b89c32
Fix local dev bug; bump to v0.0.17 (#230) 2026-05-28 17:42:09 -04:00
Ben Senescu
03fd3588ef
refactor: clean up complex code (#229) 2026-05-28 16:37:33 -04:00
Ben Senescu
010c93a536
Bump version to 0.0.16 (#228) 2026-05-28 09:14:35 -04:00
Ben Senescu
e7eb895d46
fix redirect loop (again) (#227) 2026-05-27 00:08:59 -04:00
Ben Senescu
4a5a1eb523
Redirect unverified users to email verification (#226) 2026-05-26 23:36:35 -04:00
Ben Senescu
02a287b98e
fix audit tables + back link columns (#224) 2026-05-26 23:33:26 -04:00
Ben Senescu
8b74c7da61
Improve onboarding questions and sign-up routing (#225) 2026-05-26 23:05:20 -04:00
Ben Senescu
506dde84d1
Add additional MCP tools for Local SEO (#222) 2026-05-26 18:38:14 -04:00
Ben Senescu
f95c66b7f2
Switch domain sorting defaults and rank-tracking suggestions to traffic (#223)
* Default domain keyword sorting to traffic

* Align keyword suggestion preselection with traffic sort
2026-05-26 18:11:14 -04:00
Ben Senescu
d23b4eebfb
Fix sitemap generation for docs content (#220) 2026-05-24 18:59:43 -04:00
Ben Senescu
0e75e07660
website: Add MCP and Skills Docs 2026-05-24 18:35:55 -04:00
Ben Senescu
45234e6945
Fix backlink tab states (#218)
* Fix tab active state wiring across result views

* Add spam filters to referring domains
2026-05-22 22:49:05 -04:00
Ben Senescu
a3721a0f53
Normalize dynamic MCP client registration for Perplexity (#217) 2026-05-22 22:22:42 -04:00
Ben Senescu
9c9477c1cf
Clarify keyword metric tooltips (#216) 2026-05-22 21:47:28 -04:00
Ben Senescu
44073498ed
Use TanStack links for internal table and shell navigation (#215)
* Use TanStack Link for audit issues and external RD links

* Use router link for billing menu

* Fix brand lookup tooltip clipping
2026-05-22 21:29:45 -04:00