enrich-people-with-email-and-phone
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseEnrich People with Email and Phone
为人员补充邮箱和电话信息
Enrich people already in OpenFunnel with work email addresses and/or phone numbers. This only works with people discovered through OpenFunnel signals, enrichment, or ICP matching — you cannot enrich arbitrary contacts.
为已在OpenFunnel中的人员补充工作邮箱地址和/或电话号码。此功能仅适用于通过OpenFunnel信号、信息补充或ICP匹配发现的人员——无法为任意联系人补充信息。
API Calls
API调用
This skill bundles two scripts in the same directory as this SKILL.md file. Never read or reference API credentials directly.
- — handles authentication. Writes credentials to
signup.shinternally. Never exposes the API key..env - — handles all authenticated API calls. Reads credentials from
api.shinternally..env
First, resolve the script paths relative to this file's location:
bash
SKILL_DIR="$(dirname "$(find ~/.agents/skills -name SKILL.md -path "*/enrich-people-with-email-and-phone/*" 2>/dev/null | head -1)")"
API="$SKILL_DIR/api.sh"
SIGNUP="$SKILL_DIR/signup.sh"Then use for auth and for all other calls.
$SIGNUP$API此Skill在SKILL.md文件所在的同一目录中包含两个脚本。切勿直接读取或引用API凭证。
- — 处理身份验证。在内部将凭证写入
signup.sh文件。绝不会暴露API密钥。.env - — 处理所有已验证的API调用。从
api.sh文件内部读取凭证。.env
首先,解析相对于此文件位置的脚本路径:
bash
SKILL_DIR="$(dirname "$(find ~/.agents/skills -name SKILL.md -path "*/enrich-people-with-email-and-phone/*" 2>/dev/null | head -1)")"
API="$SKILL_DIR/api.sh"
SIGNUP="$SKILL_DIR/signup.sh"然后使用进行身份验证,使用进行所有其他调用。
$SIGNUP$APIWhen to Use This Skill
何时使用此Skill
- "Get work emails for these people"
- "Enrich the people at Ramp with phone numbers"
- "Find emails for all the VPs I found in my last signal"
- "Get contact info for people in my hiring signal results"
- "Enrich emails for people at account ID 12345"
- "获取这些人员的工作邮箱"
- "为Ramp公司的人员补充电话号码"
- "为我上次信号中找到的所有副总裁查找邮箱"
- "获取我招聘信号结果中人员的联系信息"
- "为账户ID 12345的人员补充邮箱"
Agent Rules
Agent规则
- NEVER rewrite or reframe the user's query. Use their exact words. Ask if unclear — don't modify yourself.
- Only enrich OpenFunnel people. This skill cannot enrich arbitrary contacts. People must already exist in OpenFunnel (from signals, enrichment, or ICP matching).
- Confirm before enriching. Enrichment costs credits. Always show the count and ask before running.
- Present what the API returns. No fabrication, no inference.
- Never output or log API credentials. All authenticated calls go through .
api.sh
- 切勿重写或重构用户的查询。 使用用户的原话。如有疑问请询问——不要自行修改。
- 仅为OpenFunnel中的人员补充信息。 此Skill无法为任意联系人补充信息。人员必须已存在于OpenFunnel中(来自信号、信息补充或ICP匹配)。
- 补充前确认。 信息补充会消耗积分。运行前始终显示数量并询问用户。
- 如实呈现API返回的内容。 不得编造、不得推断。
- 绝不要输出或记录API凭证。 所有已验证的调用都通过进行。
api.sh
Workflow
工作流程
0. Agent Auth Check
0. Agent身份验证检查
Before anything, test if credentials are working by running:
bash
bash "$API" POST /api/v1/signal/get-signal-list '{"pagination": {"limit": 1, "offset": 0}}'If the call succeeds (returns JSON with ): skip to Step 1.
signalsIf the call fails (returns an error or missing credentials message):
undefined在进行任何操作之前,通过运行以下命令测试凭证是否有效:
bash
bash "$API" POST /api/v1/signal/get-signal-list '{"pagination": {"limit": 1, "offset": 0}}'如果调用成功(返回包含的JSON):跳至步骤1。
signals如果调用失败(返回错误或缺少凭证的消息):
undefinedWelcome to OpenFunnel
欢迎使用OpenFunnel
OpenFunnel turns daily events in your market into pipeline
— using OpenFunnel's Event Intelligence engine.
To get started, I'll authenticate you via the API.
What's your work email?
Wait for user input. Then:
1. Run `bash "$SIGNUP" start "<user_email>"`
- Returns `{"status": "verification_code_sent", "email": "..."}` on success
2. Tell the user a 6-digit code was sent:I sent a 6-digit verification code to {email}. Reply with the code.
3. Wait for input. Run `bash "$SIGNUP" verify "<user_email>" "<code>"`
- On success: returns `{"status": "authenticated", "user_id": "..."}`. Credentials are written to `.env` and `.gitignore` is updated automatically.
- On failure: returns `{"status": "failed", ...}`
4. Verify with `bash "$API" POST /api/v1/signal/get-signal-list '{"pagination": {"limit": 1, "offset": 0}}'`
5. If verification succeeds → continue to Step 1
6. If sign-up fails → ask user to retry
7. If verify fails → tell user the code was invalid or expired (up to 10 attempts in 24 hours), offer to retry or resend
---OpenFunnel利用其事件智能引擎,将您所在市场的日常事件转化为销售线索。
开始之前,我将通过API对您进行身份验证。
您的工作邮箱是什么?
等待用户输入。然后:
1. 运行 `bash "$SIGNUP" start "<user_email>"`
- 成功时返回 `{"status": "verification_code_sent", "email": "..."}`
2. 告知用户已发送6位验证码:我已向**{email}**发送了一个6位验证码。请回复验证码。
3. 等待输入。运行 `bash "$SIGNUP" verify "<user_email>" "<code>"`
- 成功时:返回 `{"status": "authenticated", "user_id": "..."}`。凭证将被写入`.env`文件,`.gitignore`会自动更新。
- 失败时:返回 `{"status": "failed", ...}`
4. 使用 `bash "$API" POST /api/v1/signal/get-signal-list '{"pagination": {"limit": 1, "offset": 0}}'` 验证
5. 如果验证成功 → 继续步骤1
6. 如果注册失败 → 请用户重试
7. 如果验证失败 → 告知用户验证码无效或已过期(24小时内最多尝试10次),提供重试或重新发送的选项
---1. Get the people IDs
1. 获取人员ID
The user needs to tell you which people to enrich. There are three ways to get people IDs:
用户需要告知要补充信息的人员。有三种获取人员ID的方式:
Option A: From a specific account
选项A:来自特定账户
If the user names a company or gives an account ID, fetch people from that account:
bash
bash "$API" POST /api/v2/account/batch '{"account_ids": [<id>], "icp_people_page": 1, "icp_people_page_size": 100}'The response contains with for each person.
icp_peopleperson_id如果用户指定了公司或提供了账户ID,从该账户获取人员:
bash
bash "$API" POST /api/v2/account/batch '{"account_ids": [<id>], "icp_people_page": 1, "icp_people_page_size": 100}'响应包含,其中每个人员都有。
icp_peopleperson_idOption B: From the full people list with filters
选项B:来自带筛选条件的完整人员列表
If the user wants to enrich a filtered set of people (e.g. "all VPs in Engineering"), first get available filters:
bash
bash "$API" GET /api/v1/people/filtersThis returns all filterable fields with their valid options. Then fetch matching people IDs:
bash
bash "$API" POST /api/v1/people/list '{"filters": {<user_filters>}, "page": 0, "page_size": 500}'Returns array and .
people_idstotal_count如果用户想要为一组筛选后的人员补充信息(例如“所有工程副总裁”),首先获取可用的筛选条件:
bash
bash "$API" GET /api/v1/people/filters这会返回所有可筛选字段及其有效选项。然后获取匹配的人员ID:
bash
bash "$API" POST /api/v1/people/list '{"filters": {<user_filters>}, "page": 0, "page_size": 500}'返回数组和。
people_idstotal_countOption C: User already has people IDs
选项C:用户已拥有人员ID
If the user provides people IDs directly (from a previous signal, enrichment, or other skill), use those.
如果用户直接提供了人员ID(来自之前的信号、信息补充或其他Skill),则使用这些ID。
2. Confirm what to enrich
2. 确认补充内容
Present the enrichment plan before running:
undefined运行前呈现补充计划:
undefinedEnrichment Plan
补充计划
People to enrich: {count} people
Enrich emails: {yes/no}
Enrich phones: {yes/no}
⚡ Only successful finds consume credits. Max 500 people per request.
Proceed? (yes / no)
If the user has more than 500 people, explain that enrichment will be batched in chunks of 500.
Ask the user what they want enriched if they haven't specified:
What contact info do you need?
- Work emails only (default)
- Phone numbers only
- Both emails and phone numbers
---待补充人员数量: {count}人
补充邮箱: {是/否}
补充电话: {是/否}
⚡ 仅成功找到的信息会消耗积分。每次请求最多支持500人。
是否继续?(是/否)
如果用户的人员数量超过500,说明补充将按500人为一批分批进行。
如果用户未指定,询问用户需要补充的内容:
您需要哪些联系信息?
- 仅工作邮箱(默认)
- 仅电话号码
- 邮箱和电话号码都补充
---3. Run enrichment
3. 运行补充操作
bash
bash "$API" POST /api/v1/enrich/people '{"people_ids": [<ids>], "enrich_emails": true, "enrich_phones": false}'- Max 500 people per request
- If more than 500, split into chunks and run sequentially
Then poll for completion:
bash
bash "$API" GET /api/v1/enrich/people/<job_id>Polling guidance:
- Poll every 5 seconds
- Typical runtime is about 2 seconds per person
- Stop when is
statusorcompletedfailed
bash
bash "$API" POST /api/v1/enrich/people '{"people_ids": [<ids>], "enrich_emails": true, "enrich_phones": false}'- 每次请求最多500人
- 如果超过500人,拆分批次并依次运行
然后轮询完成状态:
bash
bash "$API" GET /api/v1/enrich/people/<job_id>轮询指南:
- 每5秒轮询一次
- 通常每人处理时间约为2秒
- 当为
status或completed时停止轮询failed
4. Present results
4. 呈现结果
When the job completes, present the results:
undefined任务完成后,呈现结果:
undefinedEnrichment Complete
补充完成
Total processed: {progress.total}
Emails found: {progress.emails_found}
Phones found: {progress.phones_found}
Credits used: {credits_used.total}
| Name | Phone | Status | |
|---|---|---|---|
| {person_name} | {email or "—"} | {phone_number or "—"} | {status} |
| ... | ... | ... | ... |
**Status meanings:**
- `enriched` — contact info found
- `already_enriched` — already had this info
- `not_found` — lookup completed but no result
- `no_linkedin_url` — can't enrich without a LinkedIn URL
- `error` — enrichment failed for this person
---总处理人数: {progress.total}
找到的邮箱数量: {progress.emails_found}
找到的电话数量: {progress.phones_found}
消耗的积分: {credits_used.total}
| 姓名 | 邮箱 | 电话 | 状态 |
|---|---|---|---|
| {person_name} | {邮箱或“—”} | {电话号码或“—”} | {status} |
| ... | ... | ... | ... |
**状态含义:**
- `enriched` — 找到联系信息
- `already_enriched` — 已拥有该信息
- `not_found` — 查找完成但无结果
- `no_linkedin_url` — 没有LinkedIn URL无法补充信息
- `error` — 该人员的补充操作失败
---5. What's next
5. 下一步操作
undefinedundefinedWhat would you like to do next?
您接下来想做什么?
- Enrich more people — different account, different filters
- Export to CRM — push enriched contacts to Salesforce or HubSpot
- Research an account — deep dive into a specific company
undefined- 补充更多人员 — 不同账户、不同筛选条件
- 导出至CRM — 将补充后的联系人推送至Salesforce或HubSpot
- 研究账户 — 深入了解特定公司
undefined