早上要出一页海外社媒简报,我以前会下意识先搭监听、再爬时间线、再接摘要。其实当天只需要两步:按关键词搜一页结构化帖,再把能写进简报的字段交给模型。2026-11-13 北京时间上午,我用公开关键词「Google Gemini」,在 SandBase 上当场跑通。
搜索这次花了 3070.0 ms,模型这次花了 3720.5 ms。从发出搜索到简报文本返回,墙上时钟是 08:15:57 到 08:16:39(Asia/Shanghai),大约 42 秒。标题里的「15 分钟」是我给自己留的出报时段,不是这次接口的秒表成绩。帖文互动会变,以下数字以当次响应为准。
这篇只写「搜索 + 模型」怎么跟做出一页简报。延迟对比我另写过《X 搜索 API vs 自己爬:Agent 决策延迟差在哪》,这里不再比爬虫首包;YouTube 字幕拆解也另有一篇,这次不用字幕,只吃 X 搜索字段。
1. 结论先放:简报链路就两步
| 步骤 | 当天怎么调 | 本次实测(Asia/Shanghai) | 目录价(2026-11-13) | 本次结算 |
|---|---|---|---|---|
| ① 搜索 | POST /v1/api/twitter/web/search-timeline,keyword=Google Gemini,search_type=Latest | 08:15:57–08:16:01,HTTP 200,3070.0 ms,outputs[0].data.timeline 共 17 条,data.status=ok | USD 0.001 / 次,free_quota_eligible=true,计入组织日 100 次免费 | 已结算;discount_type=free_quota,cost=0.000000 |
| ② 模型 | POST /v1/chat/completions,model=openai/gpt-4.1-nano | 08:16:35–08:16:39,HTTP 200,3720.5 ms,finish_reason=stop | 模型卡:输入 USD 0.10 / 百万 token,输出 USD 0.40 / 百万 token;官方 OG 卡一致,另写 Context 1M | 已结算;cost=USD 0.000715(4166 + 745 token),不计入日免费池 |
一句话: 同步搜索给结构化字段,同步模型出简报页。目录和 schema 可以先看,这两步都不计费。合格 Data API 走组织每天 100 次免费额度(UTC 00:00 重置);模型按 token 另算,失败不计费。
2. 先看目录和 schema,再决定搜哪条
统一 Data API 路由:
POST https://api.sandbase.ai/v1/api/{model}
Authorization: Bearer <SANDBASE_API_KEY>
Content-Type: application/json
我先读了当天的模型卡(GET /v1/models/twitter/web/search-timeline,08:14:28,HTTP 200,384.1 ms)。按 q=twitter 搜列表当天返回的是空数组 {"data":[],"object":"list"},用准确 id 取卡是成功的,后面我就不再靠列表检索。
twitter/web/search-timeline 是同步接口,supported_modes 只有 sync。输入 schema 里:
| 参数 | 类型 | 必填 | 当天说明 |
|---|---|---|---|
keyword | string | 是 | 搜索关键词;示例是 OpenAI |
search_type | string | 否 | 默认 Top;可选 Latest、Media、People、Lists |
cursor | string | 否 | 翻页;用上一次响应的 next_cursor |
业务结果在 outputs[0].data。目录页和模型卡 readme 都写了常用字段:timeline[].text、screen_name、created_at、favorites / retweets / replies / quotes / bookmarks、views(文档写明是 字符串)、tweet_id、user_info.followers_count。当天实测里,views 和 tweet_id 确实是字符串,favorites 等计数是整数,和文档一致。
同目录还有更贵的 twitter/search(模型卡 USD 0.014286 / 次,也计入日免费)。它的入参名是 searchType,枚举是 TOP / LATEST / MEDIA / PEOPLE / LISTS,和这条 web 端点的 search_type + 首字母大写写法不一样。我这次只跑 web 这条,为的是吃日免费池、少花一笔按次费用,没有做延迟对比。
模型这边我读了 openai/gpt-4.1-nano 的卡(08:14:56,HTTP 200):展示名「OpenAI: GPT-4.1 Nano」,free_quota_eligible=false,公式是 usage.prompt_tokens * 0.1 / 1000000 + usage.completion_tokens * 0.4 / 1000000。卡片描述写它保留 1M token 上下文,偏向低延迟、小任务;官方 OG 卡也写 Context 1M。模型卡上还有 cache_read_multiplier=0.25,但 price_formula 里没有缓存项——两处我并列记下,没有按乘数改算。本次 cached_tokens=0,结算和公式一致。
调用走 OpenAI 兼容的 Chat Completions:
POST https://api.sandbase.ai/v1/chat/completions
文档要求至少传 model 和 messages。同一把 SandBase Key 既能调 Data API,也能调模型;搜目录、读 schema 和价格不计费。
3. 第一步:搜一页 Latest 时间线
export SANDBASE_API_KEY="YOUR_API_KEY"
curl -sS -X POST "https://api.sandbase.ai/v1/api/twitter/web/search-timeline" \
-H "Authorization: Bearer $SANDBASE_API_KEY" \
-H "Content-Type: application/json" \
-d '{"keyword":"Google Gemini","search_type":"Latest"}'
完成态信封是 { id, status, model, outputs:[{data}] }。这次:
id:718b0828-67ae-4161-b1c7-4a7e9c95681astatus:completedmodel:twitter/web/search-timelineoutputs[0].data.status:ok- 有
next_cursor/prev_cursor(值很长,这里不展开) timeline:17 条,类型都是tweet
Latest 不是「只返回今天」。17 条里既有 11 月 13 日凌晨到早上的新帖,也有 11 月 10 日、11 日,甚至 11 月 6 日的帖。做「今早简报」时,下游还得按 created_at 自己切窗口。
下面把互动较高、或者后面模型容易写错出处的几条列出来。时间已换算成 Asia/Shanghai;views 按字段原值(字符串)转写。
| 账号 | 时间(Asia/Shanghai) | 粉丝 | 赞 / 转 / 浏览 | 帖文在讲什么(据 text 原句) |
|---|---|---|---|---|
@Google(官方,verified_type=Business) | 2026-11-13 02:09:08 | 31,897,855 | 4093 / 412 / 297,429 | 宣布 Gemini 4 Hydrogen:日常编码和 agentic work,四个 thinking levels,可与 Carbon、Argon 搭配,称比 3.8 Flash 快 2.5 倍 |
@AndroidAuth(Android Authority) | 2026-11-13 03:26:38 | 1,164,756 | 210 / 14 / 12,693 | 称 Google Search 正在全球上线 Gemini 4 Hydrogen |
@Marie_Haynes | 2026-11-13 02:26:12 | 103,724 | 30 / 9 / 3,226 | 转述「Search 迄今最大模型升级」,并讨论对网站点击的影响;这是第三方评论,不是官方正文 |
@WojakTheDev | 2026-11-12 15:53:08 | 4,992 | 35 / 2 / 4,106 | 帖文声称 Gemini Decision 1、单次最多 1000 题、免费档每天 10,000 次请求 |
@DynamicComputer | 2026-11-13 06:26:30 | 29 | 0 / 0 / 19 | 帖文声称 Gemini AI 眼镜开始预购,售价从 USD 395 起,12 月 10 日开卖 |
@poseidanai | 2026-11-13 07:24:04 | 337 | 0 / 0 / 13 | 帖文声称 Hydrogen 替换 3.8 Flash,Terminal-Bench 57% 对 18.2%,输入 USD 1.50 / 百万 token |
官方帖 tweet_id 为 2120941982004523367,原文如下(未改字):
Meet Gemini 4 Hydrogen.
It brings cutting-edge intelligence to everyone, with speed and efficiency for everyday coding and agentic work.
Across 4 thinking levels, it stands on its own or teams up with Carbon and Argon — 2.5X faster than 3.8 Flash, outpacing competing models in its class.
官方正文里没有 Terminal-Bench 分数,也没有输入单价,更没有眼镜预购。这些只出现在第三方帖。简报如果把它们写成「Google 宣布」,就越界了。
4. 第二步:只把简报字段丢给模型
我没有把整段 media、视频变体或头像 URL 塞进提示词。17 条帖只保留:tweet_id、screen_name、display_name、verified、followers_count、UTC 和 Asia/Shanghai 两份时间、favorites / retweets / replies / quotes / bookmarks / views、lang、has_media、text。
模型请求(密钥用环境变量,不要写进代码库):
curl -sS https://api.sandbase.ai/v1/chat/completions \
-H "Authorization: Bearer $SANDBASE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "openai/gpt-4.1-nano",
"temperature": 0.2,
"max_tokens": 1600,
"messages": [
{
"role": "system",
"content": "你是社媒简报编辑。只根据提供的 X 搜索字段写中文简报,不要编造数字和引语。第三方帖的价格与分数写成「帖文声称」。"
},
{
"role": "user",
"content": "(此处接 17 条字段的 JSON,以及固定输出结构:标题 / 3 到 5 条要点 / 官方与高互动帖 / 待核实 / 源账号短表)"
}
]
}'
这次响应:
- HTTP 200,08:16:35–08:16:39,3720.5 ms
id/x-task-id:3a46e57d-e2b9-421e-a07f-191dcea1527cmodel:openai/gpt-4.1-nanousage:prompt_tokens=4166,completion_tokens=745,total_tokens=4911,reasoning_tokens=0choices[0].finish_reason:stop- 正文约 1532 字
模型把高互动数字写对了:@Google 的 4093 / 412 / 297429,以及 @AndroidAuth 的 210 / 14 / 12693,粉丝数也对得上。标题写成了「Google Gemini最新动态简报(2026年11月13日)」。
它也明显越界了,我按字段对过,至少有这几处:
- 提示词要求「3 到 5 条要点」,它一次列了十多条,把一页简报写成了流水账。
- 把
@poseidanai帖里的 Terminal-Bench 57%、输入 USD 1.50 / 百万 token,写进「今日要点」,读起来像官方口径;官方@Google正文里没有这两句。 - 把眼镜预购、Decisions API 单价、免费档次数,也写成要点,来源其实是互动很低或非官方的帖。
- 有一句写成「Google在推特上展示 Gemini 4 Hydrogen 的多模态能力,包括图像、音频、视频和PDF处理」——官方氢帖没写这些模态;相近表述出现在
@WojakTheDev谈 Decision 1 的帖里。
所以第二步不是「模型一出字就交差」。两步够用,前提是简报页还要对照 timeline 字段改一改:官方归官方,第三方归「帖文声称」,数字对不上的删掉。
5. 这两步当天怎么结算
查任务成本用文档里的接口,结算完成前不要拿 cost 对账:
curl -sS "https://api.sandbase.ai/v1/tasks/{task_id}/cost" \
-H "Authorization: Bearer $SANDBASE_API_KEY"
| 任务 | 查询时间(Asia/Shanghai) | settled | 原价 | 实付 cost | 说明 |
|---|---|---|---|---|---|
搜索 718b0828-67ae-4161-b1c7-4a7e9c95681a | 08:16:35,HTTP 200 | true | USD 0.001000 | USD 0.000000 | discount_percent=100,discount_type=free_quota,free_quota_status=free |
模型 3a46e57d-e2b9-421e-a07f-191dcea1527c | 08:16:53,HTTP 200 | true | USD 0.000715 | USD 0.000715 | 无折扣;4166 * 0.10 / 1,000,000 + 745 * 0.40 / 1,000,000 = 0.0007146,四舍五入与结算一致 |
合格 Data API 每组织每天 100 次免费,UTC 00:00 重置,同一组织下所有 Key 共享;超出按目录价继续调用,不会因为额度用尽被拒绝;当天没用完不结转。LLM 不计入这 100 次。定价页还写:搜目录 / 读 schema 和价格、失败的模型或 API 调用,都不碰余额。我这次两次调用都是 HTTP 200,没有拿失败用例去做对照。
6. 这套两步适合什么,不适合什么
适合:早上用一个公开的海外关键词,迅速出一页「官方说了什么、哪些帖在扩散、哪些数字还只是第三方声称」的简报。X 搜索同步返回 JSON,模型同步返回文本,不必再轮询任务。
不适合:
- 把它当成延迟评测。要看 API 和自建爬虫谁先给出可排序字段,请看之前那篇延迟对比,本文没有重复实验。
- 把它当成竞品视频拆解。需要字幕和播放量,请走 YouTube 元数据 + 字幕那条链路,不是这次的搜索字段。
- 指望
Latest自动等于「今天」。本次 17 条里混进了更早的帖,窗口要自己切。 - 把模型第一稿直接发出去。这次它会把低互动第三方帖的分数和价格,写得像官方发布。
- 需要评论树、私密账号或官方投放数据。这是公开只读搜索,拿不到这些。
同一目录里还有 Instagram、YouTube、TikTok 的公开接口,若要做跨平台简报,可以按同样两步再接一条搜索,再共用一次模型归纳。那是下一页的事,我这次没有加第二条搜索。
字段会过期,价格以你当天读到的模型卡和已结算的 task cost 为准。密钥只放在服务端环境变量里,不要写进文章、截图或前端。