Fight LinkedIn engagement farming by automatically finding real links hidden behind "comment for link" posts.
LinkedIn is flooded with engagement farming posts like:
"I created a free guide on [topic]. Comment 'interested' and I'll send it to you!"
These posts:
- Waste your time waiting for links that may never come
- Farm engagement to boost the poster's algorithm visibility
- Often lead to newsletter signups or sales funnels
Link Sniper is a browser extension + API that automatically finds the actual link by:
- Analyzing post content using AI to understand what's being promised
- Scraping comments to find links posted by the author
- Checking author profiles for website links, featured content, etc.
- Web search fallback to find the resource if not found elsewhere
- 🔍 Smart Detection - Automatically identifies engagement bait posts
- 🎯 Multi-Source Search - Checks comments, profiles, and web search
- 🤖 AI-Powered - Uses Google Gemini to understand post context
- ⚡ Fast Results - Caches results to avoid repeated searches
- 🔒 Privacy Focused - No tracking, minimal data collection
link-sniper/
├── backend/ # FastAPI backend service
│ ├── app/
│ │ ├── api/ # API routes and dependencies
│ │ ├── models/ # Pydantic schemas & DB models
│ │ ├── services/ # Core business logic
│ │ └── utils/ # Utilities and helpers
│ ├── tests/ # Test suite
│ ├── Dockerfile # Container deployment
│ └── requirements.txt # Python dependencies
│
├── extension/ # Browser extension (Manifest V3)
│ ├── background/ # Service worker
│ ├── content/ # Content scripts for LinkedIn
│ ├── popup/ # Extension popup UI
│ └── assets/ # Icons and static assets
│
└── README.md
-
Clone and navigate to backend:
cd backend -
Create virtual environment:
python -m venv venv source venv/bin/activate # On Windows: venv\Scripts\activate
-
Install dependencies:
pip install -r requirements.txt
-
Set up environment variables:
cp .env.example .env # Edit .env with your API keys -
Run the server:
uvicorn app.main:app --reload
-
Verify: Open http://localhost:8000/docs to see the API documentation
-
Open Chrome Extensions:
- Navigate to
chrome://extensions/ - Enable "Developer mode" (top right)
- Navigate to
-
Load the extension:
- Click "Load unpacked"
- Select the
extension/folder
-
Configure:
- Click the Link Sniper icon
- Open settings and set API endpoint (default:
http://localhost:8000/api/v1)
-
Use:
- Navigate to a LinkedIn post
- Click the Link Sniper icon
- Click "Find Link"
Find links related to a LinkedIn post.
Request:
{
"post_url": "https://www.linkedin.com/posts/...",
"post_content": "Optional pre-extracted content",
"author_profile_url": "https://www.linkedin.com/in/...",
"max_comments": 50
}Response:
{
"success": true,
"post_url": "https://www.linkedin.com/posts/...",
"analysis": {
"is_engagement_bait": true,
"confidence": 0.85,
"expected_link_topic": "productivity guide",
"keywords": ["productivity", "guide", "free"]
},
"links": [
{
"url": "https://example.com/guide",
"source": "comment",
"relevance_score": 0.92,
"context": "Here's the link as promised..."
}
],
"best_match": { ... },
"processing_time_ms": 1234
}Check API health status.
| Variable | Description | Default |
|---|---|---|
APP_ENV |
Environment (development/production) | development |
DEBUG |
Enable debug mode | false |
GEMINI_API_KEY |
Google Gemini API key | required |
DATABASE_URL |
PostgreSQL connection string | - |
REDIS_URL |
Redis connection string | redis://localhost:6379/0 |
RATE_LIMIT_REQUESTS |
Max requests per window | 100 |
RATE_LIMIT_WINDOW |
Rate limit window (seconds) | 60 |
- API Endpoint: Backend API URL
- Auto-scan: Automatically detect engagement bait posts
- Framework: FastAPI (Python 3.11+)
- AI: Google Gemini API
- Scraping: Playwright
- Database: PostgreSQL (Supabase)
- Cache: Redis
- Deployment: Railway / Docker
- Manifest: V3 (Chrome/Firefox compatible)
- Content Scripts: Vanilla JavaScript
- Styling: CSS3
cd backend
pytest --cov=app tests/cd backend
ruff check .
ruff format .cd extension
# Zip for Chrome Web Store submission
zip -r link-sniper.zip . -x "*.git*" -x "*.DS_Store"- Firefox Add-on support
- Safari extension
- Browser history analysis
- Bulk post scanning
- API rate limiting tiers
- Premium features
Contributions are welcome! Please:
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
This tool is for educational purposes and personal use. Please respect LinkedIn's Terms of Service and rate limits. The developers are not responsible for any misuse of this tool.
Made with ❤️ to fight engagement farming