Initial commit: LinkedIn Analyzer with Gemini 2.5 Flash and PHP Backend
This commit is contained in:
158
README.md
Normal file
158
README.md
Normal file
@@ -0,0 +1,158 @@
|
||||
# 🔍 LinkedIn Job Analyzer
|
||||
### AI-powered job analysis extension for Microsoft Edge & Chrome
|
||||
> **Personal use only.** Powered by Gemini 2.0 Flash Lite (free tier — 1,000 requests/day).
|
||||
|
||||
---
|
||||
|
||||
## ✨ What It Does
|
||||
|
||||
When you open any LinkedIn job page, the extension automatically reads the job and gives you:
|
||||
|
||||
| Tab | What you get |
|
||||
|-----|-------------|
|
||||
| 📊 **Analysis** | Match score (X/100), strong matches, gaps, recommendation, best CV variant |
|
||||
| ✉️ **Cover Letter** | Complete, personalized cover letter ready to send |
|
||||
| 📝 **CV Tips** | Tailored headline, summary, keywords to add, what to emphasize |
|
||||
| ❓ **Q&A** | Answers to application questions (Easy Apply form) |
|
||||
| ⭐ **Benefits** | Perks, work arrangement, growth potential, red flags |
|
||||
|
||||
---
|
||||
|
||||
## 🚀 Installation (5 minutes)
|
||||
|
||||
### Step 1 — Get a Free Gemini API Key
|
||||
|
||||
1. Open: **https://aistudio.google.com/apikey**
|
||||
2. Sign in with any Google/Gmail account
|
||||
3. Click **"Create API Key"** → **"Create API key in new project"**
|
||||
4. Copy the key (looks like: `AIzaSy...39 characters`)
|
||||
5. **No credit card needed** — completely free
|
||||
|
||||
> Free tier: **1,000 requests/day** — more than enough for personal job search.
|
||||
|
||||
### Step 2 — Install the Extension in Edge
|
||||
|
||||
1. Open Microsoft Edge
|
||||
2. In the address bar, type: **`edge://extensions`** and press Enter
|
||||
3. Toggle **"Developer mode"** ON (bottom-left corner)
|
||||
4. Click **"Load unpacked"**
|
||||
5. Select this folder: `/path/to/linkedin-analyzer/`
|
||||
6. The 🔍 icon will appear in your toolbar
|
||||
|
||||
**For Chrome:** Go to `chrome://extensions` instead — same steps.
|
||||
|
||||
### Step 3 — Configure the Extension
|
||||
|
||||
1. Click the **🔍 icon** in your toolbar
|
||||
2. Paste your **Gemini API Key** in the field
|
||||
3. Click **"Test"** to verify it works (should show ✅ Valid)
|
||||
4. Review your **profile** — it's pre-filled with your data, edit if needed
|
||||
5. Click **"Save Settings"**
|
||||
|
||||
---
|
||||
|
||||
## 📖 How to Use
|
||||
|
||||
### Automatic Mode (recommended)
|
||||
1. Go to any LinkedIn job page: `linkedin.com/jobs/view/...`
|
||||
2. Wait 1-2 seconds — a **🔍 purple button** appears in the bottom-right corner
|
||||
3. Click it to open the analysis panel
|
||||
4. You'll see the job title and company already extracted
|
||||
5. Click **"⚡ Analyze This Job"**
|
||||
6. Switch between tabs to see all results
|
||||
7. Click **📋 Copy** to copy any result to clipboard
|
||||
|
||||
### Manual Mode
|
||||
If auto-detection doesn't work (e.g. on job aggregators):
|
||||
1. Open the panel
|
||||
2. Click **"📋 Paste job description manually"**
|
||||
3. Paste the full job description text
|
||||
4. Click **"Use this text"**
|
||||
5. Click **"⚡ Analyze This Job"**
|
||||
|
||||
### Q&A Auto-fill
|
||||
When Easy Apply is open and you're on the Q&A tab:
|
||||
- After generating answers, a **"📝 Auto-fill Answers"** button appears
|
||||
- Click it to automatically fill the form fields
|
||||
- Always review before submitting!
|
||||
|
||||
---
|
||||
|
||||
## ⚙️ Settings Reference
|
||||
|
||||
| Setting | Description |
|
||||
|---------|-------------|
|
||||
| **API Key** | Your Gemini API key from aistudio.google.com |
|
||||
| **Test Key** | Verifies the key works with a live API call |
|
||||
| **Profile** | Your CV/experience text — used in all AI prompts |
|
||||
| **Reset Profile** | Restores the default pre-filled profile |
|
||||
| **Language** | Auto (matches job language), Always English, Always Arabic |
|
||||
| **Daily Usage** | Shows how many of your 1,000 daily requests you've used |
|
||||
| **Clear Cache** | Removes stored analysis results (forces re-analysis) |
|
||||
| **Clear All Data** | Removes everything including API key |
|
||||
|
||||
---
|
||||
|
||||
## 💡 Tips & Tricks
|
||||
|
||||
- **Results are cached for 24 hours** — revisiting the same job doesn't use quota
|
||||
- **Drag the panel** by clicking and holding the header
|
||||
- **Minimize** with the `−` button — the 🔍 toggle stays visible
|
||||
- If LinkedIn **updates its layout**, use Manual Mode as fallback
|
||||
- The **cover letter** is written in the job's language (Arabic or English) by default
|
||||
- For the **best results**, keep your profile text detailed and up to date
|
||||
|
||||
---
|
||||
|
||||
## 🔒 Privacy & Security
|
||||
|
||||
- Your **API key is stored locally** in the browser extension storage — never sent anywhere except Google's Gemini API
|
||||
- Your **profile data stays local** — only sent to Gemini when you click Analyze
|
||||
- **No analytics**, no tracking, no external servers
|
||||
- The extension only runs on `linkedin.com/jobs/*` pages
|
||||
|
||||
---
|
||||
|
||||
## ❓ Troubleshooting
|
||||
|
||||
| Problem | Solution |
|
||||
|---------|----------|
|
||||
| Panel doesn't appear | Wait 2-3 seconds after page loads, then scroll the page slightly |
|
||||
| Job not detected | Use Manual Mode — paste the job description |
|
||||
| "Daily limit reached" | Wait until midnight Pacific Time (PT) for quota reset |
|
||||
| "Invalid API key" | Re-check the key in settings and click Test |
|
||||
| Analysis is wrong | Edit your profile in settings to be more accurate |
|
||||
| Panel overlaps content | Drag it to a different position |
|
||||
|
||||
---
|
||||
|
||||
## 📁 File Structure
|
||||
|
||||
```
|
||||
linkedin-analyzer/
|
||||
├── manifest.json # Extension configuration
|
||||
├── content.js # Page scraper + overlay logic
|
||||
├── overlay.css # Dark luxury UI styles
|
||||
├── background.js # Gemini API calls + caching
|
||||
├── popup.html # Settings page UI
|
||||
├── popup.js # Settings logic
|
||||
├── profile.js # Default profile data
|
||||
├── icons/
|
||||
│ ├── icon16.png
|
||||
│ ├── icon48.png
|
||||
│ └── icon128.png
|
||||
└── README.md # This file
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🔄 Updating
|
||||
|
||||
When LinkedIn changes its layout (happens 2-4x per year):
|
||||
1. The DOM selectors in `content.js` → `extractJobData()` may need updating
|
||||
2. Use browser DevTools (F12) on a job page to find new selectors
|
||||
3. Manual Mode always works as fallback
|
||||
|
||||
---
|
||||
|
||||
*Built for personal job search use. Not affiliated with LinkedIn or Google.*
|
||||
Reference in New Issue
Block a user