用途:把 X(Twitter)推文作为社交证明加入 bklit 首页的推荐语网格。适用于用户提供一个或多个 https://x.com/.../status/... 链接,或要求新增、替换、调整推荐语顺序时。
主要能力:从推文状态 URL 抓取作者名、用户名、头像、认证状态与正文;将条目写入 apps/web/lib/testimonials.ts;支持按需优先排序或替换旧条目;头像经 twitterAvatarUrl() 升级为 400x400;正文会去掉开头的 @uixmat 并去除首尾空白,过长且带推广链接的推文可截短。
使用方式:在仓库根目录运行 node .agents/skills/add-x-tweet/scripts/fetch-tweet.mjs "推文URL",脚本输出 JSON。若脚本失败,可用 Twitter oEmbed 作为回退:curl -sL "https://publish.twitter.com/oembed?url=TWEET_URL&omit_script=1",解析 author_name 与 HTML 中的 <p> 文本,头像仍需 fxtwitter 或手动提供。随后编辑 testimonials.ts,用状态 id 作为 id,url 使用无查询参数的规范链接。排序方面,Masonry 使用 CSS 列,lg 下索引 0–2、3–5、6–8 分别为三列顶部三张;优先时放入 0–8 中下一个空位且不重复 id,替换时先按 handle 或旧 id 删除旧条目。首页折叠网格默认显示 testimonialCollapsedCount(6)张,除非用户要求否则无需改动。
验证:运行 cd apps/web && npx tsc --noEmit -p tsconfig.json,并打开首页确认三列网格、底部渐隐与 See more 展开正常。
数据来源:主要使用 FxTwitter API https://api.fxtwitter.com/{user}/status/{id},返回作者名、screen_name、avatar_url 与文本。不要提交 API 密钥,脚本仅在添加推文时使用公开端点。
限制:需要网络;脚本失败时回退方案无法直接获取头像;未提供收费、平台支持范围等更多信息。