KI-gestützte Generierung professioneller LinkedIn-Posts mit verschiedenen Tönen, Stilen und einem speziellen Job-Posting Mode für Recruiter.
- 3 Modi: Thema, URL (Artikel zusammenfassen), Job (Stellenausschreibungen)
- 4 Töne: Professional, Casual, Inspirational, Educational
- 4 Stile: Story, Listicle, Question-Hook, Bold-Statement
- 5 Sprachen: Deutsch, English, Français, Español, Italiano
- URL zur Stellenausschreibung eingeben ODER manuell Details erfassen
- Sub-Stile: "Wir suchen", "Kennt ihr jemanden?", "Persönliche Empfehlung", "Opportunity Pitch"
- Zielgruppen: Junior, Senior, C-Level, Freelancer
- Optionen: Branche, Standort, Remote-Toggle
- Persoenliches Profil hinterlegen (Name, Rolle, Expertise, Werte, Zielgruppe)
- Beispiel-Posts hochladen fuer Stil-Analyse
- Toggle "Mein Profil als Kontext verwenden" bei der Post-Generierung
- KI schreibt in deiner Stimme und Perspektive
- User-Authentifizierung (Email/Password, Google, LinkedIn)
- Post-History in der Cloud synchronisiert
- Cross-Device Sync
- Frontend: React 19 + TypeScript + Vite + TailwindCSS
- Backend: n8n Workflow mit OpenRouter/Claude
- Auth & DB: Supabase (optional)
git clone <repo-url>
cd linkedin-post-generator
npm installcp .env.example .env.localBearbeite .env.local:
# Pflicht: n8n Webhook URL
VITE_WEBHOOK_URL=https://dein-n8n.com/webhook/linkedin-post-generator
# Optional: Supabase für Auth & Cloud-Sync
VITE_SUPABASE_URL=https://dein-projekt.supabase.co
VITE_SUPABASE_ANON_KEY=dein-anon-key- Öffne n8n
- Importiere
n8n/linkedin_post_generator.json - Konfiguriere OpenRouter API Key
- Aktiviere den Workflow
npm run devÖffne http://localhost:5173
Für Auth und Cloud-Sync:
- Gehe zu https://supabase.com
- Erstelle ein neues Projekt
- Öffne SQL Editor in Supabase
- Führe
supabase/schema.sqlaus
- Google: Authentication → Providers → Google
- LinkedIn: Authentication → Providers → LinkedIn (OIDC)
Kopiere Project URL und anon key in .env.local
src/
├── components/
│ ├── layout/ # AppShell, Sidebar, TopBar
│ ├── auth/ # AuthModal, UserMenu
│ ├── theme/ # theme-provider, mode-toggle
│ ├── post/
│ │ ├── PostWorkspace.tsx # Orchestrator
│ │ ├── input/ # InputPanel, ModeTabs, TopicInput, UrlInput, JobInput, SettingsRow
│ │ ├── output/ # OutputPanel, PostDisplay, VersionNav, RefinePanel, ActionBar
│ │ └── shared/ # GlassSelect, HelpModal
│ ├── history/ # PostHistory, PostHistoryItem
│ └── profile/ # ProfilePage, ProfileForm, VoiceSettings, ExamplePosts
├── contexts/
│ ├── AuthContext.tsx # Auth State + Methods
│ └── ProfileContext.tsx # Voice Profile State
├── hooks/
│ ├── usePostGenerator.ts # Post-Generierung + Versioning
│ ├── usePostHistory.ts # History CRUD (Storage Adapters)
│ └── useProfile.ts # Profile CRUD (optimistic + debounced)
├── types/ # Zentrales Type-System (post, job, source, profile, history)
├── constants/ # Konfiguration (tone, style, language, job, refine)
├── utils/ # Pure Functions (formatText, urlValidation, buildProfilePayload)
├── lib/
│ ├── supabase.ts # Supabase Client
│ └── storage/ # Storage Adapter Pattern
└── App.tsx # Providers + AppShell
n8n/
└── linkedin_post_generator.json # n8n Workflow (inkl. Build Profile Context Node)
supabase/
└── schema.sql # DB Schema + RLS
npm run dev # Dev-Server starten
npm run build # Production Build
npm run preview # Build lokal testen
npm run lint # ESLint- SOP:
content_creator_sop.md- Vollstaendige Spezifikation - Changelog:
CHANGELOG.md- Alle Änderungen
- Stripe Integration (Billing)
- Voice Training (eigener Schreibstil)
- Brand Profiles (mehrere Kunden)
- LinkedIn API (Direct Publish)
- Team Workspaces
- Analytics Dashboard
Privat - Alle Rechte vorbehalten