490 字
2 分鐘

Astro 網站怎麼放 poppy.json?Poppy 1.0 探索路徑與網域驗收

本文目錄

在 Astro 靜態網站加上 Poppy 探索檔時,把 poppy.json 放在 public/.well-known/。部署後,從讀者實際使用的網域存取 /.well-known/poppy.json,檢查最終回應的主機名稱和檔案宣告一致。Sierra 在 2026 年 11 月 13 日公布 Poppy 1.0,規格頁目前標示 Draft 1.0。Sierra 公告 · Poppy 1.0 規格

先宣告網站可供未登入瀏覽#

把以下範例存成 public/.well-known/poppy.json,並替換站名與主機名稱。這個例子只宣告網站入口。依規格,未提供 browser_session_endpoint 時,代理以一般未登入訪客的方式瀏覽。

{
"protocol_version": "1.0",
"organization": {
"name": "Example Notes",
"domain": "example.com"
},
"web": {}
}

在專案根目錄建置後,若沿用 Astro 預設輸出目錄,檢查 dist/.well-known/poppy.json 是否存在。部署平台若另有靜態資產目錄或通用 fallback 規則,還需要確認正式網址真的回傳該 JSON。路徑存在和 HTTP 200 都可能與首頁 fallback 同時出現,因此要解析回應本文。Astro 的 public 目錄

用對外入口驗收重新導向#

以下命令需要 curl 與 jq。把 entry 換成待驗證的 HTTPS 網域。若使用 www 和裸網域,兩個入口各測一次。

Terminal window
(
set -eu
entry=https://www.example.com
body=$(mktemp)
trap 'rm -f "$body"' EXIT
final=$(curl -fsSL --max-redirs 5 --proto '=https' --proto-redir '=https' \
-o "$body" -w '%{url_effective}' "$entry/.well-known/poppy.json")
printf '%s\n' "$final"
[[ "$final" =~ ^https://([a-zA-Z0-9.-]+)/[.]well-known/poppy[.]json$ ]]
domain=${BASH_REMATCH[1]}
jq -e --arg domain "$domain" '
.protocol_version == "1.0"
and .organization.domain == $domain
and (.organization.name | type == "string" and length > 0)
and (.web | type == "object")
' "$body"
)

這份檢查用於一般 HTTPS 網域與上述靜態範例。最終網址要使用規格指定的路徑且沒有 query。若 www.example.com 轉到 example.com,JSON 的 organization.domain 應為 example.com。若另有登入或操作需求,再依規格選擇 Company Agent 或 API,並為帳號存取設計 OAuth 與 scopes。Sierra 公告列出 Muse 已支援探索。這裡驗收的是網站回應,Muse 端的實際互動可另行驗證。Muse 的使用者端設定

參考資料:

Personal Agent Protocol:Draft 1.0

Sierra:Releasing Personal Agent Protocol 1.0

Astro:Project structure

Astro 網站怎麼放 poppy.json?Poppy 1.0 探索路徑與網域驗收
https://laplusda.com/posts/poppy-json-astro-setup/
作者
Zero
發佈於
2026-11-14
許可協議
CC BY-NC-SA 4.0