grok reads your links so you don’t have to
Signal Sideband collects URLs shared in group chats and fetches OG metadata for previews. Problem: X/Twitter links return nothing useful behind their auth wall. The preview cards were blank.
the fix#
Grok (xAI) has native access to X/Twitter content, so it’s the right tool for summarizing those links. The preview worker now:
- Skips HTML scrape for
x.com/twitter.comdomains (pointless) - Sends the raw URL to Grok with sender context
- Gets back a one-sentence summary + 2-4 topic tags
- For non-Twitter links, uses the scraped OG metadata as context for better summaries
The prompt is simple — JSON response format, content-focused tags, include who shared it:
"Alice shared this link. Summarize the content at: https://x.com/..."
→ {"summary": "...", "tags": ["AI", "robotics"]}
Tags render as pills below each URL card. The summary shows as italic subtext when it differs from the OG description.
backfill#
Existing URLs get summarized automatically — the worker picks up 20 unsummarized URLs per tick (every 60s) and runs them through Grok. A few hundred links backfilled in under an hour.
contact resolution#
While wiring up “shared by” attribution, I realized contacts weren’t being auto-populated from incoming messages. Fixed that too — contacts now sync from signal-cli on startup and upsert from every incoming message envelope. Aliases take priority over profile names everywhere.