Vercel Labs just open-sourced the Eve Content Agent Template, a production-ready framework for building AI writing assistants that live directly in Slack. The template, dropped on GitHub this week with minimal fanfare, lets teams @mention an agent to automatically generate blog posts, LinkedIn updates, release notes, and newsletters—all while pulling source material from Notion and publishing approved drafts back as the signed-in writer.

How It Works

The agent listens for @mentions and DMs in your Slack workspace, replies in threads, and renders approval buttons so editors can greenlight content without leaving the conversation. Behind the scenes, it creates Notion pages as the actual requesting user through Vercel Connect's user-scoped OAuth flow—no shared credentials, no "bot account" problems where everything looks like one person posted it. Each writer signs in to their own Notion instance individually, so permissions stay intact and audit trails make sense.

The Tech Stack

Built on Eve (Vercel's agent framework), the template uses TypeScript with strict ESM mode enabled. Model access routes through Vercel AI Gateway by default, running Claude Opus 4.8 in production. File uploads, attachments, and asset management go through Vercel Blob, authenticated via OIDC tokens rather than static secrets. The whole thing runs on Vercel Sandbox for isolation, and linting/formatting uses Ultracite (a Biome preset) to enforce deterministic style checks against per-surface "skills" folders.

Zero Static Keys Architecture

Here's what makes this interesting from a security posture: there are literally no API keys or client secrets in .env files. Notion authorization happens per-writer directly in the browser through Vercel Connect. Blob storage and AI Gateway both authenticate using the project's OIDC token, meaning credentials rotate automatically without manual key management. The Deploy button provisions the Slack connector (pointing its event trigger at /eve/v1/slack), Notion MCP connector, and Blob store all wired up together—no manual configuration required.

Developer Experience

For local development, you link your deployed project with vercel link, pull environment variables with vercel env pull, then run a dev TUI where you can chat directly with the agent to test drafting, style-linting, Notion integration, and Blob flows. Customization lives in four places: per-surface skill folders (edit SKILL.md + banned-words.json), behavior instructions (agent/instructions.md), model config (agent/agent.ts or /model command), and tool implementations (add/modify files in agent/tools/). The agent hot-reloads as you edit these files—no redeploy needed for behavior changes.

Key Takeaways

  • Ships with pre-built skills for blog posts, LinkedIn, release notes, and newsletters—each with editable voice guidelines and banned-word lists
  • One-click deploy provisions Slack connector, Notion MCP integration, and Vercel Blob store automatically
  • Zero static API keys: all auth flows through Vercel Connect (browser OAuth) or OIDC token rotation
  • Default model is Claude Opus 4.8 via Vercel AI Gateway, configurable in the dev TUI
  • Deterministic style-linting with Ultracite/Biome catches voice violations before publishing

The Bottom Line

This template isn't groundbreaking conceptually—we've seen plenty of Slack-to-CMS pipelines—but it's a well-architected reference implementation that handles the boring parts (auth scoping, per-user Notion permissions, zero-secret credential management) correctly out of the box. If you're building internal content tooling at a team with existing Vercel infrastructure and Notion workflows, this is worth cloning rather than rolling your own.