Index: src/routes/admin-playlists.js
===================================================================
--- src/routes/admin-playlists.js	(revision 34875673eb7989a5ab1986334ece32f689bab211)
+++ src/routes/admin-playlists.js	(revision a95dbfd965659d13d04dc86de36f589ceaab62ed)
@@ -88,5 +88,5 @@
   const tracks = db.prepare(`
     SELECT t.id, t.title, t.artist, t.duration, t.cover_url,
-           m.filename
+           t.link_spotify, t.link_youtube, t.link_soundcloud, m.filename
     FROM audio_tracks t
     LEFT JOIN media m ON m.id = t.media_id
@@ -103,5 +103,7 @@
       duration: t.duration || 0,
       cover: t.cover_url || '',
-      playable: !!t.filename,
+      // Insertable if it has a hosted file OR an external link — a link-only track ([[track:]])
+      // still renders its Spotify/YouTube card on the post, so it must not be disabled in the picker.
+      playable: !!t.filename || !!(t.link_spotify || t.link_youtube || t.link_soundcloud),
     })),
   });
