Index: src/routes/audio.js
===================================================================
--- src/routes/audio.js	(revision d5495493691e5642bb7df668ba1fd87506fdd369)
+++ src/routes/audio.js	(revision 8f6225cbfb7a439454829f7dec26b0891f4163f0)
@@ -141,3 +141,20 @@
 });
 
+// Welke post bevat deze track? (voor de mini-speler → "spring naar de post +
+// scroll naar de track".) Pakt de nieuwste gepubliceerde post met [[track:<id>]].
+router.get('/track/:id/post', (req, res) => {
+  const id = String(req.params.id || '');
+  if (!/^[A-Za-z0-9_-]+$/.test(id)) return res.status(400).json({ error: 'bad id' });
+  const isHub = res.locals.tenancy === 'hub';
+  const row = db.prepare(`
+    SELECT p.slug, s.slug AS site_slug
+    FROM posts p JOIN sites s ON s.id = p.site_id
+    WHERE p.status = 'published' AND p.content LIKE ?
+    ORDER BY p.published_at DESC LIMIT 1
+  `).get('%[[track:' + id + ']]%');
+  if (!row) return res.status(404).json({ error: 'not found' });
+  const url = isHub ? `/user/${row.site_slug}/${row.slug}` : `/${row.slug}`;
+  res.json({ url });
+});
+
 export default router;
