將 $ARGUMENTS 中推文網址的咖啡館新增到 data/cafes.json 並發起一個 PR。
需求:amalshaji/cafeblr 的複製(如果不在其中,請先複製)、bun、
和已驗證的 gh CLI。
1. 從最新的 main 分支開始
ID 必須根據最新的資料計算,絕不能使用過時的簽出:
git fetch origin && git checkout main && git pull
2. 擷取推文
從網址中提取數字狀態 ID(x.com/<user>/status/<id> 或 twitter.com/...),然後:
bun -e '
import { fetchTweet } from "./scripts/lib/tweet.ts";
const t = await fetchTweet("TWEET_ID");
console.log(JSON.stringify({
user: t?.user?.screen_name, likes: t?.favorite_count, text: t?.text,
media: t?.mediaDetails?.map(m => ({ type: m.type, url: m.media_url_https,
mp4: m.video_info?.variants?.filter(v => v.content_type === "video/mp4")
.sort((a, b) => (b.bitrate ?? 0) - (a.bitrate ?? 0))[0]?.url })),
}, null, 2));'
3. 防護措施──若任何檢查失敗,請停止並告知使用者
- 推文遺失或已刪除(適配器回傳 null)。
- 沒有照片──每個條目都需要一張圖片;純文字的推文無法新增。 當存在多個推文媒體項目時,請檢查它們,並優先選擇食物/飲料的照片; 如果沒有任何照片顯示食物或飲料,則使用可用的最佳推文圖片。
- 重複──來源網址(或相同的咖啡館)已存在於
data/cafes.json中。 - 來源政策──作者必須是真實分享其發現的人。拒絕品牌帳號、 咖啡館自己的帳號、新聞聚合器和行銷帳號。
4. 建立條目
name/area──從推文文字中取得(📍 行很常見)。如果名稱不在 推文中,請檢查作者自己在討論串中(瀏覽器)的後續回覆。如果仍然 未知,請詢問使用者,不要猜測。區域是街區名稱 ("Indiranagar"、"HSR Layout"),而不是地址。knownFor──用一句話改寫該貼文本人讚揚的內容。絕不捏造 推文未提及的品質。image──檢查推文媒體,並優先選擇清楚顯示 食物/飲料項目的照片。如果沒有媒體顯示食物或飲料,則使用可用的最佳 推文照片(或影片的海報)。video──如果媒體是影片,則為最佳碼率的 mp4 網址, 否則為null。mapsUrl──如果推文/討論串中包含 Google Maps 連結(檢查entities.urls[].expanded_url),則為該連結,否則為null。googleRating──如果經過驗證,則為該確切地點的 Google Maps 評分,否則為null。source──標準的https://x.com/<user>/status/<id>。author──@<user>。postedAt──推文頁面datePublished的 ISO 時間戳記。請使用瀏覽器渲染的 X 頁面中繼資料,而非猜測的日期。likes──來自擷取的favorite_count。addedAt──今天,YYYY-MM-DD。id──從步驟 1 的檔案中取max + 1;條目保持 ID 順序(結構描述和規則:src/lib/schema.ts,README "Add a cafe")。
附加到 data/cafes.json(2 空格縮排,鍵的順序與現有條目一致)。
5. 驗證
bun run validate
BASE_REF=origin/main bun scripts/validate.ts # 即時檢查新條目
兩項都必須通過才能推送。
6. 發起 PR
git checkout -b add-cafe-<kebab-name>
git add data/cafes.json
git commit -m "data: add <Name> (<Area>)"
git push -u origin add-cafe-<kebab-name>
gh pr create --title "Add <Name> (<Area>)" --body "..."
PR 主體:咖啡館詳細資訊表格(名稱、區域、來源連結、讚數)加上一個遺失資料
部分,列出任何未知的資訊(通常是 mapsUrl)。如果 mapsUrl 為 null,也請在 PR 中
留下留言,列出遺失的 Maps 連結,以便人類可以填寫它們。在提交或 PR 中不要有 AI/助手屬性。
最後回報 PR 網址。