article
README
🚀 LinkedIn 档案数据挖掘 MCP 服务器
这是一个全面的模型上下文协议(MCP)服务器,用于 LinkedIn 档案数据挖掘、搜索和联系人信息丰富。该服务器将原始数据挖掘工具的所有强大功能集成到一个兼容 MCP 的接口中。
🚀 快速开始
要开始使用此服务器,按照以下步骤操作:
- 克隆或导航到服务器目录:
cd smithery-servers/profile-searcher - 安装依赖项:
npm install - 配置 API 密钥:
# 复制示例配置文件 cp .env.example .env # 使用你喜欢的编辑器编辑 .env 文件 nano .env - 启动开发服务器:
npm run dev
✨ 主要特性
🔍 高级搜索功能
- 谷歌搜索集成:使用谷歌自定义搜索 API 发现 LinkedIn 档案。
- AI 驱动的查询扩展:使用 OpenAI GPT - 4o mini 生成额外的搜索查询。
- 智能过滤:基于 AI 的相关性过滤,确保高质量的搜索结果。
- 基于位置的搜索:支持全球位置定位,实现全面覆盖。
📊 档案数据提取
- 直接 LinkedIn 抓取:直接从 LinkedIn 页面提取档案数据。
- Nubela Proxycurl 备用方案:当直接抓取失败时,使用 Nubela API。
- 结构化数据解析:从 LinkedIn 档案中提取 JSON - LD 结构化数据。
- 全面的档案字段:包括姓名、公司、职位、描述、关注者等。
📞 联系人信息丰富
- Apollo.io 集成:用电子邮件地址和电话号码丰富档案信息。
- 公司信息:检索详细的公司描述和联系细节。
- 专业验证:通过 API 验证确保联系人信息的准确性。
🤖 AI 驱动的功能
- 档案摘要:使用 AI 生成简洁的专业摘要。
- 相关性评分:基于 AI 的过滤,匹配搜索意图。
- 查询优化:智能生成和扩展搜索查询。
- 多大型语言模型支持:兼容 OpenAI、Gemini、OpenRouter 和 Ollama。
💾 数据管理
- SQLite 数据库:持久存储所有提取的档案。
- CSV 导出:便于数据导出,用于分析和 CRM 集成。
- 重复预防:自动检测和防止重复档案。
- 数据验证:确保数据质量和完整性。
📦 安装指南
- 克隆或导航到服务器目录:
cd smithery-servers/profile-searcher - 安装依赖项:
npm install - 配置 API 密钥:
# 复制示例配置文件 cp .env.example .env # 编辑 .env 文件,填入你的 API 密钥 nano .env # 或使用你喜欢的编辑器 - 启动开发服务器:
npm run dev
🔑 API 密钥配置
📋 详细的设置说明请参阅 CONFIGURATION.md
快速设置:
- 必需:Apollo.io API 密钥 → 从 apollo.io/settings/integrations 获取。
- 必需:OpenAI API 密钥 → 从 platform.openai.com/api-keys 获取。
- 可选:Nubela API 密钥 → 从 nubela.co/proxycurl 获取。
环境变量(.env 文件):
APOLLO_API_KEY=your_apollo_api_key_here
OPENAI_API_KEY=sk-your_openai_api_key_here
NUBELA_API_KEY=your_nubela_api_key_here
DEBUG=false
对于 Claude 桌面版(claude_desktop_config.json):
{
"mcpServers": {
"profile-searcher": {
"command": "node",
"args": ["/path/to/smithery-servers/profile-searcher/dist/index.js"],
"env": {
"APOLLO_API_KEY": "your_apollo_api_key_here",
"OPENAI_API_KEY": "sk-your_openai_api_key_here"
}
}
}
}
💻 使用示例
基础用法
基本档案搜索
// 搜索 AI 播客主持人
const result = await mcpClient.callTool("search_linkedin_profiles", {
keywords: "AI podcast host",
num_results: 15
});
全面数据挖掘
// 挖掘区块链开发者的数据
const result = await mcpClient.callTool("mine_linkedin_data", {
keywords: "blockchain developer",
num_results: 30,
export_csv: true,
csv_filename: "blockchain_talent.csv"
});
联系人信息查找
// 获取特定人员的联系人信息
const result = await mcpClient.callTool("get_contact_info", {
person_name: "Jane Doe",
company_name: "AI Innovations Inc"
});
📚 详细文档
可用工具
1. search_linkedin_profiles
根据关键词搜索 LinkedIn 档案。 参数:
keywords(字符串):搜索关键词(例如:"AI podcast host")num_results(数字):返回的结果数量(默认:20)
示例:
{
"keywords": "AI podcast host",
"num_results": 10
}
2. extract_profile_data
从 LinkedIn URL 中提取详细的档案数据。 参数:
urls(数组):LinkedIn 档案 URL 数组include_contact_info(布尔值):是否包含联系人信息(默认:true)
示例:
{
"urls": [
"https://www.linkedin.com/in/example-profile",
"https://www.linkedin.com/in/another-profile"
],
"include_contact_info": true
}
3. mine_linkedin_data
全面的数据挖掘:搜索、提取和丰富档案数据。 参数:
keywords(字符串):搜索关键词num_results(数字):要处理的档案数量(默认:20)export_csv(布尔值):是否导出为 CSV 文件(默认:true)csv_filename(字符串,可选):自定义 CSV 文件名
示例:
{
"keywords": "blockchain developer",
"num_results": 25,
"export_csv": true,
"csv_filename": "blockchain_developers.csv"
}
4. get_contact_info
使用 Apollo API 获取特定人员的联系人信息。 参数:
person_name(字符串):人员的全名company_name(字符串):人员所在的公司
示例:
{
"person_name": "John Smith",
"company_name": "Tech Corp"
}
5. export_to_csv
将所有存储的档案数据导出为 CSV 文件。 参数:
filename(字符串,可选):导出的自定义文件名
示例:
{
"filename": "all_profiles_export.csv"
}
6. get_stored_profiles
检索数据库中存储的所有档案。 参数:无
7. generate_search_queries
使用 AI 生成额外的搜索查询。 参数:
main_query(字符串):要扩展的主要搜索查询num_queries(数字):额外查询的数量(默认:3)
示例:
{
"main_query": "site:linkedin.com/in AI podcast host",
"num_queries": 5
}
数据结构
档案数据字段
每个提取的档案包含以下字段:
interface ProfileData {
author_profile_url: string; // LinkedIn 档案 URL
author_name?: string; // 全名
authors_desc?: string; // 档案标题/描述
Company?: string; // 当前公司
Job_title?: string; // 当前职位
InteractionStatistic_followers?: string; // 关注者数量
email?: string; // 电子邮件地址(来自 Apollo)
phone1?: string; // 主要电话号码(来自 Apollo)
phone2?: string; // 次要电话号码(来自 Apollo)
about_company?: string; // 公司描述(来自 Apollo)
profile_summary?: string; // AI 生成的摘要
post_details?: string; // 最近的帖子内容
transcript?: string; // 播客/视频转录文本
post_summary?: string; // 帖子的 AI 摘要
transcript_summary?: string; // 转录文本的 AI 摘要
author_activity?: string; // 活动摘要
}
数据库架构
服务器使用 SQLite,包含三个主要表:
author_urls_table:存储完整的档案信息。validated_profiles:跟踪 AI 验证结果。search_queries:存储搜索查询和结果。
文件结构
smithery-servers/profile-searcher/
├── src/
│ └── index.ts # 主服务器实现
├── package.json # 依赖项和脚本
├── README.md # 本说明文档
├── smithery.yaml # Smithery 配置
├── Database/ # SQLite 数据库文件
│ └── author_profile_.db # 主数据库
└── Data/ # CSV 导出文件
└── *.csv # 导出的档案数据
🔧 技术细节
速率限制和最佳实践
- 遵守速率限制:服务器在请求之间包含内置延迟。
- API 密钥管理:确保你的 API 密钥安全,并监控使用情况。
- 数据隐私:确保遵守数据保护法规。
- 道德使用:负责任地使用该工具,并遵守 LinkedIn 的服务条款。
故障排除
常见问题
- 缺少依赖项:运行
npm install确保所有包都已安装。 - API 密钥错误:验证所有必需的 API 密钥是否正确配置。
- 数据库权限:确保 Database 目录有写入权限。
- 网络问题:检查 API 调用的互联网连接。
调试模式
在配置中启用调试模式以进行详细日志记录:
{
"debug": true
}
📄 许可证
本项目采用 ISC 许可证,详情请参阅 package.json。
免责声明
此工具仅用于合法的商业和研究目的。用户有责任遵守 LinkedIn 的服务条款、数据保护法规和适用法律。在收集个人数据之前,请始终尊重隐私并获得必要的许可。
微信扫一扫