Communitygithub.com

lishn6/daily-econ-literature-radar

A Codex skill for daily economics literature feeds

What is daily-econ-literature-radar?

daily-econ-literature-radar is a Claude Code agent skill that a Codex skill for daily economics literature feeds.

Works withClaude CodeCodex CLI~Cursor
npx skills add https://github.com/lishn6/daily-econ-literature-radar/tree/main

Ask in your favorite AI

Open a new chat with this agent skill pre-loaded.

Documentation

Daily Literature Radar Skill

Daily Literature Radar is a Codex skill for tracking economics papers from target journals, working paper sources, RSS feeds, and watched authors. It fetches open metadata, ranks papers against a user-defined research profile, and renders a daily digest.

The basic version generates Markdown. The advanced version runs on a daily schedule and sends the digest as a formatted HTML email with a Markdown fallback.

Current source libraries include Crossref for target journals, official NBER working paper metadata, and generic RSS/Atom feeds such as CEPR, RePEc/NEP, Federal Reserve feeds, and journal alerts. Additional working paper repositories can be added as RSS feeds or source adapters.

Recommended: Configure With Codex

This skill is designed to be configured with help from Codex or Claude Code. A coding agent can help turn your research interests into a working daily-econ-literature-radar.config.json by:

  • translating your research topics into fields, keywords, jel_codes, methods, and geographies
  • recommending field-top journals after your research profile is defined, then adding only the journals you choose
  • finding and verifying journal ISSNs before adding them to target_journals
  • adding target authors and name aliases
  • adding RSS feeds or NBER program/working-group filters
  • configuring Gmail SMTP and a scheduler for the advanced fixed-time daily email version

The basic setup only needs Markdown output. The advanced setup sends a daily HTML email digest automatically after Gmail SMTP and a scheduler are configured.

What It Does

  • Monitors target journals through Crossref ISSN queries.
  • Monitors NBER working papers through official NBER metadata TSV files.
  • Monitors RSS/Atom sources such as CEPR, RePEc/NEP, Federal Reserve feeds, or journal alerts.
  • Tracks target authors across all fetched metadata.
  • Ranks candidate papers by source, target journal status, target author match, topic match, JEL/method/geography match, and abstract/title keyword match.
  • Deduplicates papers by DOI or title/author fallback.
  • Outputs at most max_papers papers per run, default 10.
  • Produces a Markdown digest.
  • Optionally sends an HTML email digest through Gmail SMTP or another SMTP provider on a fixed daily schedule.
  • Does not download paywalled PDFs or restricted full text.

Project Structure

daily-econ-literature-radar/
├── README.md
├── config.example.json
├── example-output/
│   ├── sample-digest.md
│   ├── sample-email.html
│   └── sample-email-preview.png
├── .gitignore
└── daily-econ-literature-radar/
    ├── SKILL.md
    ├── agents/openai.yaml
    ├── references/
    │   ├── default-config.md
    │   ├── journal-watchlist.md
    │   └── source-notes.md
    └── scripts/
        ├── economics_literature_radar.py
        ├── render_digest.py
        ├── send_digest.py
        └── run_daily_radar.py

Inputs

Configure inputs in daily-econ-literature-radar.config.json.

Research Profile

Used for relevance ranking:

  • fields: broad research fields
  • jel_codes: JEL codes or partial JEL families
  • keywords: topic keywords
  • methods: methods or empirical designs
  • geographies: countries, regions, datasets, or settings

Target Journals

Exact journal monitoring through Crossref. The economics Top 5 journals are enabled by default. After the research profile is set, the skill can recommend field-top journals; the user should choose which recommendations to add. Each journal should include:

  • name
  • tier
  • field
  • issn

Example:

{
  "name": "Journal Name",
  "tier": "field_top",
  "field": "labor",
  "issn": ["0000-0000"]
}

Verify ISSNs before adding them.

Target Authors

Author names and aliases to prioritize:

{
  "name": "Author Name",
  "aliases": ["A. Name", "Author M. Name"],
  "notes": "Optional note"
}

Sources

  • nber: official NBER metadata adapter
  • rss_feeds: CEPR, RePEc/NEP, Fed, journal alerts, or other RSS/Atom feeds
  • target_journals: Crossref ISSN queries

Limits

  • max_papers: final digest size
  • per_source_rows: number of rows to request per source query
  • source_caps: soft caps that prevent one source type from crowding out the digest

Email

Email is optional. Set email.enabled to true only after configuring SMTP credentials.

Outputs

Example outputs are included in example-output/sample-digest.md, example-output/sample-email.html, and example-output/sample-email-preview.png. They use synthetic paper metadata while preserving the same structure and email styling as real runs.

Rendered HTML email preview

Fetch JSON

Generated by fetch:

daily-econ-literature-radar-output/data/YYYY-MM-DDTHHMMSSZ.json

Each paper record can include:

  • title
  • authors
  • source
  • source_kind
  • date
  • date_type
  • doi
  • url
  • abstract
  • keywords
  • matched_terms
  • priority
  • score
  • notes

Markdown Digest

Generated by render_digest.py:

daily-econ-literature-radar-output/YYYY-MM-DD.md

Each paper includes title, authors, source, publication/update date, DOI/URL, matched terms, priority, abstract, and notes.

Email Digest

Generated by send_digest.py or run_daily_radar.py when email is enabled. The email includes:

  • HTML body for readable Gmail/Outlook display
  • plain-text Markdown fallback

How to Use

Tip: ask Codex or Claude Code to help configure the research profile, field-top journal choices, target authors, and scheduled email sending. Gmail SMTP with a Google App Password has been tested and works.

Basic Version: Markdown Only

From the project root:

cp config.example.json daily-econ-literature-radar.config.json

Edit daily-econ-literature-radar.config.json with your research profile, authors, and sources. Keep the default Top 5 journals if desired, then add field-top journals after choosing from recommendations.

Fetch papers:

python3 daily-econ-literature-radar/scripts/economics_literature_radar.py fetch --config daily-econ-literature-radar.config.json

Render Markdown:

python3 daily-econ-literature-radar/scripts/render_digest.py \
  daily-econ-literature-radar-output/data/YYYY-MM-DDTHHMMSSZ.json \
  --output daily-econ-literature-radar-output/YYYY-MM-DD.md

After reviewing the digest, mark successful processing:

python3 daily-econ-literature-radar/scripts/economics_literature_radar.py mark-success \
  --config daily-econ-literature-radar.config.json \
  --data daily-econ-literature-radar-output/data/YYYY-MM-DDTHHMMSSZ.json

mark-success updates state.json so future runs do not repeat the same papers.

Advanced Version: Fixed-Time Daily Email

The advanced version is a scheduled workflow. The scripts do not run as a background daemon by themselves; a scheduler such as Codex automation, cron, macOS LaunchAgent, or Windows Task Scheduler should call run_daily_radar.py at the desired time each day.

Configure the desired delivery time in your scheduler. You can also record it in the config:

"push_time": "09:00",
"timezone": "America/Toronto"

Gmail SMTP

The current implementation has been tested with Gmail SMTP and a Google App Password.

Set in daily-econ-literature-radar.config.json:

"email": {
  "enabled": true,
  "provider": "gmail_smtp",
  "from": "Daily Literature Radar <[email protected]>",
  "to": "[email protected]",
  "smtp_host": "smtp.gmail.com",
  "smtp_port": 587,
  "smtp_username": "[email protected]",
  "smtp_password_env": "DAILY_RADAR_GMAIL_APP_PASSWORD",
  "smtp_password_file": ".secrets/gmail_app_password",
  "use_starttls": true
}

Gmail usually requires a Google App Password rather than your normal Google password. Create one from your Google Account security settings, then store it in one of these ways.

Environment variable:

export DAILY_RADAR_GMAIL_APP_PASSWORD="your-app-password"

Ignored local file:

mkdir -p .secrets
printf '%s' 'your-app-password' > .secrets/gmail_app_password
chmod 600 .secrets/gmail_app_password

The .gitignore file excludes .secrets/, .env, local configs, and outputs.

Send One Digest

python3 daily-econ-literature-radar/scripts/send_digest.py \
  daily-econ-literature-radar-output/YYYY-MM-DD.md \
  --config daily-econ-literature-radar.config.json

Run the Full Email Pipeline

python3 daily-econ-literature-radar/scripts/run_daily_radar.py --config daily-econ-literature-radar.config.json

This runs:

fetch -> render Markdown -> send HTML email -> mark-success

It marks success only after the email send succeeds.

Schedule Daily Delivery

Schedule this exact command to run once per day at your chosen time:

python3 daily-econ-literature-radar/scripts/run_daily_radar.py --config daily-econ-literature-radar.config.json

That command performs the full daily email workflow:

fetch -> render Markdown -> send HTML email -> mark-success

Scheduling Options

Codex Automation

Create a daily cron automation that runs from this project directory:

python3 daily-econ-literature-radar/scripts/run_daily_radar.py --config daily-econ-literature-radar.config.json

Use the user's preferred local time zone and time, for example 09:00 daily.

macOS Cron or LaunchAgent

This project was developed and tested on a MacBook/macOS environment with Python 3. The simplest macOS scheduling options are:

  • Codex automation
  • cron
  • launchd / LaunchAgent

For cron, make sure the job starts in the project directory and uses the same Python executable that worked in testing.

Windows Compatibility

The current version is MacBook/macOS-tested. The Python scripts are standard-library only and should be portable, but Windows users should adjust:

  • Use python or py -3 instead of python3.
  • Use PowerShell path syntax and quote paths containing spaces.
  • Use Windows Task Scheduler instead of cron/launchd.
  • Replace chmod 600 with Windows file permissions or store the app password in an environment variable.
  • Use .secrets\gmail_app_password in Windows paths if using a file secret.
  • Confirm TLS SMTP connections are allowed by local firewall or antivirus tools.

Example PowerShell command:

cd "C:\path\to\daily-econ-literature-radar"
py -3 daily-econ-literature-radar\scripts\run_daily_radar.py --config daily-econ-literature-radar.config.json

Privacy and Safety

Do not commit:

  • daily-econ-literature-radar.config.json
  • .secrets/
  • .env
  • daily-econ-literature-radar-output/

The skill only uses metadata and abstracts provided by sources. It does not download paywalled PDFs or restricted full text. If a source has no abstract, the digest marks the paper as no-abstract/title-only instead of inferring findings.

Notes for Customization

  • Keep max_papers small enough that the digest remains readable.
  • Top 5 journals are enabled by default; add field-top journals by verified ISSN after choosing from recommendations.
  • Add target authors with aliases for initials or name variants.
  • Add RSS feeds gradually and review quality before scheduling daily delivery.
  • Use source caps to prevent one source from dominating the digest.

Related Skills