Skip to main content

Generate digests for daily arXiv feeds.

Project description

tldrXiv
a morning coffee companion

PyPI Python License Dependencies

Reading 30-60 abstracts a day can be tiring! So why not have your computer work for it while you're sipping your morning coffee?

tldrXiv is a free terminal utility that fetches today's arXiv feeds and provides you with a summary related to your research interests, drawing connections, and highlighting interesting articles. Here it is!

tldrxiv demo

Install

pipx install tldrxiv

pipx is for CLI tools and will build it in its own environment, but standard pip install tldrxiv works too.

From Source
git clone https://github.com/PanosEconomou/tldrxiv
cd tldrxiv
pipx install .

it requires python >= 3.11 but it has no other dependencies.

Quickstart

export TLDRXIV_LLM_KEY="your-key"   # from aistudio.google.com/apikey (it's free!)
tldrxiv config                      # Tell it your research and (if you want) LLM API Key
tldrxiv                             # That's it!

That's it! The first run fetches today's arxiv feed and queries the LLM for a digest. Subsequent runs just load it from cache unless told otherwise.

Usage

tldrxiv                    # today's digest
tldrxiv yesterday          # yesterday's, from your archive
tldrxiv 2026-07-14         # a specific day
tldrxiv -3                 # three days ago
tldrxiv yyy                # three days ago
tldrxiv --force            # regenerate today from a fresh feed
tldrxiv config             # open the config file in $EDITOR

Any configuration variable can be overriden by an argument. For example:

tldrxiv -F hep-th math-ph   # overrides the arXiv feeds specified in the config

Run tldrxiv --help for the complete list of options.

How it works

stateDiagram-v2 
    direction LR
    fetch : fetch arXiv feed
    cache : cache
    llm   : LLM 
    json  : processed digest
    data  : data dir
    md    : terminal markdown
    [*] --> fetch
    fetch --> llm
    fetch --> cache
    cache --> json
    llm --> json
    json --> data
    json --> md
    md --> [*]

The metadata (i.e. abstracts and titles) of today's arXiv announcement's are requested via ATOM and stored in $XDG_CACHE_HOME/tldrxiv. Then they are filtered according to the preferences set in the config file, and a single query is formed which is then submitted to the LLM (in this case the free tier of Gemini 3.6 flash). The response is then parsed, stored in $SDG_DATA_HOME/tldrxiv, and displayed.

[!NOTE] The individual article URLs and arXiv identifiers are removed before sending to the LLM, and are reintroduced once the response is received to make sure that the ai doesn't make them up (still always check them). The LLM only has access to titles and abstracts.

Configuration

The config file lives in $XDG_CONFIG_HOME/tldrxiv/config.toml (usually ~/.config/tldrxiv/config.toml). You can also open with tldrxiv config.

[!TIP] Leave api_key = "" in the file and export TLDRXIV_LLM_KEY with your API Key instead. That way your config file has no secret in it and is safe to accidentally commit without someone stealing it.

Default config and Reference

Here is the default config.toml file. When typing tldrxiv config when a config doesn't exist, it is automatically populated with the file below.

# ----------------------------------------------------- #
#  ┓ ┓  ┏┓┏┓•                                           #
# ╋┃┏┫┏┓ ┃┃ ┓┓┏                                         #
# ┗┗┗┻┛ ┗┛┗┛┗┗┛                                         #
#                                                       # 
# Default Configuration File                            #
#                                                       # 
# I commented out a bunch of the options because I      # 
# often have terrible terminology. Hope this works! :>  # 
#                                                       # 
# Location: $XDG_CONFIG_HOME/tldrxiv/config.toml or     #
#           .config/tldrxiv/config.toml                 #
#                                                       # 
# Config Version 0.1.0                                  # 
# ----------------------------------------------------- #

# ----------------------------------------------------- #
# Enter your research interests to tailor the summary   #
# to you                                                #
# ----------------------------------------------------- #

[research]
work = """
This is the default description of your work. A couple
of sentences should suffice. Please replace this.
"""
interests = """
A small paragraph where you describe your research
interests perhaps beyond your current active projects.
It is supposed to be a more general interest than what
is directly relevant to you.
"""

# ----------------------------------------------------- #
# Some settings to specify what arxiv feeds you want    #
# to follow etc.                                        #
# ----------------------------------------------------- #

[arxiv]
# If you only want one feed please till keep it as a list
feeds = [ "hep-th", "math-ph", "cond-mat.str-el" ]

# What type of submissions to look at?
# Do you really want to look at replacement submissions?
types = [ "new", "cross" ]

# The maximum amount of time to wait for arXiv to send 
# you the feeds
timeout = 60 # s

# ----------------------------------------------------- #
# Set up the LLM you want to use to provide you with    #
# the daily arXiv digests. The default is Gemini.       #
# ----------------------------------------------------- #

[llm]
# Leave blank if you want to load it by setting it as the 
# $TLDRXIV_LLM_KEY environment variable. If you want to
# use your own simply write it in quotes
# (e.g "$GEMINI_API_KEY")
#
# Alternatively you can paste your key directly in 
# quotes. But then don't put it anywhere online!
#
# For Gemini you can get a key for the for free tier 
# from: https://aistudio.google.com/apikey
api_key = ""

# The temperature of the LLM that generates the digest.
# Honestly I don't really understand how it affects
# things, but testing showed 0.5 - 0.8 is a good range.
temperature = 0.7

# The actual link to request stuff from the LLM
# This one requests from gemini-3.6-flash, but you can
# Find more links in 
url = "https://generativelanguage.googleapis.com/v1beta/models/gemini-3.6-flash:generateContent"

# ----------------------------------------------------- #
# Storage settings. tldrXiv stores some files in your   #
# computer. Control how many here. By default they are  #
# stored in $XDG_DATA_HOME/tldrxiv and                  #
# $XDG_CACHE_HOME/tldrxiv                               #
# ----------------------------------------------------- #

[storage]
# Each day the arxiv feed is downloaded in cahce in order
# to process it. This is the max number of days before
# the feeds get deleted.
daily_arxiv = 5

# The full response from the LLM is stored as a json file
# in $XDG_DATA_HOME/tldrxiv. This is the max number of
# days before responses get deleted.
daily_digest = 60

Limitations and (hopefully) future plans

Here are some things worth knowing.

  • tldrxiv can only see today's scientific papers, and only abstracts. I wouldn't be able to run in the free tier if all the references and body of the preprints was fed to gemini. More importantly it only uses arXiv RSS feeds which strictly contain metadata under a Public Domain declaration and can be redistributed without attribution while the actual content of the preprints is untouched from the eyes of big tech. I do not have plans to extend this tool to use any preprint content to produce a digest.
  • Your work and research paragraphs are fed to Gemini. Be careful what you disclose in the work and research paragraphs. At the free tier Gemini is using the data to train the model, so don't write stuff that you wouldn't want it to be trained with.
  • Past days can't be generated. Arxiv RSS feeds only exist for today. This means that if you want to process a digest from a different day you should've already downloaded the RSS feed for that day.
  • It runs on a free API tier. Expect some 503: Resource is Busy errors when using this on occasion.
  • FTLOG please don't use this as a substitute for actually reading the arXiv. I made this only because when I have to read 50 abstracts in the morning before my coffee kicks in I am usually half asleep by the 10th. This tool is meant to highlight what to look out for while browsing, not to substitute the reading.

Contributing

Please help.

Credits

A lot of open source stuff was used in this so here are some credits!


Thanks for using tldrXiv. Long live the arXiv! :>

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

tldrxiv-0.1.1.tar.gz (20.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

tldrxiv-0.1.1-py3-none-any.whl (19.9 kB view details)

Uploaded Python 3

File details

Details for the file tldrxiv-0.1.1.tar.gz.

File metadata

  • Download URL: tldrxiv-0.1.1.tar.gz
  • Upload date:
  • Size: 20.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.13

File hashes

Hashes for tldrxiv-0.1.1.tar.gz
Algorithm Hash digest
SHA256 7e68c0b50655690e8624b6ca9e570c2858b09eed79734c648d53586a06b78864
MD5 59ddce6cffb0c7f1ab5c8b78b2f292c7
BLAKE2b-256 b66591ab5baeffa69d30752d9708e8a9b87c84a7db4cd6d8d70d798a852b8c38

See more details on using hashes here.

File details

Details for the file tldrxiv-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: tldrxiv-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 19.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.13

File hashes

Hashes for tldrxiv-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 ed4450bceb360214e9e0a4b1ee6a0f256857a82a59fd478b2416ac46c4c324fc
MD5 f04e7af8075824590c618f8ea9e8b9ae
BLAKE2b-256 df48ad3434c10ac1a33335f3053c25c5b57f5bd7abb6b57855f2a9007220a0e5

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page