Dividend Premium Tracker
ReviewAudited by ClawScan on May 10, 2026.
Overview
The tracker mostly matches its stated purpose, but its Telegram alerting uses a hard-coded chat ID and its shell command construction is unsafe.
Review the Telegram alert code before installing. Do not set TELEGRAM_BOT_TOKEN unless you have changed the chat ID to your own verified recipient and replaced the unsafe shell command with safer HTTP handling. Also consider changing the hard-coded output directory before running or scheduling the scripts.
Findings (4)
Artifact-based informational review of SKILL.md, metadata, install specs, static scan signals, and capability signals. ClawScan does not execute the skill or run runtime probes.
If Telegram alerts are enabled, investment-alert messages may be sent to an unintended Telegram chat or fail silently instead of going to the user.
The script uses a user-provided Telegram bot token but sends alerts to a fixed chat ID that is not user-configurable or disclosed in the setup instructions.
TELEGRAM_TOKEN = os.getenv("TELEGRAM_BOT_TOKEN", "")
TELEGRAM_CHAT_ID = "505395883"
...
-d chat_id={TELEGRAM_CHAT_ID}Do not enable Telegram alerts until the chat ID is configurable and documented, for example via a TELEGRAM_CHAT_ID environment variable with a clear recipient verification step.
A maliciously crafted local CSV value or environment variable could potentially cause unintended shell commands to run when an alert is sent.
The alert message and token are interpolated into a shell command and executed with os.system, so crafted local data or environment values could alter the shell command.
cmd = f"""curl -s -X POST https://api.telegram.org/bot{TELEGRAM_TOKEN}/sendMessage \
-d chat_id={TELEGRAM_CHAT_ID} \
-d text="{message}" \
-d parse_mode=HTML"""
os.system(cmd)Replace os.system with a safe HTTP library or subprocess.run using an argument list, and validate or encode all message fields before sending.
If installed, the tracker will continue making network requests and writing report files on the schedule the user configured.
The skill documents an optional cron job that will keep running daily until the user removes it.
### Cron Job (Daily Update) crontab -e # Add line: 0 17 * * * cd /path/to/skill && python3 scripts/update_dividend_premium.py --update
Only add the cron job if you want daily background updates, and record how to remove it later.
The script may fail on most machines or overwrite files at that fixed path if it exists.
The report output path is hard-coded to an author-specific absolute directory rather than a user-selected or skill-local path.
DATA_DIR = "/Users/liyi/.openclaw/workspace" CSV_FILE = os.path.join(DATA_DIR, "股息率溢价跟踪.csv") EXCEL_FILE = os.path.join(DATA_DIR, "股息率溢价跟踪.xlsx")
Make the output directory configurable, default to a skill-local assets directory, and avoid overwriting existing files without clear user intent.
