DEV Community

Pow
Pow

Posted on

I built Sotion, an AI social content workflow on top of Notion

Notion MCP Challenge Submission 🧠

This is a submission for the Notion MCP Challenge

What I Built

I built Sotion, an AI-powered social content assistant that turns a Notion workspace into an operational content system.

The idea came from a simple problem: a lot of people already keep their best raw material in Notion, whether they are creators, marketers, founders, indie hackers, or small teams. But the moment they want to turn those notes into social posts, the workflow breaks. They jump between docs, AI chat tabs, scheduling tools, and social apps. The content gets rewritten multiple times, context gets lost, and publishing becomes manual again.

So I built Sotion to keep that loop in one place.

I also wanted it to be useful not only for developers or highly technical users, but for anyone who already feels comfortable working in Notion. That is why the product is built around a guided onboarding flow, plain-language chat, and a workspace model that feels familiar instead of technical. Users do not need to understand MCP, APIs, or agent workflows to get value from it. They just connect their workspace, add an AI provider, and start asking for help naturally.

With Sotion, a user connects their workspace through Notion MCP, adds their preferred AI provider, and then starts chatting in plain language. From there, Sotion can help create a dedicated social media workspace in Notion, organize a content database, draft posts, rewrite existing ideas, check connected publishing accounts, and publish approved text posts to supported platforms.

What makes it useful is that Notion is not treated as a passive note dump. It becomes the system of record for the content workflow.

Core features

  • Connect Notion through Notion MCP so Sotion can work directly with the user’s workspace
  • Guided onboarding to connect Notion and add an AI provider before entering the app
  • Natural-language chat for turning notes, ideas, and drafts into social content
  • Dedicated social content workspace in Notion, including a structured database for managing posts
  • Multi-model AI support through providers like OpenAI, Claude, OpenRouter, DeepSeek, Moonshot AI, and Z.AI
  • Social account connection and readiness checks for publishing workflows
  • Human-approved publishing for posts to supported social platforms
  • Optional online research sources via MCP integrations like Exa and Tavily

Supported social workflow today

Sotion is designed for text-based social publishing. Right now, the app supports:

  • Twitter (X)
  • LinkedIn
  • Threads

Video Demo

Show us the code

GitHub logo powxenv / sotion

An AI-powered social content assistant that helps you turn your Notion workspace into a system for planning, drafting, organizing, and publishing social posts.

Sotion

Sotion is an AI-assisted social content workspace built around Notion.

It helps users connect Notion, draft social posts with AI, keep content organized in a dedicated Notion workspace, and publish approved text posts to connected platforms.

Demo

Video demo: https://youtu.be/YK8Xza1msIo

Key Features

  • Connect Notion with Notion MCP
  • Guided onboarding for Notion + AI provider setup
  • Chat-based workflow for planning, drafting, and rewriting content
  • Dedicated Notion workspace for social content management
  • Multiple AI provider support:
    • OpenRouter
    • OpenAI
    • Claude
    • DeepSeek
    • Moonshot AI
    • Z.AI
  • Social account connection for X and LinkedIn
  • Approval-based publishing for text posts
  • Optional MCP online research sources:
    • Exa
    • Tavily

Setup

1. Install dependencies

bun install
Enter fullscreen mode Exit fullscreen mode

2. Create .env.local

SERVER_URL=http://localhost:7634
VITE_APP_TITLE=Sotion

DATABASE_URL=postgres://user:password@localhost:5432/sotion
DATABASE_POOL_URL=postgres://user:password@localhost:5432/sotion

NOTION_CLIENT_ID=
NOTION_CLIENT_SECRET=

X_CLIENT_ID=
X_CLIENT_SECRET=

LINKEDIN_CLIENT_ID=
LINKEDIN_CLIENT_SECRET=

THREADS_CLIENT_ID=
THREADS_CLIENT_SECRET=

MCP_ENCRYPTION_KEY=replace-with-a-random-secret-at-least-32-chars
AI_PROVIDER_ENCRYPTION_KEY=replace-with-a-different-random-secret-at-least-32-chars
Enter fullscreen mode Exit fullscreen mode

Notes:

  • DATABASE_URL is used by the app
  • DATABASE_POOL_URL is used by Drizzle Kit
  • MCP_ENCRYPTION_KEY is used to encrypt MCP-related secrets
  • AI_PROVIDER_ENCRYPTION_KEY is used to encrypt AI…

Tech stack:

  • TanStack Start
  • AI SDK
  • Drizzle ORM + Neon
  • Better Auth
  • Notion MCP
  • Deploy on Railway

How I Used Notion MCP

I used Notion MCP to make Sotion work with the same place where ideas already live.

Most social content tools start after the thinking is already done. In my workflow, that thinking usually starts in Notion: rough notes, half-written drafts, launch ideas, product updates, and scattered content angles. I wanted the assistant to step into that environment instead of forcing users to move everything somewhere else first.

With Notion MCP, Sotion can look into the workspace, understand what already exists, and help turn that raw material into something operational.

In practice, this means Sotion can:

  • find relevant notes and drafts inside Notion
  • create and organize a content database for tracking ideas and posts
  • store platform-specific drafts back into Notion
  • update statuses and publishing metadata as work progresses
  • use Notion as persistent context across sessions instead of starting from zero every time

That changes the product from “AI that writes posts” into “AI that works with your real content system.”

A simple example:
A user can connect Notion, ask Sotion to create a social content workspace, and then continue with prompts like:

  • “Turn my product notes into a LinkedIn post”
  • “Make an X version of this idea”
  • “Plan posts for this week”
  • “Save the drafts back to Notion”

Because the assistant can operate directly on the workspace, the output does not disappear into chat history. It becomes part of a living system inside Notion that the user can review, edit, and keep building on.

I also wanted the workflow to stay useful when the answer is not already inside Notion. Sometimes drafting a strong post needs fresh context from the web, whether that is industry news, supporting references, or additional research. For that, Sotion supports additional MCP-powered online sources like Exa and Tavily. When users enable them, Sotion can search the web, open relevant pages, and bring that context into the drafting process, while still keeping Notion as the place where the work is organized and saved.

That was the main thing I wanted to unlock: keeping ideation, drafting, organization, research, and follow-up in one continuous workflow instead of breaking it across disconnected tools.

Top comments (1)

Collapse
 
miracleio profile image
Miracleio

This is really beautiful. I love it!
Amazing work 🙌