跳转到主要内容

概览

Feed Generator 是运行在 Bluesky 上的“算法 feed”机制。你可以公开根据特定关键词或用户条件定制的 feed。使用 laravel-bluesky 可以在 Laravel 应用中轻松实现 Feed Generator。
官方教程: 创建自定义 feed
官方 starter kit: bluesky-social/feed-generator

注册 FeedGenerator 算法

最简单的用法是在 AppServiceProvider::boot() 中以闭包形式注册算法。
name 请使用 URL 安全的字符串。 算法的返回值是包含 cursorfeed 的数组。
包所需的所有路由都会自动注册。
  • http://localhost/xrpc/app.bsky.feed.getFeedSkeleton?feed=at://did:web:example.com/app.bsky.feed.generator/artisan
  • http://localhost/xrpc/app.bsky.feed.describeFeedGenerator
  • http://localhost/.well-known/did.json
  • Service DID 会根据当前 URL 自动生成(例如 did:web:example.com)。
你唯一需要决定的就是 FeedGenerator 的 name 和实现内容。

发布 feed(创建命令)

只在 Laravel 应用中实现 FeedGenerator 并不会将其发布到 Bluesky。需要创建并执行一个调用 publishFeedGenerator 的命令。
1

生成命令

2

实现命令

3

执行命令

成功后,你的 Bluesky 个人资料中的 feed 列表会新增一个链接。publishFeedGenerator 只是更新信息,可以多次执行。

创建多个 FeedGenerator

只要改变 name 并多次调用 register,就可以创建多个 feed。
在发布命令中同样多次调用 publishFeedGenerator

拆分算法为独立类

相比闭包,使用独立的类可以让代码更容易维护。你可以创建实现 FeedGeneratorAlgorithm 接口的 callable 类,并在 AppServiceProvider 中注册它。

认证

官方 starter kit 中的认证功能默认启用。要禁用它,只需向 validateAuthUsing 传入一个直接返回用户 DID 的闭包。
feed 会受到账号的 “语言设置” 影响。如果 FeedGenerator 已经能获取到帖子,但 Bluesky 上依然显示不出 feed,请检查账号的语言设置。

进阶用法

用 Artisan 命令和定时任务将帖子保存到数据库,让算法只需从 DB 读取,就可以在不调用 API 的情况下实现更快的 feed。
最后修改于 2026年7月18日