Samyrrrrrr990/openleads
GitHub: Samyrrrrrr990/openleads
OpenLeads 是一款完全免费开源的本地化潜在客户挖掘与邮件外联工具,通过联合查询公共数据源找到真实联系人并验证邮箱,替代 Apollo 等付费 SaaS。
Stars: 1 | Forks: 0
# 🧲 OpenLeads
### 人人皆可用的 Apollo。完全**免费**。
**只需一个搜索框。描述你的理想客户——_“迈阿密的营销代理机构”_、_“金融科技创始人”_、_“奥斯汀的牙医”_——OpenLeads 就会跨免费公共资源进行联合查询,找到真实对应的人员,验证其邮箱,并自动化外联流程。完全开源、无需密钥、一切都在你的本地机器上运行。**
[](./LICENSE)
[](https://www.python.org/)
[](#-how-it-works)
[](https://pypi.org/project/openleads/)
[](https://github.com/Samyrrrrrr990/openleads/actions/workflows/ci.yml)
[](./CONTRIBUTING.md)
[](https://github.com/Samyrrrrrr990/openleads/stargazers)
Apollo、Hunter、RocketReach 和 ZoomInfo 卖的是同样的两样东西:**联系人数据库**和**邮箱验证**——然后向你高价推销发送服务。**OpenLeads 提供了完整的技术栈,完全颠覆且免费。**
**v4 让线索生成变得无比强大。** 早期版本负责查找和发送;薄弱环节在于*发现*——你必须手动选择一个数据源,而且大多数数据源范围狭窄。v4 将发现功能重构为**联合瀑布流**:一次查询会分发到所有符合条件的公共数据源中,**找到每家公司背后真实的相关人员**,验证他们的邮箱,并进行去重——这一切都像 Apollo 和 Clay 的实际运作方式一样,完全免费且在本地运行。头条新增数据源是**通过 OpenStreetMap 获取本地商家**——涵盖了那些付费工具收费最昂贵的长尾资源(代理机构、诊所、公司、商店)。
```
$ openleads find "marketing agencies in Miami"
[engine] federated search · local …
safe hello@brightspark.com Bright Spark Marketing · 98%
risky jane.lee@brightspark.com Jane Lee · Founder & CEO · 62%
safe crystalei@marketkarma.com Crystalei Daniels · Head of Growth · 98%
[engine] done — real businesses, their people, verified emails
$ openleads run "50 fintech founders, verified only" --live
[engine] federated search · yc · hn …
safe ada@acme.ai Ada Lovelace · Founder · 96%
[write] drafting 41 personalized emails… · [outbox] grade A · warmup day 6
→ 40 sent · 1 held (cap) · 0 bounced
```
## ✨ 工作原理
痛苦的多工具工作流——在 A 中抓取,在 B 中验证,在 C 中丰富,导入到发送工具 D 中,在 E 中预热——如今被浓缩为**一个本地应用程序 + CLI**:
| | | |
|---|---|---|
| **1 · 查找** | 用通俗英语描述你的 ICP。 | **联合查询**本地商家、初创企业、公司开发者——找到相关人员并解析邮箱。 |
| **2 · 撰写** | 个性化、经过垃圾邮件检测的纯文本草稿。 | 免费的 LLM 或精准的模板——可任意编辑。 |
| **3 · 连接** | 通过预设提供商进行一次性邮箱设置。 | 预检环节会对你的 SPF/DKIM/DMARC 进行评分。 |
| **4 · 发送** | 支持节流、预热上限和屏蔽列表感知。 | 一键退订邮件头。无跟踪像素。 |
已经有列表了?**丰富它**——`openleads enrich list.csv` 会对你的姓名/公司/域名运行相同的瀑布流。想要完全自动化?保存一个**配方**(`openleads recipe add …`),设备端调度器每天会自动运行 查找 → 撰写 → 发送 → 导出 流程,并自动暂停已回复人员的后续操作。
你可以选择在终端中(`openleads find …`)、在聊天 REPL 中(`openleads`),或者在**本地 Web 仪表盘**(`openleads web`)完成这些操作。
### 🛰️ 线索来源——联邦查询
一次查询,多方来源,合并并去重。你永远不需要手动选择来源(但依然可以使用 `-s name` 指定来源):
| 数据源 | 垂直领域 | 免密钥 |
|---|---|---|
| `local` | **按类别 + 城市划分的本地商家**(OpenStreetMap/Overpass)——代理机构、诊所、公司、健身房、商铺 | ✅ |
| `yc` · `hn` | 初创企业创始人(Y Combinator)· 正在招聘的公司(Hacker News) | ✅ |
| `companies` · `edgar` | 按行业/国家划分的公司(Wikidata)· 美国上市公司(SEC EDGAR) | ✅ |
| `github` · `openalex` · `npi` | 开发者 · 研究人员 · 美国医疗保健提供商 | ✅ |
| `domains` | Hunter 风格:为你指定的任何域名查找真实且已公开的邮箱 | ✅ |
通过团队主页发现机制,每家公司都会被扩展为**真实的决策者**,随后每个地址都会经过邮箱验证瀑布流(真实数据抓取 → 学习到的模式 → 排列组合 → MX/SMTP/Gravatar 共识 → 经过校准的 0–100 置信度评分)。
## 🖥️ 本地仪表盘
```
openleads web # opens http://127.0.0.1:8787 — no Node, no build, no cloud
```
这是一个由绑定在 localhost 的标准库 HTTP 服务器提供的、手工打造的单页应用。包含 查找、线索、撰写、发送、CRM、设置 和 诊断(Doctor) 功能——四步操作的捷径被置于最显眼的位置,并且结果会**实时流式传输**。采用带有一抹红色点缀的黑白设计,支持减弱动画效果,并且**没有任何数据会离开你的机器**。详见 [`docs/web.md`](./docs/web.md)。
## 📡 为什么邮件能真正成功送达
大多数免费查找工具仅通过出站 **端口 25** 进行一次 SMTP `RCPT` 探测来验证——而家庭 ISP 和大多数云服务提供商都会**封锁**该端口。一旦被封锁,每个地址都会悄无声息地退化为 `first.last@domain` 的猜测形式,导致你的营销活动大量退信。这正是 v2 版本的头号故障原因。
v3 版本交叉核验**七个独立信号**——其中大多数**根本不需要端口 25**——然后诚实地将其划分为三个等级,让你只发送有可能成功送达的邮件:
| 信号 | 需要端口 25? |
|---|---|
| **MX 共识** — 两个 DoH 解析器必须达成一致 | 否 |
| **SPF · DMARC · 提供商类别** — TXT 记录查询 | 否 |
| **一次性邮箱 / 角色邮箱 / 免费提供商** — 静态列表 | 否 |
| **Gravatar 存在性** — md5 → 200/404 | 否 |
| **真实数据抓取** — 来自 GitHub 提交记录、`mailto:`、`security.txt` 的真实邮箱 | 否 |
| **学习到的域名模式** — 在每次运行中复合积累 | 否 |
| **SMTP `RCPT` + 全局捕获双重探测** | 是(被封锁时可优雅降级) |
→ **`safe`**(可发送) · **`risky`**(保留,默认搁置) · **`bad`**(丢弃)。每个线索都附带一个可解释的 0–100 评分以及 `reasons[]` 列表。深入了解:[`docs/deliverability.md`](./docs/deliverability.md)。
## 🆚 对比免费层级
| | OpenLeads | Apollo / Hunter(免费版) |
| --- | --- | --- |
| **成本** | 永久 $0 | 有额度限制,超出后需付费 |
| **是否需要 API key** | ❌ 不需要 | ✅ 必需 |
| **能找到谁** | 创始人、开发者、医生、研究人员 **+ 你接入的任何垂直领域** | 仅限他们的数据库 |
| **邮箱验证** | ✅ 7 项信号共识 + 0–100 评分 | 付费功能 |
| **撰写邮件** | ✅ 免费 LLM 或模板 | ❌ / 需加价购买 |
| **代为发送** | ✅ 预热、节流、屏蔽感知 | 需加价购买 |
| **运行位置** | 🔒 你的本地机器,数据零外泄 | 他们的云端 |
| **代码所有权** | ✅ 可读、可魔改 | ❌ 黑盒 |
| **核心依赖** | **零**(仅使用标准库) | — |
## 🚀 安装
```
# Python(推荐) — zero-dependency engine + 完整的本地应用
pip install "openleads[all]"
# minimal:仅 engine + 基础 CLI
pip install openleads
```
更偏爱 Node?我们提供了一个轻量级包装器,可以通过 **npx** 运行它(首次使用时会自动安装 Python 包):
```
npx openleads find "50 fintech founders verified only"
# 或:npm i -g openleads
```
**10 秒内即可体验:**
```
pip install "openleads[all]"
openleads doctor # check your finding + sending setup
openleads web # launch the local dashboard
# …或留在 terminal 中:
openleads # the interactive chat — just type what you want
```
运行 `openleads --version` 应当会输出 `openleads 3.5.0`。完整使用指南:[`docs/quickstart.md`](./docs/quickstart.md)。
## ⚡ 命令
```
# find + verify — 每条 lead 都带有经过校准的 Confidence %
openleads find "50 fintech founders, verified only" --out leads.csv
openleads find "emails at stripe.com" # Hunter-style domain search
openleads find --source npi --keyword pediatric --location CA --format json
# 整个 pipeline:find → write → send(除非 --live,否则为 dry-run)
openleads run "rust developers in Berlin"
openleads run "20 SaaS founders" --live
# 单行 natural-language campaign(免费,无需 key)
openleads assistant "send 50 emails to fintech founders for my SaaS at 9am"
# automation — 你的机器为你发送
openleads schedule --at 09:00 # install a daily on-device drip (launchd/cron)
openleads drip --live # run one cycle now (due campaigns + follow-ups)
# 其中的部分内容
openleads write "10 AI founders" -o drafts.json # just draft
openleads send "10 AI founders" --live # find → write → send
openleads verify ada@acme.io grace@cobol.dev # verify concrete addresses
# 管理
openleads sources # what you can search
openleads crm # your local CRM (leads + touches + status)
openleads config # set keys, mailbox, sender identity, send limits
openleads doctor # health-check finding + sending
openleads inbox # scan IMAP for replies & bounces (optional)
```
默认情况下,所有发送操作在任何地方都是**试运行**——添加 `--live` 才会真正发送。查找器绝对不会触碰你的邮箱。真正发送的邮件也会保存到你的 **IMAP 已发送文件夹**中,以便它们能在你的邮件客户端中显示(可通过 `save_to_sent` 进行配置)。
## 💬 聊天 CLI
`openleads chat`(或者直接运行 `openleads`)会打开一个类似 Claude-Code 风格的 REPL。直接用纯文本输入即可——它能执行查找,或者当你要求*发送/定时*时,它会自动配置整个营销活动:
```
openleads ❯ pediatricians in California, verified only
openleads ❯ emails at stripe.com
openleads ❯ send 30 emails to rust developers in Berlin for my dev tool at 9am
openleads ❯ /schedule 09:00 # run it unattended, daily
openleads ❯ /send live # …or deliver the previewed batch now
```
通过基于规则的解析器实现**完全离线**运行(无需任何密钥)。设置 `OPENROUTER_API_KEY`(支持免费模型)即可升级自由语义理解与 AI 撰写能力。
## 🧩 数据源(以及添加自定义来源)
```
$ openleads sources
domains [company] any company domain (Hunter-style email search)
github [people ] developers & open-source orgs
hn [company] companies hiring now (Hacker News)
npi [people ] U.S. doctors & healthcare providers
openalex [people ] researchers & academics
producthunt [company] trending products & startups
yc [company] startup founders (Y Combinator)
```
所有数据源均**免密钥且免费**。想要我们未内置的垂直领域——招聘人员、律师、房产经纪人,或者你的 CRM 导出文件?只需将一个 `*.py` 文件放入 `~/.openleads/sources/` 目录下:
```
from openleads.sources.base import Source
from openleads.models import Entity, Query
class LawyersSource(Source):
name, kind, vertical = "lawyers", "people", "attorneys"
description = "State bar directory."
def search(self, query: Query):
for row in fetch_from_some_free_directory(query):
yield Entity(full_name=row["name"], organization=row["firm"],
domain=row["firm_domain"], source=self.name)
```
运行 `openleads sources` 即可看到它。后续的邮箱抓取与验证工作将由引擎全权处理。指南:[`docs/sources.md`](./docs/sources.md)。
## 🔒 设计之初即为本地优先
没有托管后端。无需注册账号。无任何跟踪。你的线索、草稿、邮箱凭据、学习到的模式以及 CRM 数据全部存储在位于 `~/.openleads` 下的本地 SQLite 文件中。引擎**仅**与公共数据源和**你自己的**邮件服务器通信。机密信息以 `chmod 600` 权限存储,且绝不会回传给浏览器。
## 🔍 运作机制
```
flowchart LR
Q[Your requestchat · CLI · web] --> I[Intent parser
rule-based ± free LLM] I --> S[Source plugin
yc · github · npi · openalex · …] S --> E[Deliverability engine
7 signals → score → tier] E --> W[Compose
spam-linted draft] W --> P[Preflight
SPF/DKIM/DMARC + warmup] P --> D[Send
throttled · suppression-aware] D --> C[(Local SQLite
CRM · patterns · cache)] E <--> C ``` CLI、聊天 REPL 和 Web 仪表盘调用的都是这一套相同的处理链路。架构详情:[`docs/architecture.md`](./docs/architecture.md)。 ## 🧭 负责任地使用 OpenLeads 适用于合法的外联、招聘、研究和潜在客户挖掘。某些垂直领域带有额外的责任——例如医疗保健提供商(NPI)、学术界——因此请务必阅读 [`docs/responsible-use.md`](./docs/responsible-use.md)。**你**需自行负责遵守反垃圾邮件法律(CAN-SPAM、GDPR、CASL)以及各个数据源的服务条款。v3 版本内置了防护机制(屏蔽列表、一键退订、预热上限、默认试运行);但如何善用它们完全取决于你。 ## 🗺️ v3.0 有哪些更新 - ✅ **多信号送达能力引擎** —— 7 项信号,多数无需端口 25,真实的 `safe/risky/bad` 评级 - ✅ **撰写 + 发送** —— 起草、提供商预设、预检、预热、屏蔽列表、跟进 - ✅ **`openleads run`** —— 只需一条命令即可实现 查找 → 验证 → 撰写 → 发送 - ✅ **本地 Web 仪表盘**(`openleads web`)—— 无需 Node,无需云端 - ✅ **应用内配置 + `doctor`** —— 无需编辑 dotfile - ✅ **本地 CRM**、去重以及能在多次运行中复合积累的学习模式 查看完整的 [CHANGELOG](./CHANGELOG.md)。 ## 📄 许可证 [PolyForm Noncommercial 1.0.0](./LICENSE) —— 对个人、研究、教育及非营利用途免费。需要商业用途授权?请参阅 [COMMERCIAL-LICENSE.md](./COMMERCIAL-LICENSE.md)。 ## 🙏 鸣谢 [`yc-oss/api`](https://github.com/yc-oss/api) · [OpenAlex](https://openalex.org) · [NPI Registry](https://npiregistry.cms.hhs.gov/) · GitHub 与 ProductHunt 公开数据 · Gravatar · 以及每一位曾经因为受不了“请求演示”按钮而愤怒放弃的人。
**如果 OpenLeads 帮你省下了一笔订阅费,请考虑留下一个 ⭐ —— 这对我们真的很有帮助。**
标签:Python, URL抓取, 数据抓取, 文档结构分析, 无后门, 获客线索, 邮件验证, 销售自动化