daily-stock-analysis by aradotso/trending-skills
npx skills add https://github.com/aradotso/trending-skills --skill daily-stock-analysisSkill by ara.so — Daily 2026 Skills collection.
基于大语言模型的A股、港股和美股分析系统。自动获取行情、新闻和基本面数据,生成包含买卖目标的AI决策看板,并通过 GitHub Actions 按计划将结果推送到微信/飞书/Telegram/Discord/邮箱——零服务器成本。
步骤 1:Fork 仓库
https://github.com/ZhuLinsen/daily_stock_analysis
步骤 2:配置 Secrets (Settings → Secrets and variables → Actions)
广告位招租
在这里展示您的产品或服务
触达数万 AI 开发者,精准高效
必需 — 至少配置一个 LLM 密钥:
GEMINI_API_KEY # Google AI Studio(有免费额度)
OPENAI_API_KEY # OpenAI 或兼容接口(DeepSeek、Qwen 等)
OPENAI_BASE_URL # 例如 https://api.deepseek.com/v1
OPENAI_MODEL # 例如 deepseek-chat, gpt-4o
AIHUBMIX_KEY # AIHubMix(推荐,覆盖 Gemini+GPT+Claude+DeepSeek)
ANTHROPIC_API_KEY # Claude
必需 — 股票列表:
STOCKS # 例如 600519,300750,AAPL,TSLA,00700.HK
必需 — 至少配置一个通知渠道:
TELEGRAM_BOT_TOKEN
TELEGRAM_CHAT_ID
FEISHU_WEBHOOK_URL
WECHAT_WEBHOOK_URL
EMAIL_SENDER / EMAIL_PASSWORD / EMAIL_RECEIVERS
DISCORD_WEBHOOK_URL
步骤 3:手动触发或等待定时任务
前往 Actions → stock_analysis → Run workflow
git clone https://github.com/ZhuLinsen/daily_stock_analysis
cd daily_stock_analysis
cp .env.example .env
# 编辑 .env 文件,填入你的密钥
pip install -r requirements.txt
python main.py
Docker:
docker build -t stock-analysis .
docker run --env-file .env stock-analysis
Docker Compose:
docker-compose up -d
.env 文件(本地)# LLM - 选择一个或多个
GEMINI_API_KEY=your_gemini_key
OPENAI_API_KEY=your_openai_key
OPENAI_BASE_URL=https://api.deepseek.com/v1
OPENAI_MODEL=deepseek-chat
AIHUBMIX_KEY=your_aihubmix_key
# 股票列表(逗号分隔)
STOCKS=600519,300750,AAPL,TSLA,00700.HK
# 通知
TELEGRAM_BOT_TOKEN=your_bot_token
TELEGRAM_CHAT_ID=your_chat_id
# 可选设置
REPORT_TYPE=full # simple | full | brief
ANALYSIS_DELAY=10 # 股票分析间隔秒数(避免限流)
MAX_WORKERS=3 # 并发分析线程数
SINGLE_STOCK_NOTIFY=false # 每只股票分析完成立即推送
NEWS_MAX_AGE_DAYS=3 # 忽略超过 N 天的旧新闻
LLM_CHANNELS=gemini,deepseek,claude
LLM_GEMINI_PROTOCOL=google
LLM_GEMINI_API_KEY=your_key
LLM_GEMINI_MODELS=gemini-2.0-flash,gemini-1.5-pro
LLM_GEMINI_ENABLED=true
LLM_DEEPSEEK_PROTOCOL=openai
LLM_DEEPSEEK_BASE_URL=https://api.deepseek.com/v1
LLM_DEEPSEEK_API_KEY=your_key
LLM_DEEPSEEK_MODELS=deepseek-chat
LLM_DEEPSEEK_ENABLED=true
STOCK_GROUP_1=600519,300750,000858
EMAIL_GROUP_1=investor1@example.com
STOCK_GROUP_2=AAPL,TSLA,NVDA
EMAIL_GROUP_2=investor2@example.com
MARKET_REVIEW=cn # cn | us | both
# cn = A股三阶段回顾策略
# us = 美股市场状态策略(risk-on/neutral/risk-off)
# both = 两个市场都分析
# 立即运行完整分析
python main.py
# 仅分析特定股票
STOCKS=600519,AAPL python main.py
# 运行 Web 仪表板
python web_app.py
# 访问地址 http://localhost:5000
# 使用 Docker 运行(需 env 文件)
docker run --env-file .env stock-analysis python main.py
# 运行计划模式(等待定时任务,然后运行)
SCHEDULE_RUN_IMMEDIATELY=true python main.py
工作流文件 .github/workflows/stock_analysis.yml 按计划运行:
# 默认计划 - 可在工作流文件中自定义
on:
schedule:
- cron: '30 1 * * 1-5' # 北京时间 9:30 AM (UTC+8) 工作日
workflow_dispatch: # 手动触发
修改计划: 编辑 .github/workflows/stock_analysis.yml 中的 cron 表达式。
通过 GitHub CLI 添加 secrets:
gh secret set GEMINI_API_KEY --body "$GEMINI_API_KEY"
gh secret set STOCKS --body "600519,300750,AAPL,TSLA"
gh secret set TELEGRAM_BOT_TOKEN --body "$TG_TOKEN"
gh secret set TELEGRAM_CHAT_ID --body "$TG_CHAT_ID"
# 以编程方式分析特定股票
import asyncio
from analyzer import StockAnalyzer
async def analyze():
analyzer = StockAnalyzer()
# 分析单只A股
result = await analyzer.analyze_stock("600519") # 茅台
print(result['conclusion'])
print(result['buy_price'])
print(result['stop_loss'])
print(result['target_price'])
asyncio.run(analyze())
from notifier import NotificationManager
notifier = NotificationManager()
# 发送到 Telegram
await notifier.send_telegram(
token=os.environ['TELEGRAM_BOT_TOKEN'],
chat_id=os.environ['TELEGRAM_CHAT_ID'],
message="📈 分析完成\n600519: 建议在 1680 买入,止损: 1620,目标: 1800"
)
# 发送到飞书 webhook
await notifier.send_feishu(
webhook_url=os.environ['FEISHU_WEBHOOK_URL'],
content=analysis_report
)
import requests
# 向股票助手询问策略问题
response = requests.post('http://localhost:5000/api/agent/chat', json={
"message": "600519现在适合买入吗?用均线金叉策略分析",
"stock_code": "600519",
"strategy": "ma_crossover" # ma_crossover, elliott_wave, chan_theory 等
})
print(response.json()['reply'])
import requests
# 触发对某只股票的回测
response = requests.post('http://localhost:5000/api/backtest', json={
"stock_code": "600519",
"days": 30 # 评估过去30天的AI预测
})
result = response.json()
print(f"方向准确性: {result['direction_accuracy']}%")
print(f"止盈命中率: {result['tp_hit_rate']}%")
print(f"止损命中率: {result['sl_hit_rate']}%")
import requests
# 上传股票列表截图供AI提取
with open('watchlist_screenshot.png', 'rb') as f:
response = requests.post(
'http://localhost:5000/api/stocks/import/image',
files={'image': f}
)
stocks = response.json()['extracted_stocks']
# 返回: [{"code": "600519", "name": "贵州茅台", "confidence": 0.98}, ...]
启动 Web 应用:
python web_app.py
| 路由 | 功能 |
|---|---|
/ | 今日分析仪表板 |
/portfolio | 持仓管理,盈亏追踪 |
/history | 历史分析报告(支持批量删除) |
/backtest | AI 预测准确性回测 |
/agent | 多轮策略问答 |
/settings | LLM 通道、通知配置 |
/import | 从图片/CSV/剪贴板导入股票 |
# A股(6位代码)
600519 # 贵州茅台
300750 # 宁德时代
000858 # 五粮液
# 港股(5位数字 + .HK)
00700.HK # 腾讯控股
09988.HK # 阿里巴巴
# 美股(股票代码)
AAPL
TSLA
NVDA
# 美股指数
SPX # 标普500
DJI # 道琼斯
IXIC # 纳斯达克
| 规则 | 配置 |
|---|---|
| 不追高 | DEVIATION_THRESHOLD=5 (%,强趋势下自动放宽) |
| 趋势交易 | 要求 MA5 > MA10 > MA20 多头排列 |
| 精确目标 | 每只股票提供买入价、止损价、止盈价 |
| 新闻时效性 | NEWS_MAX_AGE_DAYS=3(跳过过期新闻) |
| 检查清单 | 每个条件标记:✅ 满足 / ⚠️ 需注意 / ❌ 未满足 |
分析运行但未收到推送:
# 检查通知配置
python -c "from notifier import test_all_channels; test_all_channels()"
# 验证 secrets 已设置(GitHub Actions)
gh secret list
LLM API 错误 / 限流:
ANALYSIS_DELAY=15 # 增加股票分析间隔
MAX_WORKERS=1 # 减少并发数
LITELLM_FALLBACK_MODELS=gemini-1.5-flash,deepseek-chat # 添加备用模型
AkShare 数据获取失败(A股):
pip install akshare --upgrade
# A股数据需要中国网络或代理
YFinance 美股数据问题:
pip install yfinance --upgrade
# 美股为保持一致性,仅使用 YFinance
GitHub Actions 未触发:
Settings → Actions → General → Allow all actions.github/workflows/stock_analysis.ymlWeb 认证问题(管理员密码):
# 如果认证曾被禁用后又启用,需要当前密码
# 通过环境变量重置
WEB_ADMIN_PASSWORD=new_password
多工作进程部署的认证状态:
# 认证开关仅对当前进程生效
# 必须重启所有工作进程以同步状态
docker-compose restart
REPORT_TYPE=simple # 简洁版:仅结论 + 关键价格
REPORT_TYPE=full # 完整版:所有技术面 + 基本面 + 新闻分析
REPORT_TYPE=brief # 3-5 句话摘要
完整报告包含:
Gemini → Anthropic → OpenAI/AIHubMix/兼容接口
推荐使用 AIHubMix,无需 VPN 即可通过单一密钥访问所有主流模型:
AIHUBMIX_KEY=$AIHUBMIX_KEY # 覆盖 Gemini, GPT, Claude, DeepSeek
# 无需 OPENAI_BASE_URL — 自动配置
每周安装数
320
仓库
GitHub Stars
10
首次出现
7 天前
安全审计
安装于
opencode319
gemini-cli319
github-copilot319
codex319
amp319
cline319
Skill by ara.so — Daily 2026 Skills collection.
LLM-powered stock analysis system for A-share, Hong Kong, and US markets. Automatically fetches quotes, news, and fundamentals, generates AI decision dashboards with buy/sell targets, and pushes results to WeChat/Feishu/Telegram/Discord/Email on a schedule via GitHub Actions — zero server cost.
Step 1: Fork the repository
https://github.com/ZhuLinsen/daily_stock_analysis
Step 2: Configure Secrets (Settings → Secrets and variables → Actions)
Required — at least one LLM key:
GEMINI_API_KEY # Google AI Studio (free tier available)
OPENAI_API_KEY # OpenAI or compatible (DeepSeek, Qwen, etc.)
OPENAI_BASE_URL # e.g. https://api.deepseek.com/v1
OPENAI_MODEL # e.g. deepseek-chat, gpt-4o
AIHUBMIX_KEY # AIHubMix (recommended, covers Gemini+GPT+Claude+DeepSeek)
ANTHROPIC_API_KEY # Claude
Required — stock list:
STOCKS # e.g. 600519,300750,AAPL,TSLA,00700.HK
Required — at least one notification channel:
TELEGRAM_BOT_TOKEN
TELEGRAM_CHAT_ID
FEISHU_WEBHOOK_URL
WECHAT_WEBHOOK_URL
EMAIL_SENDER / EMAIL_PASSWORD / EMAIL_RECEIVERS
DISCORD_WEBHOOK_URL
Step 3: Trigger manually or wait for cron
Go to Actions → stock_analysis → Run workflow
git clone https://github.com/ZhuLinsen/daily_stock_analysis
cd daily_stock_analysis
cp .env.example .env
# Edit .env with your keys
pip install -r requirements.txt
python main.py
Docker:
docker build -t stock-analysis .
docker run --env-file .env stock-analysis
Docker Compose:
docker-compose up -d
.env File (Local)# LLM - pick one or more
GEMINI_API_KEY=your_gemini_key
OPENAI_API_KEY=your_openai_key
OPENAI_BASE_URL=https://api.deepseek.com/v1
OPENAI_MODEL=deepseek-chat
AIHUBMIX_KEY=your_aihubmix_key
# Stock list (comma-separated)
STOCKS=600519,300750,AAPL,TSLA,00700.HK
# Notification
TELEGRAM_BOT_TOKEN=your_bot_token
TELEGRAM_CHAT_ID=your_chat_id
# Optional settings
REPORT_TYPE=full # simple | full | brief
ANALYSIS_DELAY=10 # seconds between stocks (avoid rate limiting)
MAX_WORKERS=3 # concurrent analysis threads
SINGLE_STOCK_NOTIFY=false # push each stock immediately when done
NEWS_MAX_AGE_DAYS=3 # ignore news older than N days
LLM_CHANNELS=gemini,deepseek,claude
LLM_GEMINI_PROTOCOL=google
LLM_GEMINI_API_KEY=your_key
LLM_GEMINI_MODELS=gemini-2.0-flash,gemini-1.5-pro
LLM_GEMINI_ENABLED=true
LLM_DEEPSEEK_PROTOCOL=openai
LLM_DEEPSEEK_BASE_URL=https://api.deepseek.com/v1
LLM_DEEPSEEK_API_KEY=your_key
LLM_DEEPSEEK_MODELS=deepseek-chat
LLM_DEEPSEEK_ENABLED=true
STOCK_GROUP_1=600519,300750,000858
EMAIL_GROUP_1=investor1@example.com
STOCK_GROUP_2=AAPL,TSLA,NVDA
EMAIL_GROUP_2=investor2@example.com
MARKET_REVIEW=cn # cn | us | both
# cn = A-share three-phase review strategy
# us = US Regime Strategy (risk-on/neutral/risk-off)
# both = both markets
# Run full analysis immediately
python main.py
# Analyze specific stocks only
STOCKS=600519,AAPL python main.py
# Run web dashboard
python web_app.py
# Access at http://localhost:5000
# Run with Docker (env file)
docker run --env-file .env stock-analysis python main.py
# Run schedule mode (waits for cron, then runs)
SCHEDULE_RUN_IMMEDIATELY=true python main.py
The workflow file .github/workflows/stock_analysis.yml runs on schedule:
# Default schedule - customize in the workflow file
on:
schedule:
- cron: '30 1 * * 1-5' # 9:30 AM CST (UTC+8) weekdays
workflow_dispatch: # manual trigger
To change schedule: Edit .github/workflows/stock_analysis.yml cron expression.
To add secrets via GitHub CLI:
gh secret set GEMINI_API_KEY --body "$GEMINI_API_KEY"
gh secret set STOCKS --body "600519,300750,AAPL,TSLA"
gh secret set TELEGRAM_BOT_TOKEN --body "$TG_TOKEN"
gh secret set TELEGRAM_CHAT_ID --body "$TG_CHAT_ID"
# Run analysis for specific stocks programmatically
import asyncio
from analyzer import StockAnalyzer
async def analyze():
analyzer = StockAnalyzer()
# Analyze a single A-share stock
result = await analyzer.analyze_stock("600519") # Moutai
print(result['conclusion'])
print(result['buy_price'])
print(result['stop_loss'])
print(result['target_price'])
asyncio.run(analyze())
from notifier import NotificationManager
notifier = NotificationManager()
# Send to Telegram
await notifier.send_telegram(
token=os.environ['TELEGRAM_BOT_TOKEN'],
chat_id=os.environ['TELEGRAM_CHAT_ID'],
message="📈 Analysis complete\n600519: BUY at 1680, SL: 1620, TP: 1800"
)
# Send to Feishu webhook
await notifier.send_feishu(
webhook_url=os.environ['FEISHU_WEBHOOK_URL'],
content=analysis_report
)
import requests
# Ask the stock agent a strategy question
response = requests.post('http://localhost:5000/api/agent/chat', json={
"message": "600519现在适合买入吗?用均线金叉策略分析",
"stock_code": "600519",
"strategy": "ma_crossover" # ma_crossover, elliott_wave, chan_theory, etc.
})
print(response.json()['reply'])
import requests
# Trigger backtest for a stock
response = requests.post('http://localhost:5000/api/backtest', json={
"stock_code": "600519",
"days": 30 # evaluate last 30 days of AI predictions
})
result = response.json()
print(f"Direction accuracy: {result['direction_accuracy']}%")
print(f"Take-profit hit rate: {result['tp_hit_rate']}%")
print(f"Stop-loss hit rate: {result['sl_hit_rate']}%")
import requests
# Upload screenshot of stock list for AI extraction
with open('watchlist_screenshot.png', 'rb') as f:
response = requests.post(
'http://localhost:5000/api/stocks/import/image',
files={'image': f}
)
stocks = response.json()['extracted_stocks']
# Returns: [{"code": "600519", "name": "贵州茅台", "confidence": 0.98}, ...]
Start the web app:
python web_app.py
| Route | Feature |
|---|---|
/ | Today's analysis dashboard |
/portfolio | Holdings management, P&L tracking |
/history | Past analysis reports (bulk delete supported) |
/backtest | AI prediction accuracy backtest |
/agent | Multi-turn strategy Q&A |
/settings | LLM channels, notification config |
# A-shares (6-digit code)
600519 # 贵州茅台
300750 # 宁德时代
000858 # 五粮液
# HK stocks (5-digit + .HK)
00700.HK # 腾讯控股
09988.HK # 阿里巴巴
# US stocks (ticker)
AAPL
TSLA
NVDA
# US indices
SPX # S&P 500
DJI # Dow Jones
IXIC # NASDAQ
| Rule | Config |
|---|---|
| No chasing highs | DEVIATION_THRESHOLD=5 (%, auto-relaxed for strong trend) |
| Trend trading | MA5 > MA10 > MA20 bullish alignment required |
| Precise targets | Buy price, stop-loss, take-profit per stock |
| News freshness | NEWS_MAX_AGE_DAYS=3 (skip stale news) |
| Checklist | Each condition marked: ✅ Satisfied / ⚠️ Caution / ❌ Not Met |
Analysis runs but no push received:
# Check notification config
python -c "from notifier import test_all_channels; test_all_channels()"
# Verify secrets are set (GitHub Actions)
gh secret list
LLM API errors / rate limiting:
ANALYSIS_DELAY=15 # increase delay between stocks
MAX_WORKERS=1 # reduce concurrency
LITELLM_FALLBACK_MODELS=gemini-1.5-flash,deepseek-chat # add fallbacks
AkShare data fetch fails (A-shares):
pip install akshare --upgrade
# A-share data requires Chinese network or proxy
YFinance US stock data issues:
pip install yfinance --upgrade
# US stocks use YFinance exclusively for consistency
GitHub Actions not triggering:
Settings → Actions → General → Allow all actions.github/workflows/stock_analysis.ymlWeb auth issues (admin password):
# If auth was disabled and re-enabled, current password required
# Reset via environment variable
WEB_ADMIN_PASSWORD=new_password
Multi-worker deployment auth state:
# Auth toggle only applies to current process
# Must restart all workers to sync state
docker-compose restart
REPORT_TYPE=simple # Concise: conclusion + key prices only
REPORT_TYPE=full # Complete: all technical + fundamental + news analysis
REPORT_TYPE=brief # 3-5 sentence summary
Full report includes:
Gemini → Anthropic → OpenAI/AIHubMix/Compatible
AIHubMix is recommended for single-key access to all major models without VPN:
AIHUBMIX_KEY=$AIHUBMIX_KEY # covers Gemini, GPT, Claude, DeepSeek
# No OPENAI_BASE_URL needed — auto-configured
Weekly Installs
320
Repository
GitHub Stars
10
First Seen
7 days ago
Security Audits
Gen Agent Trust HubPassSocketPassSnykWarn
Installed on
opencode319
gemini-cli319
github-copilot319
codex319
amp319
cline319
AI Elements:基于shadcn/ui的AI原生应用组件库,快速构建对话界面
54,900 周安装
Google Ads Manager 技能:广告系列管理、关键词研究、出价优化与效果分析
311 周安装
Telegram机器人开发教程:构建AI助手、通知系统与群组自动化工具
311 周安装
AI图像生成提示词优化指南:DALL-E、Midjourney、Stable Diffusion提示工程技巧
311 周安装
AI协作头脑风暴工具 - 将想法转化为完整设计规范,支持代码模板与项目管理
311 周安装
解决 Docker 沙盒 npm 安装崩溃:sandbox-npm-install 技能详解与使用指南
311 周安装
网页设计方法论:生产级HTML/CSS构建模式与BEM命名规范
311 周安装
/import | Import stocks from image/CSV/clipboard |