---
name: mozhenzhen-provider-push
description: 把中转站的资料、模型和价格推送到模真真（mozhenzhen.com）。Use when the owner of an AI API relay site (中转站) wants to publish or update their profile, announcements, promotions, models or prices on 模真真, write or fix a push script, or schedule regular pushes.
---

# 模真真站方推送（v1）

模真真是买 AI 服务前查价格、看验真的网站。中转站入驻后，可以用一把推送密钥，把自己的资料、公告、活动、模型和价格推到模真真上，显示在这家中转站的主页。推送免费，不影响排序。

这份文件既是接口文档，也是给 AI 助手用的 skill：把它交给你的 AI，它就能帮你写推送脚本。

## 推送之前

1. 登录模真真账号，打开中转站主页，在用户口碑下面点「免费入驻」（已入驻的站显示「站长管理」），或者直接打开 https://mozhenzhen.com/provider-center 。
2. 按页面提示在你的域名解析里加一条 TXT 记录（主机记录 `_mozhenzhen`），点「验证」。验证通过后这条记录可以删掉。
3. 在「我的中转站」里新建推送密钥。完整密钥只显示一次，请马上保存；丢了就作废再新建。同时最多两把。

密钥只放在你自己的服务器上，不要写进网页、前端代码或公开仓库。

## 接口

| 用途 | 地址 |
| --- | --- |
| 正式推送 | `POST https://mozhenzhen.com/api/mzz/provider-push/v1/push` |
| 试推（只检查格式，不上线） | `POST https://mozhenzhen.com/api/mzz/provider-push/v1/check` |

请求头：

```
Authorization: Bearer <你的推送密钥>
Content-Type: application/json
```

- 一次推一整份资料，后推的整份替换前一份：这次没写的内容（比如去掉了某条公告、某个模型）就会下线。
- 请求体不能超过 6 MB；一小时最多推 60 次。
- **价格至少每 3 天推一次**，价格没变也要推。超过 3 天没推，模真真会改回显示我们自己采集的价格。建议每天定时推一次、改价后立刻推一次。
- 推上来的文字和图片会先自动审核，通过才显示；价格一般一分钟左右生效。

## 推送格式

```json
{
  "schema": "mozhenzhen.provider-push.v1",
  "profile": {
    "name": "示例 API",
    "logo": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNk+M9QDwADhgGAWjR9awAAAABJRU5ErkJggg==",
    "tagline": "Claude、GPT 全系列，按量付费",
    "description": "我们提供 Claude、GPT、Gemini 等模型的接口服务，充值后按实际用量扣费，余额永久有效。",
    "signup_url": "https://example-api.com/register?aff=MZZ",
    "contacts": [
      {"type": "qq_group", "value": "123456789", "label": "售后群"},
      {"type": "email", "value": "support@example-api.com"}
    ],
    "payment_methods": ["alipay", "wechat_pay"],
    "refund_policy": "未使用的余额 7 天内可以原路退回。"
  },
  "announcements": [
    {"title": "11 月 1 日凌晨维护", "content": "11 月 1 日 2:00-3:00 维护升级，期间接口可能短暂不可用。", "ends_at": "2026-11-01T03:00:00+08:00"}
  ],
  "promotions": [
    {"title": "新用户充 100 送 10", "content": "注册 7 天内首次充值 100 元送 10 元余额。", "url": "https://example-api.com/topup", "ends_at": "2026-12-31T23:59:59+08:00"}
  ],
  "pricing": {
    "currency": "CNY",
    "models": [
      {"model": "claude-sonnet-4-5", "group": "default", "input": "12", "output": "60", "cache_read": "1.2", "cache_write": "15"},
      {"model": "gpt-5", "input": "8.75", "output": "70"},
      {"model": "gpt-image-1", "group": "绘图", "per_request": "0.3"}
    ]
  }
}
```

### 字段说明

除了 `schema`，所有部分都可以不写；写了不认识的字段会被退回。

**profile（站点资料）**

| 字段 | 必填 | 说明 |
| --- | --- | --- |
| `name` | 写 profile 时必填 | 站点名称，最多 40 字 |
| `logo` | 否 | 头像，写成 `data:image/png;base64,...`，支持 png、jpeg、webp、gif，不超过 300 KB。我们会转存成自己的图片 |
| `tagline` | 否 | 一句话简介，最多 60 字 |
| `description` | 否 | 详细介绍，纯文字，最多 2000 字 |
| `signup_url` | 否 | 注册或购买地址，必须是 `https://` 开头、你入驻的那个网站（含子域名）上的地址，可以带邀请码 |
| `contacts` | 否 | 联系方式，最多 6 条。`type` 只能是 `qq_group`、`qq`、`wechat`、`wechat_official`、`telegram`、`discord`、`email`、`website`、`other`；`value` 最多 100 字；`label` 可选，最多 20 字 |
| `payment_methods` | 否 | 支付方式，从 `alipay`、`wechat_pay`、`usdt`、`bank_card`、`paypal`、`other` 里选 |
| `refund_policy` | 否 | 售后和退款说明，最多 1000 字 |

**announcements（公告，最多 5 条）**：`title`（必填，最多 40 字）、`content`（必填，最多 1000 字）、`ends_at`（可选，到这个时间自动下线）。

**promotions（店铺活动，最多 3 条）**：`title`（必填，最多 40 字）、`content`（最多 500 字）、`image`（海报，同 logo 的写法，不超过 1 MB）、`url`（活动地址，规则同 `signup_url`）、`starts_at`、`ends_at`（可选，只在这段时间显示）。活动只显示在你自己的主页上。

时间一律写成带时区的格式，比如 `2026-11-01T03:00:00+08:00`。

**pricing（模型和价格）**

| 字段 | 说明 |
| --- | --- |
| `currency` | `CNY` 或 `USD`，整份价格用同一种货币 |
| `models` | 1 到 3000 条，每条是一个模型在一个分组下的价格 |
| `models[].model` | 调用接口时用的模型名，比如 `claude-sonnet-4-5` |
| `models[].group` | 分组名，可选，默认 `default`；最多 40 字，不能有空格和斜杠 |
| `models[].input` / `output` | 按量计费：每百万 Token 的价格，两个都必填 |
| `models[].cache_read` / `cache_write` | 可选：缓存读取、缓存写入每百万 Token 的价格 |
| `models[].per_request` | 按次计费：每次调用的价格，和按量计费二选一 |

**价格写的是用户实际要付的钱**：已经算上充值比例和分组倍率。比如充 1 元得 1 美元额度、某模型标价每百万 Token 3 美元，那么实际价格写 `"3"`（CNY）。价格可以写成字符串或数字，最多 8 位小数。同一个模型在同一个分组里只能出现一次。

## 返回结果

成功（HTTP 200）：

```json
{"accepted": true, "mode": "push", "record_id": 123, "summary": {"models": 3, "price_rows": 3, "groups": ["default", "绘图"], "moderation": {"approved": 3, "pending": 1, "rejected": 0, "reasons": []}}, "message": "已收到……"}
```

格式不对（HTTP 400），整份退回，逐条告诉你哪里错了：

```json
{"accepted": false, "record_id": 124, "errors": [{"path": "$.pricing.models[3].input", "message": "必须是数字"}]}
```

其它错误：`401` 密钥不对或已作废；`403` 推送被暂停；`413` 请求太大；`429` 推得太频繁。每次推送的结果都能在「我的中转站」的推送记录里看到，包括哪些模型名我们还不认识（不认识的模型暂时不显示）。

## 例子

curl：

```bash
curl -sS https://mozhenzhen.com/api/mzz/provider-push/v1/check \
  -H "Authorization: Bearer $MZZ_PUSH_KEY" \
  -H "Content-Type: application/json" \
  --data @push.json
```

Python：

```python
import json, os, requests

payload = json.load(open("push.json", encoding="utf-8"))
response = requests.post(
    "https://mozhenzhen.com/api/mzz/provider-push/v1/push",
    headers={"Authorization": f"Bearer {os.environ['MZZ_PUSH_KEY']}"},
    json=payload,
    timeout=30,
)
print(response.status_code, response.json())
```

## 规矩

- 推送的资料会标「站方提供」，你推的价格会替代我们采集的价格。
- 资料必须真实。用户可以举报，系统会自动核查（价格会重新采集比对）；核查属实的：第一次撤下那一条并在主页标注 7 天；第二次取消「官方入驻」并暂停推送 30 天；冒充官方或卖假模型的永久取消入驻。可以在「我的中转站」里申诉，申诉会重新核查一次。
- 验真结果、用户评价和排名不能推送，也不会因为入驻而改变。

## 给 AI 助手的做法

你在帮一位中转站站长对接模真真。按这个顺序做：

1. 先确认站长已经入驻并拿到推送密钥；没有就让他按「推送之前」去做。密钥让他自己放进环境变量 `MZZ_PUSH_KEY`，不要让他把密钥贴给你。
2. 问清楚数据从哪里来：他的站点用什么系统、能不能从后台接口或数据库读出模型和价格、充值比例和分组倍率是多少。不要猜，也不要编价格；拿不到的部分就不写。
3. 写一个脚本，把数据整理成上面的格式。价格一定要换算成用户实际付的钱。
4. 先调 `/v1/check` 试推，按返回的 `errors` 逐条改，直到 `accepted: true`。
5. 再调 `/v1/push` 正式推送，把返回结果给站长看。
6. 帮他设一个定时任务（比如每天一次），改价后也立刻推一次；保证价格至少每 3 天推一次。
