nostr-poster/README.md

144 lines
3.3 KiB
Markdown
Raw Normal View History

# 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
- [ ] Bot settings page with:
- [ ] 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
### Bot Interaction
- [ ] Develop basic bot feed:
- [ ] Display Comments
- [ ] Reply
### Validation
- [ ] Test NSEC key import
- [ ] Test manual posts:
- [ ] Text only
- [ ] Media upload
- [ ] 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:
```bash
git clone https://github.com/yourusername/nostr-poster.git
cd nostr-poster
```
2. Build the application:
```bash
make build
```
3. Run the application:
```bash
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
```yaml
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.