An AI-powered Chrome extension that helps you write better LinkedIn comments and replies without sounding like a LinkedIn influencer.
Active development is on the
mainbranch (v0.0.6+). Thedeprecatedbranch holds everything up through v0.0.5 and is frozen there.
LinkedIn started hashing their feed CSS class names on every deployment. What was .ql-editor one week became _863acf9a the next, and the whole feed-commenting pipeline stopped working. Everything up to v0.0.5 is on the deprecated branch. v0.0.6 onward is a rebuild using DOM anchors that stay stable regardless of what LinkedIn does to their styles.
Things shift as LinkedIn does. This is where things actually stand.
| Feature | Status |
|---|---|
| Feed commenting (top-level) | Working |
| DMs (single message reply) | Working |
| DMs (full chat history) | Working |
| Templates | Working (scrollable capsule bar) |
| Post creation (Write with AI) | Working (detour button list & editor fallback) |
| Thread replies (sub-comments) | Working (context-aware names & history) |
- Go to Releases and download the latest zip
- Open
chrome://extensions/and enable Developer mode - Click Load unpacked and select the extracted folder
LinkedIn Copilot uses Groq for AI generation. Sign up, create a key, paste it into the extension settings.
- Nothing goes externally except the post or comment text sent to Groq for generation
- Templates and settings are stored in Chrome local storage only
- The extension fills the input box. You click Send. Always.
git clone https://github.com/Emmaccen/LinkedIn-Copilot.git
cd LinkedIn-Copilot
yarn install
yarn devLoad the build/chrome-mv3-dev folder as an unpacked extension in Chrome.
- Plasmo for Chrome extension scaffolding
- React and TypeScript
- Tailwind CSS
- Groq SDK
- Chrome Storage API
components/ React components (settings UI etc.)
contents/ Content scripts. copilot.ts is the brain.
lib/ AI generation logic
static-data/ System prompts and static templates
types/ TypeScript definitions
utils/ DOM helpers, storage, encryption
LinkedIn rotates their CSS class names. Open DevTools on the feed and you will see hashes like _863acf9a that change every few weeks. So instead of class selectors, everything targets attributes LinkedIn has to keep stable for accessibility tooling.
[aria-label="Text editor for creating comment"] the comment editor
[data-testid="ui-core-tiptap-text-editor-wrapper"] the editor container
[role="listitem"], [aria-label="Primary content"] the post card / primary content container
[data-testid="expandable-text-box"] the post body text
a[href*="/in/"] strong the post author name
If something stops working, check whether any of these labels changed first.
Open an issue before starting anything large. For small fixes, PRs are welcome. Test against a live LinkedIn feed before submitting.
MIT. See LICENSE.