关于 blink-connectors
blink-connectors 是 Blink 的连接器技能与命令行/API 使用指南,面向通过已授权服务访问第三方 API 的开发者。它涵盖连接状态、请求格式和服务特定注意事项。
主要功能
- 01检查连接器状态
- 02通过连接器执行 API 请求
- 03列出已连接的 OAuth 提供方
- 04支持命令行与 SDK 调用
- 05提供服务路径及错误处理说明
适用场景
- 01读取 Slack 频道或 Notion 页面
- 02查询 Google Sheets 数据
- 03通过 Google Ads 运行报告
- 04诊断授权、权限或配额错误
MCP 相关
该技能列出 MCP 工具 blink_connector_exec、blink_connector_linked 和 blink_connector_status,供 MCP 客户端执行连接器请求并检查授权状态。
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ blink-new/ blink-plugin --skill blink-connectors安装后在 Claude Code 中输入/blink-connectors确认已加载。
详细介绍
入门
# List available providers
blink connector providers
# Check connection status
blink connector status slack
# Execute an API call
blink connector exec slack /conversations GET
MCP 工具
| 工具 | 说明 |
|---|---|
blink_connector_exec | 通过已连接的提供商执行 API 调用 |
blink_connector_linked | 列出当前已为项目连接的所有 OAuth 提供商 |
blink_connector_status | 检查特定提供商的连接状态 |
前置条件
首次 OAuth 连接必须在浏览器中完成,访问 blink.new/settings?tab=connectors。用户对每个提供商授权一次后,CLI/MCP/SDK 即可进行 API 调用。
SDK 用法
// Check status
const status = await blink.connectors.status('slack')
// GET request
const channels = await blink.connectors.execute('slack', {
method: '/conversations',
http_method: 'GET',
params: { types: 'public_channel,private_channel' }
})
// POST request
await blink.connectors.execute('slack', {
method: '/chat/postMessage',
http_method: 'POST',
params: { channel: 'C1234', text: 'Hello from Blink!' }
})
可用提供商
| 提供商 | ID | 常用端点 |
|---|---|---|
| Slack | slack | /conversations、/chat/postMessage、/users |
| Discord | discord | /user、/guilds、/channels/{id}/messages |
| Notion | notion | /search、/databases、/pages |
| Google Drive | google_drive | /files |
| Google Calendar | google_calendar | /events |
| Google Sheets | google_sheets | /spreadsheets/{id}/values/{range} |
| Google Docs | google_docs | /documents |
| Google Slides | google_slides | /presentations |
linkedin | /userinfo、/ugcPosts | |
| HubSpot | hubspot | /contacts、/companies、/deals |
| Salesforce | salesforce | /query、/sobjects/{type} |
| GitHub | github | /user、/repos、/issues — 克隆/推送/PR 请参阅 blink-github 技能 |
| Stripe | stripe | /customers、/charges、/subscriptions |
| Jira | jira | /search、/issue、/project |
| Microsoft | microsoft | /me、/messages、/events |
| Airtable | airtable | /bases、/records |
另有 20 多个提供商——运行 blink connector providers 查看完整列表。
CLI 示例
# Slack: list channels
blink connector exec slack /conversations GET
# Notion: search pages
blink connector exec notion /search POST '{"query":"meeting notes"}'
# Google Sheets: read data
blink connector exec google_sheets "/spreadsheets/SHEET_ID/values/Sheet1!A1:D10" GET
# HubSpot: list contacts
blink connector exec hubspot /contacts GET '{"limit":50}'
# Salesforce: SOQL query
blink connector exec salesforce /query GET '{"q":"SELECT Id,Name FROM Account LIMIT 10"}'
CLI 语法:blink connector exec <provider> <endpoint> [method] [params]
方法路径规则
- 路径必须以
/开头——使用/conversations,而不是conversations - 动态 ID 放在路径中——
/channels/${channelId}/messages - 提供商 ID 使用下划线——
google_drive、google_calendar、google_sheets - GET 参数会变成查询参数;POST 参数会变成 JSON 请求体
- CLI 参数中的无效 JSON 会导致硬性失败(退出码为 1)——过去,错误的 JSON 会被静默地发送为
{}。如果看到Invalid JSON for params: ...,请修正引号(对内部双引号进行 Shell 转义,或使用--input @file.json)。
Google Ads(composio_googleads)——读取数据
每个路径都必须以 API 版本开头,客户 ID 必须放在路径中,绝不能放在请求体中。 没有顶层 /search 资源——/search、/googleads/search 和 /searchStream 都会返回 404。
# Find the customer id
blink connector exec composio_googleads /v23/customers:listAccessibleCustomers GET
# Run a report (GAQL)
blink connector exec composio_googleads /v23/customers/CUSTOMER_ID/googleAds:search POST \
'{"query":"SELECT campaign.name, metrics.clicks FROM campaign WHERE segments.date DURING LAST_14_DAYS"}'
googleAds:searchStream 的工作方式相同,但会将其载荷(包括错误)封装在数组中返回。
配额(RESOURCE_EXHAUSTED,范围 DEVELOPER)
当 429 响应中的 rateScope: DEVELOPER 表示已触及 Composio 共享开发者令牌的上限——该令牌由多个租户共用——而非用户的 Google Ads 账号上限。用户对自己的账号进行任何操作都无法解决此问题。请遵守 retryDelay(通常为 10 小时以上),并告知用户,不要继续重试。
rateScope: ACCOUNT 则表示相反:这是用户自己的账号速率限制,延迟通常较短。
Google Ads (composio_googleads) — 编写广告系列
旧的剔除假值变通方案已废弃。 Composio 的代理曾从 POST 请求正文中 删除
false、0、{}和[](#3324)。该问题已于 2026-07-24 在上游修复,并于 2026-07-29 在实时代理上重新验证。请照常发送假值。 不要仅为避免使用manualCpc: {}而构建组合出价 策略;也不要省略你希望关闭的网络设置——省略意味着“使用账户默认值”,这与false并不相同。
-
先使用
partialFailure: true和validateOnly: true进行试运行。 Google 会返回状态码 200,并附带包含完整fieldPathElements列表的partialFailureError,因此你可以一次看到所有错误字段,而不是每次往返只看到一个错误。 只有试运行没有问题后,才将validateOnly改为false。 -
可以内联使用空 proto 标记。
{ "manualCpc": {} }可以满足campaign_bidding_strategy的要求——已验证。如果你确实需要在广告系列之间共享出价,组合策略仍然是正确选择,但它不再是变通方案。 -
finalUrls应放在 Asset 顶层,而不是sitelinkAsset内。 这一点 仍然成立,但这是 Google 模式的规则,并非代理的特殊行为:SitelinkAsset没有finalUrls字段,因此将其嵌套会返回Invalid JSON payload ... Unknown name "finalUrls"。 -
v23 要求创建广告系列时提供
containsEuPoliticalAdvertising。 请使用 字符串枚举:"containsEuPoliticalAdvertising": "DOES_NOT_CONTAIN_EU_POLITICAL_ADVERTISING"。 省略该字段会返回contains_eu_political_advertising: REQUIRED。 -
networkSettings的值必须是真正的布尔值。 根据需要将其设为true或false。 请注意,Google 会在搜索广告系列中拒绝targetGoogleSearch: false,并返回OPERATION_NOT_PERMITTED_FOR_CONTEXT——这是 Google 的规则, 并非字段被剔除。
调试步骤
# Dry-run and read the full error list
blink connector exec composio_googleads /v23/customers/CUSTOMER_ID/campaigns:mutate POST \
'{"operations":[...],"partialFailure":true,"validateOnly":true}'
# Then: read partialFailureError.details[].errors[].location.fieldPathElements
# to see exactly which field Google rejected, fix it, re-run with validateOnly:false
对于 Google Ads,优先使用
connector exec(代理),而非connector tool-execute(原生 工具目录)。原生路径会将 Google 的错误折叠为不透明的Error executing the tool GOOGLEADS_*,不提供字段详情。
错误代码
| 代码 | 含义 |
|---|---|
CONNECTOR_NOT_CONNECTED | 用户尚未授权此提供商 |
CONNECTOR_DISABLED | 此项目已禁用该提供商 |
MISSING_SCOPE | 重新连接并授予其他权限 |
*_API_ERROR | 上游 API 错误(例如 SLACK_API_ERROR) |
令牌刷新由 Blink 后端自动处理。