A custom Bluesky feed that shows:
- Posts with #crafted-with-cursor hashtag
- Posts from people on your curated list
- Your own posts
Clone or download this project to your computer.
npm install- Go to Bluesky Settings > App Passwords
- Click "Add App Password"
- Name it "Feed Generator" and create it
- Copy the password (you won't see it again!)
Copy .env.example to .env and fill in your details:
cp .env.example .envEdit .env:
BLUESKY_HANDLE=gndclouds.earth
BLUESKY_PASSWORD=xxxx-xxxx-xxxx-xxxx # Your app password
HOSTNAME=your-project-name.vercel.app # We'll get this in step 6
Option A: Via GitHub (Recommended)
- Push this code to a GitHub repository
- Go to vercel.com and sign in
- Click "Add New Project"
- Import your GitHub repo
- Add these environment variables in Vercel (all three are required for the feed to work):
BLUESKY_HANDLE: your handle (e.g. gndclouds.earth)BLUESKY_PASSWORD: your app password (from step 3)HOSTNAME: (leave blank for now)
- Deploy!
- After deploy, copy your Vercel URL (e.g.,
crafted-with-cursor-feed.vercel.app) - Go back to Vercel settings and set
HOSTNAMEto your URL (without https://) - Redeploy
Option B: Via Vercel CLI
npm i -g vercel
vercel login
vercelOnce deployed, update your .env with the correct HOSTNAME, then run:
npm run publish-feedThis registers your feed on Bluesky. You'll see output like:
✅ Feed published successfully!
📋 Feed Details:
URL: https://bsky.app/profile/gndclouds.earth/feed/crafted-with-cursor
Your feed is now live at: https://bsky.app/profile/gndclouds.earth/feed/crafted-with-cursor
Pin it to your profile or share it with others!
In src/index.ts, edit:
const HASHTAG = 'crafted-with-cursor'; // Change to your hashtagIn src/index.ts, edit:
const YOUR_LIST_URI = 'at://did:plc:xxx/app.bsky.graph.list/xxx';In scripts/publishFeedGen.ts, edit:
const FEED_RECORD_NAME = 'crafted-with-cursor';
const FEED_DISPLAY_NAME = 'Crafted with Cursor';
const FEED_DESCRIPTION = 'Your description here';Feed shows no posts:
- Check that your Vercel deployment is running (visit the URL)
- Make sure the hashtag exists in some posts
- Check Vercel logs for errors
Can't publish feed:
- Make sure you're using an App Password, not your main password
- Check that HOSTNAME matches your Vercel URL exactly
"Internal Server Error" or "403 Forbidden" when opening the feed on Bluesky:
- The feed server must be authenticated to call Bluesky's API (getList, searchPosts). In Vercel, set
BLUESKY_HANDLEandBLUESKY_PASSWORD(your app password) in Project Settings → Environment Variables, then redeploy.
Need help? Open an issue or reach out to @gndclouds.earth on Bluesky