feat(gtm): blog content, README hero, badge logging + awesome-list outreach#31
Merged
Conversation
…treach Execute the code-doable workstreams from docs/GTM-EXECUTION.md: - §5 Blog: file-based content registry (src/lib/blog.ts) + localized /blog routes with Article/Breadcrumb/FAQ structured data. Four depth posts (What is A2A, A2A vs MCP, one API for many agents, TakoAPI vs OpenRouter). English is canonical/indexable; non-English locales render the English body but are noindexed (near-duplicate defense). Adds sitemap entries, a footer link, scoped .blog-prose styles, and the Blog i18n namespace across all 15 locales. - §4 README: centered hero with shields badges, OG-image banner, 30-second quickstart, and a product-GIF placeholder. - §2/§11 Badge logging: /api/badge/[slug] now logs each render to RequestLog (path=/api/badge/<slug>) so adoption is quantifiable. - §3 A2: docs/awesome-list-outreach.md — verified, ready-to-submit PR copy for awesome-a2a / awesome-ai-sdks / awesome-mcp-servers. Verified: tsc + eslint clean; /blog renders (indexed) and /zh/blog renders noindexed in a local dev server. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
GTM §0 enabler — set GOOGLE_SITE_VERIFICATION to the GSC token and the layout emits <meta name="google-site-verification"> (comma-separated list supported; omitted entirely when unset). Lets the maintainer verify takoapi.com in Search Console via env + redeploy, no code change. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Publish-ready README for a self-maintained `awesome-a2a-agents` GitHub list — a stars-flywheel + backlink hub per GTM §3 A3, with TakoAPI featured honestly under "Directories & Gateways". ~30 web-verified entries across spec/SDKs, gateways, frameworks, tools, samples, and learning material. Keeps an HTML "verification notes" block listing unverified items and deliberate exclusions to review before publishing. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
oratis
added a commit
that referenced
this pull request
Jun 27, 2026
Step 0 of the GTM plan ("没数据=盲飞") needs an analytics feedback loop.
The GSC verification meta and README hero from #31/#32 cover the rest;
this adds the missing piece — GA4.
- Analytics.tsx: GA4 via next/script (afterInteractive). Production-only
so dev/preview traffic never pollutes the data; public measurement ID
baked as default with NEXT_PUBLIC_GA_ID override, matching the
hardcoded-default + env pattern used for SITE_URL in lib/seo.
- layout: render <Analytics/> at the end of <body>.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
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.
Executes the code-doable workstreams from
docs/GTM-EXECUTION.md. Non-code growth actions (GSC/analytics, Show HN, awesome-list submissions) remain for the maintainer — see §11.§5 — Blog / comparison pages
src/lib/blog.ts: file-based content registry (not the unusedBlogPostDB model — no migration/seed). Four in-depth English posts: What is A2A, A2A vs MCP, One API for many agents, TakoAPI vs OpenRouter./blog+/blog/[slug]routes withBlogPosting/BreadcrumbList/FAQPagestructured data.noindex(same near-duplicate defense the entity pages use)..blog-prosestyles (no new dependency), and a localizedBlogi18n namespace across all 15 locales.§4 — README hero
Centered hero with shields badge row (stars/license/MCP/A2A/last-commit), live OG-image banner, quick-nav links, a 30-second quickstart, and a
TODOplaceholder for a product GIF.§2/§11 — Badge adoption logging
/api/badge/[slug]now logs each render toRequestLog(path=/api/badge/<slug>, via the existinglogRequesthelper, fire-and-forget) so adoption is quantifiable per repo. Note: GitHub's camo proxy strips Referer, so attribution is by slug + volume.§3 A2 — Awesome-list outreach
docs/awesome-list-outreach.md: verified, ready-to-submit PR copy. Highlights —ai-boost/awesome-a2a(eligible, exact entry ready);wong2/awesome-mcp-servers(eligible, web-form only, no PRs);e2b-dev/awesome-ai-agentsskipped (wrong list, stale) → redirected to theawesome-ai-sdkssibling;awesome-llm-agentsflagged as weak fit.Verification
tsc --noEmitand ESLint clean./blog→ 200, JSON-LD, indexed;/zh/blog→ localized title +noindex. The blog pages need no DB.🤖 Generated with Claude Code