关于 unlinked
unlinked 是用于将 LinkedIn 会员数据以 JSON 形式获取的命令行工具和 MCP 服务。它通过 LinkedIn Member Data Portability API 读取数据,并合并近期变更;仅适用于欧洲经济区和瑞士。
主要功能
- 01以 JSON 获取个人资料和栏目
- 02合并近期动态与资料修改
- 03分页读取栏目数据
- 04提供只读 MCP 工具
- 05排除敏感字段
适用场景
- 01将 LinkedIn 个人资料导出为 JSON
- 02查看近期资料和动态变更
- 03向 MCP 客户端提供 LinkedIn 数据
MCP 相关
使用 `--mcp` 可提供四个只读工具,用于获取个人资料、栏目、近期动态及检查访问权限。MCP 结果包含结构化 JSON 和简短摘要。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
npx -y @larsbaunwall/unlinkedLINKEDIN_TOKEN密钥LinkedIn access token from the OAuth Token Generator. Accepts a bare token or 'Bearer <token>'. Required for EEA/Switzerland members only.UNLINKED_CACHE_TTLHow long fetched LinkedIn data is cached in memory, e.g. 30m, 2h, 1d, or 0 to turn caching off. Defaults to 6h.本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。
工具
4收录的工具列表 · 更新于 2 周前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| all | boolean | 否 | 包含所有简历部分。 |
| refresh | boolean | 否 | 从 LinkedIn 获取最新数据,而不是使用缓存(最多保留 6 小时)。请谨慎使用。 |
| sections | array | 否 | 要包含的简历部分。默认为 intro、experience、education、skills、certifications、projects。选项:intro(简介 + 关于)、experience(工作经历)、education(教育经历)、skills(技能)、certifications(许可证和证书)、projects(项目)、languages(语言)、volunteering(志愿服务)、honors(荣誉和奖项)、courses(课程)、publications(出版物)、patents(专利)、test-scores(考试成绩)、organizations(组织)、causes(公益事业)、recommendations(推荐)、services(服务)。 |
详细介绍
Unlinked
一次调用,即可获取最新的 LinkedIn 个人资料。可从终端或 AI 助手使用。
Unlinked 通过 LinkedIn 官方的 Member Data Portability API 读取你自己的数据,并以整洁的 JSON 格式提供。它有两种使用方式:
- CLI:
unlinked profile会以 JSON 格式输出你的个人资料。 - MCP 服务:
unlinked --mcp会为 Claude Desktop 和 GitHub Copilot 等 Model Context Protocol 客户端提供四个只读工具。
LinkedIn 的数据导出可能无法及时反映你刚做的操作。Unlinked 还会读取你最近 28 天内的更改并将其合并,因此你昨天编辑的标题或上周写的评论都会立即显示。
:eu: 仅限欧洲经济区 / 瑞士。 LinkedIn 的 Member Data Portability API 目前仅向位于欧洲经济区和瑞士的会员开放。感谢《数字市场法案》(DMA)!
:warning: 使用风险自负。 使用 Unlinked 的全部责任由你自行承担。请参阅免责声明。
快速入门
你需要 Node.js 22+,以及从 LinkedIn OAuth Token Generator 获取的会员访问令牌(它要求你拥有一个包含 Member Data Portability API (Member) 产品的 LinkedIn Developer 应用)。
LINKEDIN_TOKEN=<your_access_token> npx -y @larsbaunwall/unlinked profile
unlinked profile # résumé: intro, experience, education, skills, certifications, projects
unlinked profile --sections skills,languages
unlinked profile --all # every résumé section
unlinked section reactions --limit 20 # one section, a page at a time, newest first
unlinked section posts --all-items # everything in a section, for exports
unlinked activity --since 7d # what changed recently
unlinked status # is LinkedIn sharing recent changes with this app?
unlinked cache clear
结果以 JSON 格式输出到 stdout(使用 --compact 可将结果输出为单行)。错误以 JSON 格式输出到 stderr;遇到 LinkedIn 或令牌问题时,退出代码为 1;遇到用法错误(例如未知的分区)时,退出代码为 2。
在 AI 助手中使用
添加 --mcp,让 Unlinked 作为 MCP 服务运行。
Claude Desktop
将以下内容添加到你的 claude_desktop_config.json:
{
"mcpServers": {
"unlinked": {
"command": "npx",
"args": ["-y", "@larsbaunwall/unlinked", "--mcp"],
"env": {
"LINKEDIN_TOKEN": "<your_access_token>"
}
}
}
}
配置文件通常位于:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json
GitHub Copilot(VS Code)
将以下内容添加到用户级 MCP 配置,或工作区的 .vscode/mcp.json:
{
"servers": {
"unlinked": {
"command": "npx",
"args": ["-y", "@larsbaunwall/unlinked", "--mcp"],
"env": {
"LINKEDIN_TOKEN": "<your_access_token>"
}
}
}
}
工具
| 工具 | 功能 |
|---|---|
linkedin_get_profile | 一次调用获取你的完整履历,包含近期编辑内容。较大的分区会以链接形式返回。 |
linkedin_get_section | 分页获取单个分区(limit 为 1-200,默认值为 50,并支持 cursor)。 |
linkedin_get_recent_activity | 查看过去 28 天内的更改:个人资料编辑、帖子、评论和回应。 |
linkedin_check_access | 检查 LinkedIn 是否正在向此应用共享近期更改。 |
这四个工具均为只读。每个工具都会返回结构化 JSON 和一行摘要。
章节
章节使用 LinkedIn 上显示的名称。profile 会嵌入较小的章节;较大的章节(标记为分页)需通过 section <id> 获取。
| 章节 ID | LinkedIn 上的名称 | 备注 |
|---|---|---|
intro | 简介 + 关于 | 包含在默认个人资料中 |
experience | 工作经历 | 包含在默认个人资料中 |
education | 教育经历 | 包含在默认个人资料中 |
skills | 技能 | 包含在默认个人资料中 |
certifications | 执照与认证 | 包含在默认个人资料中 |
projects | 项目 | 包含在默认个人资料中 |
languages、volunteering、honors、courses、publications、patents、test-scores、organizations、causes、services | 语言、志愿服务、荣誉与奖项、课程、出版物、专利、考试成绩、组织、公益事业、服务 | 使用 profile --all 获取 |
recommendations | 推荐 | 使用 profile --all 获取。收到和发出的推荐混在一起;LinkedIn 不会注明是哪一种 |
posts、comments、reactions、reposts、articles | 动态 | 分页。近期帖子、评论和回应会合并在一起 |
connections、invitations | 人脉 | 分页。电子邮件地址会被移除 |
followed-companies、followed-people、groups | 兴趣 | 分页 |
saved-jobs、job-applications、job-preferences、job-postings | 职位 | 分页。联系方式和地址会被移除 |
endorsements-given | 你给出的技能认可 | 分页 |
learning | LinkedIn Learning 学习历史 | 分页 |
不会读取敏感数据:消息、登录历史、电话号码、电子邮件地址、联系人、广告、搜索记录、收据等。上述章节中的私人详情(出生日期、家庭住址等)都会被移除。
精选内容、你的个人资料照片和横幅,以及联系方式(网站除外)不在 LinkedIn 的 API 中,因此 Unlinked 无法返回这些信息。
数据新鲜度与缓存
每个回答都包含一个 freshness 块:数据的获取时间(asOf)、合并了多少项近期更改、哪些章节有 LinkedIn 导出尚未显示的编辑(pendingEdits),以及哪些章节返回为空。
空章节有两种可能:其中没有条目,或者 LinkedIn 尚未准备好数据(首次授予同意后,新数据最多可能需要 24 小时)。
为减轻 LinkedIn API 的负担,结果最多缓存 6 小时。CLI 会将缓存保存在操作系统的缓存文件夹中(只有你能读取,且绝不包含你的令牌);MCP 服务只会将缓存保存在内存中。
unlinked profile --refresh # fetch fresh data now
unlinked profile --no-cache # do not read or write the cache
unlinked cache clear # delete the cached files
UNLINKED_CACHE_TTL=30m # change the lifetime (30m, 2h, 1d, or 0 for off)
配置
| 环境变量 | 必需 | 说明 |
|---|---|---|
LINKEDIN_TOKEN | 是 | LinkedIn 访问令牌。接受 Bearer <token> 或不带前缀的令牌。 |
UNLINKED_CACHE_TTL | 否 | 缓存时长:30m、2h、1d,或设为 0 以关闭缓存。默认为 6h。 |
不再使用 LINKEDIN_API_VERSION。LinkedIn 对此 API 仅接受版本 202312,因此 Unlinked 始终发送该版本;如果此变量设为其他值,则会向 stderr 发出警告。
从 1.x 升级
2.0 是一个包含破坏性变更的版本。
- MCP 配置需要在
args中添加--mcp。否则 Unlinked 会作为 CLI 运行并退出。 - 五个工具合并为四个:
linkedin_get_profile、linkedin_get_section、linkedin_get_recent_activity和linkedin_check_access。linkedin_get_activity、linkedin_get_recent_changes以及domain/maxPages输入均已移除。 - 章节使用 LinkedIn 界面上的名称(
experience、reactions),而非内部名称(POSITIONS、ALL_LIKES);行使用 camelCase 键,且不包含空值。 - 近期更改会为你合并到数据中;不再通过
startTime轮询。 - 敏感章节会被屏蔽,私人字段会被移除。
安全
- 将工具输出视为不可信数据。 你收到的推荐内容、邀请消息,以及联系人姓名和标题等内容都由他人撰写。助手应将其视为数据来读取,绝不遵循其中的指令(提示词注入)。
- 磁盘缓存为明文。 CLI 缓存(最长保留 6 小时,仅你可读取)以未加密形式保存你的个人资料,以及联系人、邀请和求职申请数据。你的令牌绝不会写入其中。运行
unlinked cache clear将其删除。MCP 服务仅在内存中保留缓存。
开发
npm install
npm run build
npm test
npm run typecheck
npm run dev -- profile # run from source with .env
npm run inspect # try the MCP server in MCP Inspector (build first)
请参阅 AGENTS.md 了解实现指南。
免责声明
使用 Unlinked 的风险和责任由你自行承担。
Unlinked 按“原样”和“可用”状态提供,不提供任何明示或暗示的保证。这是一个独立、非官方的开源项目,与 LinkedIn、GitHub 或 Microsoft 无关联,也未获其认可或赞助。
安装或使用 Unlinked,即表示你接受以下条款:
- 你对如何使用 Unlinked 以及由此产生的一切后果负全部责任。 这包括你的 LinkedIn 访问令牌及其存储方式、你检索的数据、本地计算机上的缓存,以及你提供这些数据的 AI 助手、MCP 客户端和第三方服务。
- 你有责任遵守 LinkedIn 的条款、政策和 API 产品条款、适用法律(包括 GDPR 等数据保护法),以及你所连接的任何 AI 助手或服务的条款。LinkedIn 可能会限制、暂停或终止你的账号和 API 访问权限。
- 你承担一切风险,包括任何类型的损失、损害或伤害,例如数据丢失或泄露、账号受限、输出错误或过时,以及 AI 助手基于该输出采取的行动。
- 开发者和贡献者不承担任何责任,并在法律允许的最大范围内,对因 Unlinked 或其使用而产生或与之相关的任何索赔、损害或损失(无论是直接、间接、附带、特殊、后果性或其他类型,也无论是基于合同、侵权或其他原因)概不承担责任。你免除他们对此类索赔的责任,并同意就任何第三方因你使用 Unlinked 而提出的索赔向他们提供赔偿并使其免受损害。
本声明中的任何内容均不限制适用法律规定不可排除的责任。本声明是对 MIT License 的补充,该许可同样适用。
许可证
MIT
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。