Standalone AEO content generation platform - Generate keywords and blogs optimized for AI search engines (ChatGPT, Perplexity, Claude, Gemini).
- Deep website analysis with Gemini 3.0 Pro Preview
- Native Google Search integration for competitive intelligence
- URL context extraction for brand understanding
- Automatic extraction of pain points, value propositions, use cases
- AI-powered keyword generation optimized for answer engines
- AEO-specific scoring (type, intent, citation potential)
- Support for 28+ languages and 50+ countries
- CSV export with comprehensive metadata
- Bulk upload via CSV (up to 50 keywords)
- 12-stage pipeline for enterprise-grade content
- AEO scores of 70-85+ (industry-leading)
- Automatic internal linking between batch blogs
- Smart citation validation
- FAQ/PAA extraction
- SEO-optimized metadata
- Markdown export
- 6 Writing Tones: Professional, Casual, Technical, Friendly, Authoritative, Educational
- Client Knowledge Base: Company-specific facts for AI context
- Content Instructions: Per-blog style and structure guidance
- Batch Generation: Multiple blogs with cross-linking (up to 50)
- Local storage of all keyword/blog generations
- Export history as CSV or Markdown
- Generation time tracking
- AEO score history
- Node.js 18+ and npm/yarn/pnpm
- Gemini API key (Get one here)
# Clone the repository
git clone https://github.com/federicodeponte/openaeomachine.git
cd openaeomachine
# Install dependencies
npm install
# or
pnpm install
# Set up environment variables
cp .env.example .env.local
# Add your GEMINI_API_KEY to .env.local
# Run the development server
npm run devOpen http://localhost:3000 to see the app.
Create a .env.local file:
# Required: Gemini API Key
GEMINI_API_KEY=your_gemini_api_key_here
# Optional: Modal endpoints (for blog generation)
# Defaults to public Modal endpoints if not set
MODAL_BLOG_WRITER_ENDPOINT=https://clients--blog-writer-fastapi-app.modal.runSet your Gemini API key in the app:
- Go to Settings (user menu)
- Enter your Gemini API key
- Save (stored in browser localStorage)
Navigate to CONTEXT tab:
- Enter a company website URL (e.g.,
scaile.tech) - Click Analyze Website
- AI extracts: description, industry, products, competitors, pain points, value propositions, use cases, content themes
- Context is stored and auto-populated for keyword/blog generation
Navigate to RUN tab:
- Single Mode: Enter one keyword
- Batch Mode: Add multiple keywords manually or upload CSV
- CSV Format:
keyword[,word_count][,instructions]AI in healthcare Machine learning basics,1500 Data science tools,2000,Include case studies
- Configure:
- Language (28+ supported)
- Country (50+ supported)
- Word count
- Tone (Professional/Casual/Technical/etc.)
- Advanced: Client knowledge base + content instructions
- Click Generate Keywords
- Export results as CSV
Navigate to BLOGS tab:
- Single Mode: Generate one blog
- Batch Mode: Generate multiple blogs with internal linking
- Upload keywords via CSV (same format as keyword generation)
- Configure:
- Word count (500-3000)
- Tone with examples
- Advanced options (optional):
- Client Knowledge Base: Company facts
- Content Instructions: How to write
- Click Generate
- Export as Markdown
Navigate to LOG tab:
- View all past keyword/blog generations
- Export individual results
- Clear history
- Framework: Next.js 14 (App Router)
- Language: TypeScript
- Styling: Tailwind CSS + shadcn/ui
- AI: Gemini 3.0 Pro Preview (native tools)
- Blog Engine: OpenBlog (Modal-hosted, 12-stage pipeline)
- Storage: localStorage (client-side)
app/
βββ (authenticated)/ # Protected routes
β βββ context/ # Company analysis
β βββ go/ # Keyword generation
β βββ blogs/ # Blog generation
β βββ log/ # Execution history
β βββ settings/ # API key management
βββ api/
β βββ analyse-website/ # Context extraction (Gemini 3.0 Pro)
β βββ generate-keywords/ # Keyword research (Gemini)
β βββ generate-blog/ # Blog generation (OpenBlog)
βββ components/
βββ context/ # ContextForm
βββ keywords/ # KeywordGenerator
βββ blogs/ # BlogGenerator
- Gemini 3.0 Pro Preview: Company analysis, keyword research
- Native Google Search integration
- Native URL Context extraction
- OpenBlog (Modal): Enterprise blog generation
- 12-stage pipeline
- AEO scoring
- Citation validation
- Internal linking
Answer Engine Optimization (AEO) optimizes content for AI platforms like:
- ChatGPT (OpenAI)
- Perplexity AI
- Claude (Anthropic)
- Gemini (Google)
- Mistral
Keyword Research:
aeo_type: question/comparison/recommendation/problem-solving/how-to/definitionsearch_intent: transactional/informational/navigationalai_citation_potential: high/medium/lowcompetition_level: low/medium/highrelevance_score: 0-100
Blog Generation:
- Conversational, question-answering format
- Entity-rich content with contextual relationships
- Structured data (FAQ, TOC, sections)
- Citation validation (15-20 sources)
- AEO scores of 70-85+
keyword[,word_count][,instructions]Examples:
AI in healthcare
Machine learning basics,1500
Data science tools,2000,Include case studies and ROI data
Cloud computing,1800,Target CTOs and technical buyersKeywords: CSV with all AEO fields
Blogs: Markdown (.md) with full HTML content
- No external database: All data stored in browser localStorage
- API keys: Stored securely in localStorage (never sent to our servers)
- Context data: Only sent to Gemini API for analysis
- Blog generation: Processed via secure Modal endpoints
This is a standalone tool. For enterprise features or custom deployments, contact SCAILE.
MIT License - see LICENSE for details.
- OpenBlog: federicodeponte/openblog - 12-stage AEO blog generation pipeline
- SCAILE: scaile.tech - Enterprise AEO services
- Issues: GitHub Issues
- Discussions: GitHub Discussions
- Email: federico@scaile.tech
Built with β€οΈ by SCAILE