Eve Content Agent Template Eve released a Slack-based content agent template that lets writers draft blog posts, LinkedIn posts, release notes, and newsletters by @mentioning the bot in Slack. The agent pulls source material from Notion, publishes approved pieces as the signed-in writer, and uses Vercel Connect and OIDC for authentication with no static API keys. A Slack-based content assistant built on Eve https://beta.eve.dev . Writers @mention it in Slack and it drafts blog posts, LinkedIn posts, release notes, and newsletters in your house voice, pulling source material from Notion and publishing approved pieces back to Notion as the signed-in writer. Lives in Slack. Answers @mentions and DMs, replies in threads, and renders approvals as buttons. Writes in your voice. One editable style skill per surface blog, LinkedIn, release notes, newsletter , enforced by a deterministic style-lint tool. Grounded in Notion. Each writer signs in to their own Notion through Vercel Connect, so drafts are created as the real person with their own permissions, with no shared secret. Stores files in Vercel Blob. Export drafts, save images and attachments, and read them back, authenticated by the project's OIDC token. Deploying with the button provisions everything the agent needs and wires it up for you: - a Slack connector sets SLACK CONNECTOR , with the event trigger pointed at /eve/v1/slack , - a Notion connector sets NOTION CONNECTOR , - a Vercel Blob store for the asset tools. Once deployed, @mention the bot in your Slack workspace to start drafting. | Layer | Technology | |---|---| | Agent framework | | Vercel Connect https://vercel.com/docs/connect Vercel Blob https://vercel.com/docs/vercel-blob , authenticated by OIDC Vercel AI Gateway https://vercel.com/docs/ai-gateway default: Claude Opus 4.8 Vercel Sandbox https://vercel.com/docs/sandbox Ultracite https://www.ultracite.ai/ Biome Zero static keys. Authentication runs entirely on Vercel Connect https://vercel.com/docs/connect Slack and Notion and Vercel OIDC https://vercel.com/docs/oidc Vercel Blob and AI Gateway . There are no API keys or client secrets to manage in code or .env files: Notion is authorized per writer in the browser, and Blob and the model authenticate with the project's OIDC token. agent/ agent.ts model configuration instructions.md the agent's behavior channels/slack.ts Slack surface Vercel Connect credentials connections/notion.ts Notion workspace, user-scoped OAuth via Vercel Connect sandbox.ts Vercel Sandbox backend tools/ lint against style.ts deterministic banned-words check upload asset.ts Vercel Blob: store text or binary content list assets.ts Vercel Blob: browse stored assets get asset info.ts Vercel Blob: metadata without downloading download asset.ts Vercel Blob: read a stored file back delete asset.ts Vercel Blob: delete requires approval skills/ blog-style/ voice, structure, and a canonical example post linkedin-style/ release-notes-style/ newsletter-style/ Link the project you deployed or a fresh one and pull its environment: vercel link vercel env pull Then run the development server and link a model provider with /model in the TUI: pnpm dev You can chat with the agent directly in the dev TUI to test the drafting, style-lint, Notion, and Blob flows. The Slack surface itself only runs against a deployment. Ship changes with: eve deploy This project uses Ultracite https://www.ultracite.ai/ a Biome https://biomejs.dev/ preset for linting and formatting: pnpm check check formatting and lint rules pnpm fix auto-fix what is fixable The Deploy button provisions these for you. To set them up manually for a project you didn't create with the button , use the Vercel CLI https://vercel.com/docs/cli : php Notion connector note the printed UID, e.g. mcp.notion.com/notion - NOTION CONNECTOR vercel connect create mcp.notion.com --name notion Slack connector note the UID, e.g. slack/