Monorepo for Aesthetic.Computer aesthetic.computer
core at PAINTING-SHARING.md
4.3 kB

Painting Sharing Tools #

Automated tools for sharing aesthetic.computer paintings to Bluesky with proper attribution and image embedding.

Tools #

1. share-latest-painting.mjs #

Share a specific user's latest painting to Bluesky.

Usage:

# Preview the painting first (saves to preview-painting.png)
node share-latest-painting.mjs @jeffrey --preview

# Post to Bluesky with default message
node share-latest-painting.mjs @jeffrey

# Post with custom message
node share-latest-painting.mjs @jeffrey --message "Amazing artwork! 🎨"

Features:

  • ✅ Fetches latest painting from user's gallery
  • ✅ Downloads and uploads image as Bluesky blob
  • ✅ Includes proper AC URL: https://prompt.ac/@handle/painting/{slug}
  • ✅ Preview mode for testing
  • ✅ Custom message support

2. bulk-share-paintings.mjs #

Bulk share multiple paintings from the TV feed to Bluesky.

Usage:

# Post 10 paintings with default 2s delay
node bulk-share-paintings.mjs 10

# Post 20 paintings with 3s delay between each
node bulk-share-paintings.mjs 20 --delay 3000

# Post 5 paintings quickly (1s delay)
node bulk-share-paintings.mjs 5 --delay 1000

Features:

  • ✅ Posts multiple paintings in one run
  • ✅ Configurable delay between posts
  • ✅ Full summary report (success/failure counts)
  • ✅ Proper error handling
  • ✅ Reusable login session

Post Format #

All posts follow this format:

New painting by @{handle} 🎨✨

https://prompt.ac/@{handle}/painting/{slug}

[embedded image]

Example Output #

$ node bulk-share-paintings.mjs 10

🚀 Bulk Share Paintings to Bluesky

   Count: 10
   Delay: 2000ms between posts

🔐 Logging in as @aesthetic.computer...
✅ Logged in successfully

📡 Fetching 20 paintings from TV feed...
✅ Found 20 paintings with handles

[1/10] 🎨 Posting painting by @fifi
    Slug: 2025.10.09.09.51.18.882
    URL: https://prompt.ac/@fifi/painting/2025.10.09.09.51.18.882
    ✅ Downloaded 29692 bytes
    ✅ Uploaded to Bluesky
    ✅ Posted! https://bsky.app/profile/aesthetic.computer/post/3m2rrdqdk722z
    ⏳ Waiting 2000ms...

...

✨ Summary

✅ Successful: 10
❌ Failed: 0
📊 Total: 10

🔗 Posted paintings:
   1. @fifi - https://bsky.app/profile/aesthetic.computer/post/3m2rrdqdk722z
   2. @mangoghoul - https://bsky.app/profile/aesthetic.computer/post/3m2rrdsz2bb2u
   ...

Configuration #

Uses credentials from .env:

BSKY_SERVICE=https://bsky.social
BSKY_IDENTIFIER=aesthetic.computer
BSKY_APP_PASSWORD=your-app-password

API Integration #

Data Flow #

  1. Fetch → Query AC's TV API or media-collection API
  2. Download → Fetch PNG from aesthetic.computer CDN
  3. Upload → Upload as blob to Bluesky PDS
  4. Post → Create post with embedded image and AC URL

TV API #

GET https://aesthetic.computer/api/tv?limit=500

Returns recent paintings with metadata:

  • Owner handle and user ID
  • Painting slug and timestamp
  • Media URL

Media Collection API #

GET https://aesthetic.computer/media-collection?for={handle}/painting

Returns all paintings for a specific user.

Test Results #

Date: October 9, 2025
Test: Bulk posted 10 paintings

Results:

  • ✅ 10/10 successful
  • ⏱️ ~20 seconds total (2s delay between)
  • 🎨 Paintings from @fifi and @mangoghoul
  • 📊 Total data uploaded: ~380KB

Sample Posts:

Future Enhancements #

Notes #

  • Images are stored in Bluesky as blobs (permanent storage)
  • Original paintings remain on AC's CDN
  • Posts include clickable AC URLs for traffic back to platform
  • Rate limiting: 2-3 second delay recommended between posts
  • Bluesky has a 300 character limit for post text
  • Image alt text is auto-generated with handle attribution