是岁初,Bluesky用户达四千万,异于Twitter者,其依开放协议——AT Protocol——运行,公数据本即公开,且设计上可由机器读取。无每月五千美元之企业API层级。无需律师方能解之速率限制。唯其有洁净REST API,任人可询。
吾欲刮取之。此乃吾建生产级角色之法,及吾所悟之道。
为何 Bluesky 易于抓取(合法地)
凡社交媒体抓取者,多与 Cloudflare、轮换代理及服务条款灰色地带争斗。Bluesky 则异是。AT 协议本为第三方客户端与数据访问而设。其公开 API 于 public.api.bsky.app 接受未认证之读取请求。无指纹识别,无验证码,无 DOM 解析。
唯憾者:检索之端(app.bsky.feed.searchPosts)今需凭免费之应用密码以验真。其他——作者之馈、文脉、画像——皆无需凭符而通。
吾所建之三式
吾欲一司事以应主B2B之用:
检索文——以字句及标签索之,兼限日期、语言、次第。用之bsky.social/xrpc/app.bsky.feed.searchPosts持令牌而行。
作者之馈 — 撷一或多号之文。无需认证。适于竞者察之或稽作者之文脉。
脉络 — 汲一帖之全议。API返嵌套之树;吾平之而深,得次第之文列。
惟一之患:API之径。
此灼我。吾以认证请求(附JWT)送至public.api.bsky.app。彼端乃Cloudflare所代理,若投以认证令牌,则返403——此端专供未认证之流。
其解:认证之呼往bsky.social,未认证之读往public.api.bsky.app。汝当向bsky.social认证,得JWT,继之唯以此JWT用之。bsky.social 调用
单一仓库部署之困
吾正构 Apify 行者之组合于 TypeScript 单一仓库,以 npm 工作空间。共享库 (@apify-actors/shared) 含 PPE 充电助手及错误类。本地,工作空间解析处理之甚洁。于 Apify 之构建服务器,无单一仓库——唯上传之行者文件夹而已。
其解:将共享源码复制入src/shared/ 每一角色之内,皆用相对导入。tsup 将其悉数束为一 dist/main.js。共通之码,存于库中一统之地;各角色自建时,皆烙其本己之复本于其中.
输出之式
每篇文皆返为平铺之 JSON 记录:
{
"url": "https://bsky.app/profile/user.bsky.social/post/3lhxxxxxxxxx",
"text": "Post content here",
"authorHandle": "user.bsky.social",
"authorDisplayName": "User Name",
"likeCount": 142,
"repostCount": 28,
"replyCount": 19,
"images": [{ "thumb": "...", "fullsize": "...", "alt": "..." }],
"externalEmbed": { "uri": "...", "title": "...", "description": "..." },
"createdAt": "2025-11-15T10:30:00.000Z"
}
可自Apify直接导出为JSON、CSV或Excel。可接Zapier或Make,实现无代码工作流。
该角色已启用
欲用而无须构建者:Apify Store之Bluesky Posts Scraper
PPE定价:每运行0.25美元,每帖0.003美元(3美元/1,000帖)。无需订阅。
AT 协议使 Bluesky 成为当下最洁净之数据源。若君之用例涉于舆情监测、品牌监察,或自高速成长之科技先锋群体中获取商机信号,则值纳入君之工具箱。












