Index: src/routes/embed.js
===================================================================
--- src/routes/embed.js	(revision 4c9c60bcdb47e6d3cc3b4b710bfb61477bb9f554)
+++ src/routes/embed.js	(revision 30271e652b4f48014f6853585c1628a8ee02f3c8)
@@ -45,9 +45,8 @@
         for (const m of post.content.matchAll(/\[\[album:([^\]]+)\]\]/g)) for (const r of db.prepare('SELECT id FROM audio_tracks WHERE site_id = ? AND album = ? ORDER BY position').all(site.id, m[1].trim())) add(r.id);
         for (const m of post.content.matchAll(/\[\[playlist:([A-Za-z0-9_-]+)\]\]/g)) for (const r of db.prepare('SELECT track_id FROM playlist_tracks WHERE playlist_id = ? ORDER BY position').all(m[1])) add(r.track_id);
-        if (ids.length) {
-          const byId = new Map(tracks.map((t) => [t.id, t]));
-          const scoped = ids.map((id) => byId.get(id)).filter(Boolean);
-          if (scoped.length) tracks = scoped;
-        }
+        // Strictly scope to this post's tracks — do NOT fall back to all-site
+        // tracks (that showed unrelated songs for a link-only-track post).
+        const byId = new Map(tracks.map((t) => [t.id, t]));
+        tracks = ids.map((id) => byId.get(id)).filter(Boolean);
       }
     } catch { /* fall back to the full site player */ }
