Index: src/routes/posts.js
===================================================================
--- src/routes/posts.js	(revision c7ecaf9d21f6baddcb99a2593e829187df0baacc)
+++ src/routes/posts.js	(revision 9d3485567cfa5e63e210609b3bb7ec38ec905976)
@@ -695,6 +695,20 @@
 router.post('/news/like', requireSiteManager, async (req, res) => {
   const site = res.locals.site;
-  if (site) { try { await ActivityPubService.sendInteraction(site, 'like', (req.body.note || '').toString(), (req.body.author || '').toString()); } catch (e) { /* ignore */ } }
+  const note = (req.body.note || '').toString();
+  if (site && note) {
+    try { await ActivityPubService.sendInteraction(site, 'like', note, (req.body.author || '').toString()); } catch (e) { /* ignore */ }
+    ActivityPubService.markLiked(site.slug, note);
+  }
   res.redirect('/news?success=' + encodeURIComponent('Geliket ⭐'));
+});
+
+router.post('/news/unlike', requireSiteManager, async (req, res) => {
+  const site = res.locals.site;
+  const note = (req.body.note || '').toString();
+  if (site && note) {
+    try { await ActivityPubService.sendInteraction(site, 'unlike', note, (req.body.author || '').toString()); } catch (e) { /* ignore */ }
+    ActivityPubService.unmarkLiked(site.slug, note);
+  }
+  res.redirect('/news?success=' + encodeURIComponent('Like ingetrokken'));
 });
 
