Sign inSign up

nairdah/anchorr

By nairdah

•Updated 6 days ago

Discord bot for requesting media and notifications when they are added to your media server.

Image
Content management system
0

100K+

nairdah/anchorr repository overview

Anchorr logo-text

A helpful Discord bot for requesting media via Jellyseerr and receiving Jellyfin notifications for new content in your library.

Features⁠ • Quick Start⁠ • Configuration⁠ • Commands⁠ • Setup Guide⁠

⁠🌟 Features

  • 🔍 Media Search: Search for movies and TV shows with /search command - you can then request it later withtin the message embed
  • 📤 One-Click Requests: Directly request media to Jellyseerr with /request command
  • 📺 Smart TV Handling: Choose specific seasons when searching for TV series using /search, or request all the seasons at once with /request
  • 📬 Jellyfin Notifications: Automatic Discord notifications when new media is added to your library
  • 🎨 Rich Embeds: Beautiful, detailed embeds with:
    • Movie/TV show posters and backdrops
    • Director/Creator information
    • IMDb ratings and links
    • Runtime, genres, and synopsis
    • Quick action buttons (IMDb, Letterboxd, Watch Now)
  • 🔗 Autocomplete Support: Intelligent autocomplete for search queries
  • ⚙️ Web Dashboard: User-friendly web interface for configuration

⁠📋 Prerequisites

Before getting started, ensure you have:

  • ✅ A running Jellyfin server
  • ✅ A running Jellyseerr instance
  • ✅ A Discord account with a server where you have admin privileges
  • ✅ API keys from:
  • ✅ Node.js v18+ or Docker & Docker Compose

⁠🚀 Quick Start

⁠1️⃣ Clone and Install
git clone https://github.com/nairdahh/anchorr.git
cd anchorr
npm install
⁠2️⃣ Start the Application
node app.js

The web dashboard will be available at http://localhost:8282

⁠3️⃣ Configure via Web Dashboard
  1. Open http://localhost:8282 in your browser
  2. Fill in your Discord Bot credentials, API keys, and service URLs
  3. Click the test buttons to verify connections
  4. Start the bot using the dashboard button
⁠4️⃣ Invite Bot to Discord

Generate an OAuth2 URL in Discord Developer Portal⁠:

  • OAuth2 → URL Generator
  • Scopes: bot, applications.commands
  • Permissions: Send Messages, Embed Links
  • Copy generated URL and open in browser
⁠5️⃣ Configure Jellyfin Webhook

In Jellyfin Dashboard → Webhooks:

  1. Click + to add new webhook
  2. Enter URL: http://<bot-host>:<port>/jellyfin-webhook
  3. Example: http://192.168.1.100:8282/jellyfin-webhook
  4. Save and you're done! 🎉

⁠⚙️ Configuration

Configuration is managed through a web dashboard at http://localhost:8282/. However, you can also configure it programmatically.

⁠Configuration Variables
VariableDescriptionExample
DISCORD_TOKENYour bot's secret tokenMjU0...
BOT_IDBot's Application ID123456789...
GUILD_IDDiscord server ID987654321...
JELLYSEERR_URLJellyseerr API endpointhttp://localhost:5055/api/v1
JELLYSEERR_API_KEYYour Jellyseerr API keyabc123...
TMDB_API_KEYTMDB API keyxyz789...
OMDB_API_KEYOMDb API key (optional)abc123xyz...
JELLYFIN_BASE_URLPublic Jellyfin URLhttp://jellyfin.example.com
JELLYFIN_CHANNEL_IDDiscord channel for notifications123456789...
WEBHOOK_PORTPort for webhook listener8282
⁠🔄 Automatic Migration from .env

If you're upgrading from an older version with a .env file:

  • Simply run the new version
  • The app will automatically detect and migrate your .env variables to config.json
  • You can then safely delete the .env file

⁠💬 Commands

⁠/search <title>

Search for a movie or TV show and view detailed information.

  • Shows poster, backdrop, ratings, genres, and synopsis
  • Interactive buttons to request directly or view on IMDb/Letterboxd
  • For TV shows: Choose specific seasons to request
⁠/request <title>

Instantly request a movie or TV show (all seasons for TV).

  • Automatically sends to Jellyseerr
  • Shows confirmation with media details
⁠Autocomplete

Start typing in either command to see real-time suggestions with release year and the director/creator.

⁠🔔 Jellyfin Notifications

When new media is added to your Jellyfin library, the bot automatically posts to your configured Discord channel:

  • 🎬 Movies: Full details with IMDb and Letterboxd links
  • 📺 TV Shows: Series information with IMDb link and when available, a Letterboxed link
  • 🎞️ Episodes: Season and episode number with timestamps

Each notification includes:

  • High-quality poster
  • Runtime, rating, genres and synopysis
  • "Watch Now" button linking directly to Jellyfin
  • IMDb and Letterboxd quick links

⁠🐳 Docker Deployment

docker compose up -d --build
⁠Custom Docker Build
docker build -t anchorr .
docker run -p 8282:8282 \
  -e DISCORD_TOKEN=your_token \
  -e BOT_ID=your_bot_id \
  -e GUILD_ID=your_guild_id \
  anchorr

Note: For Docker, use host.docker.internal to reference services on the host machine.

⁠📸 Screenshots (a bit updated for now)

FeatureScreenshot
AutocompleteAutocomplete
Search ResultsSearch
Request ConfirmationRequest
Jellyfin NotificationNew Media

⁠🔧 Advanced Features

⁠Web Dashboard
  • ✅ Real-time bot status monitoring
  • ✅ One-click start/stop controls
  • ✅ Connection testing for Jellyseerr and Jellyfin
  • ✅ Configuration editing and persistence
  • ✅ Webhook URL display with copy-to-clipboard
  • ✅ Tab-based organization (Discord, Jellyseerr, TMDB, Jellyfin)
⁠API Endpoints (Internal)
  • GET /api/config - Fetch current configuration
  • POST /api/save-config - Save configuration changes
  • GET /api/status - Get bot status
  • POST /api/start-bot - Start the bot
  • POST /api/stop-bot - Stop the bot
  • POST /api/test-jellyseerr - Test Jellyseerr connection
  • POST /api/test-jellyfin - Test Jellyfin connection

⁠🤝 Contributing

Contributions are welcome! See CONTRIBUTING.md⁠ for guidelines.

⁠📄 License

This project is released under the Unlicense — it's public domain. Do anything you want with the code!

Tag summary

Content type

Image

Digest

sha256:706c34bd3…

Size

56.3 MB

Last updated

6 days ago

docker pull nairdah/anchorr