App perso de Cyril Coulange pour préparer, valider et publier ses posts LinkedIn depuis une seule UI, branchée à Notion (drafts) + Supabase (token storage + logs) + Anthropic (génération texte) + OpenAI (illustrations DALL-E) + LinkedIn UGC API.
- Next.js 14 (App Router, RSC)
- Tailwind CSS
- Supabase (Postgres + Storage)
- Anthropic SDK (Claude Sonnet 4.6)
- LinkedIn OAuth 2.0 + UGC Posts API
- Notion API v2022-06-28
/Dashboard (statuts LinkedIn / Notion, KPIs, prochains posts)/postsListe des posts (drafts / programmés / publiés)/posts/newCréation de post (brief → 3 propositions IA → édition → programmation/publi)/calendarVue calendrier 4 semaines/brand-dnaVoix, piliers, anti-patterns IA/inspirationsComptes LinkedIn de référence/analyticsKPIs publiés + logs Supabase/settingsDiagnostic connexions et env vars
GET /api/auth/linkedinOAuth initGET /api/auth/callbackOAuth callbackGET /api/auth/statusJSON status LinkedInGET /api/notion/statusJSON status NotionGET /api/notion/postsListe des postsPOST /api/notion/postsCreate / update draftGET/PATCH /api/notion/post/[id]CRUD un postPOST /api/generate-post3 propositions ClaudePOST /api/generate-visualModeclaude-design(SVG) ouopenai(DALL-E PNG)POST /api/publishPubli explicite (UI ou X-Cockpit-Secret)POST /api/publish-duePubli tous les drafts dus (bouton manuel UI)GET /api/cron-publishCron Vercel quotidien 5h30 UTCGET /api/scrape-analyticsCron Vercel quotidien 22h UTC (placeholder V5.2)
- Aucune publication LinkedIn sans
confirmed=truecôté UI ou Bearer secret côté cron. - Tous les secrets vivent dans Vercel env vars (encrypted), jamais dans le code.
- Aucune variable client
NEXT_PUBLIC_*ne contient de secret.
npm install
npm run dev