name: arxiv-digest
Use scripts/run_daily.py as the single entry point.
scripts/fetch_arxiv.py.site/content/ai-daily/YYYY-MM-DD.mdthread 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 and sync into Hugo content:
python3 scripts/run_daily.py --publish-hugo
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=qwen3.5:27bROBOTDAILY_OUTPUT_DIR=/path/to/outputHUGO_CONTENT_DIR=/path/to/robdaily/site/content/ai-dailyDISCORD_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