“凭链接公开”不应等于“可被搜索”:AI 分享功能的创始人可见性契约
一套面向 AI 分享链接的上线门槛,覆盖受众、搜索发现、敏感内容审查、撤销、缓存移除与验证证据。
本周,部分 Claude 分享页面出现在 Google 和 Bing 的搜索结果中。现有证据并不表明,Claude 默认私密的聊天被人从 Anthropic 内部数据库中抽取,也不表明有人靠猜测随机找到分享链接。受影响的内容已经通过公开链接变得可访问,其中一些链接随后又进入了搜索引擎。真正值得产品团队重视的是:很多用户把“知道链接的人都能看”理解成发给客户、同事或朋友的小范围交付,而不是授权产品创建一份任何人都可能搜到的公开出版物。
只要 AI 应用允许用户分享对话、报告、Agent 运行记录、原型、仪表盘、录音或生成文档,这个认知落差就是产品设计问题。一个足够难猜的 URL 可以降低偶然发现的概率,但它仍是一种持有即有权访问的凭证:收到的人可以打开、转发、贴到公开网页,或让其他系统接触到它。被搜索收录只是放大路径之一。
因此,对非技术创始人和小团队来说,上线问题不是“我们有没有分享按钮”,而是:在用户创建链接之前,产品是否已经讲清并落实了预期受众、发现路径、包含内容、有效期、撤销边界和验证证据?
本文给出四种可见性状态、一份可复用的可见性契约、分享界面设计、一个虚构的用户研究场景、五项上线测试、一份事故移除收据,以及凭链接公开适用与不适用的边界。本文不声称每一个被索引的 Claude 页面都包含真实信息,不假设所有搜索引擎行为一致,也不会把 noindex 说成敏感内容的隐私保护。
Claude 索引事件证明了什么,又没有证明什么
Anthropic 官方的聊天分享说明写明,聊天默认保持私密。用户创建分享快照后,任何拿到链接的人都可以看到分享前的所有消息,包括 Artifacts;分享后新增的消息默认仍然私密,除非用户先取消分享,再重新分享以更新快照。Free、Pro 和 Max 用户可以在隐私设置中查看并撤销已分享聊天;Team 和 Enterprise 的聊天分享仅限组织内部。
这份产品说明明确了访问规则,却没有回答另一个独立问题:一个从未收到链接的人,为什么可能找到它?
WIRED 在 7 月 27 日的调查发现,部分 Claude 分享聊天出现在 Google 和 Bing 中。WIRED 抽查的页面没有页面级noindex 标记;报道还指出,Anthropic 的 robots.txt 至少从 2025 年 9 月起就禁止抓取分享聊天路径。报道发布时,一些结果已从 Google 消失,但 Bing 的站内搜索仍可返回相关页面。
Axios 也独立发现了被索引的 Claude Artifacts,其中包含商业和规划材料,但 Axios 无法核实这些内容的真实性。Anthropic 向 Axios 表示,公司没有向搜索引擎提供聊天目录或 sitemap;链接本身不可猜测,只有当用户把链接贴到论坛、社交平台等搜索引擎可以看到的地方后,才会变得可发现。
因此,目前可以支持的结论是:
- 一些由用户创建、凭公开链接访问的内容变得可搜索。
- 页面即使不在发布方的 sitemap 中,也可能被发现。
- 用
robots.txt阻止抓取,与要求搜索引擎不要把可访问页面放入索引,是两种不同控制。 - 用户即使主动创建了分享链接,也可能误解链接会传播到多大范围。
用四种可见性状态,替代一个“公开”开关
分享链接的问题通常始于数据模型,而不是警告文案。isPublic 这样的单一布尔值,会把几种完全不同的用户意图压进同一个状态。
建议明确保存四种状态:
| 状态 | 谁能打开 | 如何发现 | 合适场景 |
|---|---|---|---|
| 私密 | 所有者与明确获权的工作区成员 | 账户导航和内部搜索 | 含客户上下文的 Agent 草稿 |
| 受限 | 指定人员、组织成员或已登录的受邀者 | 邀请、账户或工作区 | 由已知参与者完成的客户审阅 |
| 凭链接公开 | 任何持有 capability URL 的人 | 直接转发;产品不应主动让它进入索引 | 发给 5 位测试者的临时演示 |
| 正式发布 | 任何人 | 可以启用搜索、个人主页、作品集、sitemap、嵌入或推广 | 公开模板或教学型 Artifact |
“凭链接公开”有时也叫 unlisted sharing,即“不列出但可访问”。这个名称描述的是发现难度,不是保密承诺。链接可能通过收件人、公开论坛、浏览历史、截图、分析系统、referrer、预览机器人或集成服务泄露出去。它比被公开列出的页面更难发现,但并不等于通过登录完成访问控制。
“公开”和“被公开放大”也不是文字游戏。Google 研究人员的论文 Public vs. Publicized指出,在某些情境中,人们不会预期一份技术上公开的内容被传播到最初披露语境之外。产品文案应该正视这种心理模型,而不是假设用户已经理解 Web 的发现机制。
在分享界面、分享页面、所有者的内容列表和审计记录中,都要显示状态名称。如果后端只保存“public”,再好的微文案也无法还原用户当时丢失的意图。
先理解 capability URL 能保护什么、不能保护什么
Capability URL 是一种“持有 URL 即获得资源访问权”的链接。路径中的不可猜 token 类似 bearer credential,即持有者凭证。它的优势是收件人不需要注册账户也能打开资源;它的边界也同样清楚:访问权就在链接本身。W3C 的 Capability URL 良好实践建议使用 HTTPS,在适当场景设置到期时间和撤销能力,采用不可猜标识符,避免 referrer 泄露,并向用户解释收件人能做什么。它还要求产品团队考虑,基于账户的访问是否更合适。不可猜标识符可以减少枚举,却不能阻止合法收件人继续转发,也不能阻止第三方系统保存 URL。
需要把以下控制分开理解:
- Token 熵降低猜测和枚举的风险。
- 身份认证证明访问者是谁或具有什么身份。
- 授权检查这个访问者是否可以访问这项资源。
- 有效期限制链接未来还能使用多久。
- 撤销阻止服务端继续接受链接。
noindex请求配合的搜索引擎不收录页面。- 移除请求用于加速清理已经进入索引的 URL。
- 数据最小化在其他控制全部失效时限制损害。
在画分享弹窗之前,先写可见性契约
这次上线需要的可复用 artifact 是一份可见性契约。每一种可分享对象都要单独填写,因为公开的提示词快照和带持久化存储的交互应用,并不具有同样的风险。
| 契约字段 | 创始人需要做的决定 | 要保留的证据 |
|---|---|---|
| 对象 | 聊天、报告、Agent 运行、文件、Artifact、录音、仪表盘或应用 | 产品对象 ID 与版本 |
| 预期受众 | 指定人员、组织、任何持有链接的人或公众 | 所选可见性状态 |
| 发现方式 | 仅直接链接、内部目录、个人主页、作品集、搜索或嵌入 | 机器可读标志与 UI 选择 |
| 包含内容 | 具体消息、文件、输出、元数据、状态、附件和评论 | 分享前预览或清单 |
| 敏感内容规则 | 禁止的数据类别与强制审查项 | 扫描结果和用户确认 |
| 查看者能力 | 查看、下载、复制、改编、运行、评论或写入共享状态 | 权限集合 |
| 有效期 | 单次、固定到期、由所有者管理或永久发布 | 创建与到期时间 |
| 撤销 | 谁能撤销、什么会立即停止、什么可能继续存在 | 撤销责任人与响应行为 |
| 外部残留 | 搜索索引、收件人副本、嵌入、预览和存档 | 明白易懂的警告 |
| 验证 | 证明所选状态被正确执行的测试 | 上线收据与监控记录 |
契约把产品承诺和实现细节分开。创始人可以先写清楚:“研究报告凭链接公开 7 天;只包含渲染后的答案和引用;不包含上传的访谈原文;查看者可以阅读和下载,但不能写入;页面带 noindex;所有者可以撤销;撤销后返回 410;产品提醒用户收件人可能复制内容。”
工程团队再把这段话映射为数据库字段、中间件、响应 header、存储、界面、日志和测试。如果团队无法用普通语言填完契约,就还不应该生成公开 URL。
把分享瞬间设计成一次发布决定
最后一次点击应该总结后果,而不是把后果藏在泛泛的确认弹窗里。
一个有效的分享面板至少包含六部分:
- 明确状态名称。 使用“受限”“知道链接的人都可访问”或“发布到 Web”。三种状态不要共用同一个按钮词。
- 用一句话说明受众。 对凭链接公开可写:“任何收到此链接的人都能查看和转发这个快照,不需要登录。”
- 预览准确 payload。 显示将包含的对话轮次、生成文件、Artifact 版本、作者身份、评论、数据源标签和交互存储行为,并允许用户移除内容。
- 单独说明发现方式。 明确产品是否会把页面加入个人主页、目录、作品集、sitemap、推荐位或可被搜索的发布 feed。
- 选择期限与能力。 在适用场景提供到期时间,并区分查看、下载、改编、执行、评论和共享写入。
- 诚实解释撤销。 例如:“撤销会停止本服务中的链接访问,但无法删除已被下载、导入、截图、嵌入、索引或存档的副本。”
W3C 的隐私原则也支持这种设计:相关解释应当在发生决定的语境中,用通俗语言呈现;撤回应该与授权同样容易;服务应考虑受众规范和用户预期;一个人选择分享涉及他人的数据,并不意味着其他人也同意。
创建任何公开 URL 前,先设内容边界
AI 对话是一种特别复杂的分享对象:同一屏幕可能同时混合用户提示词、模型输出、检索文档、工具结果、文件名、客户姓名、隐藏指令和生成代码。“没有附上原文件”并不等于对话没有泄露从文件中提取的信息。
分享前检查应给出三种结果:
- 阻断: 凭证、认证链接、私钥、支付信息、原始健康记录、儿童数据、受保护的法律材料、未公开漏洞,或产品无权披露的内容。
- 要求复核: 客户姓名、雇佣材料、合同、未公开战略、源码、位置、私人联系方式、截图、检索片段,或涉及其他人的内容。
- 预览后允许: 合成示例、公开文档、明确用于公开的模板、脱敏演示,或所有者有权发布的材料。
如果输出是交互式 AI 内容,还要检查行为:
- Artifact 打开后是否会调用外部服务?
- 是否可能暴露提示词或嵌入配置?
- 是否使用共享持久化存储?
- 一个查看者能否看到另一个查看者写入的数据?
- 收件人能否触发需要付费的模型或工具调用?
- 查看者上传的数据会不会被其他人看到?
把搜索控制当作纵深防御,而不是隐私
如果页面的意图是“凭链接公开但不希望被搜索”,可以发送页面级指令:
HTTP/1.1 200 OK
X-Robots-Tag: noindex, nofollow
Cache-Control: private, no-store
Referrer-Policy: no-referrer
HTML 页面也可以在 中设置 。PDF 等非 HTML 输出则应使用 HTTP header。
Google 官方的 [noindex 文档](https://developers.google.com/search/docs/crawling-indexing/block-indexing)明确说明,抓取器必须能读取页面,才能看到 meta 标签或 X-Robots-Tag。如果 robots.txt 阻止了 URL,Google 可能永远看不到 noindex,但仍可能根据其他网页中的链接显示这个 URL。因此有一个反直觉的实现要求:对凭链接公开的 HTML 页面,不要只依赖 robots.txt,而要测试搜索抓取器实际得到的响应。
上面的每个 header 只解决一个有限问题。noindex 面向配合的搜索索引;nofollow 减少跟随链接的信号,却不会保护页面;no-store 要求配合的缓存不要保存响应,却不能删除收件人的副本;no-referrer 减少用户点击外链时泄露 capability URL 的风险,却不能阻止主动转发。
这些控制都不会让敏感内容变成私密内容。Google 的搜索内容控制指南指出,机密内容应该通过密码保护。对更高风险的对象,应先要求身份认证和授权,再把这些 header 作为第二层保护。
具体场景:分享用户研究综合报告
设想一家三人创业团队用 AI app builder 做了一个用户研究助手。它导入访谈文字稿,把反对意见归类,再生成一份视觉化总结供产品顾问查看。创始人点击“分享”,复制链接,通过私信发给顾问。
生成页面没有附上原始录音,却包含受访者原话、名字、雇主、价格异议和模型生成的“流失风险”表。URL 不可猜,个人主页也没有列出它;但页面没有到期时间、没有 noindex,分享前也没有清楚预览。后来,顾问为了给社区提问提供上下文,把链接贴进公开讨论串。搜索抓取器发现讨论串,并把报告收进索引。
这不是攻击者猜中 token 的故事。每个人都做了在自己心理模型中看似合理的事:
- 创始人以为自己在“发给顾问”。
- 产品实际创建的是“永久匿名 bearer link”。
- 顾问认为这是一条“可以引用的链接”。
- 搜索引擎看到的是“公开网页上链接到的可访问页面”。
noindex,不加载第三方脚本,撤销后返回 410 Gone。分享页面展示“受限研究快照,请勿转载”和到期时间。
如果团队要做公开案例文章,产品应该创建另一种对象:匿名化结论、获得同意的引语、无权访问原始访谈、具有发布标题和 canonical URL,并明确选择允许搜索发现。同一个源工作区可以支持两种结果,但不能让它们共用同一个状态或按钮。
用五项上线测试检验产品承诺
不要因为分享页面截图正常就批准上线。使用合成内容和第二个测试账户,对完整可见性契约进行端到端测试。
1. 受众测试
为每种支持的状态创建对象。验证未登录用户、未授权用户、受邀用户、组织成员和所有者各自能做什么。移除角色后再次尝试访问。把对象 ID 改动一个字符,检查是否存在枚举。确认查看者能力与契约一致。
2. Payload 测试
创建一段包含合成附件、工具结果、隐藏指令、标识符、评论和后续消息的对话,然后分享。逐项对照预览、渲染页面和网络响应。确认更新的是哪个版本、附件能否下载,以及后续消息是否仍被排除。
3. 发现测试
用抓取器视角检查 HTML 和 header。确认每一种凭链接公开的格式都有 noindex,只有明确发布的页面不带它;确认标记没有藏在搜索抓取器看不到的认证墙或客户端代码之后。检查链接没有进入 sitemap、公开个人主页、作品集、feed、分析仪表盘、错误信息或社交预览元数据,除非用户选择了正式发布。
4. 泄露测试
打开页面,检查第三方请求、嵌入、预览生成、外链、referrer 行为、日志、客服工具和分析系统。分享 token 不应以 query 参数或事件属性发送。还要确认查看者不能让一个 tenant 的数据出现在另一个 tenant 的页面。
5. 撤销测试
撤销链接。确认源站立即返回 404 或 410,嵌入停止加载,旧查看会话不能继续访问,对象也从所有者的有效分享列表中消失。然后重新创建链接,确认 token 已更换。记录不能消除的边界:已下载、导入、截图或被独立存档的副本可能继续存在。
只有当实现行为与展示给用户的文字一致时,门槛才算通过。只有 noindex 而没有 payload 预览,或者界面有到期选择但服务端不执行,都不是通过。
链接失控后,用事故移除收据完成处置
撤销是第一步,不是完整响应。使用一份简短的事故收据,证明内容范围和已完成的移除动作。
| 收据字段 | 记录内容 |
|---|---|
| 分享对象与所有者 | 对象 ID、所有者、工作区、可见性状态 |
| 暴露窗口 | 创建、首次外部发现和撤销时间 |
| 包含数据 | 消息、文件、标识符、生成结论和查看者能力 |
| 发现证据 | 搜索结果、公开帖子、referrer、举报或未知 |
| 源站控制 | 链接已撤销、对象已删除或限制、token 已轮换 |
| 搜索响应 | 检查的引擎、移除请求、状态和复查日期 |
| 外部副本 | 已知或未知的嵌入、下载、导入、存档与截图 |
| 通知 | 受影响人员、客户沟通、隐私/安全/法律升级 |
| 产品修正 | 已改变的 header、默认值、文案、扫描、有效期、日志或测试 |
Google 的移除文档说明,Search Console 的临时移除约持续 6 个月。要永久防止重新出现,还需要移除或更新内容、加密码,或提供 noindex;文档也提醒,noindex 不能阻止直接访问,也不能约束不支持它的搜索引擎。其他搜索引擎必须分别检查。
如果内容包含凭证,应立即撤销凭证;如果包含个人或客户数据,要通知相应的隐私、安全、法律和客户责任人。在源站访问尚未关闭、重要搜索结果尚未复查、已知下游副本尚未处理或明确记录为未解决之前,不要把事故描述成“已控制”。
避免六种最常见的误读
“URL 不可猜,所以是私密的。” 不可猜解决的是枚举问题。每个收件人和中间系统仍然可能泄露这份凭证。 “我们在robots.txt 禁止抓取,所以不可能被索引。” Google 明确区分抓取与索引,并且需要抓取页面才能看到 noindex。必须测试真实响应和移除流程。
“noindex 就是访问控制。” 它只是向支持该指令的搜索引擎发出请求,不能认证查看者、阻止直接访问或删除副本。
“用户点击了分享,所以任何传播都在预期内。” 点击只能证明动作发生,不代表用户理解了受众、搜索、持久性、改编或第三方副本。界面必须表达这些后果。
“撤销会在所有地方删除内容。” 撤销可以关闭源 URL,却无法触及截图、下载、导入、收件人副本或所有存档。
“所以应该取消所有公开链接。” 对低风险演示、客服复现、公开示例和外部审阅,凭链接分享仍然有价值。答案是为对象选择成比例的状态,而不是要求所有内容都登录,也不是把所有内容都正式发布。
知道凭链接分享适合哪里、不适合哪里
当内容敏感度低、收件人不应被强制注册、所有者理解转发风险、payload 已最小化,并且到期或撤销能够限制暴露时,凭链接公开可以是合理选择。
当对象包含客户数据、内部战略、源码、身份、健康、财务、雇佣、儿童、法律、安全或受监管材料;查看者身份会影响决策;页面允许执行动作或共享写入;或者访问必须落实到个人审计时,应优先使用受限且经过认证的分享。
当“被发现”本身就是目标时,应选择正式发布,例如公开模板、作品集、教学示例、文档、个人作品或社区资源。正式发布应有独立预览、内容政策、审核路径、canonical URL、元数据、搜索控制、作者选择和可持续的删除流程。
有些产品根本不应分享 AI 对话。可以导出脱敏答案、带签名的报告、静态图片或新建的清洁对象。如果真正的价值是结果,而不是完整推理路径,那么缩小分享对象通常会得到更清楚、更安全的产品。
这套框架不能替代合格的隐私、安全、法律、无障碍、儿童安全、雇佣、健康、金融或监管审查。正确控制取决于数据、受众、司法辖区、产品承诺和暴露后果。
创始人的 48 小时检查清单
今天- 盘点所有可以创建链接的对象。
- 把每种对象分配到私密、受限、凭链接公开或正式发布。
- 暂停任何受众或 payload 尚不明确对象的分享。
- 增加 payload 预览和通俗的受众说明。
- 确认所有者能够列出并撤销每一条有效链接。
- 为每种可分享对象填写可见性契约。
- 为凭链接公开的响应增加
noindex以及合适的缓存和 referrer 控制。 - 在使用场景允许时增加到期和 token 轮换。
- 运行受众、payload、发现、泄露和撤销五项测试。
- 建立事故移除收据,并指定责任人。
- 对敏感内容或需要确认身份的分享强制认证。
- 确认只有正式发布对象能被产品主动放入搜索发现路径。
- 使用第二个 tenant、未登录浏览器和真实生产环境 header 完成测试。
- 产品变更后复查旧链接,不要假设新默认值会自动更新已有对象。
- 每当产品增加附件、工具、持久化存储、嵌入、改编或查看者动作时,重新运行门槛。
参考资料
- Anthropic:分享与取消分享聊天
- Anthropic:发布与分享 Artifacts
- WIRED:Claude 私密聊天出现在 Google 和 Bing 搜索结果中
- Axios:Google 正在索引公开的 Claude Artifacts
- [Google Search Central:使用
noindex阻止搜索索引](https://developers.google.com/search/docs/crawling-indexing/block-indexing) - Google Search Central:从 Google 移除网站信息
- Google Search Central:控制与 Google 搜索分享的内容
- W3C:Capability URL 良好实践
- W3C:隐私原则
- OWASP:授权检查清单
- Google Research:Public vs. Publicized——内容使用趋势与隐私预期