AI-assisted LinkedIn engagement for thoughtful, human-approved comments.
EngageKit is a personal Manifest V3 Chrome extension that helps you draft high-quality LinkedIn comments in seconds. Click Engage on any feed post, tune tone and length in the side panel, generate a draft via OpenRouter, then copy and paste into LinkedIn yourself — nothing is auto-posted.
Writing a genuine comment on every post worth engaging with is slow. Skipping comments costs visibility; defaulting to “Great post!” costs credibility. EngageKit removes the blank-page friction while keeping you in full control of what actually goes live.
| Principle | How we honor it |
|---|---|
| Human in the loop | Drafts only — you review, edit, and paste |
| Privacy-first | No backend, no accounts; API key stays in chrome.storage.local |
| Lowest LinkedIn risk | Manual trigger only; no bulk scrape; no auto-post |
| Maintainable | LinkedIn selectors isolated in one module for fast patching |
- Per-post Engage button — appears on feed posts near the author row
- Side panel workspace — post text auto-fills when you click Engage
- Multi-tone drafting — Professional, Casual & Friendly, Thought Leader, Curious, Witty (combine as needed)
- Length control — Short / Medium / Long
- Custom instructions — one-off steering (“mention I’m a CS student”)
- Copy & regenerate — iterate without re-entering the post
- Optional image attach — visual reference in the panel (generation uses text)
- Floating FAB — open the panel anytime to paste a post manually
- Local settings — OpenRouter key, model, defaults; test connection from the popup
- Google Chrome (or another Chromium browser with extension support)
- An OpenRouter API key
- Clone this repository
git clone https://github.com/<your-username>/EngageKit.git - Open
chrome://extensions - Enable Developer mode
- Click Load unpacked → select the
extension/folder - Open linkedin.com/feed
- Click the EngageKit toolbar icon → enter your OpenRouter API key → Test connection → Save
- On the feed, click Engage on a post (or the floating button) to open the side panel
cd extension
npm testLinkedIn feed
│ Engage click
▼
Content script ── extracts post text ──► Background service worker
│
▼
OpenRouter LLM
│
▼
Side panel ◄── draft comment (copy / regenerate)
- The content script injects Engage controls and extracts visible post text.
- The background service worker builds the prompt and calls OpenRouter (key never leaves the worker).
- The side panel shows the draft for you to copy into LinkedIn’s own comment box.
EngageKit/
├── README.md # This file
├── Docs/ # PRD, architecture, test plans
└── extension/ # Chrome extension (load this folder)
├── manifest.json
├── background.js # OpenRouter + side panel orchestration
├── content.js # Engage button + FAB injection
├── selectors.js # LinkedIn DOM selectors (patch here)
├── sidepanel.* # Generation UI
├── popup.* # Settings
├── lib/ # Shared constants, storage, prompt, extract
└── test/ # Unit tests
| Setting | Where | Notes |
|---|---|---|
| OpenRouter API key | Extension popup | Stored only in chrome.storage.local |
| Default model | Popup | Paid OpenRouter models (e.g. Gemini Flash) |
| Default tones / length | Side panel chips | Persisted locally |
Never commit API keys. Keep secrets out of git (e.g. ignore .env).
In scope
- Single-post, user-triggered comment drafts
- Local settings and optional local-only usage reflection later
Out of scope (by design)
- Auto-posting or driving LinkedIn’s UI on your behalf
- Bulk / background processing of the feed
- Multi-user accounts, billing, or a hosted backend
- Chrome Web Store publishing (personal / unpacked install for now)
Use thoughtfully. EngageKit is built for personal productivity, not spam or automation abuse.
| Doc | Description |
|---|---|
| PRD | Product goals, stories, and non-goals |
| Architecture | Extension design and LinkedIn risk notes |
| Test plan | Manual and automated test strategy |
| Test cases | Unit / integration / manual cases |
| Privacy policy | Required for Chrome Web Store (host publicly) |
| Chrome Web Store publish guide | Step-by-step dashboard + listing checklist |
| Extension README | Load instructions and layout details |
Full walkthrough: Docs/chrome-web-store-publish.md
Short version:
- Register at the Chrome Web Store Developer Dashboard ($5 one-time, 2-Step Verification required)
- Host
Docs/privacy-policy.mdon a public HTTPS URL (replace the email placeholders first) - Package the extension:
./scripts/package-extension.sh
# → dist/engagekit-1.0.0.zip- Upload the ZIP → fill listing, privacy, permission justifications → choose Public or Unlisted → Submit for review
Take screenshots of the LinkedIn feed with the Engage button and the side panel (1280×800 preferred).
- Manifest V3 Chrome extension (vanilla JavaScript — no bundler)
chrome.sidePanel+ content scripts + service worker- OpenRouter for LLM inference
- Node.js test runner for prompt / extract unit tests
- Per-post Engage + side panel generation
- Tone / length / custom instruction
- Local API key + model settings
- Multiple draft variants per generate
- Optional local “voice” examples (few-shot from your past comments)
- Keyboard shortcut to open the panel
This started as a personal tool. If you fork it:
- Keep selector changes confined to
extension/selectors.js - Run
npm testinsideextension/before submitting changes - Do not add auto-post or bulk-feed behavior without a clear, documented risk review
Personal / educational use. Add a formal license file if you open-source or distribute publicly.
Built to turn LinkedIn engagement from a chore into a deliberate, two-click draft — with you still writing the final word.