Füge das Café aus der Tweet-URL in $ARGUMENTS zu data/cafes.json hinzu und erstelle einen PR.
Voraussetzungen: ein Klon von amalshaji/cafeblr (klone es, falls du dich nicht bereits in einem befindest), bun und eine authentifizierte gh-CLI.
1. Vom neuesten main starten
Ids müssen gegen die neuesten Daten berechnet werden, niemals gegen einen veralteten Stand:
git fetch origin && git checkout main && git pull
2. Tweet abrufen
Extrahiere die numerische Status-ID aus der URL (x.com/<nutzer>/status/<id> oder twitter.com/...), dann:
bun -e '
import { fetchTweet } from "./scripts/lib/tweet.ts";
const t = await fetchTweet("TWEET_ID");
console.log(JSON.stringify({
user: t?.user?.screen_name, likes: t?.favorite_count, text: t?.text,
media: t?.mediaDetails?.map(m => ({ type: m.type, url: m.media_url_https,
mp4: m.video_info?.variants?.filter(v => v.content_type === "video/mp4")
.sort((a, b) => (b.bitrate ?? 0) - (a.bitrate ?? 0))[0]?.url })),
}, null, 2));'
3. Schutzmaßnahmen – anhalten und den Benutzer informieren, falls eine fehlschlägt
- Tweet fehlt oder gelöscht (Adapter gibt null zurück).
- Kein Foto – jeder Eintrag benötigt ein Bild; ein reiner Text-Tweet kann nicht hinzugefügt werden. Wenn mehrere Tweet-Medien vorhanden sind, überprüfe sie und bevorzuge zuerst ein Essen-/Getränkefoto; falls keines Essen oder Getränke zeigt, verwende das beste verfügbare Tweet-Bild.
- Duplikat – die Quell-URL (oder dasselbe Café) ist bereits in
data/cafes.jsonvorhanden. - Quellenrichtlinie – der Autor muss eine echte Person sein, die einen Fund teilt. Lehne Marken-Konten, das eigene Konto des Cafés, Nachrichtenaggregatoren und Marketing-Handles ab.
4. Eintrag erstellen
name/area– aus dem Tweet-Text (📍-Zeilen sind üblich). Wenn der Name nicht im Tweet steht, überprüfe die eigenen Folgeantworten des Autors im Thread (Browser). Falls immer noch unbekannt, frage den Benutzer, anstatt zu raten. Area ist ein Stadtteil („Indiranagar“, „HSR Layout“), keine Adresse.knownFor– eine Zeile, die zusammenfasst, was der Beitrag selbst lobt. Erfinde niemals Eigenschaften, die der Tweet nicht erwähnt.image– überprüfe die Tweet-Medien und wähle zuerst ein Foto, das deutlich das Essen/Getränk zeigt. Wenn kein Medium Essen oder Getränke zeigt, verwende das beste verfügbare Tweet-Foto (oder das Poster des Videos).video– Best-Bitrate-MP4-URL, wenn das Medium ein Video ist, sonstnull.mapsUrl– Google-Maps-Link, wenn der Tweet/Thread einen enthält (überprüfeentities.urls[].expanded_url), sonstnull.googleRating– Google-Maps-Bewertung für den genauen Ort, falls verifiziert, sonstnull.source– kanonischehttps://x.com/<nutzer>/status/<id>.author–@<nutzer>.postedAt– derdatePublished-ISO-Zeitstempel der Tweet-Seite. Verwende die im Browser gerenderten X-Seiten-Metadaten, kein geschätztes Datum.likes–favorite_countaus dem Abruf.addedAt– heute,YYYY-MM-DD.id–max + 1über der Datei aus Schritt 1; Einträge bleiben in ID-Reihenfolge (Schema und Regeln:src/lib/schema.ts, README „Add a cafe“).
Füge an data/cafes.json an (2 Leerzeichen Einzug, Schlüsselreihenfolge wie bei vorhandenen Einträgen).
5. Validieren
bun run validate
BASE_REF=origin/main bun scripts/validate.ts # Live-Checks des neuen Eintrags
Beide müssen bestehen, bevor gepusht wird.
6. PR erstellen
git checkout -b add-cafe-<kebab-name>
git add data/cafes.json
git commit -m "data: add <Name> (<Area>)"
git push -u origin add-cafe-<kebab-name>
gh pr create --title "Add <Name> (<Area>)" --body "..."
PR-Text: Tabelle mit Café-Details (Name, Gegend, Quelllink, Likes) plus ein Fehlende Daten-Abschnitt,
der alles Unbekannte aufführt (normalerweise mapsUrl). Wenn mapsUrl null ist, hinterlasse auch einen
PR-Kommentar mit den fehlenden Maps-Links, damit ein Mensch sie ausfüllen kann. Keine KI/Assistenten-Zuschreibung
in Commits oder dem PR.
Beende mit der Meldung der PR-URL.