name: arxiv-digest
Use scripts/run_daily.py as the single entry point.
scripts/fetch_arxiv.py.thread mode: OpenClaw-native daily thread/forum postchannel mode: create one dated text channel per day via Discord REST + OpenClaw postingfixed-channel mode: reuse one stable channel name such as robotdaily, and create it if missingexisting-channel mode: reuse a fixed channel id (best for already-known target channels)Dry run without Discord:
python3 scripts/run_daily.py
Generate digest and publish to Discord:
python3 scripts/run_daily.py --publish-discord
Generate digest but skip LLM enrichment:
python3 scripts/run_daily.py --skip-enrich
Read references/selection-and-delivery.md when you need to tune scoring or choose the Discord delivery mode.
Common env vars in arxiv-digest/.env:
INSIGHT_MODELS=glm-4.7:cloud,qwen3.5:cloud,qwen3.5:27b,glm-4.7-flash-64k:latestROBOTDAILY_OUTPUT_DIR=/path/to/outputDISCORD_DELIVERY_MODE=thread|channel|fixed-channel|existing-channelDISCORD_ACCOUNT_ID=codexDISCORD_GUILD_ID=...DISCORD_PARENT_CHANNEL_ID=...DISCORD_TARGET_CHANNEL_ID=...DISCORD_TARGET_CHANNEL_NAME=robotdailyDISCORD_CATEGORY_ID=...DISCORD_BOT_TOKEN=... (needed when a missing channel must be created)DISCORD_THREAD_AUTO_ARCHIVE_MIN=10080Each run writes a dated bundle containing:
candidates.jsonselected.jsonenriched.jsonrobotdaily.htmlrobotdaily.mdmanifest.jsonThe pipeline is designed for a daily 10:30 run in Asia/Shanghai.
Recommended cron entry example:
30 10 * * * cd /path/to/robdaily/arxiv-digest && python3 scripts/run_daily.py --publish-discord >> logs/robotdaily.log 2>&1