feat(mysticat-shared-seo-client): add Semrush FanoutService gRPC client#1776
Open
anagarwa wants to merge 4 commits into
Open
feat(mysticat-shared-seo-client): add Semrush FanoutService gRPC client#1776anagarwa wants to merge 4 commits into
anagarwa wants to merge 4 commits into
Conversation
…ages Adds two new workspace packages: - packages/quazar-ai-seo-ts: vendored protobuf types for Semrush AI SEO gRPC API (moved from spacecat-api-service/third-party/ai-seo-ts) - packages/mysticat-shared-semrush-ai-client: shared gRPC client factory (getGrpcClients, getAccessToken, createAuthInterceptor) for use by audit workers and API services Also adds quazar-ai-seo-ts to ESLint global ignores since it contains generated protobuf files. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Add grpc-client.js with getGrpcClients, fetchTopicHashMap and fetchGapPrompts. Proto stubs are vendored under src/vendor/ so no @quazar/ai-seo-ts npm dependency is needed. Export all new functions from index.js with matching TypeScript declarations. Remove the now-superseded mysticat-shared-semrush-ai-client package; its functionality is fully covered here. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…owRankFanoutKeywords Adds ai-seo.fanout scope, exposes fanoutClient via getGrpcClients, and introduces fetchLowRankFanoutKeywords to identify SERP keywords where a brand ranks but at position > 5. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
3 tasks
Proto bindings are already vendored inside packages/mysticat-shared-seo-client/src/vendor/ — no need for a duplicate top-level package that nothing in the monorepo imports. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
This PR will trigger a minor release when merged. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
mysticat-shared-seo-clientpackage with Semrush AI SEO gRPC clientSEO_CLIENT_ID/SEO_CLIENT_SECRETfrom Vault) and Bearer auth interceptorgetGrpcClients(env)andfetchLowRankFanoutKeywords(fanoutClient, topics, domain)— fetches keywords where the brand ranks on Google but at position > 5 for each topicai-cr,ai-pr,ai-vo,v2/fanout,v2/topic, etc.)quazar-ai-seo-tspackage containing the raw vendored Semrush proto TypeScript definitionsTest plan
packages/mysticat-shared-seo-client/test/grpc-client.test.jsfetchLowRankFanoutKeywordsvalidated end-to-end against production FanoutService for adobe.com — returned correct low-rank keywords (e.g. "how to use generative ai", volume=480, brandPosition=6)spacecat-sharedPR must be merged and published beforespacecat-audit-workerPR can be mergedNotes
The
vendor/directories contain auto-generated protobuf JS bindings — not hand-written code. Reviewers can focus onsrc/grpc-client.jsandsrc/index.js.🤖 Generated with Claude Code