Skip to content

[blog-section] ship /blog — index + article pages + sitemap + 5M EGP case-study post - #39

Merged
Smetools merged 1 commit into
mainfrom
hassan-blog-section
Jun 11, 2026
Merged

[blog-section] ship /blog — index + article pages + sitemap + 5M EGP case-study post#39
Smetools merged 1 commit into
mainfrom
hassan-blog-section

Conversation

@Smetools

Copy link
Copy Markdown
Collaborator

What

The website had 10 blog posts sitting in app/content/blog/*.md with no rendering surface — no /blog route, knowcap.ai/blog returned 404, zero blog URLs in the sitemap. The blogger routine (routines/blogger/) was producing SEO drafts into a dead end.

This PR ships the blog surface + the 11th post:

  • /blog — static index, card grid styled per docs/DESIGN.md (cream paper, Space Grotesk, single green accent)
  • /blog/[slug] — SSG article pages: BlogPosting + FAQPage JSON-LD, OG metadata, canonical URLs, and a provenance strip when the post cites a Knowcap recording (source_knowcap_ids in frontmatter)
  • app/lib/blog.ts — build-time content lib: gray-matter frontmatter (tolerates both shipped-post and blogger-draft shapes) + zero-dependency markdown renderer scoped to the pipeline's actual surface (h1–h4, paragraphs, lists, links, inline code, bold/italic). No new npm deps — repo has dual lockfiles, didn't want drift.
  • sitemap.ts/blog + every post, read from the content dir at build time
  • Post 11"The 5 Million Pound Question: When Odoo Operations Drift From the Spec": case-study from the blogger dry-run 2026-06-09, anchored on Knowcap source 7fc7f58d (Demo org, "Aligning Odoo Inventory Processes"), claim_provenance: transcript-fallback — reviewer should sanity-check extracted claims against the transcript per the dry-run REPORT.md recommendation.

How I tested

  • npm run build green — 58 pages, /blog static + 11 SSG post paths
  • Local prod server smoke: /blog, 2 post pages, /sitemap.xml all 200; sitemap carries 12 blog URLs
  • Prerendered HTML checked: single <h1>, 6 <h2>, exactly 5 FAQ <h3>, 8 code spans, BlogPosting + FAQPage schemas present, provenance strip renders
  • Pre-existing pg module warning in /api/db-test untouched

Vision

https://github.com/Knowcap-V2/knowcap-website/blob/main/docs/brand/VISION.md — every post carries the verified-facts positioning; case-study posts cite the real Knowcap recording they're anchored on.

🤖 Generated with Claude Code

…st 11

The repo had 10 blog posts in app/content/blog/ with no rendering surface:
no /blog route existed and knowcap.ai/blog returned 404. The blogger
routine (routines/blogger/) was producing drafts into a dead end.

- app/lib/blog.ts: build-time content lib — gray-matter frontmatter
  (tolerates both shipped-post and blogger-draft shapes), zero-dep
  markdown renderer scoped to the pipeline's surface (h1-h4, paragraphs,
  lists, links, inline code, bold/italic), FAQ extraction for JSON-LD
- /blog: static index, card grid per docs/DESIGN.md tokens
- /blog/[slug]: SSG article pages with BlogPosting + FAQPage JSON-LD,
  OG metadata, canonical URLs, provenance strip when the post cites a
  Knowcap recording (source_knowcap_ids)
- sitemap.ts: /blog + all posts, read from content dir at build
- Post 11: "The 5 Million Pound Question" — case-study from blogger
  dry-run 2026-06-09, anchored on Knowcap source 7fc7f58d (transcript-
  fallback provenance)

Verified: npm run build green (58 pages, 11 blog SSG paths), local prod
smoke /blog + 2 posts + sitemap all 200, single h1, 5 FAQ h3s, both
schemas present.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@coderabbitai

coderabbitai Bot commented Jun 11, 2026

Copy link
Copy Markdown

Warning

Review limit reached

@Smetools, we couldn't start this review because you've reached your PR review rate limit.

More reviews will be available in 34 minutes and 37 seconds. Learn how PR review limits work.

Your organization has run out of usage credits. Purchase more credits in the billing tab to continue.

⌛ How to resolve this issue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

We recommend that you space out your commits to avoid hitting the rate limit.

🚦 How do rate limits work?

CodeRabbit enforces hourly rate limits for each developer per organization.

Our paid plans include higher PR review limits than trial, open-source, and free plans. In all cases, reviews become available again over time. During sustained high-volume PR review activity, CodeRabbit may temporarily slow when the next review becomes available.

Please see our Fair Usage Limits Policy for further information.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 2addc686-19ac-4344-82b8-e9a907912e66

📥 Commits

Reviewing files that changed from the base of the PR and between 5120af8 and fd7ab69.

📒 Files selected for processing (6)
  • app/app/blog/[slug]/page.tsx
  • app/app/blog/blog-styles.ts
  • app/app/blog/page.tsx
  • app/app/sitemap.ts
  • app/content/blog/5-million-pound-question-odoo-operations-drift.md
  • app/lib/blog.ts
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch hassan-blog-section

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@Smetools
Smetools merged commit 93f7a0f into main Jun 11, 2026
1 check passed
Smetools added a commit that referenced this pull request Jul 2, 2026
…gital-employees/seo/state/ (#115)

claude-knowcap PR #39 migrated the seo worker's outputs out of
knowledge/topics/research/seo/ (knowledge/ = authored reference only).
Blogger reads content briefs from the new state/ home.


Claude-Session: https://claude.ai/code/session_017zb8bof47u2cmHbfwPJAvx

Co-authored-by: Claude Fable 5 <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