AD
Boost Your Brand on BlueSky—Exclusive banner space to amplify your reach within the BlueSky community.
BSkyInfo LogoBskyInfo
All ToolsCategoriesCollectionsFeed DirectoryLabeler DirectoryArticlesGuidesGlossaryBluesky SDKsSponsor
Submit
All ToolsCategoriesCollectionsFeed DirectoryLabeler DirectoryGuidesGlossaryArticlesBluesky SDKsSponsorSubmit
  1. SDKs
  2. /JavaScript
  3. /skyline
louislva

skyline

A JavaScript SDK for Bluesky and AT Protocol by louislva

Bring your own algorithm for Bluesky ✨

GitHub Stats

115stars
7forks
4contributors
1open issues

Dates

Created:April 19, 2023
Last updated:June 7, 2025

README

The following content is from skyline's GitHub repository. All rights reserved by the original author.

Skyline

✨ Bring your own algorithm for Bluesky ✨

Skyline allows you to create your own AI algo-feeds (or use one of our pre-defined ones). Try it out here!

My goal with this project was to create a social media that makes you happy, not just optimizes engagement.

We have the following feeds:

  • One post from each person you follow (let's not forget the shy poasters) 🙈
  • Mutuals feed, to keep up with your friends 🤗
  • Wholesome-only, to remind yourself of the best in humanity ❤️‍🔥
  • What's Hot, but only in your preferred language 🌐
  • Make your own algorithm! Just tell the AI what you want to see and what you don't 🤖

The way custom algorithms work in Skyline is via LLM embeddings. You can write a positive prompt "I want to see more of...", and posts matching will be brought to the top, and a negative prompt "I want to see less of..." which decides which posts to push to the bottom.

Ultimately, my interest in bring-your-own algorithm comes down to encouraging more love & kindness in the world. And I found this had a bigger impact than I thought it would! You can try this for yourself: does browsing Wholesome put you in a lighter, better mood than browsing Following?

In the long-term, I imagine safe MDMA-analogs in our coffee and other wild transhumanist stuff as the way, but in the short-term I think we'll be going the memetic route! That means kinder algorithms, kinder chatbots, new secular "religions", etc.

Everyone knows "social media makes you angry" - but maybe the tech is finally here for "social media makes you kinder"?

Getting Started

This is a Next.js project bootstrapped with create-next-app.

First, run the development server:

npm run dev
# or
yarn dev
# or
pnpm dev

Open http://localhost:3000 with your browser to see the result.

To-do List

Here is the to-do list I use to track progress - feel free to contribute!

  • Project "Management"
    • Share timelines
    • Delete timelines
    • Edit timelines
  • Project "Smooth As Balls"
    • Handle Retweets
    • Cache threads to Local Storage
    • Log out when session over
    • Stay logged in across sessions
    • Full context for wholesome feed
      • getThreadQuickAndDirty() which will do it's best to recover the thread from (1) cache and (2) already-loaded posts
    • Refresh token usage for infinite sessions
    • Info about App Passwords in Login Page
  • Project "Better Feeds"
    • Language-specific What's Hot
    • Reddit-like scoring algo: recency * quality, with a minimum threshold to appear
    • Infinite feeds - query with the next cursor
    • Unify custom-timeline & built-in timeline concept
    • NSFW what's hot (https://staging.bsky.app/profile/emily.bsky.team/post/3jup7xawstc25)
    • Three new base-feeds:
      • "In network" - basically two-degrees of following instead of one (optimize this by requiring at least x% of people you follow to follow that other person; or only taking the top 200 or whatever it is; maybe at some entropy / randomness to give small accs a chance)
      • "Liked Posters" - your timeline + the 100 posters most liked by your follows (recently)
      • "Liked Posts" - your timeline + posts recently liked by your follows
    • Custom feed settings:
      • Base: What's Hot / Mutuals / Following
      • Sorting: Best / Combo / Recent
      • Show replies: Yes / No
      • Multiple prompts
      • Language filter: english / portuguese / japanese / farsi
      • Muted keywords
    • Automatic infinite feeds - when you're 6 posts away from bottom, load more
  • Project "Nice"
    • Sticky timeline selection
    • Dark mode
    • Auto-refresh feed
  • Project "Full Client"
    • Like tweets
    • Repost tweets
    • Post top level
    • Click and see profiles
    • Follow / unfollow people
    • Click and see threads
    • Links in Posts
    • Post replies
    • Quote post tweets
    • Notifications
    • List likes, reposts, quote posts (quote posts you can do by using the Bsky search endpoint & looking for the link; https://staging.bsky.app/profile/liz.rip/post/3jup5h3rucq2g)
    • Click images to see expanded
    • "Interactions" tab on profiles
    • Delete tweets
    • Own profile link + editing
  • Project "Performance Optimization"
    • Don't render out of view - it's lagging intensely on mobile
    • Much smaller images! (both in size & jpg compression)
    • Figure out anything else that's slow
  • Project "DMs"
    • DB-based DM system
    • Bot @skyline.gay account to notify users of new DMs
  • Project "Lists"
    • Ability to use custom list as the baseFeed for a timeline
    • Role Play: automatically create a new list from someone else's following (https://staging.bsky.app/profile/lka.bsky.social/post/3jumlzmjnf32u)
    • Own followers list
  • Project "Graysky Integration"
    • Expose timelines as an API
  • Project "Analytics"
    • Keep stats on logins, usage time, feed %, created timelines, etc.
  • Project "Social Audio"
    • Skyspaces.net (https://staging.bsky.app/profile/geeken.tv) integration
  • Project "Marketplace"
    • Get a notification when your timeline gets 20+ installs
    • Timeline Library: a place that lists shared timelines, which you can then install
    • Mute-list marketplace, globally applied
    • Sort marketplace items by whether someone you follow made it, or has it installed
  • Project "Fleets"
    • Custom fleets
    • Auto-post link to fleet
  • Project "Search" (We should have at least as advanced search as Twitter!)
    • Capture every tweet via Firehose (similar to https://github.com/ericvolp12/bsky-experiments) & put them in Postgres
    • Allow user to query by text, date published, and author
    • Register every post the user has seen & allow searching for only posts they've seen before
  • Project "Alt Text"
    • Generate Alt Text for every new post Skyline comes in contact with & save in the Database
    • Use GPT-4 to give people compliments about their photos
    • Automated "[compliment]. Alt-text: [alt text]" replies from @skyline.gay to every post it transcribes
    • Use alt-text in custom timeline embeddings, for much greater filtering abilities
  • Project "Autist Power Tools"
    • Digital Nomad: find everyone (in following, network, or similar) in X city
  • Project "Cache"
    • Cache every text:embedding pair (with no reference to the post itself)
  • Misc
    • "Posted from Skyline" flair
    • "Uses Skyline" flair
    • Private prompts feature (e.g. saved in DB, executed on backend, if you like it you can pay the creator to keep it after the trial)
    • Code-powered timelines (ran in a very restricted VM with a very restricted version of BskyAgent - read only, basically)
    • Github Link in Footer
    • Create a list of top developers who worked on Skyline (with their profile links) and put it in the sidebar
    • Created-on info on profiles: https://staging.bsky.app/profile/ansh.bsky.team/post/3juq55sdqpk2h
    • Minecraft Server (https://staging.bsky.app/profile/cam.fyi/post/3juwweycwa72h)

Bugs list

  • Installs don't seem to increment
  • Very slow on mobile
  • Load more (upwards at least) doesn't load replies / threads
  • Load more downwards takes your scroll with you
  • Images in Quote Tweets

Related SDKs

mary-extatcute

a collection of lightweight TypeScript packages for AT Protocol, the protocol powering Bluesky.

338•JavaScript
aliceisjustplayinglabeler-starter-kit-bsky

Use this repository to get started with your own Bluesky Labeler.

175•JavaScript
bluesky-socialfeed-generator

ATProto Feed Generator Starter Kit

1892•JavaScript
bluesky-socialatproto

AT Protocol Reference Implementation (TypeScript)

8648•JavaScript
skyware-jsfirehose

A dead simple client for subscribing to an ATProto Relay ("firehose").

38•JavaScript
skyware-jsjetstream

A fully typed client for the Bluesky Jetstream (https://github.com/bluesky-social/jetstream) service.

47•JavaScript

Resources

GitHub RepositoryProject Website

License

MIT

Author

louislva
louislva

Activity

Last commit: June 7, 2025
Commit frequency: Unknown

Our Sponsors

Your Brand Here!

50K+ engaged viewers every month

Limited spots available!

📧 Contact us via email🦋 Contact us on Bluesky
BSkyInfo LogoBskyInfo

The Most Comprehensive Bluesky Tools Directory

Stay updated with the latest Bluesky tools and ecosystem news 🦋

Bluesky butterfly logo
Quick LinksSubmit a ToolSponsorAboutLegal Information
ToolsFeed DirectoryLabeler DirectorySchedulingAnalyticsAll ToolsCategoriesCollectionsTags
ResourcesArticlesBluesky GuidesBluesky GlossaryBluesky SDKsBluesky ResourcesSkyRaffleMeida Coverage
Our ProductsRaffleBlueAiTeach ToolsLaiewAI affiliate listFirstoCoast Fire CalculatorAsphalt CalculatorDog Names World

This website may contain affiliate links

© 2025 BskyInfo. All rights reserved.