Sources

X (Twitter)

Ingest your X (formerly Twitter) data archive — your tweets, replies, and metadata.

The twitter source ingests the X data archive ZIP — the one X generates when you click "Download an archive of your data" in account settings. The slug stays twitter for backwards compatibility; the export itself is whatever X is currently calling itself.

Get the export

  1. Sign in at x.com.
  2. Settings and privacyYour accountDownload an archive of your data.
  3. Re-enter your password and request the archive.
  4. X emails when it's ready. This usually takes 24-48 hours and the link expires after a few days.
  5. Download the ZIP locally.

Register the export

bash
vault add-export \
  --source twitter \
  --path ~/Downloads/twitter-archive.zip \
  --account @myhandle

--account is your X handle (with or without the leading @ — both are normalized).

What gets ingested

ItemNotes
One tweet item per postkind=tweet, text body, ts, like / reply / retweet counts in metadata.
RepliesTweet IDs of in-reply-to and parent thread preserved.
Retweets / quotesOriginal tweet metadata preserved on the wrapping item.
MediaImage / video filenames are referenced as item_media; bytes live in staging/.
Profile snapshotsAccount metadata at time of export (bio, header, etc.) captured but not items.

Ingest it

bash
vault ingest --source twitter
vault
$ vault ingest --source twitter
Extracting twitter-archive.zip ...
Parsing tweets.js (12,401 tweets) ...
tweets: 12,401
with media: 1,820
Run 17 completed in 9.4s

Caveats

  • DMs may not be present. Whether direct messages are included in the archive has changed multiple times. The parser handles them when they're there and skips them when they're not.
  • No tweets from other accounts. The archive only contains your own posts and metadata about your interactions. Threads where you replied to someone don't include their original tweet text.
  • Media URLs. Some media in older archives points at expired pbs.twimg.com URLs. Local copies in staging/ are what's actually ingested.
  • Edit history for tweets isn't preserved beyond the latest text.
  • The schema X ships in the archive changes occasionally — open an issue with a sample if a recent export fails to parse.