Changeset 013e16c in Klonkt for src/routes/admin-sites.js


Ignore:
Timestamp:
08/13/2026 01:09:24 PM (4 weeks ago)
Author:
Robin <roboburr@…>
Branches:
main
Children:
f50a84b
Parents:
f59a46c
git-author:
Robin <roboburr@…> (08/13/2026 01:01:18 PM)
git-committer:
Robin <roboburr@…> (08/13/2026 01:09:24 PM)
Message:

Naar SEO & social, want sameAs is schema.org (Robins vraag)

Hij vroeg of het niet onder SEO en social hoort, "omdat het ook een soort
koppeling is". Dat is het, en sterker dan dat: op die pagina staat een blok
"Uitgever (JSON-LD / rich results)", en sameAs IS een schema.org-eigenschap.
Zelfde vocabulaire, zelfde plek. Het paneel staat nu direct onder Uitgever.

DAARDOOR VOEDT EEN KOPPELING NU TWEE UITGANGEN. Naast schema:sameAs op de
fediverse-actor komt hij in de JSON-LD van de pagina zelf, in _publisher. Dat
is hetzelfde feit, verteld aan de andere lezer -- en het was gratis, want het
blok stond er al.

BETERE LABELS, want de oude waren geschreven voor het audioscherm. "Ben jij dit
in MusicBrainz?" werd "MusicBrainz (dezelfde artiest elders)" als legenda, met
een hint die zegt wat het OPLEVERT in plaats van alleen wat het is: je komt als
sameAs in de JSON-LD en in je fediverse-profiel, en er verandert niets bij
MusicBrainz zelf. Dat laatste is de geruststelling die er hoort te staan. Plus
een veldlabel ("Zoek jezelf op") met de toelichting "de naam waaronder je muziek
uitbrengt" -- want dat is de vraag, niet je sitenaam. Drie talen.

Het zoekveld begint nu op publisher_name en valt terug op de sitetitel: op deze
pagina heb je die naam net ingevuld.

Meeverhuisd: het endpoint (/admin/seo/api/musicbrainz) en het clientblok, in een
nieuwe mod/admin-seo.js. Die pagina had nog geen JavaScript; opzoeken vraagt er
wel om. Het profielscherm is weer helemaal schoon.

Co-Authored-By: Claude Opus 5 <noreply@…>

File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/routes/admin-sites.js

    rf59a46c r013e16c  
    2727import { mediaDir } from '../config/paths.js';
    2828import AP from '../services/ActivityPubService.js';
    29 import MusicBrainz from '../services/MusicBrainzService.js';
    3029
    3130
     
    323322
    324323// ==================== SAVE ====================
    325 /**
    326  * "Ben jij dit?" -- kandidaten uit MusicBrainz (shaer-mbz).
    327  *
    328  * De zoekopdracht draait HIER en niet in de browser: MusicBrainz staat een
    329  * verzoek per seconde toe per APPLICATIE, en dat is alleen af te dwingen als
    330  * alles langs een plek gaat. Bovendien eisen ze een User-Agent met contact, en
    331  * die kan een browser niet zetten.
    332  *
    333  * Wij kiezen NIET. Ook niet als er precies een treffer is: een verkeerd geraden
    334  * MBID zet jouw naam onder andermans werk.
    335  */
    336 router.get('/:slug/api/musicbrainz', requireSiteManagerBySlug, async (req, res) => {
    337   const site = db.prepare('SELECT title, mb_artist_id, mb_artist_name FROM sites WHERE slug = ?').get(req.params.slug);
    338   if (!site) return res.status(404).json({ error: 'no_site' });
    339   const q = String(req.query.q || site.title || '').trim();
    340   if (!q) return res.json({ ok: true, q: '', kandidaten: [] });
    341   res.json({ ok: true, q, kandidaten: await MusicBrainz.zoekArtiesten(q) });
    342 });
    343 
    344324router.post('/:slug/save', requireSiteManagerBySlug, async (req, res) => {
    345325  const site = db.prepare('SELECT id, ap_aliases FROM sites WHERE slug = ?').get(req.params.slug);
     
    366346  // accent: only accept colors from the curated ACCENTS list. Falls back to
    367347  // the orange default if the submitted value isn't recognised.
    368   // De MusicBrainz-koppeling (shaer-mbz). Alleen een echte MBID komt de kolom
    369   // in: zonder deze zeef sluipt er een hele URL of een handle in het veld dat
    370   // straks naar buiten gaat. Leeg is een geldige keuze -- dat is ontkoppelen.
    371   const mbRuw = String(f.mb_artist_id || '').trim().toLowerCase();
    372   const mbArtistId = MusicBrainz.isMbid(mbRuw) ? mbRuw : null;
    373 
    374348  const accent = ThemeService.validateAccent(f.accent) || '#e8b04b';
    375349
     
    381355      profile_links = ?,
    382356      ap_aliases = ?,
    383       mb_artist_id = ?, mb_artist_name = ?,
    384357      is_public = ?, robots_index = ?, require_login_to_comment = ?,
    385358      enable_audio_player = ?,
     
    401374    profileLinksJson,
    402375    apAliasesJson,
    403     mbArtistId,
    404     mbArtistId ? (String(f.mb_artist_name || '').trim().slice(0, 200) || null) : null,
    405376    f.is_public ? 1 : 0,
    406377    f.robots_index ? 1 : 0,
Note: See TracChangeset for help on using the changeset viewer.