Reading & Triage

Search

Search

birdclaw indexes every tweet and DM in SQLite FTS5. Search runs locally, returns instantly, and works offline.

#Search tweets

2 search tweets 0 1
3 search tweets 0 1 20 2

Every result includes a snippet of the matching FTS5 fragment plus author, timestamp, canonical URL, reply state, and (for live-synced rows) cache freshness.

#Date windows

4 search tweets 0 2020-01-01 1 2021-01-01 2 200 3

--since and --until accept ISO dates and snowflake-encoded tweet IDs.

#Quality filters

4 search tweets 0 1 2 500 3
  • --originals-only — exclude retweets and pure quote-tweet shells
  • --hide-low-quality — apply the heuristic low-signal filter (mass replies, generic praise patterns, pure emoji, link-only spam)

The same heuristic feeds the Inbox low-signal flag.

#Collection filters

3 search tweets 0 1 20 2
3 search tweets 0 1 20 2
5 search tweets 0 1 2 2024-01-01 3 50 4

--liked and --bookmarked work uniformly across archive imports and live syncs because both feed the same canonical tweets table plus a collection edge.

#Author filter

4 search tweets 0 1 @borderline_handle 2 20 3

--author accepts a handle, @handle, numeric Twitter user id, or local profile id.

#Full flag list

  • --author <handle-or-id>
  • --since <date> / --until <date>
  • --originals-only
  • --hide-low-quality
  • --liked / --bookmarked
  • --limit <n>
  • --json / --plain

#Search DMs

2 search dms 0 1
5 search dms 0 1 1000 2 120 3 influence 4

DM-specific filters layer follower-count and influence on top of FTS5:

  • --conversation <id>
  • --participant <handle-or-id>
  • --min-followers <n> / --max-followers <n>
  • --min-influence-score <n> / --max-influence-score <n>
  • --sort recent|influence
  • --replied / --unreplied
  • --since <date> / --until <date>
  • --limit <n>

Influence is a derived score that starts with follower count and combines verified status, prior interaction, and ratio signals. It is not authoritative — use it to bucket noisy inboxes, not to rank conversations you already care about.

#Snippets

FTS5 snippets are returned with <mark> boundaries pre-rendered for the web UI. The CLI prints them as plain text in human mode and as snippet/snippetHtml fields in --json mode.

#Performance

The FTS5 index is incremental. Sync and import runs update it as rows land. If the index ever drifts:

1 db vacuum 0

db vacuum reclaims space, recomputes FTS5 shadow tables, and reports before/after sizes. It's safe to run any time the database is not actively being written to.

#See also

  • Mentions — agent-friendly mention export with cached live modes
  • DMs — list/sync/triage flows
  • Inbox — heuristic + OpenAI ranked queue