IF
IndexFlowing
/ Docs
🌐 English Docs GitHub ↗

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 命名实体和数字引用。