Contrails is an ATProto Feed Generator backed by Cloudflare Workers and Bluesky Search.
Contrails is an ATProto Feed Generator backed by Cloudflare Workers and Bluesky Search.
Fork or copy the repository and edit CONFIG.md
to define your feed generator.
Deploy right from GitHub Actions to Cloudflare Workers.
The current release is 0.2.5.
BLUESKY_HANDLE
CLOUDFLARE_ACCOUNT_ID
CLOUDFLARE_WORKER_NAME
BLUESKY_APP_PASSWORD
CLOUDFLARE_API_TOKEN
BLUESKY_HANDLE
profile, e.g. https://bsky.app/profile/jcsalterego.bsky.social and then the Feeds tabThe longer (and incomplete) instructions can be found in INSTALL.md.
The first step before any major upgrade is to make a copy of your markdown config file. Your best bet is to save it in a separate directory such as backup_configs/
, or you will have to remember to set isEnabled
to false so it doesn't get picked up as a live config!
In the event you'd like to pull in the latest changes into a fork of Contrails, GitHub has great documentation here: GitHub Docs: Syncing a fork
denyList
support. #13"blue sky"
work again. This will require case-insensitive matches, e.g. blue sky
, Blue Sky
or BLUE SKY
.+reposts
and +replies
support. Note: Reposts will not be attributed ("reposted by User").Ed. Note: Bluesky Search is now called Palomar.
flowchart LR
subgraph Bluesky
PDS["PDS"]
end
subgraph GitHub
subgraph MD_Config["CONFIG.md"]
searchTerms
end
subgraph CloudflareDeploy["Cloudflare Deploy"]
Worker_JS
CloudflareApiToken("CLOUDFLARE_API_TOKEN")
CloudflareAccountID("CLOUDFLARE_ACCOUNT_ID")
CloudflareWorkerName("CLOUDFLARE_WORKER_NAME")
end
subgraph BlueskyDeploy["Bluesky Deploy"]
PublishFeedGenerator
BlueskyHandle("BLUESKY_HANDLE")
BlueskyAppPassword("BLUESKY_APP_PASSWORD")
end
MD_Config --> Worker_JS["worker.js"]
MD_Config --> PublishFeedGenerator["publishFeedGenerator.ts"]
end
subgraph "Cloudflare Worker"
CloudflareWorker[worker.js]
end
CloudflareDeploy -->|Deploy to Cloudflare| CloudflareWorker
BlueskyDeploy -->|Publish Feed Generator| PDS
sequenceDiagram
actor CoffeeTeaLover
participant Bluesky
participant Cloudflare as Cloudflare Worker
participant Bluesky Search
CoffeeTeaLover->>+Bluesky: get Coffee&Tea custom feed
Bluesky->>+Cloudflare: get Coffee&Tea custom feed
Cloudflare->>+Bluesky Search: search "coffee" and "tea"
Bluesky Search->>+Cloudflare: posts matching "coffee" and "tea"
Cloudflare->>+Bluesky: IDs of posts matching "coffee" and "tea"
Bluesky->>+CoffeeTeaLover: posts for Coffee&Tea custom feed
a collection of lightweight TypeScript packages for AT Protocol, the protocol powering Bluesky.
Use this repository to get started with your own Bluesky Labeler.
ATProto Feed Generator Starter Kit
AT Protocol Reference Implementation (TypeScript)
A dead simple client for subscribing to an ATProto Relay ("firehose").
A fully typed client for the Bluesky Jetstream (https://github.com/bluesky-social/jetstream) service.
Your Brand Here!
50K+ engaged viewers every month
Limited spots available!
📧 Contact us via email🦋 Contact us on Bluesky