Landing Page Audit Agent
本页说明 Landing Page Audit Agent 如何在只读委托下逐页审查自家和竞品 landing page 的 messaging、CTA、claims 合规性、链接有效性和转化要素,并输出带页面来源的审计报告。读完本页,你能理解这个场景需要哪些模块、权限边界如何收窄,以及品牌规范这类数据为什么应该放在规则库而不是 Memory。
适用场景
Marketing 团队需要在发布前检查 landing page 是否符合产品定位、品牌语气、合规要求和转化目标。页面数量多、改版频繁,人工逐页核对文案一致性、claims 措辞、链接有效性和转化要素既慢又容易遗漏;而把 CMS 预览权限直接交给不受控脚本,未发布内容就可能流向外部。
典型触发时机:
- 新 campaign 上线前,需要在一个工作日内完成全部落地页的发布前审计。
- 产品定位或定价更新后,需要排查所有存量页面上的过期 claims 和失效链接。
- 竞品改版后,需要对照自家页面核查 messaging 差异和转化要素缺口。
工程挑战
- 核对量大且漏检代价高:几十个页面 × 文案、claims、链接、转化要素四个维度,人工抽查必然有盲区,越界 claims 漏到线上就是合规事故。
- 证据难以组织:每条问题都需要"哪个页面、哪个版本、什么时间"的取证,散落的截图和链接无法支撑事后复核。
- 借权访问 CMS 预览过宽:借用编辑账号能看到全部 collection,还带着编辑和发布权限——审计任务只需要"读取待审页面"这一件事。
模块组合
| 模块 | 角色 | 说明 |
|---|---|---|
| GenAuth | 核心 | CMS 预览等授权页面的只读委托、撤销与审计链。 |
| Web Agent | 核心 | 受控会话逐页抽取 headline、CTA、claims 和链接状态,每页留截图与来源;竞品公开页可通过 WebSearch 补充。 |
| GUMem | 可选 | 仅保存审阅者确认的长期偏好(例如惯用的改写口吻)。品牌规范、禁用 claims 属于版本化规则,应放在你的规则库(policy store)里按版本注入,不属于 Memory。 |
权限与委托边界
Agent 本身不持有任何固有权限。每次审计任务的实际权限是三个集合的交集:用户真实权限 ∩ 本次显式委托范围 ∩ 企业批准边界。落到这个场景:
- 委托范围只覆盖"读取指定页面、CMS 预览和竞品对照页面",不包含编辑页面、发布内容或修改 CMS 配置。
- 委托凭证短时效,单次审计任务建议分钟级有效期,过期后需重新委托。
- 用户或管理员可随时撤销授权;撤销后新的页面读取请求立即失败。
- 越权尝试(例如访问委托清单外的 CMS collection)会被拒绝并留痕——审计链覆盖全部尝试,不只是成功行为。
注意:SDK 示例申请的是产品级 scope(如 webagent.do_anything:read)。域名清单、页面范围和动作白名单这类细粒度边界由 GenAuth 的 Agent Profile 或策略层配置强制执行,不由任务 prompt 承担;本页示例未展示该配置。完整语义见 Delegate Token 与缩权。
工作流程
用户提供待审计的 landing page 清单或 CMS 预览链接,并选择审查维度。
GenAuth 为本次任务签发最小权限的只读委托凭证。
应用从规则库读取当前版本的品牌规范、禁用 claims 和转化要素检查规则,注入任务描述。
Web Agent 逐页打开目标页面,抽取 headline、CTA、proof points 和 pricing claims,并对每页保留截图与来源 URL。
检查点:CMS 预览遇到登录墙、验证码或风控页时,Web Agent 应升级给人处理,而不是静默绕过。
Web Agent 核查页面内链接有效性和转化要素完整度;竞品公开页面按需对照抽取。
Agent 按页面聚合问题项:文案不一致、越界 claims、失效链接和转化要素缺失,每条附页面来源、截图证据和规则版本号。
Agent 输出审查清单、问题点、改写建议和来源列表,附 audit id;报告与截图归档到你的审计存储。
检查点:报告中每条问题都应能回溯到具体页面来源和截图;无来源支撑的结论不应进入交付物。
示例代码
下面的示例使用官方 Qoni SDK(@qoniai/qoni)把这个场景接到你的服务端:静默委托 → 从规则库读取品牌规范 → 一次 doAnything.run() 完成逐页审计与截图取证 → 解析并校验报告。
import { Qoni, QoniScopes } from '@qoniai/qoni'
const qoni = new Qoni({
accessKey: process.env.QONI_ACCESS_KEY!,
secretKey: process.env.QONI_SECRET_KEY!,
})
export async function auditLandingPages(userId: string, pages: string[]) {
// 1. 静默委托:公开页面和预先授权的 CMS 预览,不涉及交互式登录确认
const { data: grant } = await qoni.delegateToken({
user: { id: userId },
agent: 'landing-page-audit',
scopes: [QoniScopes.DO_ANYTHING_READ, QoniScopes.DO_ANYTHING_MANAGE],
})
// 2. 任务前:从你的规则库读取当前版本的品牌规范(不是 Memory)
const policy = await loadBrandPolicy() // 例如 { version: '2026-08', forbiddenClaims: [...], voice: ... }
// 3. 一次调用完成审计:逐页取证,只输出报告
const run = await qoni.doAnything.run({
token: grant.token,
prompt: `
Audit the following landing pages: ${pages.join(', ')}.
For each page, extract the headline, CTAs, proof points and pricing claims,
check link validity and conversion elements, and keep a screenshot and
the source URL as evidence for every finding.
Return findings as a JSON array of
{ page, issue, quote, ruleId, sourceUrl } objects.
Report only. Do not edit pages, publish content or change CMS settings,
and never send unreleased page content to external services.
Brand policy (version ${policy.version}):
${JSON.stringify(policy)}
`,
capture: { screenshots: true },
})
const result = await run.wait({
// CMS 预览遇到登录墙 / 验证码 / 风控页:升级给人处理
onInteraction: (interaction) => notifyUserActionRequired(interaction),
})
// 4. 应用侧解析并校验输出契约:无来源的问题项不进报告
const findings = parseFindings(result.output).filter(
(f) => f.sourceUrl && f.ruleId,
)
return {
findings,
artifacts: result.artifacts, // 截图与产物,归档到审计存储
policyVersion: policy.version,
audit: { auditId: grant.auditId, permissionBoundary: grant.grantedScopes },
}
}输出结构由任务描述约定:这里约定返回 { page, issue, quote, ruleId, sourceUrl } 数组,应用侧 parseFindings 负责解析与校验,任何缺少 sourceUrl 或 ruleId 的条目被直接丢弃。SDK 顶层只返回通用的 RunResult(runId、status、output、artifacts 等)。
数据与规则边界
这个场景涉及四类数据,只有最后一类属于 GUMem:
- 版本化规则:品牌规范、禁用 claims、转化要素清单——放在规则库(policy store)里按版本管理,审计报告引用规则版本号。
- 业务状态:审计报告、问题清单、页面截图——归档到你的审计存储,供复核与追溯。
- 审计记录:
grantId与auditId构成的委托与行为链——由 GenAuth 维护。 - 用户 Memory(可选):审阅者确认的长期偏好(例如改写建议的口吻偏好)——这才是 GUMem 的位置;单次审计默认不召回也不写回。
失败处理
| 情况 | 推荐处理 |
|---|---|
| CMS 预览登录态失效 | 任务挂起,通知用户重新登录,从断点继续。 |
| 页面结构变化导致抽取失败 | 按失败处理并回放会话记录,不输出无证据的问题项。 |
| 委托范围外的 CMS collection 请求 | 直接拒绝并记录,事后可在审计链中查到未遂访问。 |
| 输出条目缺少来源或规则编号 | 应用侧校验直接丢弃该条目,并在报告中标注丢弃数量。 |
生产注意点
不要把未发布页面内容发送到不受控的外部服务。改写建议需要保留原始页面来源。Agent 只输出报告与建议,不自动修改线上页面或 CMS 内容;任何页面改动都应由内容 owner 依据报告手工执行并复核。对竞品公开页面的抽取应遵守目标站点服务条款并限制频率。
下一步
- 阅读 快速开始 跑通 Agent 身份与委托的最短路径。
- 阅读 授权与浏览器沙盒 了解受控会话的安全边界。
- 继续查看 品牌一致性 Agent 了解相邻场景。