enrich-people-with-email-and-phone

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

Enrich 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.
  • signup.sh
    — handles authentication. Writes credentials to
    .env
    internally. Never exposes the API key.
  • api.sh
    — handles all authenticated API calls. Reads credentials from
    .env
    internally.
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
$SIGNUP
for auth and
$API
for all other calls.
此Skill在SKILL.md文件所在的同一目录中包含两个脚本。切勿直接读取或引用API凭证。
  • signup.sh
    — 处理身份验证。在内部将凭证写入
    .env
    文件。绝不会暴露API密钥。
  • api.sh
    — 处理所有已验证的API调用。从
    .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
进行身份验证,使用
$API
进行所有其他调用。

When 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规则

  1. NEVER rewrite or reframe the user's query. Use their exact words. Ask if unclear — don't modify yourself.
  2. Only enrich OpenFunnel people. This skill cannot enrich arbitrary contacts. People must already exist in OpenFunnel (from signals, enrichment, or ICP matching).
  3. Confirm before enriching. Enrichment costs credits. Always show the count and ask before running.
  4. Present what the API returns. No fabrication, no inference.
  5. Never output or log API credentials. All authenticated calls go through
    api.sh
    .

  1. 切勿重写或重构用户的查询。 使用用户的原话。如有疑问请询问——不要自行修改。
  2. 仅为OpenFunnel中的人员补充信息。 此Skill无法为任意联系人补充信息。人员必须已存在于OpenFunnel中(来自信号、信息补充或ICP匹配)。
  3. 补充前确认。 信息补充会消耗积分。运行前始终显示数量并询问用户。
  4. 如实呈现API返回的内容。 不得编造、不得推断。
  5. 绝不要输出或记录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
signals
): skip to Step 1.
If 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}}'
如果调用成功(返回包含
signals
的JSON):跳至步骤1。
如果调用失败(返回错误或缺少凭证的消息):
undefined

Welcome 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
icp_people
with
person_id
for each person.
如果用户指定了公司或提供了账户ID,从该账户获取人员:
bash
bash "$API" POST /api/v2/account/batch '{"account_ids": [<id>], "icp_people_page": 1, "icp_people_page_size": 100}'
响应包含
icp_people
,其中每个人员都有
person_id

Option 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/filters
This 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
people_ids
array and
total_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_ids
数组和
total_count

Option 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
运行前呈现补充计划:
undefined

Enrichment 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?
  1. Work emails only (default)
  2. Phone numbers only
  3. Both emails and phone numbers

---
待补充人员数量: {count}人 补充邮箱: {是/否} 补充电话: {是/否}
仅成功找到的信息会消耗积分。每次请求最多支持500人。
是否继续?(是/否)

如果用户的人员数量超过500,说明补充将按500人为一批分批进行。

如果用户未指定,询问用户需要补充的内容:
您需要哪些联系信息?
  1. 仅工作邮箱(默认)
  2. 仅电话号码
  3. 邮箱和电话号码都补充

---

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
    status
    is
    completed
    or
    failed

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
任务完成后,呈现结果:
undefined

Enrichment Complete

补充完成

Total processed: {progress.total} Emails found: {progress.emails_found} Phones found: {progress.phones_found} Credits used: {credits_used.total}
NameEmailPhoneStatus
{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. 下一步操作

undefined
undefined

What would you like to do next?

您接下来想做什么?

  1. Enrich more people — different account, different filters
  2. Export to CRM — push enriched contacts to Salesforce or HubSpot
  3. Research an account — deep dive into a specific company
undefined
  1. 补充更多人员 — 不同账户、不同筛选条件
  2. 导出至CRM — 将补充后的联系人推送至Salesforce或HubSpot
  3. 研究账户 — 深入了解特定公司
undefined