内容
# rtblint
**OpenRTB linter.** 验证 OpenRTB 2.x 出价请求和出价响应是否符合版本化的 IAB Tech Lab 规格快照,从 2.0 到每月的 2.6 版本(目前最高到 2.6-202606)。
[](https://crates.io/crates/rtblint)
[](https://github.com/aleksUIX/rtblint/actions)
网站和在线工具:[rtblint.org](https://rtblint.org)
## 验证内容
- 错误的 JSON 格式和错误的首层结构
- 必需字段,包括必需的非空数组
- 未知的对象和字段(根据版本目录,`ext` 子树保持开放)
- 类型不匹配(字符串、整数、浮点数、布尔值、对象和数组)
- 文档化的枚举值,包括 AdCOM 列表和供应商范围(500+)
- 已废弃、已移动、已删除和尚不可用的字段(跨版本)
- 语义规则:站点/应用/DOOH 排他性、`imp` 媒体类型存在性、可跳过视频依赖、持续时间排他性、`seatbid`/`nbr` 在响应中存在,等等
每个发现都带有稳定的规则 ID、严重性、消息和 JSON 路径。
## 支持平台
| 平台 | 包 | 状态 |
| --- | --- | --- |
| Rust 命令行工具 | [`rtblint`](https://crates.io/crates/rtblint) | 可用 |
| Rust 库 | [`rtblint-core`](https://crates.io/crates/rtblint-core) | 可用 |
| MCP 服务器 | [`rtblint-mcp`](https://crates.io/crates/rtblint-mcp) | 可用 |
| Node (WASM) | `rtblint-core` on npm | 可用 |
| Python | `rtblint` on PyPI | 尚未实现 |
| Go | `github.com/aleksUIX/rtblint/go` | 尚未实现 |
OpenRTB 3.0 有效载荷验证尚未实现(3.0 目录仅用于自省)。2.6-202204 快照没有提取目录,而是报告自身不支持而不是静默通过有效载荷。参见 [ROADMAP.md](ROADMAP.md) 了解下一步计划,[CHANGELOG.md](CHANGELOG.md) 了解发布历史。
## 命令行工具
```bash
cargo install rtblint
rtblint validate request.json
rtblint validate --type response response.json
rtblint validate --version 2.5 --format json request.json
cat request.json | rtblint validate --stdin
```
退出代码:0(有效),1(验证错误),2(使用或 I/O 错误)。
## Node
```js
import { validate, validateResponse, versions } from "rtblint-core";
const report = validate(JSON.stringify(bidRequest), "2.6-202505");
if (!report.valid) {
for (const issue of report.issues) {
console.log(`[${issue.severity}] ${issue.path}: ${issue.message} (${issue.id})`);
}
}
```
## MCP 服务器
`rtblint-mcp` 通过 stdio 通信,并暴露 `validate_bid_request`、`validate_bid_response` 和 `list_openrtb_versions`。
```json
{
"mcpServers": {
"rtblint": { "command": "rtblint-mcp" }
}
}
```
## Rust 库
```rust
use rtblint_core::{validate_bid_request_for_version, OpenRtbVersion};
let result = validate_bid_request_for_version(OpenRtbVersion::V2_6_202505, payload);
for issue in &result.issues {
println!("{} {} {:?}", issue.severity, issue.id, issue.path);
}
```
## 规格数据和出处
验证器运行在从 IAB Tech Lab OpenRTB 规格中提取的结构化目录上:对象名称、字段名称、类型表示、枚举值集和章节引用。目录不包含规格正文。rtblint 与 IAB Tech Lab 无关联,也不得到其认可。参见 NOTICE 了解归属信息。
## 许可证
Apache-2.0。参见 LICENSE 和 NOTICE。