A curated directory of Berlin event sources with validated Readability status and qurl ingestion commands. Full source details (URLs, RSS, API docs, language notes) are in references/sources.md.
qurl Ingestion
The standard ingestion command for any source:
bun run ${CLAUDE_PLUGIN_ROOT}/scripts/extract-content.js "<url>" \
| qurl add "<url>" --source berlin-events --tags <art|food>
After ingesting all sources, embed and search:
qurl embed
# Primary: `qurl search` (pure BM25, honors --source/--tag/--limit).
# Keep the query SHORT (3-5 words) — BM25 needs term overlap, so a
# verbose keyword-stuffed query returns "No results".
qurl search "Berlin art exhibition opening" --source berlin-events --limit 20
Choose the qurl command by behaviour (verified against qurl source):
qurl search— pure BM25 keyword (FTS5); exact terms, needs term overlap. Honors--source/--tag/--limit.qurl query— alias forsearch(identical, pure BM25). Not hybrid/rerank despite the name.qurl vsearch— pure vector/semantic; tolerates verbose queries, honors--limit, but ignores--source/--tag(whole DB) — grep hosts to filter.
For broad recall with a verbose query, use vsearch + a host grep:
qurl vsearch "$(date '+%B %Y') Berlin exhibition opening vernissage workshop event calendar art food" 2>&1 \
| grep -E -i 'indexberlin|kw-berlin|berlinischegalerie|artatberlin|co-berlin|kunstleben-berlin|berlin\.de|visitberlin'
Use
qurl, notqmd.qurlis the event-scrape DB.qmdis a separate notes search engine and holds no events — never substitute it here, despite shared subcommand names.
Priority Sources (confirmed working with Readability)
Ingest these first — they produce date-containing chunks that rank well in qurl query:
| URL | Tags | What the snippet contains |
|---|---|---|
| https://www.indexberlin.com/events/list/ | art | Day-of-week + date ("Monday, April 6") |
| https://www.kw-berlin.de/en/events | art | Dated listings ("Wed, 08.04.26, 16:00–18:00") |
| https://berlinischegalerie.de/programme/kalender/ | art | Month/year + German dates ("April 2026", "7.4.26") |
| https://www.artatberlin.com/en/calendar-for-vernissagen-exhibitions-events/ | art | "openings/vernissages" keyword |
| https://co-berlin.org/de/programm/kalender | art | "Ausstellungen", "Führungen", "Kalender" |
| https://kunstleben-berlin.de/events/ | art | "Veranstaltungen" (slow: ~60s) |
| https://www.berlin.de/en/events/ | food | Broad coverage; low date-signal but useful for food |
| https://www.visitberlin.de/en/event-calendar-berlin | food,art | City-wide calendar; featured articles in top chunk |
Relevance Keywords
A query result is relevant if its snippet contains any of:
- EN dates/events:
april,may,monday–sunday,vernissage,opening,exhibition,finissage - DE events:
ausstellung,veranstaltung,führung,kalender,programm - Date patterns:
2026,.04.26,.05.26
Sources to Avoid
| Source | Reason |
|---|---|
mitvergnuegen.com |
Cookie-consent wall — Readability returns only consent text |
berlinerfestspiele.de/gropius-bau |
JS-rendered — returns only venue address |
tip-berlin.de/event/ |
JS-rendered — extraction fails entirely |
Reference Files
references/sources.md— Full source directory with URLs, RSS, API docs, Readability status, and ingestion notes for each source