Install
openclaw skills install earnings-countdownSet up a daily earnings countdown reminder for a stock. Resolves company name to ticker, fetches the next earnings date, and creates a daily cron reminder via remind-me that runs stock-price-checker-pro and stock-fundamentals every day starting 1–2 weeks before earnings. Triggers: earnings reminder, earnings countdown, notify me before earnings, remind me about earnings, earnings alert.
openclaw skills install earnings-countdownstock-price-checker-prostock-fundamentalsremind-meequity-researchstock-price-checker-proThis skill orchestrates three sub-skills to create a proactive earnings countdown:
stock-price-checker-pro)remind-me that fires every day at the specified time, running stock-price-checker-pro + stock-fundamentals and delivering a countdown briefingMap the user's company name to its ticker symbol. Use the same approach as stock-price-checker-pro: the LLM agent resolves common company names to their Yahoo Finance tickers.
| Company | Ticker |
|---|---|
| NVIDIA | NVDA |
| Apple | AAPL |
| Tesla | TSLA |
| Microsoft | MSFT |
| Amazon | AMZN |
| Google / Alphabet | GOOGL |
| Meta / Facebook | META |
| Rheinmetall | RHM.DE |
| SAP | SAP.DE |
| ASML | ASML.AS |
| Shell | SHEL.L |
If unsure, ask: "Just to confirm — that's the ticker <TICKER>, right?"
Ask the user two questions. Apply defaults if they do not specify.
| Question | Default | Options |
|---|---|---|
| How many weeks before earnings? | 1 week (7 days) | 1 or 2 weeks |
| At what time? (with timezone) | 10 AM CET (Europe/Paris) | Any time in any timezone |
Examples of user input and how to parse it:
Always confirm before proceeding. Summarise:
Got it! Here's what I'll set up: 📊 Company: NVIDIA (NVDA) 📅 Lead time: 1 week before earnings ⏰ Time: 10:00 AM CET (Europe/Paris) 🔔 Delivery: Daily countdown briefing to this chat
Shall I go ahead?
uv run /root/.openclaw/workspace/skills/earnings-countdown/src/main.py <TICKER>
The command outputs:
Ticker: NVDA
Company: NVIDIA Corporation
Next Earnings Date: 2026-06-15
If the output contains Error:, report the error to the user and stop.
From the script output, compute:
Next Earnings Date − lead_days (7 or 14)cron:<minute> <hour> * * * (daily at the specified time in the user's timezone)
cron:0 10 * * *cron:30 9 * * *⚠️ If reminder_start_date is today or in the past, start the daily reminders today (the cron will fire at the next occurrence of the specified time). Mention this to the user:
The earnings date is close — reminders will start today at 10 AM CET.
⚠️ If reminder_start_date is after the earnings date (earnings are very soon), tell the user:
The earnings date is less than your chosen lead time away. Daily reminders may not be useful. Do you still want to proceed?
⚠️ If the earnings date is today, say:
Earnings are today! Would you like me to run a full briefing now instead of scheduling a reminder?
The cron message must contain clear instructions for the agent that fires it each day. The message tells the agent to:
stock-price-checker-pro + stock-fundamentals, and cancel this reminderstock-price-checker-pro + stock-fundamentals, and send a countdown briefingUse the remind-me create command:
uv run /root/.openclaw/workspace/skills/remind-me/src/main.py create \
"<TICKER> Earnings Countdown - Daily <HH:MM>" \
"📊 <TICKER> (<COMPANY>) Earnings Countdown. Next earnings date: <EARNINGS_DATE_ISO>.\n\nIf today is on or after <EARNINGS_DATE_ISO>:\n1. Say '🔔 <COMPANY> (<TICKER>) earnings are TODAY! 🎯'\n2. Run: uv run /root/.openclaw/workspace/skills/stock-price-checker-pro/src/main.py <TICKER>\n3. Run: uv run /root/.openclaw/workspace/skills/stock-fundamentals/src/main.py <TICKER>\n4. Send a comprehensive earnings-day briefing with price, fundamentals, and a quick take.\n5. Cancel this reminder by running: uv run /root/.openclaw/workspace/skills/remind-me/src/main.py cancel name '<TICKER> Earnings Countdown - Daily <HH:MM>'\n\nIf today is before <EARNINGS_DATE_ISO>:\n1. Compute days_remaining = days between today and <EARNINGS_DATE_ISO>\n2. Say '🔔 <COMPANY> (<TICKER>) earnings in {days_remaining} days — briefing below.'\n3. Run: uv run /root/.openclaw/workspace/skills/stock-price-checker-pro/src/main.py <TICKER>\n4. Run: uv run /root/.openclaw/workspace/skills/stock-fundamentals/src/main.py <TICKER>\n5. Send a daily countdown briefing summarizing price, key fundamentals, and recent company news." \
"cron:<MINUTE> <HOUR> * * *" \
"<channel>" \
"<chatId>" \
"tz:<IANA timezone>"
⚠️ Critical: Channel, chatId, and timezone resolution follow the same rules as
remind-me(see its SKILL.md). Auto-detect from session context. The timezone passed here (tz:<IANA>) must match the one resolved in Step 2.
After the cron is created, report back:
✅ Done! Your earnings countdown is set up: 📊 <TICKER> (<COMPANY>) 📅 Earnings date: <EARNINGS_DATE_ISO> ⏰ Daily briefing at: HH:MM <TIMEZONE_LABEL> 🔁 Starting: <REMINDER_START_DATE_ISO> (<DAYS_UNTIL_START> days from now) 📱 Delivered to: This chat
uv run /root/.openclaw/workspace/skills/earnings-countdown/src/main.py <TICKER>
# US stocks
uv run /root/.openclaw/workspace/skills/earnings-countdown/src/main.py NVDA
uv run /root/.openclaw/workspace/skills/earnings-countdown/src/main.py AAPL
uv run /root/.openclaw/workspace/skills/earnings-countdown/src/main.py TSLA
# European stocks
uv run /root/.openclaw/workspace/skills/earnings-countdown/src/main.py RHM.DE
uv run /root/.openclaw/workspace/skills/earnings-countdown/src/main.py SAP.DE
uv run /root/.openclaw/workspace/skills/earnings-countdown/src/main.py ASML.AS
The script returns three lines:
Ticker: <SYMBOL>
Company: <COMPANY_NAME>
Next Earnings Date: <YYYY-MM-DD>
Or an error:
Error: <message>
User: "Set up an earnings countdown for NVIDIA"
NVDAuv run /root/.openclaw/workspace/skills/earnings-countdown/src/main.py NVDA
Output:
Ticker: NVDA
Company: NVIDIA Corporation
Next Earnings Date: 2026-06-15
Compute schedule:
cron:0 10 * * *Create cron:
uv run /root/.openclaw/workspace/skills/remind-me/src/main.py create \
"NVDA Earnings Countdown - Daily 10:00" \
"📊 NVDA (NVIDIA Corporation) Earnings Countdown. Next earnings date: 2026-06-15.\n\nIf today is on or after 2026-06-15:\n1. Say '🔔 NVIDIA Corporation (NVDA) earnings are TODAY! 🎯'\n2. Run: uv run /root/.openclaw/workspace/skills/stock-price-checker-pro/src/main.py NVDA\n3. Run: uv run /root/.openclaw/workspace/skills/stock-fundamentals/src/main.py NVDA\n4. Send a comprehensive earnings-day briefing with price, fundamentals, and a quick take.\n5. Cancel this reminder by running: uv run /root/.openclaw/workspace/skills/remind-me/src/main.py cancel name 'NVDA Earnings Countdown - Daily 10:00'\n\nIf today is before 2026-06-15:\n1. Compute days_remaining = days between today and 2026-06-15\n2. Say '🔔 NVIDIA Corporation (NVDA) earnings in {days_remaining} days — briefing below.'\n3. Run: uv run /root/.openclaw/workspace/skills/stock-price-checker-pro/src/main.py NVDA\n4. Run: uv run /root/.openclaw/workspace/skills/stock-fundamentals/src/main.py NVDA\n5. Send a daily countdown briefing summarizing price, key fundamentals, and recent company news." \
"cron:0 10 * * *" \
"telegram" \
"<chatId>" \
"tz:Europe/Paris"
User: "Notify me 2 weeks before Apple earnings every day at 9 AM New York time"
AAPLuv run /root/.openclaw/workspace/skills/earnings-countdown/src/main.py AAPL
cron:0 9 * * *, tz=America/New_York| Market | Format | Example |
|---|---|---|
| US stocks | Plain | AAPL, NVDA |
| German stocks | .DE suffix | RHM.DE, SAP.DE |
| UK stocks | .L suffix | SHEL.L, BP.L |
| Dutch stocks | .AS suffix | ASML.AS |
| Japanese | .T suffix | 7203.T |
| Korean | .KS suffix | 005930.KS |
uv run reads the inline # /// script dependency block in main.py and auto-installs yfinance in an isolated environment — no pip install or venv setup needed.stock-price-checker-pro.remind-me's 3-tier system (message → USER.md → ask user).stock-price-checker-pro and stock-fundamentals and synthesize a briefing.uv run src/main.py directly as shown above.