mcpField
A
api-onboarding

api-onboarding

github.com/jonathimer营销与增长8799 次安装34 周前更新
代码仓库

关于 api-onboarding

面向 API 团队的上手优化指南,介绍如何测量从首次接触到首次成功 API 响应的耗时,并找出注册、认证、设置和请求中的阻碍。涵盖沙盒、交互式文档、失败分析与迭代审计。

主要功能

  1. 01测量首次成功 API 调用耗时
  2. 02简化认证与 API 密钥获取
  3. 03规划沙盒环境和测试数据
  4. 04构建可交互的 API 文档
  5. 05分析首次请求失败原因
  6. 06审计并迭代上手流程

适用场景

  1. 01找出新开发者流程中的流失环节
  2. 02设计无需复杂设置的测试体验
  3. 03改进快速入门和请求示例
  4. 04针对常见 API 错误提供恢复指引

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/jonathimer/devmarketing-skills --skill api-onboarding

安装后在 Claude Code 中输入/api-onboarding确认已加载。

附带文件README.md

详细介绍

缩短首次 API 调用时间

开发者发现你的 API 到成功发出首次调用之间的时间,是整个开发者旅程中最关键的阶段。这里每多一分钟的阻碍,都可能让你失去潜在用户。

概述

首次 API 调用时间(TTFAC)是最能预测开发者采用情况的单一指标。快速成功的开发者会成为活跃用户。遇到困难的开发者则会离开,往往悄无声息。

此技能涵盖:

  • 衡量并优化 TTFAC
  • 减少身份验证阻碍
  • 创建有效的沙盒环境
  • 构建交互式文档
  • 识别并修复常见的失败环节

开始之前

查看 developer-audience-context 技能,了解:

  • 开发者通常具备怎样的技术水平?
  • 他们通常使用哪些工具和环境?
  • 他们尝试过哪些替代产品?体验如何?
  • 他们有多迫切?(正在评估还是立即开始构建)

你的引导流程应贴合开发者的实际情况。

了解 TTFAC

TTFAC 衡量什么

首次 API 调用时间衡量的是从开发者首次交互到收到首次成功 API 响应所经过的时间。这包括:

  1. 发现时间:找到“快速入门”内容
  2. 注册时间:创建账户
  3. 凭证时间:获取 API 密钥
  4. 设置时间:安装 SDK、配置环境
  5. 执行时间:发送首次请求
  6. 成功时间:收到成功响应
TTFAC 基准
评级TTFAC开发者体验
优秀< 5 min“太棒了”
良好5-15 min“相当简单明了”
可接受15-30 min“总算搞定了”
较差30-60 min“真让人沮丧”
失败> 60 min“我还是试试别的吧”
衡量 TTFAC

埋点:

// Track these events with timestamps
analytics.track('docs_quickstart_viewed');
analytics.track('signup_started');
analytics.track('signup_completed');
analytics.track('api_key_created');
analytics.track('sdk_installed');     // Via package manager data
analytics.track('first_api_call');    // Via API logs
analytics.track('first_successful_call');

计算:

  • TTFAC 中位数(比平均值更有参考价值)
  • 不同开发者群体的 TTFAC
  • 每个步骤的流失率
  • 不同时间窗口内的成功率(5 min、15 min、60 min)

简化身份验证

身份验证是引导流程中最大的阻碍来源。应尽可能精简。

理想的身份验证流程
  1. 开发者注册(< 2 分钟)
  2. 立即显示 API 密钥(不要藏在设置中)
  3. 密钥立即可用(无激活延迟)
  4. 将密钥复制并粘贴到示例代码中
  5. 成功
应避免的身份验证反模式

审批队列

❌ "Your API access request has been submitted.
    You'll receive access within 2-3 business days."

开发者会离开并寻找替代方案。

隐藏的密钥

❌ Settings → Team → API → Credentials → Keys → Show Key

让密钥显示在仪表板主页上。

复杂的令牌

❌ OAuth flow requiring:
   - Client ID
   - Client secret
   - Redirect URI configuration
   - Token exchange
   - Token refresh handling

为快速入门提供简单的 API 密钥。

验证重重关卡

❌ Sign up → Verify email → Verify phone →
   Add payment → Verify payment → Then API key

尽量减少首次 API 调用的阻碍。

简化身份验证的策略

立即提供测试密钥

✅ "Here's your test API key: sk_test_abc123...
    Use this in sandbox mode—no charges, no setup."

支持多种身份验证方式

✅ Quickstart: API key header
   Production: OAuth when they need it

预先填充示例

✅ # Your API key is pre-filled in these examples
   curl -H "Authorization: Bearer sk_test_YOUR_KEY" ...

延后生产环境要求

✅ Test mode: Instant access
   Production mode: Add payment, verify identity (later)

沙盒环境

沙盒能消除“弄坏东西”的顾虑,让开发者自由试验。

沙盒要求

即时访问:无需审批、付费或复杂设置

行为逼真:相同的 API、响应和错误

界限清晰:明确区分沙盒环境和生产环境

可重置:轻松重新开始

宽松的限制:不要限制试验频率

沙盒实现模式

独立端点

Production: api.example.com
Sandbox:    sandbox-api.example.com

密钥前缀

Production key: sk_live_abc123...
Sandbox key:    sk_test_xyz789...

环境参数

curl -X POST https://api.example.com/v1/messages \
  -H "Authorization: Bearer $API_KEY" \
  -d '{"sandbox": true, ...}'
沙盒数据

预填充的测试数据

// Sandbox comes with test users
const testUsers = await client.users.list();
// Returns: [
//   { id: "usr_test_alice", name: "Alice (Test)" },
//   { id: "usr_test_bob", name: "Bob (Test)" }
// ]

特殊值

// Special values trigger specific behaviors
client.payments.create({
  amount: 1000,
  card: "4242424242424242"  // Always succeeds
});

client.payments.create({
  amount: 1000,
  card: "4000000000000002"  // Always declines
});

记录在文档中的测试场景

## Test Card Numbers

| Number           | Behavior              |
|-----------------|----------------------|
| 4242424242424242 | Successful charge    |
| 4000000000000002 | Declined             |
| 4000000000009995 | Insufficient funds   |
| 4000000000000069 | Expired card         |

交互式文档

让开发者无需离开浏览器即可发起 API 调用。

“试用”功能

核心功能:

  • 预先完成身份验证(自动使用沙盒密钥)
  • 预填可运行的示例数据
  • 可编辑请求参数
  • 返回真实 API 响应(而非模拟响应)
  • 提供复制为 cURL/代码的选项

实现:

<div class="api-explorer">
  <h3>Try it: Send a Message</h3>

  <div class="request-editor">
    <label>To Phone Number</label>
    <input type="text" value="+15551234567" />

    <label>Message Body</label>
    <textarea>Hello from the API Explorer!</textarea>

    <button onclick="sendRequest()">Send Request</button>
  </div>

  <div class="response-viewer">
    <h4>Response</h4>
    <pre><code id="response"></code></pre>
  </div>
</div>
交互式文档工具

基于 OpenAPI:

  • Swagger UI
  • Redoc
  • Stoplight Elements

自定义平台:

  • ReadMe.io
  • Postman Published Docs
  • 自定义 React 组件
交互式示例

不止于单个请求:

## Interactive Tutorial: Send Your First Message

### Step 1: Check your balance
<api-explorer endpoint="GET /account/balance" />

### Step 2: Send a message
<api-explorer endpoint="POST /messages"
  body='{"to": "+15551234567", "body": "Hello!"}' />

### Step 3: Check message status
<api-explorer endpoint="GET /messages/{id}"
  params='{"id": "{{previous.id}}"}' />

常见失败点

失败点分析

跟踪开发者在哪里失败以及原因:

// Instrument error events
api.on('request_error', (error, request) => {
  analytics.track('api_error', {
    error_type: error.type,
    error_code: error.code,
    endpoint: request.endpoint,
    time_since_signup: timeSinceSignup(),
    is_first_call: isFirstCall()
  });
});
首次调用最常见的失败

1. 身份验证错误(占首次调用失败的 40%)

Problem: Wrong key, malformed header, missing auth
Fix:
- Clearer error messages: "API key should start with 'sk_test_'"
- Pre-filled code examples with actual key
- Auth header format shown with example

2. 请求格式错误(25%)

Problem: Wrong content type, malformed JSON, missing fields
Fix:
- Accept flexible content types on simple endpoints
- Return specific field-level errors
- Show exactly what was expected vs. received

3. 环境/设置错误(20%)

Problem: SDK not installed, wrong SDK version, missing dependencies
Fix:
- Version-specific installation instructions
- Compatibility matrix clearly visible
- Quick environment check script

4. 速率限制(10%)

Problem: Aggressive rate limits during exploration
Fix:
- Generous sandbox limits (or none)
- Clear rate limit errors with retry-after
- Don't count failed requests against limits

5. 网络错误(5%)

Problem: Firewall, proxy, SSL issues
Fix:
- Connectivity test endpoint
- Clear networking troubleshooting guide
- Alternative ports/protocols if possible
错误恢复流程

设计能够帮助用户继续完成入门流程的错误消息:

{
  "error": {
    "type": "authentication_error",
    "message": "Invalid API key provided",
    "code": "invalid_api_key",
    "recovery": {
      "steps": [
        "Check that your API key starts with 'sk_test_' or 'sk_live_'",
        "Ensure there are no extra spaces or newlines",
        "Generate a new key at https://dashboard.example.com/keys"
      ],
      "docs": "https://docs.example.com/authentication",
      "support": "https://support.example.com/auth-issues"
    }
  }
}

首次调用体验审查

审查清单

每季度(或每次入门流程变更后)进行一次审查:

作为一名新开发者:

  • 创建一个新账户(使用全新的浏览器/无痕模式)
  • 记录获取可用 API 密钥所需的时间
  • 严格按照快速入门文档操作
  • 进行首次 API 调用
  • 记录总耗时和每个阻碍点

需要回答的问题:

  • 从首页到首次 API 调用需要点击多少次?
  • 你需要打开多少个页面/标签页?
  • 有哪些需要你自行摸索但文档未说明的内容?
  • 你在哪里遇到阻碍或感到困惑?
  • 什么情况会让你放弃?
阻碍点评分
阻碍影响优先级
获取 API 密钥前必须验证邮箱高立即修复
API 密钥隐藏在设置中高立即修复
代码示例没有复制按钮中本季度修复
快速入门假设使用特定操作系统中本季度修复
示例使用过时的 SDK 版本低更新文档时修复

入门优化框架

第 1 步:衡量当前状况
  • 添加 TTFAC 跟踪埋点
  • 邀请 5 名开发者进行首次调用审查
  • 找出排名前 3 的流失点
第 2 步:减少步骤
  • 能否彻底省去某个步骤?
  • 能否将某个步骤推迟到之后?
  • 能否合并多个步骤?
第 3 步:加快剩余步骤
  • 尽可能预先填好所有内容
  • 在各处提供复制按钮
  • 显示进度和后续步骤
第 4 步:帮助用户从失败中恢复
  • 改进错误消息
  • 添加内联故障排查指南
  • 为遇到阻碍的开发者提供实时支持
第 5 步:衡量并迭代
  • 跟踪 TTFAC 的改进情况
  • 对入门流程变更进行 A/B 测试
  • 定期邀请真实开发者进行审查

工具

入门分析
  • Amplitude/Mixpanel:事件跟踪和漏斗分析
  • FullStory/Hotjar:会话录制
  • 自定义仪表板:TTFAC 指标
交互式文档
  • ReadMe.io:功能全面的开发者中心
  • Stoplight:由 OpenAPI 驱动的文档
  • Redocly:API 文档平台
  • 自定义:使用 React/Vue 构建
测试
  • Ghost Inspector:自动化入门流程测试
  • Checkly:API 监控与测试
  • k6:入门流程的负载测试

相关技能

  • docs-as-marketing:快速入门文档
  • sdk-dx:降低入门复杂度的 SDK
  • developer-sandbox:开发者用于入门的 Playground
  • developer-audience-context:了解入门用户群体
  • developer-metrics:衡量入门成效

评论

支持 Markdown