- π About the Project
- π Features
- π― Core Objectives
- π¦ Tech Stack
- π οΈ Current Work
- Roadmap
- β‘ Quick Start
- π§ Twitter OAuth Configuration
- π How to Use
- ποΈ Project Structure
- π API Endpoints
- π Troubleshooting
- π‘ What I Learned
- π¨ Design Philosophy
- π§ Challenges I Faced
- π Why This Project Matters
- π License
This project was inspired by a very common problem in organic marketing: everyone knows consistency matters, but very few people can maintain it.
Most marketers, founders, and content creators understand that organic growth is a long-term game. Posting regularly builds trust, reach, and compounding visibility over time. However, in reality, content publishing is often manual, fragmented, and easy to drop when workload increases. After missing posts, breaking schedules, and constantly "catching up," organic growth quietly stalls.
Content Pilot solves that problem at the system levelβautomating content creation and publishing while maintaining quality and authenticity.
- Visual Flow-Based Content Creation: Design content workflows with an intuitive drag-and-drop interface
- AI-Powered Content Generation: Leverage Gemini 2.5 Flash for intelligent, context-aware content
- Automatic Image Generation: Create visuals with Imagen 3.0 that match your content
- Twitter/X OAuth 2.0 Integration: Seamless authentication and publishing
- Automated Publishing: Content is posted automaticallyβno manual intervention required
- Session-Based Security: Non-custodial approach, tokens never stored on frontend
- Multi-Language Support: Generate content in Vietnamese, English, and more
- Make organic social media growth accessible without requiring expert knowledge
- Remove friction from repetitive content workflows
- Automate content creation and scheduling to maintain consistency
- Provide clear visibility into content generation and publishing
- Enable reliable, predictable execution over time
Frontend:
- Next.js / React 19 + TypeScript + Vite
- ReactFlow (visual flow editor)
- Google Generative AI (Gemini 2.5 Flash)
- Lucide React (icons)
Backend:
- Node.js + Express + TypeScript
- twitter-api-v2 (Twitter OAuth + API)
- express-session (session management)
AI Models:
- Gemini 2.5 Flash (content generation)
- Imagen 3.0 (image generation)
| Status | Feature |
|---|---|
| β | Visual workflow builder |
| β | AI content generation with Gemini |
| β | Image generation with Imagen |
| β | Twitter OAuth 2.0 authentication |
| β | Automatic tweet posting |
| β | Multi-language content support |
- Core automation engine
- Twitter/X integration
- AI content generation
- Image generation
- Multi-platform support (LinkedIn, Facebook)
- Content scheduling and calendar
- Analytics and performance tracking
- Content recycling and repurposing
- Team collaboration features
- Webhook integrations
- Node.js β₯ 18
- npm β₯ 10
- Twitter Developer Account
- Gemini API Key
Check your versions:
node -v
npm -vgit clone <your-repo-url>
cd "2026 Gemini Hackathon"Create .env files for both frontend and backend before running the app.
VITE_BACKEND_URL=http://localhost:3001PORT=3001
NODE_ENV=development
FRONTEND_URL=http://localhost:5173
# Twitter/X OAuth 2.0 Credentials
TWITTER_CLIENT_ID=your_twitter_client_id_here
TWITTER_CLIENT_SECRET=your_twitter_client_secret_here
TWITTER_CALLBACK_URL=http://localhost:3001/auth/twitter/callback
# Session Secret
SESSION_SECRET=your_random_session_secret_here
# Gemini API (Required)
GEMINI_API_KEY=your_gemini_api_key_here
# Opik Configuration (Optional - for tracing and evaluation)
OPIK_API_KEY=your_opik_api_key
OPIK_WORKSPACE=defaultNote: Opik integration is optional. The app will work without Opik credentials, but you won't get AI tracing and evaluation metrics.
cd frontend
npm installcd backend
npm installcd backend
npm run devBackend runs at http://localhost:3001
cd frontend
npm run devFrontend runs at http://localhost:3000
- Go to Twitter Developer Portal
- Create new app or use existing
- Configure User authentication settings:
- App permissions: Read and Write
- Type of App: Web App, Automated App or Bot
- Callback URL:
http://localhost:3001/auth/twitter/callback - Website URL:
http://localhost:3000
- Copy Client ID and Client Secret to
backend/.env
- Start both backend and frontend servers
- Open
http://localhost:3000in your browser - Click "Sign in with X" to authenticate with Twitter
- Enter your content idea or topic
- AI automatically generates content and images
- Content is published to Twitter automatically
- View your post directly on Twitter
.
βββ frontend/
β βββ components/ # React components
β β βββ ModuleComponents.tsx # Workflow modules
β β βββ CommandBar.tsx # Input interface
β β βββ FlowHeader.tsx # Header component
β βββ services/ # API services
β β βββ gemini.ts # AI content generation
β β βββ twitter.ts # Twitter integration
β βββ hooks/ # Custom React hooks
β β βββ useFlowController.ts # Workflow logic
β βββ types.ts # TypeScript definitions
β
βββ backend/
βββ src/
β βββ config/ # Configuration management
β βββ routes/
β β βββ auth.ts # OAuth routes
β β βββ twitter.ts # Twitter API routes
β βββ types/ # TypeScript types
β βββ server.ts # Main server file
βββ .env.example # Environment template
βββ package.json
GET /auth/twitter/login- Initiate OAuth flowGET /auth/twitter/callback- OAuth callbackGET /auth/twitter/user- Get current userPOST /auth/twitter/logout- Logout user
POST /api/twitter/tweet- Post a tweetGET /api/twitter/timeline- Get user timelineGET /api/twitter/search- Search tweets
Popup blocked:
- Allow popups for localhost in browser settings
Authentication failed:
- Verify callback URL in Twitter Developer Portal matches exactly:
http://localhost:3001/auth/twitter/callback - Ensure App permissions are "Read and Write"
- Check credentials in
backend/.env
CORS error:
- Ensure backend is running on port 3001
- Verify
FRONTEND_URL=http://localhost:3000in backend.env - Check
BACKEND_URL=http://localhost:3001in frontend.env
Content not posting:
- Ensure you're authenticated with Twitter
- Check backend console for error messages
- Verify Twitter API credentials are valid
While building this project, I learned that automation is not about replacing marketers, but about removing friction from repetitive workflows. Organic growth depends less on viral moments and more on predictable execution over time.
From a technical perspective, I learned how to:
- Design an AI-powered content generation system that maintains quality
- Build abstractions for multi-platform publishing without coupling platform logic
- Implement secure OAuth flows with session-based authentication
- Treat content as a lifecycle (ideation β generation β preview β publish)
- Create visual workflow builders that are intuitive for non-technical users
The system is structured around:
- A core automation engine that guarantees content is published reliably
- A unified content model that can adapt to different platforms
- AI-driven generation that allows marketers to focus on strategy instead of execution
- Clear separation between content logic, AI logic, and platform adapters
The goal was to make the system boring in the best way possible: predictable, reliable, and invisible once configured.
The hardest part was not the UI or the posting itself, but handling edge cases at scale:
- Preventing duplicate posts when retries happen
- Managing API rate limits and quota restrictions
- Balancing AI creativity with brand consistency
- Designing automation that supports organic growth instead of gaming algorithms
- Implementing secure authentication without storing sensitive tokens on frontend
Another challenge was resisting feature creep. It was tempting to add analytics, A/B testing, or engagement hacks early on. I deliberately kept the scope focused on consistent execution, because without that foundation, nothing else matters.
I believe organic growth is undervalued in a world obsessed with paid acquisition. This project reflects my belief that good systems, executed consistently, outperform shortcuts over time.
This is not just a tool I builtβit is a workflow I personally wanted to use.
MIT
Content Pilot β Automate consistency, amplify growth.
