/install earnings-countdown
Skill: Earnings Countdown
When to use
- User wants a daily reminder leading up to a company's next earnings release.
- User says "notify me 1 week before NVIDIA earnings every day at 10 AM".
- User says "set up an earnings countdown for Apple".
- User says "remind me daily before Tesla's financial release".
- User wants to track an upcoming earnings event with daily price + fundamentals updates.
When NOT to use
- User just wants the current stock price → use
stock-price-checker-pro - User just wants fundamentals → use
stock-fundamentals - User wants a generic reminder (not earnings-related) → use
remind-me - User wants a full research report right now → use
equity-research - User wants to check the earnings date without scheduling → use
stock-price-checker-pro
Overview
This skill orchestrates three sub-skills to create a proactive earnings countdown:
- Resolve company name → ticker (LLM agent maps it, same approach as
stock-price-checker-pro) - Fetch the next earnings date via the local Python script
- Create a daily cron reminder via
remind-methat fires every day at the specified time, runningstock-price-checker-pro+stock-fundamentalsand delivering a countdown briefing
Conversation Flow
Step 1 — Resolve the company name to a ticker
Map 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 \x3CTICKER>, right?"
Step 2 — Collect lead time and notification time
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:
- "1 week, 9 AM New York time" → lead_days=7, hour=9, minute=0, tz=America/New_York
- "2 weeks, 8 AM London" → lead_days=14, hour=8, minute=0, tz=Europe/London
- "just use defaults" → lead_days=7, hour=10, minute=0, tz=Europe/Paris
- (no lead time or time given) → apply defaults, confirm with user
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?
Step 3 — Fetch the next earnings date
uv run /root/.openclaw/workspace/skills/earnings-countdown/src/main.py \x3CTICKER>
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.
Step 4 — Compute the reminder schedule
From the script output, compute:
- reminder_start_date =
Next Earnings Date−lead_days(7 or 14) - cron_expression =
cron:\x3Cminute> \x3Chour> * * *(daily at the specified time in the user's timezone)- e.g. 10 AM →
cron:0 10 * * * - e.g. 9:30 AM →
cron:30 9 * * *
- e.g. 10 AM →
⚠️ 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?
Step 5 — Create the daily cron reminder via remind-me
The cron message must contain clear instructions for the agent that fires it each day. The message tells the agent to:
- Check if today is on or after the earnings date
- If so: send a final "Earnings day!" message, run
stock-price-checker-pro+stock-fundamentals, and cancel this reminder - If not: compute days remaining, run
stock-price-checker-pro+stock-fundamentals, and send a countdown briefing
Use the remind-me create command:
uv run /root/.openclaw/workspace/skills/remind-me/src/main.py create \
"\x3CTICKER> Earnings Countdown - Daily \x3CHH:MM>" \
"📊 \x3CTICKER> (\x3CCOMPANY>) Earnings Countdown. Next earnings date: \x3CEARNINGS_DATE_ISO>.\
\
If today is on or after \x3CEARNINGS_DATE_ISO>:\
1. Say '🔔 \x3CCOMPANY> (\x3CTICKER>) earnings are TODAY! 🎯'\
2. Run: uv run /root/.openclaw/workspace/skills/stock-price-checker-pro/src/main.py \x3CTICKER>\
3. Run: uv run /root/.openclaw/workspace/skills/stock-fundamentals/src/main.py \x3CTICKER>\
4. Send a comprehensive earnings-day briefing with price, fundamentals, and a quick take.\
5. Cancel this reminder by running: uv run /root/.openclaw/workspace/skills/remind-me/src/main.py cancel name '\x3CTICKER> Earnings Countdown - Daily \x3CHH:MM>'\
\
If today is before \x3CEARNINGS_DATE_ISO>:\
1. Compute days_remaining = days between today and \x3CEARNINGS_DATE_ISO>\
2. Say '🔔 \x3CCOMPANY> (\x3CTICKER>) earnings in {days_remaining} days — briefing below.'\
3. Run: uv run /root/.openclaw/workspace/skills/stock-price-checker-pro/src/main.py \x3CTICKER>\
4. Run: uv run /root/.openclaw/workspace/skills/stock-fundamentals/src/main.py \x3CTICKER>\
5. Send a daily countdown briefing summarizing price, key fundamentals, and recent company news." \
"cron:\x3CMINUTE> \x3CHOUR> * * *" \
"\x3Cchannel>" \
"\x3CchatId>" \
"tz:\x3CIANA 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:\x3CIANA>) must match the one resolved in Step 2.
Step 6 — Confirm completion
After the cron is created, report back:
✅ Done! Your earnings countdown is set up: 📊 \x3CTICKER> (\x3CCOMPANY>) 📅 Earnings date: \x3CEARNINGS_DATE_ISO> ⏰ Daily briefing at: \x3CHH:MM> \x3CTIMEZONE_LABEL> 🔁 Starting: \x3CREMINDER_START_DATE_ISO> (\x3CDAYS_UNTIL_START> days from now) 📱 Delivered to: This chat
Commands
Fetch the next earnings date
uv run /root/.openclaw/workspace/skills/earnings-countdown/src/main.py \x3CTICKER>
Examples
# 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
Output
The script returns three lines:
Ticker: \x3CSYMBOL>
Company: \x3CCOMPANY_NAME>
Next Earnings Date: \x3CYYYY-MM-DD>
Or an error:
Error: \x3Cmessage>
Full Walkthrough
Example — NVIDIA with 1 week lead time, 10 AM CET (all defaults)
User: "Set up an earnings countdown for NVIDIA"
- Resolve ticker: NVIDIA →
NVDA - Apply defaults: 1 week, 10 AM CET → lead_days=7, hour=10, minute=0, tz=Europe/Paris
- Confirm with user (include timezone line), user says yes
- Run script:
uv 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:
- earnings_date = 2026-06-15
- reminder_start = 2026-06-08 (7 days before)
- cron =
cron:0 10 * * * - days_until_start = compute from today
-
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.\
\
If today is on or after 2026-06-15:\
1. Say '🔔 NVIDIA Corporation (NVDA) earnings are TODAY! 🎯'\
2. Run: uv run /root/.openclaw/workspace/skills/stock-price-checker-pro/src/main.py NVDA\
3. Run: uv run /root/.openclaw/workspace/skills/stock-fundamentals/src/main.py NVDA\
4. Send a comprehensive earnings-day briefing with price, fundamentals, and a quick take.\
5. Cancel this reminder by running: uv run /root/.openclaw/workspace/skills/remind-me/src/main.py cancel name 'NVDA Earnings Countdown - Daily 10:00'\
\
If today is before 2026-06-15:\
1. Compute days_remaining = days between today and 2026-06-15\
2. Say '🔔 NVIDIA Corporation (NVDA) earnings in {days_remaining} days — briefing below.'\
3. Run: uv run /root/.openclaw/workspace/skills/stock-price-checker-pro/src/main.py NVDA\
4. Run: uv run /root/.openclaw/workspace/skills/stock-fundamentals/src/main.py NVDA\
5. Send a daily countdown briefing summarizing price, key fundamentals, and recent company news." \
"cron:0 10 * * *" \
"telegram" \
"\x3CchatId>" \
"tz:Europe/Paris"
- Confirm completion.
Example — Apple with 2 weeks lead time, 9 AM New York time
User: "Notify me 2 weeks before Apple earnings every day at 9 AM New York time"
- Resolve ticker: Apple →
AAPL - Parse: lead_days=14, hour=9, minute=0, tz=America/New_York
- Confirm, user says yes
- Run script:
uv run /root/.openclaw/workspace/skills/earnings-countdown/src/main.py AAPL
- Compute: cron =
cron:0 9 * * *, tz=America/New_York - Create cron (same pattern as above, with AAPL details and America/New_York timezone)
- Confirm completion.
Ticker Format Reference
| 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 |
Notes
uv runreads the inline# /// scriptdependency block inmain.pyand auto-installsyfinancein an isolated environment — no pip install or venv setup needed.- Company name → ticker resolution is done by the LLM agent, following the same pattern as
stock-price-checker-pro. - Channel, chatId, and timezone are always auto-detected from session context — never ask the user for these.
- Timezone resolution follows
remind-me's 3-tier system (message → USER.md → ask user). - The daily cron message tells the agent to run
stock-price-checker-proandstock-fundamentalsand synthesize a briefing. - The cron auto-cancels on earnings day after delivering the final briefing.
- If no earnings date is found, the skill reports the error and stops — no cron is created.
- Do NOT use the shell wrapper pattern — call
uv run src/main.pydirectly as shown above. - Do NOT use web search or curl to fetch earnings dates — always use this script.
- 确保已安装 OpenClaw(本地或 Docker 部署)
- 在对话框中输入安装命令:
/install earnings-countdown - 安装完成后,直接呼叫该 Skill 的名称或使用
/earnings-countdown触发 - 根据 Skill 的参数说明提供必要输入,即可获得结构化输出
Earnings and Financial Release Countdown 是什么?
Set 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 vi... 它是一个面向 Claude Code / OpenClaw 的 AI Agent Skill 插件,目前累计下载 39 次。
如何安装 Earnings and Financial Release Countdown?
在 OpenClaw 或 Claude Code 对话框中运行命令「/install earnings-countdown」即可一键安装,无需额外配置。
Earnings and Financial Release Countdown 是免费的吗?
是的,Earnings and Financial Release Countdown 完全免费,采用 MIT-0 许可证,可自由下载、安装和使用。
Earnings and Financial Release Countdown 支持哪些平台?
Earnings and Financial Release Countdown 跨平台运行,可在任意部署了 OpenClaw / Claude Code 的环境中使用(cross-platform)。
谁开发了 Earnings and Financial Release Countdown?
由 youpele52(@youpele52)开发并维护,当前版本 v1.0.0。