---
name: ailinkify
description: 远程操作 AI Linkify 账号——读取产品与目标站、把产品提交到目录站/发布平台，并回写提交状态与证据链接。当用户要求通过 AI Linkify 提交、发布、收录或跟踪产品在目录站/发布平台的进展时使用。
---

# AI Linkify Agent

AI Linkify 维护一个目录站、发布平台与社区的精选库。通过本 Skill，AI Agent 可以远程在用户账号上工作：

- 新建产品，并读取用户的产品与个人信息（填表所需的数据）；
- 查询目标站库，并知道哪些站已经提交过；
- 把产品提交到某个站点并回写结果（状态 + 证据链接）；
- 之后更新记录（收录上线、被拒等）。

## 1. 凭据

| 项 | 值 |
|---|---|
| API 基址 | `https://ailinkify.com/api/agent` |
| 鉴权 | `Authorization: Bearer {{API_KEY}}`（每个请求都要带） |
| Skill 文档 | `https://ailinkify.com/skill.md` |
| 人类可读说明 | `https://ailinkify.com/skill` |

禁止把 API Key 写进共享日志、文件或提交记录。返回 `401` 说明 Key 无效或已被吊销，请让用户在 `https://ailinkify.com/agent` 重新生成。

## 2. 连通性自检

```bash
curl -s https://ailinkify.com/api/agent/me -H "Authorization: Bearer {{API_KEY}}"
```

返回账号、套餐、剩余额度（`plan.limits` 对比 `plan.usage`），以及是否解锁了无人值守自动提交（`plan.autoSubmit`）。先读它，据此判断本次能做多少工作。

## 3. 接口

| 方法 | 路径 | 用途 |
|---|---|---|
| GET | `/me` | 账号、套餐、额度、自动提交开关 |
| GET | `/products` | 全部产品（可直接用于填表的字段；产品留空的字段已回落个人信息） |
| POST | `/products` | 新建产品（body：`name`、`websiteUrl` 必填；可选 `tagline`、`shortDescription`、`longDescription`、`category`、`pricingModel`、`tags`、`screenshots`、`logoUrl`、`demoUrl`、`docsUrl`、`contactEmail`、`founderName`、`companyName`、`twitterUrl`、`githubUrl`、`linkedinUrl`、`launchDate`） |
| GET | `/profile` | 作者资料（姓名、邮箱、社交账号、简介），用于要求填作者的站点 |
| GET | `/targets` | 目标站库：`?q=&channel=directory|launch|content|community&pricing=free|paid&minDr=&dofollow=yes&sort=dr|name&productId=&page=&limit=` |
| POST | `/targets` | 收录用户新发现的站点（body：`name`、`homepageUrl` 必填，可选 `submitUrl`、`channelType`、`submitKind`、`requiresLogin`、`requiresReview`、`notes`） |
| GET | `/submissions` | 提交记录：`?status=&productId=&channel=&page=&limit=` |
| POST | `/submissions` | 创建或复用记录（body：`productId`、`targetUrl` 必填；可选 `targetName`、`targetSiteId`、`status`、`submittedUrl`、`evidenceUrl`、`notes`、`auto`） |
| GET | `/submissions/{id}` | 单条记录及其完整状态历史 |
| PATCH | `/submissions/{id}` | 更新 `status` / `submittedUrl` / `evidenceUrl` / `notes` |

响应均为 JSON。错误形如 `{ "error": "..." }`：`401`（Key 无效）、`402`（额度超限，含 `limit` 与 `used`）、`403`（功能需升级套餐）、`409`（该站已提交过，含 `submissionId`）。

## 4. 推荐流程

1. **自检** —— `GET /me`；额度用尽或 Key 被拒时停下来告知用户。
2. **取素材** —— `GET /products`（选用户指定的产品；账号下还没有产品时用 `POST /products` 新建）与 `GET /profile`（作者信息）。
3. **选目标站** —— `GET /targets?minDr=40&limit=20`（带 `productId` 可看产品维度的状态）。优先 `pricing=free`、`drScore` 高、`submitKind=form` 的站。
4. **跳过已完成** —— `mySubmission.status` 为 `submitted`/`awaiting_review`/`published` 的站已提交过，不要重复提交。
5. **准备文案** —— 按每个站点的表单调整产品名、一句话简介、描述、分类。只写事实，不要编造融资、客户数或奖项。`GET /submissions/{id}` 与 `notes` 里常有站点要求（需登录、需审核、仅邮件提交）。
6. **执行提交** —— 用真实浏览器打开 `submitUrl` 填写并提交。`submitKind=manual` 表示该站没有在线表单：发邮件或交回用户处理。
7. **回写结果** —— `POST /submissions`，带 `targetUrl`（站点地址）、`status: "submitted"`，以及可得的 `submittedUrl`（提交后生成的页面）和 `evidenceUrl`（截图 / 确认链接 / 公开列表页）。只有全程无人复核时才传 `auto: true`——该能力需要 Pro 套餐。
8. **后续跟进** —— 收录上线后 `PATCH /submissions/{id}` 置 `status: "published"` 并给出公开链接。

### 示例：回写一条已完成的提交

```bash
curl -s -X POST https://ailinkify.com/api/agent/submissions \
  -H "Authorization: Bearer {{API_KEY}}" -H "Content-Type: application/json" \
  -d '{
    "productId": "PRODUCT_ID",
    "targetUrl": "https://example-directory.com/submit",
    "targetName": "Example Directory",
    "status": "submitted",
    "submittedUrl": "https://example-directory.com/p/my-product",
    "evidenceUrl": "https://example-directory.com/p/my-product",
    "notes": "已通过表单提交，等待审核"
  }'
```

### 示例：标记为已发布

```bash
curl -s -X PATCH https://ailinkify.com/api/agent/submissions/SUBMISSION_ID \
  -H "Authorization: Bearer {{API_KEY}}" -H "Content-Type: application/json" \
  -d '{"status":"published","evidenceUrl":"https://example-directory.com/p/my-product"}'
```

## 5. 状态机

- `todo` → preparing, submitted
- `preparing` → submitted, failed
- `submitted` → awaiting_review, published, rejected, failed, unknown
- `awaiting_review` → published, rejected, unknown
- `published` (终态)
- `rejected` → todo
- `failed` → todo
- `unknown` → todo, submitted, awaiting_review, published

只接受上述流转，非法跳转返回 `400`。去重按（产品，站点）维度：同一对再次 POST 会复用已有记录（`deduped: true`），记录处于活跃状态时返回 `409`。

## 6. 规则

- 一个产品 + 一个站点只有一条记录——只能复用，不能另建并行记录。
- 只写观察到的事实：真正见过的 URL、真正发生过的状态。
- `auto: true`（无人值守提交）是 Pro 能力，免费套餐返回 `403`。
- 额度由服务端强制校验，新建记录可能失败并返回 `402`；应转告剩余额度，不要反复重试。
- 用户自建站点（`isGlobal: false`）仅本账号可见，内置库为全站共享。
- 付费收录、接受条款、用用户社交账号发帖之前，必须先征得用户同意。