A powerful web application that analyzes your social media posts in real-time, suggesting the top trending hashtags to maximize post reach and engagement. Perfect for influencers and marketers who want to stay ahead of the trend curve.
This application uses OpenRouter.ai to provide free access to state-of-the-art language models. No need for paid API keys - just sign up for a free account and start generating hashtags immediately! OpenRouter gives you access to models like Llama 3.2, Gemma 2, and Phi-3 at no cost.
- Multi-Platform Support: Works with LinkedIn and X/Twitter posts
- AI-Powered Analysis: Uses advanced LLMs to generate contextually relevant hashtags
- Three-Tier Hashtag Strategy:
- Safe: High-volume, broad tags for baseline visibility
- Rising: Trending, mid-volume tags for current relevance
- Niche: Specific, low-competition tags for high-intent audiences
- Interactive UI: Click to add hashtags, edit posts in real-time
- One-Click Copy: Export your enhanced post with hashtags instantly
- Frontend: Next.js 16, TypeScript, Tailwind CSS, Lucide React
- Backend: Python 3.11+, FastAPI
- Scraping: Playwright, BeautifulSoup4
- AI: OpenRouter API with free LLM models (Llama 3.2, Gemma 2, Phi-3)
- Containerisation: Docker & Docker Compose
- Docker and Docker Compose installed on your system
- OpenRouter API key (free at https://openrouter.ai/keys)
git clone https://github.com/bradmca/pulse-tag.git
cd pulse-tagCreate a .env file in the /backend directory:
cp backend/.env.example backend/.envEdit the .env file with your credentials:
# Get your free API key from https://openrouter.ai/keys
OPENROUTER_API_KEY=sk-or-v1-your-key-here
# Optional: Choose a model (defaults to Llama 3.2 3B)
OPENROUTER_MODEL=meta-llama/llama-3.2-3b-instruct:free
# Optional: LinkedIn cookies for bypassing login walls
LINKEDIN_COOKIES=...Option 1: Using Setup Script (Recommended)
- On Windows: Run
.\setup.ps1in PowerShell - On macOS/Linux: Run
chmod +x setup.sh && ./setup.sh
Option 2: Manual Docker Compose
docker-compose up --buildThe application will be available at:
- Frontend: http://localhost:3000
- Backend API: http://localhost:8000
- API Documentation: http://localhost:8000/docs
cd backend
# Create virtual environment
python -m venv venv
# Activate virtual environment
# Windows:
venv\Scripts\activate
# macOS/Linux:
source venv/bin/activate
# Install dependencies
pip install -r requirements.txt
# Install Playwright browsers
playwright install chromium
# Create .env file with your OpenAI API key
cp .env.example .env
# Edit .env with your API key
# Run the server
uvicorn main:app --reloadcd frontend
# Install dependencies
npm install
# Run the development server
npm run dev- Paste a Post URL: Copy and paste a LinkedIn or X/Twitter post URL into the input field
- Generate Tags: Click "Generate Tags" to analyze the post
- Review Hashtags: View suggested hashtags in three categories
- Add Hashtags: Click on any hashtag to add it to your post
- Edit & Copy: Modify your post text if needed, then copy to clipboard
POST /api/analyze
Content-Type: application/json
{
"url": "https://www.linkedin.com/posts/..."
}
GET /api/health
pulse-tag/
├── backend/
│ ├── main.py # FastAPI application
│ ├── scraper.py # Social media scraper
│ ├── ai_engine.py # AI hashtag generator
│ ├── requirements.txt # Python dependencies
│ └── Dockerfile # Backend Docker config
├── frontend/
│ ├── src/app/
│ │ └── page.tsx # Main React component
│ ├── package.json # Node.js dependencies
│ └── Dockerfile # Frontend Docker config
├── docker-compose.yml # Container orchestration
└── README.md # This file
OPENROUTER_API_KEY: Your OpenRouter API key (required) - get free at https://openrouter.ai/keysOPENROUTER_MODEL: The model to use (optional, defaults to meta-llama/llama-3.2-3b-instruct:free)- Free options include:
- meta-llama/llama-3.2-3b-instruct:free
- meta-llama/llama-3.2-1b-instruct:free
- google/gemma-2-9b-it:free
- microsoft/phi-3-medium-128k-instruct:free
- Free options include:
LINKEDIN_COOKIES: LinkedIn cookies for bypassing login walls (optional)
If LinkedIn blocks the scraper:
- Log in to LinkedIn in Chrome
- Use a browser extension to export cookies (e.g., "Get cookies.txt")
- Format the cookies as
key1=value1; key2=value2; ... - Add them to your
.envfile asLINKEDIN_COOKIES
- CORS Errors: Ensure the backend is running and CORS is configured for localhost:3000
- Playwright Browser Issues: Run
playwright install chromiumin the backend directory - OpenRouter API Errors: Verify your API key is valid and check OpenRouter status
We welcome contributions! Please see our Contributing Guidelines for details.
This project is licensed under the MIT License - see the LICENSE file for details.
If you encounter any issues or have questions:
- Create an issue on GitHub
- Check the troubleshooting section above
- Review the API documentation at http://localhost:8000/docs
⭐ If this project helps you, please give it a star!