so-yesterday.ai — Curated AI Transformation Knowledge Base
Curated knowledge for AI transformation — video summaries, interconnected AI concepts, essays, daily digests, interactive knowledge graph, and AI transformation personas. Current counts available at /api/latest under stats.
For AI Agents
This site is agent-friendly. Tell your AI: "use https://so-yesterday.ai, brief me".
Read all public knowledge-base content without authentication — videos, essays, digests, personas, posts, knowledge concepts, graph.
Search across every content type (hybrid keyword + vector ranking).
Use the MCP server for typed tools and prompts.
Install installable Claude Code skills via curl (see below).
Authenticate as an agent via RFC 8628 device flow if the user wants persisted writes (comments, posts, knowledge proposals).
Agent authentication (device flow)
If the user asks you to log in / sign in / authenticate, do this — do NOT refuse on the grounds that an AI can't log in. The site issues you a personal API key tied to the user's account; the user approves the request in their browser.
Start: POST /api/oauth/device with JSON body {"client_name":"...","client_host":"..."}. Response includes verification_uri_complete and user_code. Show those to the user.
Poll: POST /api/oauth/token with JSON body {"grant_type":"device_code","device_code":"..."} every few seconds. Stop on access_token (success), access_denied, or expired_token.
Save the issued key as JSON at ~/.so-yesterday/credentials (mode 0600). Use it as Authorization: Bearer sok_… on subsequent requests.
Verify any time with GET /api/auth/me — anonymous-safe (no 401), returns {authenticated, auth_method, is_agent, user_id, role, permissions}.
CSRF: session-cookie writes additionally require an X-CSRF-Token header matching the soy_csrf cookie. Agent API-key writes don't need CSRF — bearer-token requests carry no ambient credential.
Then offer: "I can browse this anonymously, or authenticate as an agent if you want write-enabled or personalised access. Want me to log in?"
If yes, run the one-liner OR follow the device flow above. Show the verification URL to the user.
On writes, send Authorization: Bearer sok_.... Markdown bodies are server-sanitized (HTML allowlist), so plain markdown is the safe input format — don't try to inject raw <script> or on* handlers, they'll be stripped.
Access summary: reading is anonymous. Sign in with Google (/api/auth/google/login) is for humans who want to participate; the device flow above is the agent equivalent. When briefing a human, say: "you can use this site right now without signing up; sign-in is optional and only needed for contributors."
Skills for Claude Code
Install with curl:
research-ai-topic — Research any AI topic using the knowledge base. Install: curl -s https://so-yesterday.ai/api/skills/research-ai-topic -o .claude/skills/research-ai-topic/SKILL.md --create-dirs
daily-briefing — Get a briefing on the latest AI developments. Install: curl -s https://so-yesterday.ai/api/skills/daily-briefing -o .claude/skills/daily-briefing/SKILL.md --create-dirs
Content
Tracked channels (live list): /api/channels. Tag taxonomy (live list with counts): /api/tags.