Tired of friends ignoring your music links because they use a different platform? Linkify converts music links between platforms so everyone can listen.
Built in Rust for performance and safety (after a quick Python PoC that worked but wasn’t production-grade).
Linkify is a friendly Discord bot written in Rust. Give it a track URL (Spotify, Deezer, etc.) and it replies with equivalent links on other platforms. No more platform wars — just music.
- Slash commands designed for speed and clarity
/convert <url>: Detects the platform, fetches track metadata (title, artist, album), and returns matching links on other platforms/ping: Quick health check
- Platforms support
- ✅ Spotify — fully supported
- 🚧 Deezer — nearing full support
- 🔜 YouTube Music — coming soon
- 🔜 SoundCloud — coming soon
- ⛔ Apple Music — not planned (requires a $99/year developer license)
Note: This version uses slash commands for conversions.
Development and production are containerized. The Makefile provides a smooth workflow.
-
Clone the repository and go to the bot folder
- Top-level repo contains both the bot and the web app. From the root,
cd Linkify-Bot.
- Top-level repo contains both the bot and the web app. From the root,
-
Configure environment variables
- Copy
.env.exampleto.env - Fill in your credentials (see “API Keys & Tokens Setup” below)
- Optional: set
GUILD_IDfor faster slash-command registration on a test server during development
- Copy
-
Start the dev container and build
make upbuilds the image and compiles the project inside Docker
-
Run the bot
make runto launch in release mode inside the dev container
-
Iterate quickly
make checkto runcargo checkmake shto open a shell inside the containermake downto stop and remove the dev containermake cleanto remove thetarget/folder
Production
make prodbuilds and runs Linkify with the production image
Create a .env file (based on .env.example, which is versioned) and fill the following variables:
- Discord Bot Token
- Create a bot in the Discord Developer Portal and copy the token
.env:DISCORD_TOKEN=your_discord_bot_token
- Spotify API Credentials
- Create an app in the Spotify Developer Dashboard
.env:SPOTIFY_CLIENT_ID=your_spotify_client_idSPOTIFY_CLIENT_SECRET=your_spotify_client_secret
- Deezer API
- No API key required for basic usage
- Docs: https://developers.deezer.com/api
- Faster command registration in development (optional)
- Set a test server ID so slash commands register instantly while developing
.env(optional):GUILD_ID=your_discord_guild_id
Tip: Never commit your personal .env. Only .env.example should be versioned to document required variables.
For best results, make sure the bot has:
- Read Messages / View Channels
- Send Messages
- Use Slash Commands (applications.commands)
- Embed Links (recommended)
Generate an invite link in the Discord Developer Portal with scopes bot and applications.commands and the minimal permissions above.
├── .env.example # Example configuration
├── .tools/ # Docker setup (dev/prod)
│ ├── Dockerfile.dev
│ ├── Dockerfile.prod
│ └── docker-compose-dev.yml
├── Cargo.toml # Rust dependencies
├── LICENSE # MIT license
├── Makefile # Dev & prod helper commands
├── README.md # Documentation
└── src/
├── commands/ # Bot commands
│ ├── convert.rs
│ ├── ping.rs
│ └── mod.rs
├── platforms/ # Platform connectors
│ ├── deezer.rs
│ ├── spotify.rs
│ ├── youtube_music.rs
│ ├── handler.rs
│ └── mod.rs
├── types.rs # Shared data structures
└── main.rs # Bot entry point
- Rust
- serenity + poise (Discord + slash commands)
- tokio (async runtime)
- reqwest, serde, dotenv
- Docker for dev/prod workflows
Want to improve Linkify or add support for new platforms? PRs are welcome! Feel free to open an issue first to discuss ideas.
This project is licensed under the MIT License.
🎵 Music is for everyone. Linkify makes sure of that.