Nostr Poster

An automated content posting bot for Nostr networks. This tool allows you to schedule regular posting of images and videos to Nostr relays, supporting both NIP-94 and Blossom upload services.

Core Implementation

  • replace hex format

Essential Settings

  • Make enable button functional
  • Proper nostr Profile:
    • Bio
    • NIP-05
    • Username/display name
    • Zap address
    • PFP/banner upload
    • Posting interval controls
    • Content album selection

Content System

  • Create upload/organization page
  • Implement manual post interface:
    • Text
    • Media upload
    • Kind:20 posts

Bot Interaction

  • Develop basic bot feed:
    • Display Comments
    • Reply

Validation

  • Test NSEC key import
  • Test manual posts: -[x] Text only
    • blossom Media upload
    • NIP-94 uploads
  • Verify bot reply works

Features

  • Media Management: Upload content to either NIP-94/96 compatible servers or Blossom storage servers
  • Scheduled Posting: Configure posting intervals for automated content sharing
  • Multiple Bot Support: Manage multiple bot identities, each with their own keypair
  • Keypair Management: Create new keypairs or import existing ones
  • Relay Configuration: Configure which relays to publish to for each bot
  • Profile Management: Set up and publish bot profiles (name, bio, avatar, etc.)
  • Content Archiving: Posted content gets archived to avoid duplicate posts

Installation

Requirements

  • Go 1.18 or higher
  • SQLite 3

Building from Source

  1. Clone the repository:
git clone https://github.com/yourusername/nostr-poster.git
cd nostr-poster
  1. Build the application:
make build
  1. Run the application:
make run

Configuration

The application can be configured via a YAML file or environment variables. By default, the config file is located at /config.yaml.

Example Configuration

app_name: "Nostr Poster"
server_port: 8080
log_level: "info"

bot:
  keys_file: "./keys.json"
  content_dir: "./content"
  archive_dir: "./archive"
  default_interval: 60  # minutes

db:
  path: "./nostr-poster.db"

media:
  default_service: "nip94"
  nip94:
    server_url: "https://nostr.build/api/upload/nostr"
    require_auth: true
  blossom:
    server_url: "https://blossom.example.com"

relays:
  - url: "wss://relay.damus.io"
    read: true
    write: true
  - url: "wss://nostr.mutinywallet.com"
    read: true
    write: true
  - url: "wss://relay.nostr.band"
    read: true
    write: true

Usage

Set up a Bot

  1. Navigate to the web interface at http://localhost:8765
  2. Log in with your Nostr extension (NIP-07)
  3. Create a new bot by providing a name and optional keypair
  4. Configure the posting schedule, media upload service, and relays
  5. Add content to the bot's content directory
  6. Enable the bot to start automated posting

Manual Posting

You can also trigger a post manually through the web interface

NIPs Supported

  • NIP-01: Basic protocol flow
  • NIP-07: Browser extension authentication
  • NIP-55: Android signer application (soon TM)
  • NIP-94: File metadata
  • NIP-96: HTTP file storage
  • NIP-98: HTTP authentication

License

This project is licensed under the MIT License - see the LICENSE file for details.

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

Description
Nostr bot that posts sit to nostr
Readme 48 MiB
Languages
Go 57.6%
JavaScript 26.9%
HTML 11.8%
CSS 3%
Makefile 0.7%