macOS video editor built for AI
LinkedIn content creator with Gemini AI and OAuth
This repository is a React and TypeScript app for drafting, scheduling, and posting LinkedIn content. It uses Gemini AI for generation and research, a calendar for planning, and LinkedIn OAuth for direct posting.
Builders who want an AI app for LinkedIn posts, planning, and scheduling.
You can draft and schedule LinkedIn content in one place instead of managing posts manually.
What it does
AI content generation
Generates LinkedIn posts with Gemini AI.
Multiple post formats
Creates text posts, image posts, and carousel or document posts.
Smart research
Researches topics and best practices before writing.
Content calendar
Lets you schedule and manage posts in a calendar view.
Batch generation
Creates multiple post variations at once.
LinkedIn posting
Posts to LinkedIn through OAuth integration.
How to get it
- 1Clone the repository
git clone https://github.com/AgriciDaniel/linkedin-content-creator.git cd linkedin-content-creator
- 2Install dependencies
npm install
- 3Copy .env.example to .env and fill in your API keys
cp .env.example .env
- 4Run
# Start the development server npm run dev # Start with OAuth proxy server (for LinkedIn posting) npm run dev:full
- 5Run
npm run build npm run preview
- 6Run
# Run all E2E tests npm run test:e2e # Run tests with UI npx playwright test --headed # Run specific test file npx playwright test e2e/app.spec.ts
README
LinkedIn Content Creator
An AI-powered application for generating and scheduling engaging LinkedIn posts. Built with React, TypeScript, and powered by Google's Gemini AI.

Features
- AI Content Generation - Generate professional LinkedIn posts using Gemini AI
- Multiple Content Types - Create text posts, image posts, and carousel/document posts
- Smart Research - AI researches topics and best practices before generating content
- Content Calendar - Schedule and manage your posts with an intuitive calendar view
- AI Planner - Plan multiple posts at once with intelligent scheduling
- Batch Generation - Generate multiple post variations simultaneously
- Profile Customization - Configure your brand voice, target audience, and content preferences
- Dark/Light Mode - Full theme support for comfortable viewing
- LinkedIn Integration - Direct posting to LinkedIn via OAuth
Tech Stack
- Frontend: React 18, TypeScript, Tailwind CSS
- AI: Google Gemini API
- Build: Vite
- Testing: Playwright (E2E)
- Backend: Express.js (OAuth proxy server)
Installation
-
Clone the repository
git clone https://github.com/AgriciDaniel/linkedin-content-creator.git cd linkedin-content-creator -
Install dependencies
npm install -
Configure environment variables
Copy
.env.exampleto.envand fill in your API keys:cp .env.example .env -
Required API Keys
Service Required Purpose Get it from Gemini API Yes AI content generation Google AI Studio LinkedIn OAuth Yes Post to LinkedIn LinkedIn Developers Firecrawl API Optional Web research Firecrawl
Configuration
Gemini API Key
Add your Gemini API key in the app's Settings panel, or set it in .env.local:
GEMINI_API_KEY=your_gemini_api_key
LinkedIn OAuth Setup
- Create an app at LinkedIn Developers
- Add these OAuth 2.0 redirect URLs:
http://localhost:5000(main app)http://localhost:5001(OAuth proxy server)
- Request the following permissions:
openidprofilew_member_social
- Copy your Client ID and Client Secret to
.env
Usage
Development
# Start the development server
npm run dev
# Start with OAuth proxy server (for LinkedIn posting)
npm run dev:full
Production Build
npm run build
npm run preview
Testing
# Run all E2E tests
npm run test:e2e
# Run tests with UI
npx playwright test --headed
# Run specific test file
npx playwright test e2e/app.spec.ts
Project Structure
├── components/ # React components
├── services/ # API and business logic services
├── e2e/ # Playwright E2E tests
├── server/ # OAuth proxy server
├── public/ # Static assets
└── types/ # TypeScript type definitions
Testing Coverage
The app includes comprehensive E2E tests:
- 100 integration tests covering UI, storage, calendar, and scheduling
- 3 live generation tests for real API testing (requires API keys)
Attribution
App created by Agrici Daniel
Community
Join our community for tips, updates, and support:
License
MIT License - see LICENSE for details.
Author
Built by Agrici Daniel - AI Workflow Architect.
- Blog - Deep dives on AI marketing automation
- AI Marketing Hub - Free community, 2,800+ members
- YouTube - Tutorials and demos
- All open-source tools
Files in the repo
- .claude
- .github
- components
- e2e
- hooks
- services
- templates
- types
- .env.example
- .gitignore
- app-screenshot.png
- App.tsx
- CLAUDE.md
- CODE_OF_CONDUCT.md
- index.html
- index.tsx
- LICENSE
- LINKEDIN-AUTH-GUIDE.md
- linkedin-auth-helper.js
- metadata.json
- OAUTH-SETUP.md
- package-lock.json
- package.json
- playwright.config.ts
- README.md
- SECURITY.md
- server.cjs
- tsconfig.json
- types.ts
- vite-env.d.ts
- vite.config.ts
Discussion (0)
Ask about usage, or say what you built with itSign in to join the discussion.
No comments yet. Be the first to say what this is good for.
More other
Powerful AI Client
Open-source multi-agent AI desktop client — build and command your AI agent team through conversation. A commander LLM dispatches sub-agents in parallel or in series; agents self-evolve via reflection and skill crystallization. Local-first, BYO LLM keys (Claude · OpenAI · Gemini · DeepSeek · Kimi · GLM · Qwen). macOS / Windows / Linux.
Natively — Free open-source AI meeting assistant, interview copilot, and note taker. The best alternative to Cluely, Otter, Granola, Final Round AI, Fireflies, and Interview Coder. Real-time transcription, AI meeting notes, lecture recording, local RAG, BYOK, and stealth mode. Runs locally. No subscriptions. No data breaches.
An offline-first scientific writing workspace powered by Claude. LaTeX + Python + 100+ scientific skills all running locally.
A Plugin-Based Multi-Agent System for In-Editor Academic Writing, Review, and Editing