使用 SignalLayer.io 的真实 OpenClaw API 创建、查询和分页管理外链 Campaign。适用于用户要求配置 SignalLayer API Key、查询积分、创建外链任务、查看任务状态或列出 Campaign;客户端未指定数量时默认 200,但服务端 linkCount 始终必填。
npx skills add https://github.com/kennyzir/7deer_skills --skill signallayer-backlinks-client
SIGNALLAYER_API_KEY 环境变量读取 Key。memory/signallayer-api-user.md;提醒这是明文文件且不得提交 Git。GET /credits 真实验证。仅检查 sl_ 前缀不算验证成功。Base URL:https://signallayer.io/api/openclaw
| 操作 | 方法与路径 |
|------|------------|
| 查询积分 / 验证 Key | GET /credits |
| 创建 | POST /create-campaign |
| 查询单个任务 | GET /campaign-status/{id} |
| 查询任务列表 | GET /campaigns?limit=20&offset=0 |
认证 Header:Authorization: Bearer <USER_API_KEY>。
/credits。targetUrl:必填。brandName:API 必填;用户未提供时,可从目标 hostname 生成候选值并明确告知用户。linkCount:API 必填;用户未指定时客户端使用 200。keywords:可选,默认空字符串。strategy:safety(默认)、neutral、aggressive。speed:natural(默认)、standard、drip。dripDays:drip 时为 10–30,默认 14。POST https://signallayer.io/api/openclaw/create-campaign
Authorization: Bearer <USER_API_KEY>
Content-Type: application/json
{
"targetUrl": "https://example.com",
"brandName": "Example",
"keywords": "seo,marketing",
"linkCount": 200,
"strategy": "safety",
"speed": "natural",
"dripDays": 14,
"source": "openclaw-skill"
}
success: true 判断。Campaign ID 位于 campaign.id。状态响应的进度位于:
{
"campaign": {
"progress": {
"total": 200,
"completed": 85,
"pending": 115,
"percent": 43
}
}
}
不要读取不存在的顶层 completed、total、campaign_id、updatedAt 或预计完成时间。
列表接口默认返回 20 条,limit 最大为 100。它是 Campaign 分页数量,与每个 Campaign 的外链数量无关。
1 条外链 = 1 积分。aggressive 不按 1.5 倍扣积分。instant,不得发送或向用户推荐该值。natural/standard 进入正常 Agent 队列;drip 生成 10–30 天的日期排期。读取 HTTP 状态和 JSON 中的 code、error、可选 field:
遇到 HTML 响应时,优先检查是否误用了 api.signallayer.io/v1 或 /campaigns/{id} 等旧路径。
优先使用仓库脚本,避免手写漂移的请求:
python scripts/signallayer_client.py --credits
python scripts/signallayer_client.py --target "https://example.com" --brand "Example"
python scripts/signallayer_client.py --status "campaign_uuid"
python scripts/signallayer_client.py --list
完整契约见 references/api.md,排查流程见 OPERATION-GUIDE.md。
Take kennyzir/signallayer-backlinks-client from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.