FeaturesTemplatesShowcaseTownie
AI
BlogDocsPricing
Log inSign up
project logo
nuckynotion-2-bluesky
auto-schedule bsky posts from notion base
Public
Like
1
notion-2-bluesky
Home
Code
6
lib
3
README.md
H
debug-env.ts
H
manual-test.ts
C
scheduler.ts
H
test.ts
Branches
1
Pull requests
Remixes
History
Environment variables
4
Val Town is a collaborative website to build and scale JavaScript apps.
Deploy APIs, crons, & store data โ€“ all from the browser, and deployed in miliseconds.
Sign up now
Code
/
README.md
Code
/
README.md
Search
5/26/2025
README.md

N2B Scheduler - Notion to Bluesky Auto Poster

An automated scheduler that reads posts from a Notion database and publishes them to Bluesky at scheduled times.

See it in action, https://bsky.app/profile/nucky.bsky.social

Features

  • ๐Ÿ“… Schedule Bluesky posts from Notion database
  • ๐Ÿค– Automatic posting via cron job (every 15 minutes)
  • ๐Ÿ“Š Status tracking (Draft โ†’ Scheduled โ†’ Posted)
  • ๐Ÿ”— Stores posted URLs back to Notion
  • ๐Ÿ“ธ Media support - Upload images with your posts (up to 4 images per post)

Setup

1. Notion Database Setup

Your database needs these fields:

  • Title (Title field) - Post title/identifier
  • Text (Rich Text field) - The post content
  • Scheduled Date (Date field with time) - When to post
  • Status (Select field) - Options: Draft, Scheduled, Posted
  • URL (URL field) - Stores the Bluesky post URL after posting
  • Media (Files & media field) - Upload images (JPG, PNG, GIF, WebP)

2. Environment Variables

Set these in your Val Town environment:

  • NOTION_TOKEN - Your Notion integration token
  • NOTION_DATABASE_ID - Your database ID
  • BLUESKY_HANDLE - Your Bluesky handle (e.g., user.bsky.social)
  • BLUESKY_APP_PASSWORD - Your Bluesky app password

3. Notion Integration Permissions

Make sure your Notion integration has access to:

  • Read content
  • Update content
  • Read database structure

Files

  • /scheduler.ts - Main cron job that checks and posts
  • /lib/notion.ts - Notion API integration
  • /lib/bluesky.ts - Bluesky posting functionality
  • /lib/types.ts - TypeScript interfaces

How It Works

  1. Cron job runs every 15 minutes
  2. Queries Notion for posts with status "Scheduled" and due date/time
  3. Posts to Bluesky
  4. Updates Notion record with "Posted" status and Bluesky URL

Usage

  1. Create a new row in your Notion database
  2. Set the Text field with your post content
  3. Optional: Upload images to the Media field (supports JPG, PNG, GIF, WebP)
  4. Set the Scheduled Date field with when you want it posted
  5. Set Status to "Scheduled"
  6. The cron job will automatically post it at the scheduled time
Go to top
X (Twitter)
Discord community
GitHub discussions
YouTube channel
Bluesky
Product
FeaturesPricing
Developers
DocsStatusAPI ExamplesNPM Package Examples
Explore
ShowcaseTemplatesNewest ValsTrending ValsNewsletter
Company
AboutBlogCareersBrandhi@val.town
Terms of usePrivacy policyAbuse contact
ยฉ 2025 Val Town, Inc.