Capture essential LinkedIn profile info to your Notion database without the copy-paste dance across tabs.
Built with Claude Code. I'm a creative writer with little background in CS who's taken up vibe coding for funsies. Sorry if the codebase is messy, I'm learning. Feel free to callout better approaches or techniques!
You're on someone's LinkedIn. They're interesting. You want to remember them. LinkedOut grabs their name, role, company, profile URL and drops it straight into your Notion database.
- Click the extension icon.
- Small pop-up shows data parsed into Name, Role, Company, URL fields. Also gives a custom Notes box.
- Click save.
- Creates a new line with the info in your Notion database.
- Pop-up window is editable, so you can make sure the entry is clean before it hits your Notion. This step helps if LinkedIn is being weird or someone has 'Hustler | Grinder | Helping You Achieve Your Dreams' in their subhead.
- Prioritizes data capture from the official 'Experience' section first, and falls back to their custom subhead (below their name) if needed.
Me. I built this to augment my networking and lead-prospecting workflow. Stay in research mode, then shift to data cleanup and followup mode.
Might be good for you too...? I'm sure Sales professionals have all manner of enterprise-level tools for pipeline building and lead generation, but this one is clean, simple, and free.
Works on Chromium-based browsers
- Download this repo
- Open your browser's extensions page:
- Chrome:
chrome://extensions - Brave:
brave://extensions - Edge:
edge://extensions
- Chrome:
- Toggle on "Developer mode"
- Click "Load unpacked"
- Point it at the folder you downloaded
Notion needs permission to let the extension write to your database.
- Go to notion.so/my-integrations
- Click "+ New integration"
- Name it whatever (I use "LinkedOut")
- Pick your workspace
- Hit Submit
- Copy that long token
- In Notion, create a database (table view works best)
- Add these columns:
- Name (Title)(Default Notion Database property; cannot be deleted)
- Role (Text)
- Company (Text)
- LinkedIn (URL)
- Notes (Text)
- Click the "..." menu on your database → Connections → Add your LinkedOut integration
- Grab the database ID from the URL—it's that long random string between your workspace name and the
?v=
- In the extension folder, copy
config.example.jsto create a new file calledconfig.js - Open
config.jsand add your credentials:const CONFIG = { NOTION_API_TOKEN: 'ntn_your_actual_token_here', NOTION_DATABASE_ID: 'your_actual_database_id_here', NOTION_VERSION: '2022-06-28' };
- Save the file
- Reload the extension in your browser
Note: config.js is gitignored, so your credentials stay local and won't be pushed to GitHub if you fork or contribute.
Now you're cooking.
When you click the icon, LinkedOut:
- Grabs the person's name from the profile header
- Checks their Experience section for their current role (the one marked "Present")
- Why Experience and not the headline? Because people update their job history when they switch roles. Headlines? Not always. Plus Experience has structured data with dates—way more reliable
- If Experience is empty or messy, it falls back to the headline (that subhead right under their name)
- Cleans up duplicates (LinkedIn loves repeating text for accessibility—"Head of SalesHead of Sales" becomes "Head of Sales")
- Validates everything (filters out dates, random numbers, URLs that snuck in)
- Shows you what it found in the popup so you can fix anything weird
Then you click Save and it's in Notion.
Popup shows "Unknown" for everything:
- Reload the LinkedIn page and try again
- Make sure you're actually on a profile (
linkedin.com/in/something) - Check the browser console for what went wrong
"Cannot read properties of undefined...":
- This means the extension doesn't have permission to run scripts. Should be fixed already (check
manifest.jsonhas"scripting"in permissions)
"Notion API error":
- Double-check your token and database ID
- Make sure your integration is connected to that specific database
- Verify the column names match exactly: Name, Role, Company, LinkedIn
Still seeing duplicate text:
- Shouldn't happen anymore—there's triple-layer deduplication now
- If it does, open the page console (F12 on the LinkedIn page) and look for the parsing logs. They'll show what text was found and which dedup method ran
Built with Chrome Extension Manifest V3. Uses:
activeTabpermission (only when you click the icon)scriptingpermission (to read the LinkedIn page)notificationsandstorage(for future features)- Notion API v2022-06-28
LinkedOut/
├── manifest.json # Extension config
├── background.js # Does the scraping and Notion API stuff
├── popup.html # What you see when you click the icon
├── popup.js # Popup logic
├── content.js # Helper (mostly unused)
├── icons/ # Extension icons
├── config.example.js # Template for your credentials
├── config.js # Your actual credentials (gitignored, you create this)
├── .gitignore # Keeps secrets out of git
└── README.md # You're reading it
Found a bug? Have an idea? Open an issue or send a PR.
MIT. Do what you want with it.
Built by @pleadthefish