Crate:indexflow-seo
indexflow-seo 是独立、高性能、零 panic 的 Rust 库,用于技术 SEO 质量门评估以及生成式引擎优化(GEO / AI 搜索 bot)HTML 检查。
它驱动 IndexFlow-core 内的预检质量门,也可独立用于自定义 Web 爬虫、静态站点生成器、测试套件和 CI/CD 流水线。
主要特性
- 零 Panic HTML 解析器:使用带字符边界限制的安全字符串切片(
safe_slice),避免多字节 Unicode 导致 panic。 - 不跟随重定向的 HTTP 探测器(
SeoProbeClient):直接暴露 3xx 状态,并使用 5 MiB 内存安全流式上限。 - RFC 3986 Canonical 规范化:支持相对、协议相对和查询排序 URL 等价性。
- GEO 与 AI 搜索 bot 审计:检测针对
GPTBot、ClaudeBot、PerplexityBot和Google-Extended的 robots 指令。 - 结构化数据提取:遍历 Schema.org JSON-LD 块,解析
@graph树和多类型实体。 - 单遍实体解码:解码 XML 预定义实体、HTML 命名实体以及数字/十六进制字符引用。
安装
将 indexflow-seo 添加到 Cargo.toml:
[dependencies]
indexflow-seo = { version = "0.1.0", path = "crates/indexflow-seo" }
Feature Flags
| Feature | Default | Description |
|---|---|---|
probe |
Enabled | 启用使用 reqwest 进行 HTTP 网络探测的 SeoProbeClient。 |
纯内存或 WebAssembly(WASM)环境可关闭网络依赖:
[dependencies]
indexflow-seo = { version = "0.1.0", default-features = false }
数据模型参考
1. SeoAuditResult
内存评估和实时网络探测共同产生的完整输出,包含网络层、核心技术 SEO 标签、索引与 canonical 指令、社交与移动元数据、GEO/AI 搜索数据以及决策结果和警告。
SeoAuditResult 上的辅助方法
result.schema_types() -> Vec<String>:按文档顺序返回所有 JSON-LD 块中提取的唯一 Schema.org@type字符串。result.hreflang_json() -> Option<String>:将 hreflang 向量序列化为 JSON 字符串。
2. AiBotDirectives
探测针对主要 AI 搜索爬虫的索引和训练限制,提供 any_blocked 与 blocked_names 方法。
3. OpenGraphMeta 与 TwitterCardMeta
分别表示 OpenGraph 和 Twitter Card 元数据模型。
公共 API 与代码示例
1. 内存评估(evaluate_html)
评估 HTML 字符串和可选 HTTP 响应头,无需网络请求。
2. 实时 URL 网络探测(SeoProbeClient)
探测实时 Web 端点。不跟随 301/302,并将其作为质量门失败返回。
3. Canonical URL 等价规范化(canonical_matches_page)
根据 RFC 3986 规范化规则验证 canonical URL 等价性。
4. 零 Panic 实体解码(decode_basic_entities)
单遍解码 XML 预定义实体、HTML 命名实体和数字引用。