Skip to content

feat(seo): /blog/teardowns/ pillar hub for the OSS pricing-teardown cluster#14

Merged
nadyyym merged 2 commits into
masterfrom
seo/blog-teardowns-pillar
May 7, 2026
Merged

feat(seo): /blog/teardowns/ pillar hub for the OSS pricing-teardown cluster#14
nadyyym merged 2 commits into
masterfrom
seo/blog-teardowns-pillar

Conversation

@nadyyym

@nadyyym nadyyym commented May 7, 2026

Copy link
Copy Markdown
Member

Summary

New topical-authority pillar at /blog/teardowns/ that surfaces every published post tagged pricing teardown with a card grid + auto-generated comparison facets (license, free tier, cheapest paid, verdict).

This is the hub the SEO audit identified as the missing connector for the teardown cluster — currently each teardown is a leaf node with no thematic spine. The hub gives Google a single page to rank for category keywords ("oss pricing teardowns", "open source pricing analysis") and pumps PageRank into all individual teardowns.

URL choice

Lives under /blog/teardowns/ per Vlad's choice (rather than top-level /teardowns/). Existing posts keep their /blog/<slug>/ URLs unchanged — the hub is purely a discovery layer.

Schema

ItemList JSON-LD emitted via the schema infra from PR #13 (Batch B). Each post on the hub gets a structured ItemList entry.

Discovery

  • Header mainNav left untouched (already 6 entries; teardowns goes via Blog).
  • Footer Company column: new "Pricing teardowns" entry.
  • Footer Resources column: same entry at the top.
  • Each individual teardown post renders an "All pricing teardowns" link in the "Explore Beton" aside when pricing teardown is in the post's tags.

Comparison table

Adds an optional pricingTable: { license, stars, freeTier, cheapestPaid, verdict } to the blog content schema. Posts that fill it in render a small fact dl on their hub card. Rolling out the per-post fills as part of Batch C content updates.

Stacked

Branched off seo/tldr-faq-itemlist-schema (PR #13). Will rebase against master after #12 and #13 land.

Test plan

  • Vercel preview renders /blog/teardowns/ with all teardown posts in a card grid
  • ItemList JSON-LD present in source
  • Footer "Resources" + "Company" show "Pricing teardowns" link on every page
  • Individual teardown posts (e.g. /blog/documenso-pricing-teardown/) render the "All pricing teardowns" link in the Explore Beton aside
  • Non-teardown posts (e.g. /blog/beton-april-2026-update/) do NOT render the back-link

🤖 Generated with Claude Code

nadyyym and others added 2 commits May 7, 2026 12:53
GEO-readiness layer per the 2026 best-practice playbook (74.2% of AI citations come from "Top N" listicle-format pages with triple JSON-LD schema stacking + extractable Quick Answer above the fold).

- Blog content schema: new optional fields `tldr` (string), `faq` (array of {question, answer}), `reviewedBy` (reviewer name).
- BlogPostLayout: renders TL;DR callout above article body when set; renders FAQ accordion above the "Explore Beton" aside; emits FAQPage JSON-LD via existing PageLayout.faqData wiring; adds reviewedBy to byline + Article JSON-LD when set.
- SchemaOrg.astro: new optional itemList prop emitting ItemList JSON-LD; threaded through BaseLayout and PageLayout.
- ItemList wired on three index pages: /blog/, /integrations/, /oss-tools/dryfit/scenarios/.

Also picks up a few internal-href and canonicalPath leftovers from Batch G (oss-tools/dryfit and oss-tools/seqd had a couple of /tools/ references that the sed missed).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
New topical-authority hub at /blog/teardowns/ surfacing every published post tagged "pricing teardown" with a card grid + auto-rendered comparison table (license, free tier, cheapest paid, verdict — pulled from new optional pricingTable frontmatter field). ItemList JSON-LD emitted via Batch B's schema infra so AI engines treat it as a structured list source.

Discovery wiring:
- Footer "Resources" column gets a "Pricing teardowns" entry (every page).
- Footer "Company" column adds the same.
- Each individual teardown post renders an "All pricing teardowns" link in the "Explore Beton" aside (conditional on the `pricing teardown` tag).

Schema additions:
- Blog frontmatter: optional `pricingTable: { license, stars, freeTier, cheapestPaid, verdict }`. Used by the hub comparison cards. Rolling out per-post fills as part of Batch C content updates.

Net sitemap change: +1 URL (/blog/teardowns/).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@vercel

vercel Bot commented May 7, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
getbeton-ai-landings Ready Ready Preview, Comment May 7, 2026 7:57am

Request Review

@nadyyym nadyyym merged commit 9991713 into master May 7, 2026
2 of 3 checks passed
@nadyyym nadyyym deleted the seo/blog-teardowns-pillar branch May 7, 2026 08:27
nadyyym added a commit that referenced this pull request May 9, 2026
The workflow has been failing on every PR (including merged #13/#14/#15/#16)
since at least early May 2026 with ECONNREFUSED localhost:4321 — the
"Start preview server" step backgrounds astro preview but the readiness
loop races and the next step fetches before the server binds. The team
has been ignoring the failure for months.

scripts/seo-check.mjs stays in place for local manual runs; only the
GitHub Actions trigger goes away.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant