Skip to content

Add SEO blog, sitemap, and Slack article bot#23

Merged
emilam merged 1 commit into
mainfrom
emilam/seo-blog-sitemap
Mar 15, 2026
Merged

Add SEO blog, sitemap, and Slack article bot#23
emilam merged 1 commit into
mainfrom
emilam/seo-blog-sitemap

Conversation

@emilam

@emilam emilam commented Mar 15, 2026

Copy link
Copy Markdown
Collaborator

Summary

  • SEO blog section at /learn/ — server-rendered articles from marketing_articles table with full OG/meta/JSON-LD support
  • Sitemap + robots.txt for Google crawling with dynamic article entries
  • Slack article bot — @mention to generate articles via OpenAI, threaded feedback loop with tool calls, "publish it" to go live
  • Supabase types refactor — split monolithic types.ts into individual files per domain
  • Migration 016marketing_articles + marketing_article_threads tables with RLS policies
  • Shared marketing nav/footer extracted from homepage, reused on /learn

New files

  • src/app/learn/ — listing, article detail, layout, not-found, date formatter
  • src/app/api/webhooks/slack/route.ts — Slack Events API handler
  • src/lib/slack/ — client, verify, orchestrate-article
  • src/lib/openai/article-writer.ts — multi-turn tool-call article generation
  • src/lib/db/articles.ts — CRUD for articles + thread queries
  • src/app/sitemap.ts, src/app/robots.ts

Test plan

  • Verify /learn renders empty state when no articles exist
  • Verify /sitemap.xml includes static pages and article entries
  • Verify /robots.txt disallows private routes
  • Verify Slack webhook responds to url_verification challenge
  • Verify signature verification rejects unsigned requests
  • Run npm run test:docker — new tests for DB layer and verifySlackRequest
  • Apply migration 016 and confirm tables + RLS policies

🤖 Generated with Claude Code

- /learn route with server-rendered articles from marketing_articles table
- Sitemap and robots.txt for Google crawling
- Slack bot: @mention to generate articles via OpenAI, threaded feedback loop, "publish it" to go live
- Split supabase types into individual files per domain
- Migration 016: marketing_articles + marketing_article_threads tables with RLS
- Full test coverage for DB layer and Slack signature verification

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@vercel

vercel Bot commented Mar 15, 2026

Copy link
Copy Markdown

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

Project Deployment Actions Updated (UTC)
postimp Ready Ready Preview, Comment Mar 15, 2026 5:30pm

@emilam emilam merged commit 2b3007b into main Mar 15, 2026
3 checks passed
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