daily-digest
Daily digest pipeline — LinkedIn + Reddit keyword hunt, Reddit pulse, sports scores, LLM synthesis, and email/WhatsApp/Telegram delivery
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Daily digest pipeline — LinkedIn + Reddit keyword hunt, Reddit pulse, sports scores, LLM synthesis, and email/WhatsApp/Telegram delivery
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
Dispatch coding tasks to the local OpenAI Codex CLI with background execution, status polling, and answerable clarifying questions. Use when OpenClaw should delegate script building, code edits, refactors, or multi-step coding work to Codex from the command line.
Search and fetch structured content from Wikipedia using the MediaWiki API for reliable, encyclopedic information
Search the web using DuckDuckGo for current information, recent events, real-time data, and fact-checking beyond training cutoff
Dispatch coding tasks to Claude Code with two-way communication. Send tasks, receive status updates, answer clarifying questions, and get results.
| name | daily-digest |
| description | Daily digest pipeline — LinkedIn + Reddit keyword hunt, Reddit pulse, sports scores, LLM synthesis, and email/WhatsApp/Telegram delivery |
| metadata | {"openclaw":{"emoji":"🔎","requires":{"bins":["node","npx"],"packages":["playwright","tsx"]}}} |
Hunts for new social media posts across LinkedIn and Reddit based on configurable keywords, gathers Reddit pulse and sports scores, then synthesizes everything via LLM and delivers a digest via email, WhatsApp, and Telegram.
The full daily pipeline runs via run-daily-digest.sh and executes in order:
social-searcher.ts) — LinkedIn + Reddit keyword searchreddit-pulse.ts) — Subreddit top/trending postssports-pulse.ts) — ESPN scoreboard for tracked teamsrex-engine.ts) — LLM synthesis + email/WhatsApp/Telegram delivery# Full pipeline
./run-daily-digest.sh
# Individual steps
./run-hunt.sh # Keyword hunt only (uses last check date)
./run-hunt.sh --days 7 # Override: search last 7 days
./run-pulse.sh # Reddit pulse only
Keywords & subreddits: cfg/social-search-config.json
{
"linkedin": {
"keywords": ["agrivoltaics", "#agrivoltaics", "solar warehouse", "solar"],
"last_successful_search": "2026-03-17T..."
},
"reddit": {
"monitors": [
{ "sub": "agrivoltaics", "keywords": ["agrivoltaics"] }
],
"last_successful_search": "2026-03-17T..."
}
}
Delivery targets: cfg/addresses.json — email, phone, and Telegram chat IDs.
Sports teams: cfg/sports-config.json — teams with ESPN sport/ID + extra leagues.
Daily JSON files in ~/.openclaw/data/social-searcher/:
| File | Contents |
|---|---|
search-results-YYYY-MM-DD.json | LinkedIn + Reddit keyword hunt |
reddit-pulse-YYYY-MM-DD.json | Reddit pulse |
sports-raw-YYYY-MM-DD.json | Raw ESPN data |
raw-data-YYYY-MM-DD.json | Merged data for Rex Engine |
delivery-status-YYYY-MM-DD.json | Delivery results per channel |
~/.openclaw/browser-profiles/social-searcherdiv[role="listitem"] — LinkedIn uses obfuscated CSS classes that rotate on deploys, so we target ARIA roles which are stable (accessibility contract)a[href*="/in/"], a[href*="/company/"]) with timestamp/degree stripping; span[aria-hidden="true"] fallbackspan[dir="ltr"] for post body text, with UI chrome cleanup/posts/ links → profile link fallbacksort=new&t=week, filtered by created_utc since last rungoogle/gemini-2.0-flash-001)gog), WhatsApp and Telegram (via openclaw message)~/.openclaw/credentials/.env — OPENROUTER_API_KEY, GOG_KEYRING_PASSWORDcfg/sports-config.json with team ESPN IDs + extra leagues| Log | Purpose |
|---|---|
logs/daily-digest-run.log | Master pipeline log |
logs/hunt-run.log | Keyword hunt log |
logs/pulse-run.log | Reddit pulse log |
logs/last-run-status.json | Delivery status |
LinkedIn deliberately rotates CSS class names and DOM structure as an anti-scraping measure. If extraction breaks:
logs/debug-linkedin-*.pngdiv[role="listitem"] — if that stops working, trace backwards from profile links (a[href*="/in/"]) to find their new container elementlinkedin-api Python library's queryId hash is staleIf you see "Failed to create ProcessSingleton":
# Kill orphaned Chrome processes
ps aux | grep 'social-searcher' | grep -v grep | awk '{print $2}' | xargs kill
rm ~/.openclaw/browser-profiles/social-searcher/SingletonLock
Delete the browser profile and re-authenticate:
rm -rf ~/.openclaw/browser-profiles/social-searcher
# Run script manually, log in when browser opens
./run-hunt.sh --days 1
npx tsx (NOT ts-node --esm)module: "NodeNext", imports use .js extensionstsx is installed as a devDependency