A powerful AI-powered blog writing tool that analyzes your writing style and generates new content using Digital Ocean AI and GibsonAI. This application allows users to upload their previous articles, analyze their unique writing style, and generate new blog posts that sound exactly like them.
✍️ Writing Style Analysis: Upload your articles to analyse tone, voice, structure, and vocabulary
🤖 AI-Powered Content Generation: Uses Digital Ocean AI to create content in your style
💾 Memory Integration: Stores your writing style profile using Memori for long-term learning
📚 Multi-Format Support: Handles PDF, DOCX, and TXT documents
🎯 Style Matching: Generates content that perfectly matches your writing personality
📝 Content Management: Download, copy, and save generated blog posts
🔍 Real-time Analysis: Instant writing style insights with detailed breakdowns
⚙️ Easy Configuration: Simple setup with API keys and environment variables
🔒 Secure Processing: Local document processing with no external storage
- Python 3.10+
- Digital Ocean AI API credentials
- GibsonAI's Memori integration
Clone the repository:
git clone https://github.com/Arindam200/awesome-ai-apps.git
cd simple_ai_agents/blog_writing_agentInstall the required dependencies using uv:
uv syncCreate a .env file in the project root and add your API credentials:
DIGITAL_OCEAN_ENDPOINT=your_digital_ocean_agent_endpoint
DIGITAL_OCEAN_AGENT_ACCESS_KEY=your_digital_ocean_api_keyStart the Streamlit application:
uv run streamlit run app.pyOpen your web browser and navigate to the provided local URL (typically http://localhost:8501)
- Upload Document: Upload your previous articles (PDF, DOCX, or TXT)
- Style Analysis: AI analyzes your writing style, tone, and structure
- Memory Storage: Automatically stores your style profile in the database
- Topic Input: Enter what you want to write about using the chat interface
- Content Generation: AI creates blog posts using your stored writing style
- Content Management: Download, copy, and save your generated content
- Upload Article: Upload a blog post that represents your writing style
- Analyze Style: Click "🔍 Analyze Writing Style" to get insights
- Style Stored: Your writing profile is automatically saved to memory
- Generate Content: Use the chat input to request new blog posts
- Get Results: Receive AI-generated content that sounds like you wrote it
- Manage Content: Download, copy, or save your generated posts
- PDF: Portable Document Format files
The AI analyzes your writing across multiple dimensions:
- 🎭 Tone: Formal, casual, professional, friendly, etc.
- 🗣️ Voice: Authoritative, conversational, technical, etc.
- 📐 Structure: Paragraph organization, transitions, flow
- 📚 Vocabulary: Complexity level and word choice patterns
- 📝 Sentence Patterns: Length, structure, and rhythm
- 💡 Examples Style: How you use analogies and examples
- Agent Endpoint: Your Digital Ocean AI agent endpoint
- API Key: Your Digital Ocean AI access key
- Built-in Support: Seamless integration with GibsonAI Memori
- Logo Display: Prominent branding in the application interface
- UI Layer (app.py): Streamlit interface and user interactions
- Agent Layer (agents.py): AI functions and business logic
- Memory Layer: Memori integration for style persistence
- AI Services: Digital Ocean AI integration for content generation
- Document Processor: Extracts text from various file formats
- Style Analyzer: Analyzes writing patterns using AI
- Content Generator: Creates new content matching your style
- Memory Manager: Stores and retrieves writing style profiles
- "Write a blog post about artificial intelligence in healthcare"
- "Create an article about sustainable business practices"
- "Generate content about remote work productivity tips"
- Upload your best blog posts to teach the AI your style
- Analyze multiple articles to build a comprehensive profile
- Refine your style profile over time with new content
Contributions are welcome! Please feel free to submit a Pull Request.
This project is licensed under the MIT License - see the LICENSE file for details.
If you encounter any issues or have questions, please open an issue on GitHub.
