{"id":"1777820a-4740-402e-902e-7a46d8d9af0d","entityType":"agent","slug":"clawhub-derrors-stock-analysis-report","name":"Stock Analysis","canonicalUrl":"https://www.xpersona.co/agent/clawhub-derrors-stock-analysis-report","canonicalPath":"/agent/clawhub-derrors-stock-analysis-report","generatedAt":"2026-10-10T23:45:49.059Z","source":"CLAWHUB","claimStatus":"UNCLAIMED","verificationTier":"NONE","summary":{"evidence":{"source":"editorial-content","verified":true,"confidence":"high","updatedAt":"2026-10-10T20:45:00.836Z","emptyReason":null},"description":"提供A股个股及市场多维度深度分析，涵盖基本面、资金面、技术面、筹码和舆情，给出评分及买卖操作建议。 Skill: Stock Analysis Owner: derrors Summary: 提供A股个股及市场多维度深度分析，涵盖基本面、资金面、技术面、筹码和舆情，给出评分及买卖操作建议。 Tags: latest:1.0.9 Version history: v1.0.9 | 2026-04-22T02:08:51.064Z | auto - Pytdx 数据源被移除，精简为妙想金融、Efinance、AkShare 三级自动容灾。 - 妙想金融资讯正文将直接传递给 LLM 作为分析输入，辅助生成分析摘要和投资结论。 - SKILL.md 说明文档同步更新，优化并明确各数据源优先级及失效容灾逻辑。 - 依赖和主要脚本同步调整，确保移除 Pytdx 后运行和数据采集逻辑正常。 - 输出 json 字段和样例简化说明，将资讯摘要命名更通用，并统一 LLM 分析入口。 v1.0.8 | 2026-04-21T10:48:20.53","descriptionLabel":"Technical summary","evidenceSummary":"Capability contract not published. No trust telemetry is available yet. 1.3K downloads reported by the source. Last updated 10/10/2026.","installCommand":"clawhub skill install s17a2g9ec3f6zcpwkg0p441gc98599nv:stock-analysis-report","sourceUrl":"https://clawhub.ai/derrors/stock-analysis-report","homepage":"https://clawhub.ai/derrors/skills/stock-analysis-report","primaryLinks":[{"label":"View on ClawHub","url":"https://clawhub.ai/derrors/stock-analysis-report","kind":"source"},{"label":"Homepage","url":"https://clawhub.ai/derrors/skills/stock-analysis-report","kind":"homepage"}],"safetyScore":84,"overallRank":62,"popularityScore":62,"trustScore":null,"claimedByName":null,"isOwner":false,"seoDescription":"提供A股个股及市场多维度深度分析，涵盖基本面、资金面、技术面、筹码和舆情，给出评分及买卖操作建议。 Skill: Stock Analysis Owner: derrors Summary: 提供A股个股及市场多维度深度分析，涵盖基本面、资金面、技术面、筹码和舆情，给出评分及买卖操作建议。 Tags: latest:1"},"coverage":{"evidence":{"source":"public-profile","verified":false,"confidence":"medium","updatedAt":"2026-10-10T20:45:00.836Z","emptyReason":null},"protocols":[{"protocol":"OPENCLEW","label":"OpenClaw","status":"self-declared","notes":"Declared in the public agent profile."}],"capabilities":[],"verifiedCount":0,"selfDeclaredCount":1,"capabilityMatrix":{"rows":[{"key":"OPENCLEW","type":"protocol","support":"unknown","confidenceSource":"profile","notes":"Listed on profile"}],"flattenedTokens":"protocol:OPENCLEW|unknown|profile"}},"adoption":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-10T20:45:00.836Z","emptyReason":null},"stars":null,"forks":null,"downloads":1263,"packageName":null,"latestVersion":"1.0.9","tractionLabel":"1.3K downloads"},"release":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-10T20:45:00.749Z","emptyReason":null},"lastUpdatedAt":"2026-10-10T20:45:00.836Z","lastCrawledAt":"2026-10-10T20:45:00.749Z","lastIndexedAt":null,"nextCrawlAt":"2026-10-11T20:45:00.749Z","lastVerifiedAt":null,"highlights":[{"version":"1.0.9","createdAt":"2026-04-22T02:08:51.064Z","changelog":"- Pytdx 数据源被移除，精简为妙想金融、Efinance、AkShare 三级自动容灾。 - 妙想金融资讯正文将直接传递给 LLM 作为分析输入，辅助生成分析摘要和投资结论。 - SKILL.md 说明文档同步更新，优化并明确各数据源优先级及失效容灾逻辑。 - 依赖和主要脚本同步调整，确保移除 Pytdx 后运行和数据采集逻辑正常。 - 输出 json 字段和样例简化说明，将资讯摘要命名更通用，并统一 LLM 分析入口。","fileCount":41,"zipByteSize":67041},{"version":"1.0.8","createdAt":"2026-04-21T10:48:20.537Z","changelog":"- Added recommendation and guide to use 妙想金融 as the preferred data source by configuring MX_APIKEY. - Updated data source documentation to highlight 妙想金融’s highest coverage/priority and included a direct link for API Key application. - Clarified that 妙想金融, when configured, becomes the highest-priority for all key data dimensions. - Revised environment variable section to directly link to MX_APIKEY acquisition. - No code changes; documentation improvement only.","fileCount":41,"zipByteSize":69569},{"version":"1.0.7","createdAt":"2026-04-21T09:52:28.808Z","changelog":"- No code or documentation changes in this release. - Version updated to 1.0.7 with no user-facing modifications.","fileCount":41,"zipByteSize":68862},{"version":"1.0.6","createdAt":"2026-04-21T09:36:26.670Z","changelog":"stock-analysis-report v1.0.6 - 修正 SKILL.md 中 version 字段为 1.0.6，与 manifest.yaml 一致 - 其余功能和使用说明未变","fileCount":41,"zipByteSize":68861},{"version":"1.0.5","createdAt":"2026-04-21T09:29:14.725Z","changelog":"### stock-analysis-report 1.0.5 - Updated manifest.yaml version to 1.1.0 to reflect the latest skill release. - No other changes to functionality or documentation.","fileCount":41,"zipByteSize":68862},{"version":"1.0.4","createdAt":"2026-04-21T09:21:28.646Z","changelog":"- Improved Miaoxiang (妙想金融) data provider logic in src/data/miaoxiang_provider.py. - Internal logic or robustness adjustments; no user-facing feature or interface changes.","fileCount":41,"zipByteSize":68687},{"version":"1.0.3","createdAt":"2026-04-21T08:12:33.879Z","changelog":"- Clarified environment variable requirements: only core variables (LLM_API_KEY, LLM_BASE_URL, LLM_MODEL) are now listed as required; all others are marked as optional. - Updated the metadata section to correctly categorize required and optional environment variables. - No changes were made to the core functionality or user-facing behavior.","fileCount":41,"zipByteSize":68262},{"version":"1.0.2","createdAt":"2026-04-21T07:59:53.922Z","changelog":"- Added a license field (MIT-0) to SKILL.md for clarity on usage rights. - No changes to features, interface, or functionality.","fileCount":41,"zipByteSize":68254}]},"execution":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No published capability contract is available yet."},"installCommand":"clawhub skill install s17a2g9ec3f6zcpwkg0p441gc98599nv:stock-analysis-report","setupComplexity":"low","setupSteps":["Setup complexity is classified as HIGH. You must provision dedicated cloud infrastructure or an isolated VM. Do not run this directly on your local workstation.","Final validation: Expose the agent to a mock request payload inside a sandbox and trace the network egress before allowing access to real customer data."],"contract":{"contractStatus":"missing","authModes":[],"requires":[],"forbidden":[],"supportsMcp":false,"supportsA2a":false,"supportsStreaming":false,"inputSchemaRef":null,"outputSchemaRef":null,"dataRegion":null,"contractUpdatedAt":null,"sourceUpdatedAt":null,"freshnessSeconds":null},"invocationGuide":{"preferredApi":{"snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-derrors-stock-analysis-report/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-derrors-stock-analysis-report/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-derrors-stock-analysis-report/trust"},"curlExamples":["curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-derrors-stock-analysis-report/snapshot\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-derrors-stock-analysis-report/contract\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-derrors-stock-analysis-report/trust\""],"jsonRequestTemplate":{"query":"summarize this repo","constraints":{"maxLatencyMs":2000,"protocolPreference":["OPENCLEW"]}},"jsonResponseTemplate":{"ok":true,"result":{"summary":"...","confidence":0.9},"meta":{"source":"CLAWHUB","generatedAt":"2026-10-10T23:45:49.054Z"}},"retryPolicy":{"maxAttempts":3,"backoffMs":[500,1500,3500],"retryableConditions":["HTTP_429","HTTP_503","NETWORK_TIMEOUT"]}},"endpoints":{"dossierUrl":"https://www.xpersona.co/api/v1/agents/clawhub-derrors-stock-analysis-report/dossier","snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-derrors-stock-analysis-report/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-derrors-stock-analysis-report/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-derrors-stock-analysis-report/trust"}},"reliability":{"evidence":{"source":"runtime-metrics","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No trust, reliability, or runtime telemetry is available."},"trust":{"status":"unavailable","handshakeStatus":"UNKNOWN","verificationFreshnessHours":null,"reputationScore":null,"p95LatencyMs":null,"successRate30d":null,"fallbackRate":null,"attempts30d":null,"trustUpdatedAt":null,"trustConfidence":"unknown","sourceUpdatedAt":null,"freshnessSeconds":null},"decisionGuardrails":{"doNotUseIf":["Contract metadata is missing or unavailable for deterministic execution."],"safeUseWhen":[],"riskFlags":["missing_or_unavailable_contract","trust_data_unavailable","schema_references_missing"],"operationalConfidence":"low"},"executionMetrics":{"observedLatencyMsP50":null,"observedLatencyMsP95":null,"estimatedCostUsd":null,"uptime30d":null,"rateLimitRpm":null,"rateLimitBurst":null,"lastVerifiedAt":null,"verificationSource":null},"runtimeMetrics":{"successRate":null,"avgLatencyMs":null,"avgCostUsd":null,"hallucinationRate":null,"retryRate":null,"disputeRate":null,"p50Latency":null,"p95Latency":null,"lastUpdated":null}},"benchmarks":{"evidence":{"source":"no-benchmark-data","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No benchmark suites or observed failure patterns are available."},"suites":[],"failurePatterns":[]},"artifacts":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"high","updatedAt":"2026-10-10T20:45:00.836Z","emptyReason":null},"readme":"Skill: Stock Analysis\n\nOwner: derrors\n\nSummary: 提供A股个股及市场多维度深度分析，涵盖基本面、资金面、技术面、筹码和舆情，给出评分及买卖操作建议。\n\nTags: latest:1.0.9\n\nVersion history:\n\nv1.0.9 | 2026-04-22T02:08:51.064Z | auto\n\n- Pytdx 数据源被移除，精简为妙想金融、Efinance、AkShare 三级自动容灾。\n- 妙想金融资讯正文将直接传递给 LLM 作为分析输入，辅助生成分析摘要和投资结论。\n- SKILL.md 说明文档同步更新，优化并明确各数据源优先级及失效容灾逻辑。\n- 依赖和主要脚本同步调整，确保移除 Pytdx 后运行和数据采集逻辑正常。\n- 输出 json 字段和样例简化说明，将资讯摘要命名更通用，并统一 LLM 分析入口。\n\nv1.0.8 | 2026-04-21T10:48:20.537Z | auto\n\n- Added recommendation and guide to use 妙想金融 as the preferred data source by configuring MX_APIKEY.\n- Updated data source documentation to highlight 妙想金融’s highest coverage/priority and included a direct link for API Key application.\n- Clarified that 妙想金融, when configured, becomes the highest-priority for all key data dimensions.\n- Revised environment variable section to directly link to MX_APIKEY acquisition.\n- No code changes; documentation improvement only.\n\nv1.0.7 | 2026-04-21T09:52:28.808Z | auto\n\n- No code or documentation changes in this release.\n- Version updated to 1.0.7 with no user-facing modifications.\n\nv1.0.6 | 2026-04-21T09:36:26.670Z | auto\n\nstock-analysis-report v1.0.6\n\n- 修正 SKILL.md 中 version 字段为 1.0.6，与 manifest.yaml 一致\n- 其余功能和使用说明未变\n\nv1.0.5 | 2026-04-21T09:29:14.725Z | auto\n\n### stock-analysis-report 1.0.5\n\n- Updated manifest.yaml version to 1.1.0 to reflect the latest skill release.\n- No other changes to functionality or documentation.\n\nv1.0.4 | 2026-04-21T09:21:28.646Z | auto\n\n- Improved Miaoxiang (妙想金融) data provider logic in src/data/miaoxiang_provider.py.\n- Internal logic or robustness adjustments; no user-facing feature or interface changes.\n\nv1.0.3 | 2026-04-21T08:12:33.879Z | auto\n\n- Clarified environment variable requirements: only core variables (LLM_API_KEY, LLM_BASE_URL, LLM_MODEL) are now listed as required; all others are marked as optional.\n- Updated the metadata section to correctly categorize required and optional environment variables.\n- No changes were made to the core functionality or user-facing behavior.\n\nv1.0.2 | 2026-04-21T07:59:53.922Z | auto\n\n- Added a license field (MIT-0) to SKILL.md for clarity on usage rights.\n- No changes to features, interface, or functionality.\n\nv1.0.1 | 2026-04-21T07:45:17.374Z | auto\n\n- 新增 README.md，提供项目说明和用法示例  \n- 新增 config.example.yaml，便于环境变量配置参考  \n- 新增 test/test_manager.py，开始添加测试用例  \n- 移除 references/data-sources.md，不再单独维护  \n- 对 src/data/manager.py 进行了调整和优化\n\nv1.0.0 | 2026-04-21T07:00:46.152Z | user\n\nInitial public release with multi-dimensional A股 stock and market analysis:\n\n- Provides in-depth structured analysis for individual A股 stocks, covering fundamentals, valuation, capital flow, technicals, chip distribution, sentiment intelligence, and real-time quotes.\n- Outputs actionable reports with score (0-100), operation direction (buy/hold/sell), trading points, risk alerts, and checklists.\n- Supports daily A股 market review, including index statistics, sector performance, and sentiment-based strategy advice.\n- Features parallel data acquisition and multi-source failover for robust, timely reports.\n- Multiple news/search engine integrations and LLM-based summary extraction.\n- Flexible CLI and Python API for custom report generation; outputs both Markdown and JSON formats.\n\nArchive index:\n\nArchive v1.0.9: 41 files, 67041 bytes\n\nFiles: config.example.yaml (461b), manifest.yaml (3674b), README.md (16557b), requirements.txt (126b), scripts/analyze_market.py (727b), scripts/analyze_stock.py (835b), scripts/report.py (1828b), skill-card.md (2779b), SKILL.md (9255b), src/__init__.py (1b), src/analyzer/__init__.py (0b), src/analyzer/market.py (3998b), src/analyzer/prompts.py (5320b), src/analyzer/stock.py (18344b), src/config.py (2254b), src/data/__init__.py (0b), src/data/akshare_provider.py (16773b), src/data/efinance_provider.py (13216b), src/data/manager.py (8595b), src/data/miaoxiang_provider.py (29278b), src/data/provider.py (2507b), src/data/utils.py (5193b), src/index.py (7048b), src/llm/__init__.py (0b), src/llm/client.py (2742b), src/models.py (4682b), src/report.py (17830b), src/search/__init__.py (0b), src/search/base.py (428b), src/search/bocha.py (1702b), src/search/brave.py (1711b), src/search/miaoxiang.py (4550b), src/search/serpapi.py (1534b), src/search/tavily.py (1505b), test/__init__.py (0b), test/test_config.py (3163b), test/test_index.py (1973b), test/test_manager.py (12835b), test/test_models.py (3012b), test/test_utils.py (2517b), _meta.json (140b)\n\nFile v1.0.9:SKILL.md\n\n---\n\nname: stock-analysis\ndescription: |\n  A股市场分析与个股深度分析技能。支持基本面（财务指标/估值分位）、资金面（主力资金/DDX/DDY/DDZ）、技术面（均线/乖离率/量比）、筹码分布、舆情情报（新闻/研报/公告）等多维度分析，输出结构化评分与操作建议。\n\nTriggers: \"分析股票\", \"个股分析\", \"市场分析\", \"A股分析\", \"stock analysis\", \"analyze stock\", \"market analysis\", \"股票评分\", \"买卖建议\", \"涨停分析\"\n\nDoes NOT trigger:\n\n- 简单的股价查询（无需深度分析）\n- 港股/美股/非A股市场分析\n- 基金/债券/期货分析\n\nOutput: 结构化分析报告（评分0-100、操作方向、买卖点位、风险提示、检查清单）\nversion: 1.0.9\nlicense: MIT-0\nmetadata:\n  openclaw:\n    requires:\n      env:\n        - LLM_API_KEY\n        - LLM_BASE_URL\n        - LLM_MODEL\n      bins:\n        - python3\n    optional:\n      env:\n        - MX_APIKEY\n        - SERPAPI_KEY\n        - TAVILY_KEY\n        - BRAVE_KEY\n        - BOCHA_KEY\n        - BIAS_THRESHOLD\n        - NEWS_MAX_AGE_DAYS\n        - ENABLE_CHIP\n        - LOG_LEVEL\n    primaryEnv: LLM_API_KEY\n    emoji: \"📈\"\n    install:\n      - kind: uv\n        command: pip install -r requirements.txt\n\n---\n\n# A股股票市场分析 Skill\n\n## 功能\n\n### 个股分析\n\n输入股票代码，输出结构化分析结果：\n\n- **基本面**：净利润、营收、ROE、毛利率、资产负债率、机构持股比例、盈利预测\n- **估值**：PE(TTM)、PB、历史分位\n- **资金面**：主力资金流向（超大单/大单/中单/小单净额）、DDX/DDY/DDZ 指标\n- **技术面**：MA5/MA10/MA20/MA60 均线、多头排列、乖离率、量比\n- **筹码分布**：获利比例、平均成本、集中度\n- **舆情情报**：妙想金融资讯（新闻/研报/公告，LLM 分析）+ 多引擎新闻搜索\n- **实时行情**：当前价、涨跌幅、成交量、换手率\n- **分析结论**：评分 + 操作方向 + 买卖点位 + 检查清单 + 风险提示\n\n### 市场分析\n\n每日 A 股市场复盘：\n\n- 主要指数（上证/深证/创业板）\n- 涨跌统计（涨跌家数、涨停跌停数）\n- 板块排名（领涨/领跌 Top5）\n- 市场情绪判断 + 操作建议\n\n## 使用方式\n\n### 生成分析报告（推荐）\n\n```bash\n# 个股分析报告 → 保存到 reports/{代码}_{日期}.md\npython3 {baseDir}/scripts/report.py stock 600519\n\n# 市场分析报告 → 保存到 reports/market_{日期}.md\npython3 {baseDir}/scripts/report.py market\n\n# 同时输出 JSON\npython3 {baseDir}/scripts/report.py stock 600519 --json\n\n# 自定义输出目录\npython3 {baseDir}/scripts/report.py stock 600519 -o ./my-reports\n```\n\n### JSON 输出\n\n```bash\npython3 {baseDir}/scripts/analyze_stock.py 600519\npython3 {baseDir}/scripts/analyze_market.py\n```\n\n### Handler 调用\n\n```python\nfrom src.index import handler\nresult = await handler({\"mode\": \"stock\", \"code\": \"600519\"})\nresult = await handler({\"mode\": \"market\"})\nresult = await handler({\"mode\": \"stock\", \"code\": \"600519\", \"save\": True})\nresult = await handler({\"mode\": \"stock\", \"code\": \"600519\", \"save\": True, \"output_dir\": \"./reports\"})\n```\n\n## 输入格式\n\n| 字段          | 类型      | 必填            | 说明                            |\n| ----------- | ------- | ------------- | ----------------------------- |\n| mode        | string  | 是             | \"stock\" 或 \"market\"            |\n| code        | string  | mode=stock时必填 | A股股票代码，如 \"600519\"             |\n| save        | boolean | 否             | 是否保存 Markdown 报告到 reports/ 目录 |\n| output_dir | string  | 否             | 自定义报告输出目录（需 save=true）        |\n\n## 输出格式\n\n### 个股分析结果\n\n```json\n{\n  \"stock_code\": \"600519\",\n  \"stock_name\": \"贵州茅台\",\n  \"core_conclusion\": \"一句话核心结论\",\n  \"score\": 75,\n  \"action\": \"买入/观望/卖出\",\n  \"trend\": \"看多/震荡/看空\",\n  \"buy_price\": 1800.0,\n  \"stop_loss_price\": 1700.0,\n  \"target_price\": 2000.0,\n  \"checklist\": [{\"condition\": \"...\", \"status\": \"✅/❌\", \"detail\": \"...\"}],\n  \"risk_alerts\": [\"风险1\", \"风险2\"],\n  \"positive_catalysts\": [\"利好1\"],\n  \"strategy\": \"买卖策略建议\",\n  \"stock_info\": {\"code\": \"600519\", \"name\": \"贵州茅台\", \"industry\": \"白酒\", \"market_cap\": 2200000000000},\n  \"realtime\": {\"price\": 1800.0, \"change_pct\": 1.5, \"turnover_rate\": 0.8},\n  \"tech\": {\"ma5\": 1780.0, \"ma10\": 1760.0, \"ma20\": 1740.0, \"ma60\": 1700.0, \"is_bullish_alignment\": true, \"bias\": 2.1, \"volume_ratio\": 1.2},\n  \"chip\": {\"profit_ratio\": 75.0, \"avg_cost\": 1720.0, \"concentration\": 12.5},\n  \"capital_flow\": {\"super_large_net\": 500000000, \"large_net\": 200000000, \"ddx\": 0.26, \"ddy\": 0.15, \"ddz\": 5.3},\n  \"valuation\": {\"pe_ttm\": 28.5, \"pb\": 8.2, \"pe_percentile\": 45.0, \"pb_percentile\": 30.0},\n  \"financial\": {\"net_profit\": 55000000000, \"revenue\": 120000000000, \"roe\": 30.5, \"gross_margin\": 91.2, \"debt_ratio\": 25.3, \"institution_holding_pct\": 65.0},\n  \"news\": [{\"title\": \"...\", \"snippet\": \"资讯摘要\", \"date\": \"2025-01-15\", \"source\": \"中泰证券·研报·买入\", \"info_type\": \"report\"}],\n  \"raw_report\": \"LLM完整分析报告(Markdown)\",\n  \"disclaimer\": \"仅供参考，不构成投资建议\"\n}\n```\n\n### 市场分析结果\n\n```json\n{\n  \"date\": \"2025-01-15\",\n  \"core_conclusion\": \"一句话核心结论\",\n  \"indices\": [{\"name\": \"上证指数\", \"close\": 3200.0, \"change_pct\": 0.5}],\n  \"statistics\": {\"up_count\": 3000, \"down_count\": 1500, \"limit_up_count\": 50},\n  \"top_sectors\": [{\"name\": \"半导体\", \"change_pct\": 3.2}],\n  \"bottom_sectors\": [{\"name\": \"房地产\", \"change_pct\": -1.5}],\n  \"sentiment\": \"偏多/中性/偏空\",\n  \"strategy\": \"操作建议\",\n  \"raw_report\": \"LLM完整复盘报告(Markdown)\"\n}\n```\n\n## 数据源\n\n### 推荐配置：妙想金融\n\n配置 `MX_APIKEY` 后，妙想金融自动成为行情数据、财务/资金/估值、资讯搜索的**最高优先级数据源**，覆盖能力最全、数据质量最高。推荐优先配置。\n\n👉 前往 [妙想 Skills 页面](https://dl.dfcfs.com/m/itc4) 获取 API Key\n\n### 行情数据\n\n三级自动容灾，并行竞争 + 超时控制：\n\n| 优先级 | 数据源          | 覆盖能力              | 需要 Key        |\n| --- | ------------ | ----------------- | ------------- |\n| 0   | **妙想金融**     | 行情 + 财务 + 资金 + 估值 | ✅ `MX_APIKEY` |\n| 1   | **Efinance** | 行情 + 板块 + 市场统计    | ❌             |\n| 2   | **AkShare**  | 行情 + 筹码 + 板块      | ❌             |\n\n- 配置 `MX_APIKEY` 后妙想自动成为最高优先级；未配置时从 Efinance 开始\n- 所有数据源**并行请求**，按优先级取第一个有效结果；日K线取行数最多的结果\n- 单数据源超时 10 秒自动降级，任一数据源异常不影响整体分析\n\n### 资讯搜索\n\n五级自动容灾，串行降级：\n\n| 优先级 | 搜索引擎     | 返回内容                   | 需要 Key          |\n| --- | -------- | ---------------------- | --------------- |\n| 0   | **妙想搜索** | 完整正文 + 新闻/研报/公告 + 机构评级 | ✅ `MX_APIKEY`   |\n| 1   | SerpAPI  | snippet                | ✅ `SERPAPI_KEY` |\n| 2   | Tavily   | snippet                | ✅ `TAVILY_KEY`  |\n| 3   | Brave    | snippet                | ✅ `BRAVE_KEY`   |\n| 4   | Bocha    | snippet                | ✅ `BOCHA_KEY`   |\n\n- 妙想搜索返回完整正文，直传 LLM 进行分析；其他引擎仅返回 snippet\n- 研报类型含机构名称和评级（如\"中泰证券·研报·买入\"），LLM 可据此参考机构观点\n\n详见 references/data-sources.md。\n\n## 性能特性\n\n- **并行数据采集**：个股分析的 7 个数据维度（日K线、实时行情、筹码、资金、估值、财务、资讯）并行获取，总耗时取决于最慢的单项\n- **并行数据源竞争**：同一数据维度在多个数据源间并行请求，按优先级取第一个有效结果\n- **超时保护**：单数据源请求超时 10 秒自动降级，避免阻塞\n- **资讯正文直传**：妙想资讯返回完整正文，直传 LLM 在最终分析时一并阅读，保留完整投资信息\n\n## 环境变量\n\n| 变量            | 必填 | 说明                                               |\n| -------------- | -- | ------------------------------------------------ |\n| LLM_API_KEY    | 是  | LLM API Key                                      |\n| LLM_BASE_URL   | 是  | OpenAI 兼容 API 地址                                 |\n| LLM_MODEL      | 是  | 模型名称                                             |\n| MX_APIKEY      | 否  | 妙想金融 API Key（[前往获取](https://dl.dfcfs.com/m/itc4)），配置后自动成为行情数据 + 财务/资金/估值 + 资讯搜索第一优先级 |\n| SERPAPI_KEY    | 否  | SerpAPI 搜索 Key                                   |\n| TAVILY_KEY     | 否  | Tavily 搜索 Key                                    |\n| BRAVE_KEY      | 否  | Brave 搜索 Key                                     |\n| BOCHA_KEY      | 否  | 博查搜索 Key                                         |\n\n## 注意事项\n\n- Efinance / AkShare 为免费接口，无需注册；妙想金融需配置 `MX_APIKEY`\n- 分析结果仅供参考，不构成投资建议\n\nFile v1.0.9:README.md\n\n<div align=\"center\">\n\n# 📈 A 股股票市场分析 Skill\n\n专为 OpenClaw 等智能体设计的 A 股股票分析技能\n\n[![License: MIT-0](https://img.shields.io/badge/License-MIT--0-yellow.svg)](LICENSE)\n[![Python 3.9+](https://img.shields.io/badge/Python-3.9%2B-blue.svg)](https://www.python.org/)\n[![OpenClaw Skill](https://img.shields.io/badge/OpenClaw-Skill-green.svg)](https://github.com/openclaw)\n\n基于 [daily\\_stock\\_analysis](https://github.com/ZhuLinsen/daily_stock_analysis) 项目精简重写，去除 WebUI、通知推送、Agent 问股等非核心功能，聚焦分析能力本身。\n\n</div>\n\n***\n\n## ✨ 功能特性\n\n### 📊 个股分析\n\n输入股票代码，输出结构化分析结果：\n\n- **技术面分析**：MA5/MA10/MA20/MA60 均线、多头排列判断、乖离率、量比\n- **筹码分布**：获利比例、平均成本、集中度\n- **舆情情报**：妙想金融资讯（新闻/研报/公告，LLM 分析）+ 多引擎新闻搜索\n- **实时行情**：当前价、涨跌幅、成交量、换手率等\n- **分析结论**：一句话核心结论 + 评分 + 操作方向 + 精确买卖点位 + 操作检查清单 + 买卖策略\n\n### 🌐 市场分析\n\n每日 A 股市场复盘：\n\n- **主要指数**：上证指数、深证成指、创业板指\n- **市场统计**：涨跌家数、涨停跌停数\n- **板块排名**：领涨 / 领跌板块 Top5\n- **分析结论**：市场情绪判断 + 操作建议 + 完整复盘报告\n\n### 🔄 多源数据架构\n\n#### 推荐配置：妙想金融\n\n配置 `MX_APIKEY` 后，妙想金融自动成为行情数据、财务/资金/估值、资讯搜索的**最高优先级数据源**，覆盖能力最全、数据质量最高。推荐优先配置。\n\n👉 前往 [妙想 Skills 页面](https://dl.dfcfs.com/m/itc4) 获取 API Key\n\n#### 行情数据采用自动容灾策略：\n\n| 优先级 | 数据源          | 说明                          |    需要 Token   |\n| :-: | ------------ | --------------------------- | :-----------: |\n|  0  | **妙想金融**     | 东财妙想 API，覆盖行情 + 财务数据        | ✅ `MX_APIKEY` |\n|  1  | **Efinance** | 基于东财接口，覆盖日 K、实时行情、板块排名、市场统计 |       ❌       |\n|  2  | **AkShare**  | 东财 + 新浪双通道，额外支持筹码分布         |       ❌       |\n\n> - 配置 `MX_APIKEY` 后妙想自动成为最高优先级；未配置时从 Efinance 开始\n> - 任意数据源异常时自动切换到下一级，无需人工干预\n\n## 🚀 快速开始\n\n### 方式一：通过 ClawHub 安装（推荐）\n\n使用 OpenClaw CLI 一键安装：\n\n```bash\nopenclaw skill install stock-analysis-report\n```\n\n安装后即可在 OpenClaw 中直接使用：\n\n```\n分析贵州茅台\n市场分析\n```\n\n### 方式二：本地开发\n\n#### 1. 安装依赖\n\n```bash\npip install -r requirements.txt\n```\n\n#### 2. 配置环境变量\n\n```bash\ncp .env.example .env\n```\n\n编辑 `.env` 文件，填入你的 API Key：\n\n```env\n# LLM 配置（必填）— 支持 DeepSeek 和 OpenAI 兼容模型\nLLM_BASE_URL=https://api.deepseek.com/v1\nLLM_API_KEY=your-api-key-here\nLLM_MODEL=deepseek-chat\n\n# 妙想金融数据（可选，配置后自动成为第一优先级数据源 + 资讯搜索源）\nMX_APIKEY=\n\n# 新闻搜索（至少配置一个，可选）\nSERPAPI_KEY=\nTAVILY_KEY=\nBRAVE_KEY=\nBOCHA_KEY=\n```\n\n> 💡 行情数据源（Efinance / AkShare）均为免费接口，无需配置任何 Token。\n\n#### 3. 调用分析\n\n#### 生成 Markdown 报告（推荐）\n\n```bash\n# 个股分析报告 → reports/{代码}_{日期}.md\npython3 scripts/report.py stock 600519\n\n# 市场分析报告 → reports/market_{日期}.md\npython3 scripts/report.py market\n\n# 同时输出 JSON\npython3 scripts/report.py stock 600519 --json\n\n# 自定义输出目录\npython3 scripts/report.py stock 600519 -o ./my-reports\n```\n\n#### JSON 输出\n\n```bash\npython3 scripts/analyze_stock.py 600519    # 个股分析\npython3 scripts/analyze_market.py          # 市场分析\n```\n\n#### Python API\n\n```python\nimport asyncio\nfrom src.index import analyze_stock, analyze_market\n\n# 个股分析 + 保存报告\nresult = asyncio.run(analyze_stock(\"600519\", save=True))\nprint(result.core_conclusion)   # 一句话核心结论\nprint(result.action)            # 买入/观望/卖出\n\n# 市场分析 + 保存报告\nresult = asyncio.run(analyze_market(save=True))\nprint(result.sentiment)         # 偏多/中性/偏空\n```\n\n#### OpenClaw Handler\n\n```python\nfrom src.index import handler\n\nresult = await handler({\"mode\": \"stock\", \"code\": \"600519\"})\nresult = await handler({\"mode\": \"market\", \"save\": True})\n```\n\n<details>\n<summary>自定义配置</summary>\n\n```python\nfrom src.config import SkillConfig\n\nconfig = SkillConfig(\n    llm_base_url=\"https://api.openai.com/v1\",\n    llm_api_key=\"sk-xxx\",\n    llm_model=\"gpt-4o\",\n)\n\nresult = asyncio.run(analyze_stock(\"000001\", config=config))\n```\n\n</details>\n\n## 📁 项目结构\n\n```\nstock-analysis/\n├── SKILL.md                     # Skill 定义（OpenClaw 标准入口）\n├── manifest.yaml                # 机器可读元数据 + 输入输出 Schema\n├── src/                         # 源代码\n│   ├── index.py                 # Skill 入口（handler + analyze_stock/market）\n│   ├── config.py                # 配置管理（环境变量 + .env）\n│   ├── models.py                # 数据模型定义\n│   ├── report.py                # Markdown 报告生成\n│   ├── analyzer/\n│   │   ├── stock.py             # 个股分析引擎\n│   │   ├── market.py            # 市场分析引擎\n│   │   └── prompts.py           # Prompt 模板\n│   ├── data/\n│   │   ├── provider.py          # 数据源抽象基类\n│   │   ├── efinance_provider.py # Efinance 数据源（优先级 1）\n│   │   ├── akshare_provider.py  # AkShare 数据源（优先级 2）\n│   │   ├── manager.py           # 数据源管理器（多源自动容灾）\n│   │   └── utils.py             # 公共工具（缓存/统计/限流）\n│   ├── search/\n│   │   ├── base.py              # 搜索引擎抽象基类\n│   │   ├── miaoxiang.py         # 妙想金融资讯搜索（优先级 0）\n│   │   ├── serpapi.py           # SerpAPI 搜索\n│   │   ├── tavily.py            # Tavily 搜索\n│   │   ├── brave.py             # Brave 搜索\n│   │   └── bocha.py             # Bocha 搜索\n│   └── llm/\n│       └── client.py            # LLM 客户端（OpenAI 兼容接口）\n├── scripts/                     # CLI 入口脚本\n│   ├── report.py                # 报告生成器（推荐入口）\n│   ├── analyze_stock.py         # 个股分析 JSON 输出\n│   └── analyze_market.py        # 市场分析 JSON 输出\n├── references/                  # 按需加载的详细文档\n│   └── data-sources.md          # 数据源架构详细说明\n├── test/                        # 测试\n├── requirements.txt\n├── config.example.yaml          # YAML 格式示例配置\n├── .env.example\n└── .gitignore\n```\n\n## 🏗️ 架构设计\n\n```\n┌──────────────────────────────────────────┐\n│         SKILL.md / manifest.yaml          │\n│         OpenClaw Skill 定义层             │\n└──────────────────┬───────────────────────┘\n                   │\n┌──────────────────▼───────────────────────┐\n│         src/index.py（接口层）              │\n│  handler()  analyze_stock()  analyze_market() │\n└──────────────────┬───────────────────────┘\n                   │\n┌──────────────────▼───────────────────────┐\n│        src/analyzer/（分析层）              │\n│     组装数据 + 构建 Prompt + 调用 LLM       │\n└──┬───────────────┬───────────┬───────────┘\n   │               │           │\n   ▼               ▼           ▼\n┌────────────┐ ┌──────┐ ┌──────────┐\n│  src/data/ │ │search│ │   llm/   │\n│   数据层    │ │搜索层 │ │  模型层   │\n│ 三级自动容灾 │ │5 引擎 │ │DeepSeek  │\n│            │ │(可扩展)│ │(OpenAI兼容)│\n│ 妙想(可选)  │ └──────┘ └──────────┘\n│  ↓ 失败     │\n│ Efinance   │\n│  ↓ 失败     │\n│ AkShare    │\n└────────────┘\n```\n\n每层均通过抽象基类解耦，可独立扩展：\n\n- **数据层**：实现 `MarketDataProvider` 即可接入新数据源，`DataProviderManager` 自动管理容灾切换\n- **搜索层**：实现 `NewsSearchEngine` 即可接入新搜索引擎\n- **模型层**：所有 OpenAI 兼容 API 均可直接使用\n\n### 数据源能力矩阵\n\n| 能力      | 妙想金融 | Efinance | AkShare |\n| ------- | :--: | :------: | :-----: |\n| 股票基本信息  |   ✅  |     ✅    |    ✅    |\n| 日 K 线数据 |   ✅  |     ✅    |    ✅    |\n| 实时行情    |   ✅  |     ✅    |    ✅    |\n| 筹码分布    |   ❌  |     ❌    |    ✅    |\n| 板块排名    |   ❌  |     ✅    |    ✅    |\n| 市场统计    |   ❌  |     ✅    |    ✅    |\n| 指数数据    |   ✅  |     ✅    |    ✅    |\n| 财务数据    |   ✅  |     ❌    |    ❌    |\n| 主力资金    |   ✅  |     ❌    |    ❌    |\n| 估值数据    |   ✅  |     ❌    |    ❌    |\n\n### 资讯搜索架构\n\n| 优先级 | 搜索引擎     | 数据源          |     需要 Key    | 返回内容            |\n| :-: | -------- | ------------ | :-----------: | --------------- |\n|  0  | **妙想搜索** | 东财妙想资讯 API   | ✅ `MX_APIKEY` | 完整正文 + 新闻/研报/公告 |\n|  1  | SerpAPI  | Google 搜索    |       ✅       | snippet         |\n|  2  | Tavily   | Tavily AI 搜索 |       ✅       | snippet         |\n|  3  | Brave    | Brave 搜索     |       ✅       | snippet         |\n|  4  | Bocha    | 博查搜索         |       ✅       | snippet         |\n\n> - 配置 `MX_APIKEY` 后妙想搜索自动成为最高优先级，返回新闻 + 研报 + 公告三种类型\n> - 妙想搜索返回完整正文，直传 LLM 进行分析；其他引擎仅返回 snippet\n> - 研报类型含机构名称和评级（如\"中泰证券·研报·买入\"），LLM 可据此参考机构观点\n\n### 反封禁策略\n\n参照原项目实现，内置多项反封禁措施：\n\n- 随机 User-Agent 轮换（5 组 UA）\n- 请求间随机 Sleep（1.5 \\~ 3.0 秒抖动）\n- 全市场实时行情缓存（TTL 600 秒）\n- 涨停 / 跌停精确计算（科创板 / 创业板 20%、北交所 30%、ST 5%、普通 10%）\n\n## ⚙️ 配置说明\n\n| 环境变量                |  必填 | 默认值                           | 说明                                                                  |\n| ------------------- | :-: | ----------------------------- | ------------------------------------------------------------------- |\n| `LLM_BASE_URL`      |  ✅  | `https://api.deepseek.com/v1` | OpenAI 兼容 API 地址                                                    |\n| `LLM_API_KEY`       |  ✅  | —                             | API Key                                                             |\n| `LLM_MODEL`         |  ✅  | `deepseek-chat`               | 模型名称                                                                |\n| `SERPAPI_KEY`       |  ❌  | —                             | SerpAPI Key                                                         |\n| `TAVILY_KEY`        |  ❌  | —                             | Tavily Key                                                          |\n| `BRAVE_KEY`         |  ❌  | —                             | Brave Search Key                                                    |\n| `BOCHA_KEY`         |  ❌  | —                             | 博查搜索 Key                                                            |\n| `MX_APIKEY`         |  ❌  | —                             | 妙想金融数据 API Key（[前往获取](https://dl.dfcfs.com/m/itc4)），配置后自动成为第一优先级数据源 |\n| `BIAS_THRESHOLD`    |  ❌  | `5.0`                         | 乖离率阈值（%）                                                            |\n| `NEWS_MAX_AGE_DAYS` |  ❌  | `3`                           | 新闻最大时效（天）                                                           |\n| `ENABLE_CHIP`       |  ❌  | `true`                        | 是否启用筹码分布                                                            |\n| `LOG_LEVEL`         |  ❌  | `INFO`                        | 日志级别：DEBUG/INFO/WARNING/ERROR                                       |\n\n## 📋 分析结果结构\n\n<details>\n<summary>个股分析 — StockAnalysisResult</summary>\n\n| 字段                   | 类型               | 说明                   |\n| -------------------- | ---------------- | -------------------- |\n| `stock_code`         | str              | 股票代码                 |\n| `stock_name`         | str              | 股票名称                 |\n| `core_conclusion`    | str              | 一句话核心结论              |\n| `score`              | int              | 评分 0-100             |\n| `action`             | str              | 操作方向：买入/观望/卖出        |\n| `trend`              | str              | 趋势判断：看多/震荡/看空        |\n| `buy_price`          | float            | 建议买入价                |\n| `stop_loss_price`    | float            | 止损价                  |\n| `target_price`       | float            | 目标价                  |\n| `checklist`          | list\\[CheckItem] | 操作检查清单               |\n| `risk_alerts`        | list\\[str]       | 风险警报                 |\n| `positive_catalysts` | list\\[str]       | 利好催化                 |\n| `strategy`           | str              | 买卖策略建议               |\n| `raw_report`         | str              | LLM 完整分析报告（Markdown） |\n| `disclaimer`         | str              | 免责声明                 |\n\n</details>\n\n<details>\n<summary>市场分析 — MarketAnalysisResult</summary>\n\n| 字段                | 类型                | 说明                   |\n| ----------------- | ----------------- | -------------------- |\n| `date`            | str               | 分析日期                 |\n| `core_conclusion` | str               | 一句话核心结论              |\n| `indices`         | list\\[IndexData]  | 主要指数数据               |\n| `statistics`      | MarketStatistics  | 涨跌统计                 |\n| `top_sectors`     | list\\[SectorData] | 领涨板块                 |\n| `bottom_sectors`  | list\\[SectorData] | 领跌板块                 |\n| `sentiment`       | str               | 市场情绪：偏多/中性/偏空        |\n| `strategy`        | str               | 操作建议                 |\n| `raw_report`      | str               | LLM 完整复盘报告（Markdown） |\n| `disclaimer`      | str               | 免责声明                 |\n\n</details>\n\n## ⚠️ 注意事项\n\n- **免 Token 数据源**：Efinance / AkShare 均为免费接口，无需注册；妙想金融需配置 `MX_APIKEY`\n- **自动容灾**：任一数据源异常时自动切换至下一级，日志输出 `[数据源切换]` 提示\n- **网络环境**：东财接口在企业内网 / 代理下可能受限，系统会自动回退至新浪通道\n- **API 限流**：搜索 API 有调用频率限制，频繁调用可能触发限流\n- **数据时效**：实时行情基于最新日线数据，盘中数据可能有延迟\n- **无状态设计**：Skill 不保存任何分析结果，每次调用独立执行\n\n## 📄 License\n\n本项目基于 [MIT-0 License](LICENSE) 开源。\n\n## ⚖️ 免责声明\n\n本项目所有分析结果仅供参考，不构成投资建议。股市有风险，投资需谨慎。\n\nFile v1.0.9:_meta.json\n\n{\n  \"ownerId\": \"kn7da87j1vga39tq7bxyc830gh834079\",\n  \"slug\": \"stock-analysis-report\",\n  \"version\": \"1.0.9\",\n  \"publishedAt\": 1776823731064\n}\n\nFile v1.0.9:skill-card.md\n\n## Description:\n\nAnalyzes A-share stocks and the broader A-share market across fundamentals, valuation, capital flows, technical indicators, chip distribution, and news or research signals to produce structured scores and operating suggestions.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[derrors](https://clawhub.ai/user/derrors)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nExternal users and developers use this skill to generate A-share stock deep-dive reports or daily A-share market reviews with structured conclusions, risk alerts, and suggested trading posture. It is intended for analysis support only and the artifact states that results are not investment advice.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: A caller-controlled LLM endpoint could expose the configured LLM API key or send market, news, and prompt content to an unintended provider.\n\nMitigation: Install only in a trusted environment, restrict allowed LLM endpoints, and do not expose the handler to untrusted callers until configuration fields are allowlisted.\n\nRisk: Saved reports may be written outside the intended reports folder when an unsafe output path is accepted.\n\nMitigation: Keep saved report paths under a known reports directory and validate or constrain output_dir before enabling report persistence.\n\nRisk: Market data, news content, and user prompts may be transmitted to configured LLM and search providers.\n\nMitigation: Review configured providers, keys, and data-sharing expectations before use, and treat generated investment analysis as support material rather than financial advice.\n\nRisk: Unpinned Python dependencies can change behavior across installs.\n\nMitigation: Pin dependency versions and review dependency updates before deployment.\n\n## Reference(s):\n\n- [ClawHub Skill Page](https://clawhub.ai/derrors/skills/stock-analysis-report)\n- [Miaoxiang Skills Page](https://dl.dfcfs.com/m/itc4)\n\n## Skill Output:\n\n**Output Type(s):** [Analysis, Markdown, JSON, Files, Guidance]\n\n**Output Format:** [Markdown reports and JSON objects with stock or market analysis fields]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Can save reports locally when requested; outputs include disclaimers and may include scores, suggested action, price levels, risk alerts, checklist items, news summaries, and raw LLM report text.]\n\n## Skill Version(s):\n\n1.0.9 (source: server release metadata, SKILL.md frontmatter, manifest.yaml)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nFile v1.0.9:config.example.yaml\n\n# LLM 配置（必填）\nllm_base_url: \"https://api.deepseek.com/v1\"\nllm_api_key: \"your-api-key-here\"\nllm_model: \"deepseek-chat\"\n\n# 新闻搜索（至少配置一个）\nserpapi_key: \"\"\ntavily_key: \"\"\nbrave_key: \"\"\nbocha_key: \"\"\n\n# 妙想金融数据源（可选）— 配置后自动成为第一优先级\nmx_apikey: \"\"\n\n# 分析参数\nbias_threshold: 5.0\nnews_max_age_days: 3\nenable_chip: true\n\n# 日志级别：DEBUG / INFO / WARNING / ERROR\nlog_level: \"INFO\"\n\nFile v1.0.9:manifest.yaml\n\nname: stock-analysis\nversion: 1.0.9\nauthor: Derrors\nlicense: MIT-0\nruntime: python\nentry: src/index.py\ndescription: A股市场分析与个股深度分析技能，支持基本面（财务/估值）、资金面（主力资金/DDX）、技术面、筹码分布、舆情情报等多维度分析\n\ncategories:\n  - finance\n  - analysis\n\nrequires:\n  env:\n    - LLM_API_KEY\n    - LLM_BASE_URL\n    - LLM_MODEL\n  bins:\n    - python3\n\noptional:\n  env:\n    - MX_APIKEY\n    - SERPAPI_KEY\n    - TAVILY_KEY\n    - BRAVE_KEY\n    - BOCHA_KEY\n    - BIAS_THRESHOLD\n    - NEWS_MAX_AGE_DAYS\n    - ENABLE_CHIP\n    - LOG_LEVEL\n\ninstall:\n  - kind: uv\n    command: pip install -r requirements.txt\n\nconfig:\n  - key: llm_base_url\n    type: string\n    required: true\n    default: \"https://api.deepseek.com/v1\"\n    description: OpenAI兼容API地址\n  - key: llm_api_key\n    type: string\n    required: true\n    description: LLM API Key\n  - key: llm_model\n    type: string\n    required: true\n    default: \"deepseek-chat\"\n    description: 模型名称\n  - key: mx_apikey\n    type: string\n    required: false\n    description: 妙想金融API Key（配置后自动成为行情数据+财务/资金/估值+资讯搜索第一优先级）\n  - key: serpapi_key\n    type: string\n    required: false\n    description: SerpAPI搜索Key\n  - key: tavily_key\n    type: string\n    required: false\n    description: Tavily搜索Key\n  - key: brave_key\n    type: string\n    required: false\n    description: Brave搜索Key\n  - key: bocha_key\n    type: string\n    required: false\n    description: 博查搜索Key\n  - key: bias_threshold\n    type: number\n    required: false\n    default: 5.0\n    description: 乖离率阈值(%)\n  - key: news_max_age_days\n    type: integer\n    required: false\n    default: 3\n    description: 新闻最大时效(天)\n  - key: enable_chip\n    type: boolean\n    required: false\n    default: true\n    description: 是否启用筹码分布\n  - key: log_level\n    type: string\n    required: false\n    default: \"INFO\"\n    description: 日志级别 DEBUG/INFO/WARNING/ERROR\n\ninput:\n  type: object\n  properties:\n    mode:\n      type: string\n      enum: [stock, market]\n      description: 分析模式\n    code:\n      type: string\n      description: A股股票代码(mode=stock时必填)\n    save:\n      type: boolean\n      description: 是否保存Markdown报告到reports/目录\n    output_dir:\n      type: string\n      description: 自定义报告输出目录(需save=true)\n  required: [mode]\n\noutput:\n  type: object\n  properties:\n    stock_code:\n      type: string\n      description: 股票代码\n    stock_name:\n      type: string\n      description: 股票名称\n    core_conclusion:\n      type: string\n      description: 一句话核心结论\n    score:\n      type: integer\n      description: 评分0-100\n    action:\n      type: string\n      description: 操作方向(买入/观望/卖出)\n    trend:\n      type: string\n      description: 趋势判断(看多/震荡/看空)\n    buy_price:\n      type: number\n      description: 建议买入价\n    stop_loss_price:\n      type: number\n      description: 止损价\n    target_price:\n      type: number\n      description: 目标价\n    capital_flow:\n      type: object\n      description: 主力资金流向(超大单/大单/中单/小单净额+DDX/DDY/DDZ)\n    valuation:\n      type: object\n      description: 估值数据(PE_TTM/PB/历史分位)\n    financial:\n      type: object\n      description: 核心财务指标(净利润/营收/ROE/毛利率/资产负债率/机构持股)\n    sentiment:\n      type: string\n      description: 市场情绪(偏多/中性/偏空)\n    raw_report:\n      type: string\n      description: LLM完整分析报告(Markdown)\n\nFile v1.0.9:requirements.txt\n\nopenai>=1.0.0\nefinance>=0.5.0\nakshare>=1.10.0\nnumpy>=1.24.0\npandas>=2.0.0\nhttpx>=0.25.0\nrequests>=2.28.0\npython-dotenv>=1.0.0\n\nArchive v1.0.8: 41 files, 69569 bytes\n\nFiles: config.example.yaml (461b), manifest.yaml (3674b), README.md (16937b), requirements.txt (138b), scripts/analyze_market.py (727b), scripts/analyze_stock.py (835b), scripts/report.py (1828b), SKILL.md (9347b), src/__init__.py (1b), src/analyzer/__init__.py (0b), src/analyzer/market.py (3998b), src/analyzer/prompts.py (4800b), src/analyzer/stock.py (21758b), src/config.py (2254b), src/data/__init__.py (0b), src/data/akshare_provider.py (16773b), src/data/efinance_provider.py (13216b), src/data/manager.py (8595b), src/data/miaoxiang_provider.py (29278b), src/data/provider.py (2507b), src/data/pytdx_provider.py (10921b), src/data/utils.py (5193b), src/index.py (7115b), src/llm/__init__.py (0b), src/llm/client.py (2742b), src/models.py (4682b), src/report.py (19641b), src/search/__init__.py (0b), src/search/base.py (428b), src/search/bocha.py (1702b), src/search/brave.py (1711b), src/search/miaoxiang.py (4550b), src/search/serpapi.py (1534b), src/search/tavily.py (1505b), test/__init__.py (0b), test/test_config.py (3163b), test/test_index.py (1973b), test/test_manager.py (12835b), test/test_models.py (3012b), test/test_utils.py (2517b), _meta.json (140b)\n\nFile v1.0.8:SKILL.md\n\n---\n\nname: stock-analysis\ndescription: |\n  A股市场分析与个股深度分析技能。支持基本面（财务指标/估值分位）、资金面（主力资金/DDX/DDY/DDZ）、技术面（均线/乖离率/量比）、筹码分布、舆情情报（新闻/研报/公告）等多维度分析，输出结构化评分与操作建议。\n\nTriggers: \"分析股票\", \"个股分析\", \"市场分析\", \"A股分析\", \"stock analysis\", \"analyze stock\", \"market analysis\", \"股票评分\", \"买卖建议\", \"涨停分析\"\n\nDoes NOT trigger:\n\n- 简单的股价查询（无需深度分析）\n- 港股/美股/非A股市场分析\n- 基金/债券/期货分析\n\nOutput: 结构化分析报告（评分0-100、操作方向、买卖点位、风险提示、检查清单）\nversion: 1.0.6\nlicense: MIT-0\nmetadata:\n  openclaw:\n    requires:\n      env:\n        - LLM_API_KEY\n        - LLM_BASE_URL\n        - LLM_MODEL\n      bins:\n        - python3\n    optional:\n      env:\n        - MX_APIKEY\n        - SERPAPI_KEY\n        - TAVILY_KEY\n        - BRAVE_KEY\n        - BOCHA_KEY\n        - BIAS_THRESHOLD\n        - NEWS_MAX_AGE_DAYS\n        - ENABLE_CHIP\n        - LOG_LEVEL\n    primaryEnv: LLM_API_KEY\n    emoji: \"📈\"\n    install:\n      - kind: uv\n        command: pip install -r requirements.txt\n\n---\n\n# A股股票市场分析 Skill\n\n## 功能\n\n### 个股分析\n\n输入股票代码，输出结构化分析结果：\n\n- **基本面**：净利润、营收、ROE、毛利率、资产负债率、机构持股比例、盈利预测\n- **估值**：PE(TTM)、PB、历史分位\n- **资金面**：主力资金流向（超大单/大单/中单/小单净额）、DDX/DDY/DDZ 指标\n- **技术面**：MA5/MA10/MA20/MA60 均线、多头排列、乖离率、量比\n- **筹码分布**：获利比例、平均成本、集中度\n- **舆情情报**：妙想金融资讯（新闻/研报/公告，LLM 摘要提取）+ 多引擎新闻搜索\n- **实时行情**：当前价、涨跌幅、成交量、换手率\n- **分析结论**：评分 + 操作方向 + 买卖点位 + 检查清单 + 风险提示\n\n### 市场分析\n\n每日 A 股市场复盘：\n\n- 主要指数（上证/深证/创业板）\n- 涨跌统计（涨跌家数、涨停跌停数）\n- 板块排名（领涨/领跌 Top5）\n- 市场情绪判断 + 操作建议\n\n## 使用方式\n\n### 生成分析报告（推荐）\n\n```bash\n# 个股分析报告 → 保存到 reports/{代码}_{日期}.md\npython3 {baseDir}/scripts/report.py stock 600519\n\n# 市场分析报告 → 保存到 reports/market_{日期}.md\npython3 {baseDir}/scripts/report.py market\n\n# 同时输出 JSON\npython3 {baseDir}/scripts/report.py stock 600519 --json\n\n# 自定义输出目录\npython3 {baseDir}/scripts/report.py stock 600519 -o ./my-reports\n```\n\n### JSON 输出\n\n```bash\npython3 {baseDir}/scripts/analyze_stock.py 600519\npython3 {baseDir}/scripts/analyze_market.py\n```\n\n### Handler 调用\n\n```python\nfrom src.index import handler\nresult = await handler({\"mode\": \"stock\", \"code\": \"600519\"})\nresult = await handler({\"mode\": \"market\"})\nresult = await handler({\"mode\": \"stock\", \"code\": \"600519\", \"save\": True})\nresult = await handler({\"mode\": \"stock\", \"code\": \"600519\", \"save\": True, \"output_dir\": \"./reports\"})\n```\n\n## 输入格式\n\n| 字段          | 类型      | 必填            | 说明                            |\n| ----------- | ------- | ------------- | ----------------------------- |\n| mode        | string  | 是             | \"stock\" 或 \"market\"            |\n| code        | string  | mode=stock时必填 | A股股票代码，如 \"600519\"             |\n| save        | boolean | 否             | 是否保存 Markdown 报告到 reports/ 目录 |\n| output_dir | string  | 否             | 自定义报告输出目录（需 save=true）        |\n\n## 输出格式\n\n### 个股分析结果\n\n```json\n{\n  \"stock_code\": \"600519\",\n  \"stock_name\": \"贵州茅台\",\n  \"core_conclusion\": \"一句话核心结论\",\n  \"score\": 75,\n  \"action\": \"买入/观望/卖出\",\n  \"trend\": \"看多/震荡/看空\",\n  \"buy_price\": 1800.0,\n  \"stop_loss_price\": 1700.0,\n  \"target_price\": 2000.0,\n  \"checklist\": [{\"condition\": \"...\", \"status\": \"✅/❌\", \"detail\": \"...\"}],\n  \"risk_alerts\": [\"风险1\", \"风险2\"],\n  \"positive_catalysts\": [\"利好1\"],\n  \"strategy\": \"买卖策略建议\",\n  \"stock_info\": {\"code\": \"600519\", \"name\": \"贵州茅台\", \"industry\": \"白酒\", \"market_cap\": 2200000000000},\n  \"realtime\": {\"price\": 1800.0, \"change_pct\": 1.5, \"turnover_rate\": 0.8},\n  \"tech\": {\"ma5\": 1780.0, \"ma10\": 1760.0, \"ma20\": 1740.0, \"ma60\": 1700.0, \"is_bullish_alignment\": true, \"bias\": 2.1, \"volume_ratio\": 1.2},\n  \"chip\": {\"profit_ratio\": 75.0, \"avg_cost\": 1720.0, \"concentration\": 12.5},\n  \"capital_flow\": {\"super_large_net\": 500000000, \"large_net\": 200000000, \"ddx\": 0.26, \"ddy\": 0.15, \"ddz\": 5.3},\n  \"valuation\": {\"pe_ttm\": 28.5, \"pb\": 8.2, \"pe_percentile\": 45.0, \"pb_percentile\": 30.0},\n  \"financial\": {\"net_profit\": 55000000000, \"revenue\": 120000000000, \"roe\": 30.5, \"gross_margin\": 91.2, \"debt_ratio\": 25.3, \"institution_holding_pct\": 65.0},\n  \"news\": [{\"title\": \"...\", \"snippet\": \"LLM提取摘要\", \"date\": \"2025-01-15\", \"source\": \"中泰证券·研报·买入\", \"info_type\": \"report\"}],\n  \"raw_report\": \"LLM完整分析报告(Markdown)\",\n  \"disclaimer\": \"仅供参考，不构成投资建议\"\n}\n```\n\n### 市场分析结果\n\n```json\n{\n  \"date\": \"2025-01-15\",\n  \"core_conclusion\": \"一句话核心结论\",\n  \"indices\": [{\"name\": \"上证指数\", \"close\": 3200.0, \"change_pct\": 0.5}],\n  \"statistics\": {\"up_count\": 3000, \"down_count\": 1500, \"limit_up_count\": 50},\n  \"top_sectors\": [{\"name\": \"半导体\", \"change_pct\": 3.2}],\n  \"bottom_sectors\": [{\"name\": \"房地产\", \"change_pct\": -1.5}],\n  \"sentiment\": \"偏多/中性/偏空\",\n  \"strategy\": \"操作建议\",\n  \"raw_report\": \"LLM完整复盘报告(Markdown)\"\n}\n```\n\n## 数据源\n\n### 推荐配置：妙想金融\n\n配置 `MX_APIKEY` 后，妙想金融自动成为行情数据、财务/资金/估值、资讯搜索的**最高优先级数据源**，覆盖能力最全、数据质量最高。推荐优先配置。\n\n👉 前往 [妙想 Skills 页面](https://dl.dfcfs.com/m/itc4) 获取 API Key\n\n### 行情数据\n\n四级自动容灾，并行竞争 + 超时控制：\n\n| 优先级 | 数据源          | 覆盖能力              | 需要 Key        |\n| --- | ------------ | ----------------- | ------------- |\n| 0   | **妙想金融**     | 行情 + 财务 + 资金 + 估值 | ✅ `MX_APIKEY` |\n| 1   | **Efinance** | 行情 + 板块 + 市场统计    | ❌             |\n| 2   | **AkShare**  | 行情 + 筹码 + 板块      | ❌             |\n| 3   | **Pytdx**    | 行情 + 指数（兜底）       | ❌             |\n\n- 配置 `MX_APIKEY` 后妙想自动成为最高优先级；未配置时从 Efinance 开始\n- 所有数据源**并行请求**，按优先级取第一个有效结果；日K线取行数最多的结果\n- 单数据源超时 10 秒自动降级，任一数据源异常不影响整体分析\n\n### 资讯搜索\n\n五级自动容灾，串行降级：\n\n| 优先级 | 搜索引擎     | 返回内容                   | 需要 Key          |\n| --- | -------- | ---------------------- | --------------- |\n| 0   | **妙想搜索** | 完整正文 + 新闻/研报/公告 + 机构评级 | ✅ `MX_APIKEY`   |\n| 1   | SerpAPI  | snippet                | ✅ `SERPAPI_KEY` |\n| 2   | Tavily   | snippet                | ✅ `TAVILY_KEY`  |\n| 3   | Brave    | snippet                | ✅ `BRAVE_KEY`   |\n| 4   | Bocha    | snippet                | ✅ `BOCHA_KEY`   |\n\n- 妙想搜索返回完整正文，由 LLM 自动提取核心摘要；其他引擎仅返回 snippet\n- 研报类型含机构名称和评级（如\"中泰证券·研报·买入\"），LLM 可据此参考机构观点\n\n详见 references/data-sources.md。\n\n## 性能特性\n\n- **并行数据采集**：个股分析的 7 个数据维度（日K线、实时行情、筹码、资金、估值、财务、资讯）并行获取，总耗时取决于最慢的单项\n- **并行数据源竞争**：同一数据维度在多个数据源间并行请求，按优先级取第一个有效结果\n- **超时保护**：单数据源请求超时 10 秒自动降级，避免阻塞\n- **LLM 摘要提取**：妙想资讯返回完整正文，由 LLM 批量提取核心摘要，保留关键投资信息\n\n## 环境变量\n\n| 变量            | 必填 | 说明                                               |\n| -------------- | -- | ------------------------------------------------ |\n| LLM_API_KEY    | 是  | LLM API Key                                      |\n| LLM_BASE_URL   | 是  | OpenAI 兼容 API 地址                                 |\n| LLM_MODEL      | 是  | 模型名称                                             |\n| MX_APIKEY      | 否  | 妙想金融 API Key（[前往获取](https://dl.dfcfs.com/m/itc4)），配置后自动成为行情数据 + 财务/资金/估值 + 资讯搜索第一优先级 |\n| SERPAPI_KEY    | 否  | SerpAPI 搜索 Key                                   |\n| TAVILY_KEY     | 否  | Tavily 搜索 Key                                    |\n| BRAVE_KEY      | 否  | Brave 搜索 Key                                     |\n| BOCHA_KEY      | 否  | 博查搜索 Key                                         |\n\n## 注意事项\n\n- Efinance / AkShare / Pytdx 为免费接口，无需注册；妙想金融需配置 `MX_APIKEY`\n- 分析结果仅供参考，不构成投资建议\n\nFile v1.0.8:README.md\n\n<div align=\"center\">\n\n# 📈 A 股股票市场分析 Skill\n\n专为 OpenClaw 等智能体设计的 A 股股票分析技能\n\n[![License: MIT-0](https://img.shields.io/badge/License-MIT--0-yellow.svg)](LICENSE)\n[![Python 3.9+](https://img.shields.io/badge/Python-3.9%2B-blue.svg)](https://www.python.org/)\n[![OpenClaw Skill](https://img.shields.io/badge/OpenClaw-Skill-green.svg)](https://github.com/openclaw)\n\n基于 [daily\\_stock\\_analysis](https://github.com/ZhuLinsen/daily_stock_analysis) 项目精简重写，去除 WebUI、通知推送、Agent 问股等非核心功能，聚焦分析能力本身。\n\n</div>\n\n***\n\n## ✨ 功能特性\n\n### 📊 个股分析\n\n输入股票代码，输出结构化分析结果：\n\n- **技术面分析**：MA5/MA10/MA20/MA60 均线、多头排列判断、乖离率、量比\n- **筹码分布**：获利比例、平均成本、集中度\n- **舆情情报**：妙想金融资讯（新闻/研报/公告）+ 多引擎新闻搜索\n- **实时行情**：当前价、涨跌幅、成交量、换手率等\n- **分析结论**：一句话核心结论 + 评分 + 操作方向 + 精确买卖点位 + 操作检查清单 + 买卖策略\n\n### 🌐 市场分析\n\n每日 A 股市场复盘：\n\n- **主要指数**：上证指数、深证成指、创业板指\n- **市场统计**：涨跌家数、涨停跌停数\n- **板块排名**：领涨 / 领跌板块 Top5\n- **分析结论**：市场情绪判断 + 操作建议 + 完整复盘报告\n\n### 🔄 多源数据架构\n\n#### 推荐配置：妙想金融\n\n配置 `MX_APIKEY` 后，妙想金融自动成为行情数据、财务/资金/估值、资讯搜索的**最高优先级数据源**，覆盖能力最全、数据质量最高。推荐优先配置。\n\n👉 前往 [妙想 Skills 页面](https://dl.dfcfs.com/m/itc4) 获取 API Key\n\n#### 行情数据采用自动容灾策略：\n\n| 优先级 | 数据源          | 说明                          |    需要 Token   |\n| :-: | ------------ | --------------------------- | :-----------: |\n|  0  | **妙想金融**     | 东财妙想 API，覆盖行情 + 财务数据        | ✅ `MX_APIKEY` |\n|  1  | **Efinance** | 基于东财接口，覆盖日 K、实时行情、板块排名、市场统计 |       ❌       |\n|  2  | **AkShare**  | 东财 + 新浪双通道，额外支持筹码分布         |       ❌       |\n|  3  | **Pytdx**    | 直连通达信行情服务器，支持日 K、实时行情、指数数据  |       ❌       |\n\n> - 配置 `MX_APIKEY` 后妙想自动成为最高优先级；未配置时从 Efinance 开始\n> - 任意数据源异常时自动切换到下一级，无需人工干预\n\n## 🚀 快速开始\n\n### 方式一：通过 ClawHub 安装（推荐）\n\n使用 OpenClaw CLI 一键安装：\n\n```bash\nopenclaw skill install stock-analysis-report\n```\n\n安装后即可在 OpenClaw 中直接使用：\n\n```\n分析贵州茅台\n市场分析\n```\n\n### 方式二：本地开发\n\n#### 1. 安装依赖\n\n```bash\npip install -r requirements.txt\n```\n\n#### 2. 配置环境变量\n\n```bash\ncp .env.example .env\n```\n\n编辑 `.env` 文件，填入你的 API Key：\n\n```env\n# LLM 配置（必填）— 支持 DeepSeek 和 OpenAI 兼容模型\nLLM_BASE_URL=https://api.deepseek.com/v1\nLLM_API_KEY=your-api-key-here\nLLM_MODEL=deepseek-chat\n\n# 妙想金融数据（可选，配置后自动成为第一优先级数据源 + 资讯搜索源）\nMX_APIKEY=\n\n# 新闻搜索（至少配置一个，可选）\nSERPAPI_KEY=\nTAVILY_KEY=\nBRAVE_KEY=\nBOCHA_KEY=\n```\n\n> 💡 行情数据源（Efinance / AkShare / Pytdx）均为免费接口，无需配置任何 Token。\n\n#### 3. 调用分析\n\n#### 生成 Markdown 报告（推荐）\n\n```bash\n# 个股分析报告 → reports/{代码}_{日期}.md\npython3 scripts/report.py stock 600519\n\n# 市场分析报告 → reports/market_{日期}.md\npython3 scripts/report.py market\n\n# 同时输出 JSON\npython3 scripts/report.py stock 600519 --json\n\n# 自定义输出目录\npython3 scripts/report.py stock 600519 -o ./my-reports\n```\n\n#### JSON 输出\n\n```bash\npython3 scripts/analyze_stock.py 600519    # 个股分析\npython3 scripts/analyze_market.py          # 市场分析\n```\n\n#### Python API\n\n```python\nimport asyncio\nfrom src.index import analyze_stock, analyze_market\n\n# 个股分析 + 保存报告\nresult = asyncio.run(analyze_stock(\"600519\", save=True))\nprint(result.core_conclusion)   # 一句话核心结论\nprint(result.action)            # 买入/观望/卖出\n\n# 市场分析 + 保存报告\nresult = asyncio.run(analyze_market(save=True))\nprint(result.sentiment)         # 偏多/中性/偏空\n```\n\n#### OpenClaw Handler\n\n```python\nfrom src.index import handler\n\nresult = await handler({\"mode\": \"stock\", \"code\": \"600519\"})\nresult = await handler({\"mode\": \"market\", \"save\": True})\n```\n\n<details>\n<summary>自定义配置</summary>\n\n```python\nfrom src.config import SkillConfig\n\nconfig = SkillConfig(\n    llm_base_url=\"https://api.openai.com/v1\",\n    llm_api_key=\"sk-xxx\",\n    llm_model=\"gpt-4o\",\n)\n\nresult = asyncio.run(analyze_stock(\"000001\", config=config))\n```\n\n</details>\n\n## 📁 项目结构\n\n```\nstock-analysis/\n├── SKILL.md                     # Skill 定义（OpenClaw 标准入口）\n├── manifest.yaml                # 机器可读元数据 + 输入输出 Schema\n├── src/                         # 源代码\n│   ├── index.py                 # Skill 入口（handler + analyze_stock/market）\n│   ├── config.py                # 配置管理（环境变量 + .env）\n│   ├── models.py                # 数据模型定义\n│   ├── report.py                # Markdown 报告生成\n│   ├── analyzer/\n│   │   ├── stock.py             # 个股分析引擎\n│   │   ├── market.py            # 市场分析引擎\n│   │   └── prompts.py           # Prompt 模板\n│   ├── data/\n│   │   ├── provider.py          # 数据源抽象基类\n│   │   ├── efinance_provider.py # Efinance 数据源（优先级 1）\n│   │   ├── akshare_provider.py  # AkShare 数据源（优先级 2）\n│   │   ├── pytdx_provider.py    # Pytdx 数据源（优先级 3）\n│   │   ├── manager.py           # 数据源管理器（多源自动容灾）\n│   │   └── utils.py             # 公共工具（缓存/统计/限流）\n│   ├── search/\n│   │   ├── base.py              # 搜索引擎抽象基类\n│   │   ├── miaoxiang.py         # 妙想金融资讯搜索（优先级 0）\n│   │   ├── serpapi.py           # SerpAPI 搜索\n│   │   ├── tavily.py            # Tavily 搜索\n│   │   ├── brave.py             # Brave 搜索\n│   │   └── bocha.py             # Bocha 搜索\n│   └── llm/\n│       └── client.py            # LLM 客户端（OpenAI 兼容接口）\n├── scripts/                     # CLI 入口脚本\n│   ├── report.py                # 报告生成器（推荐入口）\n│   ├── analyze_stock.py         # 个股分析 JSON 输出\n│   └── analyze_market.py        # 市场分析 JSON 输出\n├── references/                  # 按需加载的详细文档\n│   └── data-sources.md          # 数据源架构详细说明\n├── test/                        # 测试\n├── requirements.txt\n├── config.example.yaml          # YAML 格式示例配置\n├── .env.example\n└── .gitignore\n```\n\n## 🏗️ 架构设计\n\n```\n┌──────────────────────────────────────────┐\n│         SKILL.md / manifest.yaml          │\n│         OpenClaw Skill 定义层             │\n└──────────────────┬───────────────────────┘\n                   │\n┌──────────────────▼───────────────────────┐\n│         src/index.py（接口层）              │\n│  handler()  analyze_stock()  analyze_market() │\n└──────────────────┬───────────────────────┘\n                   │\n┌──────────────────▼───────────────────────┐\n│        src/analyzer/（分析层）              │\n│     组装数据 + 构建 Prompt + 调用 LLM       │\n└──┬───────────────┬───────────┬───────────┘\n   │               │           │\n   ▼               ▼           ▼\n┌────────────┐ ┌──────┐ ┌──────────┐\n│  src/data/ │ │search│ │   llm/   │\n│   数据层    │ │搜索层 │ │  模型层   │\n│ 四级自动容灾 │ │5 引擎 │ │DeepSeek  │\n│            │ │(可扩展)│ │(OpenAI兼容)│\n│ 妙想(可选)  │ └──────┘ └──────────┘\n│  ↓ 失败     │\n│ Efinance   │\n│  ↓ 失败     │\n│ AkShare    │\n│  ↓ 失败     │\n│ Pytdx      │\n└────────────┘\n```\n\n每层均通过抽象基类解耦，可独立扩展：\n\n- **数据层**：实现 `MarketDataProvider` 即可接入新数据源，`DataProviderManager` 自动管理容灾切换\n- **搜索层**：实现 `NewsSearchEngine` 即可接入新搜索引擎\n- **模型层**：所有 OpenAI 兼容 API 均可直接使用\n\n### 数据源能力矩阵\n\n| 能力      | 妙想金融 | Efinance | AkShare | Pytdx |\n| ------- | :--: | :------: | :-----: | :---: |\n| 股票基本信息  |   ✅  |     ✅    |    ✅    |   ✅   |\n| 日 K 线数据 |   ✅  |     ✅    |    ✅    |   ✅   |\n| 实时行情    |   ✅  |     ✅    |    ✅    |   ✅   |\n| 筹码分布    |   ❌  |     ❌    |    ✅    |   ❌   |\n| 板块排名    |   ❌  |     ✅    |    ✅    |   ❌   |\n| 市场统计    |   ❌  |     ✅    |    ✅    |   ❌   |\n| 指数数据    |   ✅  |     ✅    |    ✅    |   ✅   |\n| 财务数据    |   ✅  |     ❌    |    ❌    |   ❌   |\n| 主力资金    |   ✅  |     ❌    |    ❌    |   ❌   |\n| 估值数据    |   ✅  |     ❌    |    ❌    |   ❌   |\n\n### 资讯搜索架构\n\n| 优先级 | 搜索引擎     | 数据源          |     需要 Key    | 返回内容            |\n| :-: | -------- | ------------ | :-----------: | --------------- |\n|  0  | **妙想搜索** | 东财妙想资讯 API   | ✅ `MX_APIKEY` | 完整正文 + 新闻/研报/公告 |\n|  1  | SerpAPI  | Google 搜索    |       ✅       | snippet         |\n|  2  | Tavily   | Tavily AI 搜索 |       ✅       | snippet         |\n|  3  | Brave    | Brave 搜索     |       ✅       | snippet         |\n|  4  | Bocha    | 博查搜索         |       ✅       | snippet         |\n\n> - 配置 `MX_APIKEY` 后妙想搜索自动成为最高优先级，返回新闻 + 研报 + 公告三种类型\n> - 妙想搜索返回完整正文，由 LLM 自动提取核心摘要；其他引擎仅返回 snippet\n> - 研报类型含机构名称和评级（如\"中泰证券·研报·买入\"），LLM 可据此参考机构观点\n\n### 反封禁策略\n\n参照原项目实现，内置多项反封禁措施：\n\n- 随机 User-Agent 轮换（5 组 UA）\n- 请求间随机 Sleep（1.5 \\~ 3.0 秒抖动）\n- 全市场实时行情缓存（TTL 600 秒）\n- 涨停 / 跌停精确计算（科创板 / 创业板 20%、北交所 30%、ST 5%、普通 10%）\n\n## ⚙️ 配置说明\n\n| 环境变量                |  必填 | 默认值                           | 说明                                                                  |\n| ------------------- | :-: | ----------------------------- | ------------------------------------------------------------------- |\n| `LLM_BASE_URL`      |  ✅  | `https://api.deepseek.com/v1` | OpenAI 兼容 API 地址                                                    |\n| `LLM_API_KEY`       |  ✅  | —                             | API Key                                                             |\n| `LLM_MODEL`         |  ✅  | `deepseek-chat`               | 模型名称                                                                |\n| `SERPAPI_KEY`       |  ❌  | —                             | SerpAPI Key                                                         |\n| `TAVILY_KEY`        |  ❌  | —                             | Tavily Key                                                          |\n| `BRAVE_KEY`         |  ❌  | —                             | Brave Search Key                                                    |\n| `BOCHA_KEY`         |  ❌  | —                             | 博查搜索 Key                                                            |\n| `MX_APIKEY`         |  ❌  | —                             | 妙想金融数据 API Key（[前往获取](https://dl.dfcfs.com/m/itc4)），配置后自动成为第一优先级数据源 |\n| `BIAS_THRESHOLD`    |  ❌  | `5.0`                         | 乖离率阈值（%）                                                            |\n| `NEWS_MAX_AGE_DAYS` |  ❌  | `3`                           | 新闻最大时效（天）                                                           |\n| `ENABLE_CHIP`       |  ❌  | `true`                        | 是否启用筹码分布                                                            |\n| `LOG_LEVEL`         |  ❌  | `INFO`                        | 日志级别：DEBUG/INFO/WARNING/ERROR                                       |\n\n## 📋 分析结果结构\n\n<details>\n<summary>个股分析 — StockAnalysisResult</summary>\n\n| 字段                   | 类型               | 说明                   |\n| -------------------- | ---------------- | -------------------- |\n| `stock_code`         | str              | 股票代码                 |\n| `stock_name`         | str              | 股票名称                 |\n| `core_conclusion`    | str              | 一句话核心结论              |\n| `score`              | int              | 评分 0-100             |\n| `action`             | str              | 操作方向：买入/观望/卖出        |\n| `trend`              | str              | 趋势判断：看多/震荡/看空        |\n| `buy_price`          | float            | 建议买入价                |\n| `stop_loss_price`    | float            | 止损价                  |\n| `target_price`       | float            | 目标价                  |\n| `checklist`          | list\\[CheckItem] | 操作检查清单               |\n| `risk_alerts`        | list\\[str]       | 风险警报                 |\n| `positive_catalysts` | list\\[str]       | 利好催化                 |\n| `strategy`           | str              | 买卖策略建议               |\n| `raw_report`         | str              | LLM 完整分析报告（Markdown） |\n| `disclaimer`         | str              | 免责声明                 |\n\n</details>\n\n<details>\n<summary>市场分析 — MarketAnalysisResult</summary>\n\n| 字段                | 类型                | 说明                   |\n| ----------------- | ----------------- | -------------------- |\n| `date`            | str               | 分析日期                 |\n| `core_conclusion` | str               | 一句话核心结论              |\n| `indices`         | list\\[IndexData]  | 主要指数数据               |\n| `statistics`      | MarketStatistics  | 涨跌统计                 |\n| `top_sectors`     | list\\[SectorData] | 领涨板块                 |\n| `bottom_sectors`  | list\\[SectorData] | 领跌板块                 |\n| `sentiment`       | str               | 市场情绪：偏多/中性/偏空        |\n| `strategy`        | str               | 操作建议                 |\n| `raw_report`      | str               | LLM 完整复盘报告（Markdown） |\n| `disclaimer`      | str               | 免责声明                 |\n\n</details>\n\n## ⚠️ 注意事项\n\n- **免 Token 数据源**：Efinance / AkShare / Pytdx 均为免费接口，无需注册；妙想金融需配置 `MX_APIKEY`\n- **自动容灾**：任一数据源异常时自动切换至下一级，日志输出 `[数据源切换]` 提示\n- **网络环境**：东财接口在企业内网 / 代理下可能受限，系统会自动回退至新浪或通达信通道\n- **API 限流**：搜索 API 有调用频率限制，频繁调用可能触发限流\n- **数据时效**：实时行情基于最新日线数据，盘中数据可能有延迟\n- **无状态设计**：Skill 不保存任何分析结果，每次调用独立执行\n\n## 📄 License\n\n本项目基于 [MIT-0 License](LICENSE) 开源。\n\n## ⚖️ 免责声明\n\n本项目所有分析结果仅供参考，不构成投资建议。股市有风险，投资需谨慎。\n\nFile v1.0.8:_meta.json\n\n{\n  \"ownerId\": \"kn7da87j1vga39tq7bxyc830gh834079\",\n  \"slug\": \"stock-analysis-report\",\n  \"version\": \"1.0.8\",\n  \"publishedAt\": 1776768500537\n}\n\nFile v1.0.8:config.example.yaml\n\n# LLM 配置（必填）\nllm_base_url: \"https://api.deepseek.com/v1\"\nllm_api_key: \"your-api-key-here\"\nllm_model: \"deepseek-chat\"\n\n# 新闻搜索（至少配置一个）\nserpapi_key: \"\"\ntavily_key: \"\"\nbrave_key: \"\"\nbocha_key: \"\"\n\n# 妙想金融数据源（可选）— 配置后自动成为第一优先级\nmx_apikey: \"\"\n\n# 分析参数\nbias_threshold: 5.0\nnews_max_age_days: 3\nenable_chip: true\n\n# 日志级别：DEBUG / INFO / WARNING / ERROR\nlog_level: \"INFO\"\n\nFile v1.0.8:manifest.yaml\n\nname: stock-analysis\nversion: 1.0.6\nauthor: Derrors\nlicense: MIT-0\nruntime: python\nentry: src/index.py\ndescription: A股市场分析与个股深度分析技能，支持基本面（财务/估值）、资金面（主力资金/DDX）、技术面、筹码分布、舆情情报等多维度分析\n\ncategories:\n  - finance\n  - analysis\n\nrequires:\n  env:\n    - LLM_API_KEY\n    - LLM_BASE_URL\n    - LLM_MODEL\n  bins:\n    - python3\n\noptional:\n  env:\n    - MX_APIKEY\n    - SERPAPI_KEY\n    - TAVILY_KEY\n    - BRAVE_KEY\n    - BOCHA_KEY\n    - BIAS_THRESHOLD\n    - NEWS_MAX_AGE_DAYS\n    - ENABLE_CHIP\n    - LOG_LEVEL\n\ninstall:\n  - kind: uv\n    command: pip install -r requirements.txt\n\nconfig:\n  - key: llm_base_url\n    type: string\n    required: true\n    default: \"https://api.deepseek.com/v1\"\n    description: OpenAI兼容API地址\n  - key: llm_api_key\n    type: string\n    required: true\n    description: LLM API Key\n  - key: llm_model\n    type: string\n    required: true\n    default: \"deepseek-chat\"\n    description: 模型名称\n  - key: mx_apikey\n    type: string\n    required: false\n    description: 妙想金融API Key（配置后自动成为行情数据+财务/资金/估值+资讯搜索第一优先级）\n  - key: serpapi_key\n    type: string\n    required: false\n    description: SerpAPI搜索Key\n  - key: tavily_key\n    type: string\n    required: false\n    description: Tavily搜索Key\n  - key: brave_key\n    type: string\n    required: false\n    description: Brave搜索Key\n  - key: bocha_key\n    type: string\n    required: false\n    description: 博查搜索Key\n  - key: bias_threshold\n    type: number\n    required: false\n    default: 5.0\n    description: 乖离率阈值(%)\n  - key: news_max_age_days\n    type: integer\n    required: false\n    default: 3\n    description: 新闻最大时效(天)\n  - key: enable_chip\n    type: boolean\n    required: false\n    default: true\n    description: 是否启用筹码分布\n  - key: log_level\n    type: string\n    required: false\n    default: \"INFO\"\n    description: 日志级别 DEBUG/INFO/WARNING/ERROR\n\ninput:\n  type: object\n  properties:\n    mode:\n      type: string\n      enum: [stock, market]\n      description: 分析模式\n    code:\n      type: string\n      description: A股股票代码(mode=stock时必填)\n    save:\n      type: boolean\n      description: 是否保存Markdown报告到reports/目录\n    output_dir:\n      type: string\n      description: 自定义报告输出目录(需save=true)\n  required: [mode]\n\noutput:\n  type: object\n  properties:\n    stock_code:\n      type: string\n      description: 股票代码\n    stock_name:\n      type: string\n      description: 股票名称\n    core_conclusion:\n      type: string\n      description: 一句话核心结论\n    score:\n      type: integer\n      description: 评分0-100\n    action:\n      type: string\n      description: 操作方向(买入/观望/卖出)\n    trend:\n      type: string\n      description: 趋势判断(看多/震荡/看空)\n    buy_price:\n      type: number\n      description: 建议买入价\n    stop_loss_price:\n      type: number\n      description: 止损价\n    target_price:\n      type: number\n      description: 目标价\n    capital_flow:\n      type: object\n      description: 主力资金流向(超大单/大单/中单/小单净额+DDX/DDY/DDZ)\n    valuation:\n      type: object\n      description: 估值数据(PE_TTM/PB/历史分位)\n    financial:\n      type: object\n      description: 核心财务指标(净利润/营收/ROE/毛利率/资产负债率/机构持股)\n    sentiment:\n      type: string\n      description: 市场情绪(偏多/中性/偏空)\n    raw_report:\n      type: string\n      description: LLM完整分析报告(Markdown)\n\nFile v1.0.8:requirements.txt\n\nopenai>=1.0.0\nefinance>=0.5.0\nakshare>=1.10.0\npytdx>=1.72\nnumpy>=1.24.0\npandas>=2.0.0\nhttpx>=0.25.0\nrequests>=2.28.0\npython-dotenv>=1.0.0\n\nArchive v1.0.7: 41 files, 68862 bytes\n\nFiles: config.example.yaml (461b), manifest.yaml (3674b), README.md (13610b), requirements.txt (138b), scripts/analyze_market.py (727b), scripts/analyze_stock.py (835b), scripts/report.py (1828b), SKILL.md (8990b), src/__init__.py (1b), src/analyzer/__init__.py (0b), src/analyzer/market.py (3998b), src/analyzer/prompts.py (4800b), src/analyzer/stock.py (21758b), src/config.py (2254b), src/data/__init__.py (0b), src/data/akshare_provider.py (16773b), src/data/efinance_provider.py (13216b), src/data/manager.py (8595b), src/data/miaoxiang_provider.py (29278b), src/data/provider.py (2507b), src/data/pytdx_provider.py (10921b), src/data/utils.py (5193b), src/index.py (7115b), src/llm/__init__.py (0b), src/llm/client.py (2742b), src/models.py (4682b), src/report.py (19641b), src/search/__init__.py (0b), src/search/base.py (428b), src/search/bocha.py (1702b), src/search/brave.py (1711b), src/search/miaoxiang.py (4550b), src/search/serpapi.py (1534b), src/search/tavily.py (1505b), test/__init__.py (0b), test/test_config.py (3163b), test/test_index.py (1973b), test/test_manager.py (12835b), test/test_models.py (3012b), test/test_utils.py (2517b), _meta.json (140b)\n\nFile v1.0.7:SKILL.md\n\n---\n\nname: stock-analysis\ndescription: |\n  A股市场分析与个股深度分析技能。支持基本面（财务指标/估值分位）、资金面（主力资金/DDX/DDY/DDZ）、技术面（均线/乖离率/量比）、筹码分布、舆情情报（新闻/研报/公告）等多维度分析，输出结构化评分与操作建议。\n\nTriggers: \"分析股票\", \"个股分析\", \"市场分析\", \"A股分析\", \"stock analysis\", \"analyze stock\", \"market analysis\", \"股票评分\", \"买卖建议\", \"涨停分析\"\n\nDoes NOT trigger:\n\n- 简单的股价查询（无需深度分析）\n- 港股/美股/非A股市场分析\n- 基金/债券/期货分析\n\nOutput: 结构化分析报告（评分0-100、操作方向、买卖点位、风险提示、检查清单）\nversion: 1.0.6\nlicense: MIT-0\nmetadata:\n  openclaw:\n    requires:\n      env:\n        - LLM_API_KEY\n        - LLM_BASE_URL\n        - LLM_MODEL\n      bins:\n        - python3\n    optional:\n      env:\n        - MX_APIKEY\n        - SERPAPI_KEY\n        - TAVILY_KEY\n        - BRAVE_KEY\n        - BOCHA_KEY\n        - BIAS_THRESHOLD\n        - NEWS_MAX_AGE_DAYS\n        - ENABLE_CHIP\n        - LOG_LEVEL\n    primaryEnv: LLM_API_KEY\n    emoji: \"📈\"\n    install:\n      - kind: uv\n        command: pip install -r requirements.txt\n\n---\n\n# A股股票市场分析 Skill\n\n## 功能\n\n### 个股分析\n\n输入股票代码，输出结构化分析结果：\n\n- **基本面**：净利润、营收、ROE、毛利率、资产负债率、机构持股比例、盈利预测\n- **估值**：PE(TTM)、PB、历史分位\n- **资金面**：主力资金流向（超大单/大单/中单/小单净额）、DDX/DDY/DDZ 指标\n- **技术面**：MA5/MA10/MA20/MA60 均线、多头排列、乖离率、量比\n- **筹码分布**：获利比例、平均成本、集中度\n- **舆情情报**：妙想金融资讯（新闻/研报/公告，LLM 摘要提取）+ 多引擎新闻搜索\n- **实时行情**：当前价、涨跌幅、成交量、换手率\n- **分析结论**：评分 + 操作方向 + 买卖点位 + 检查清单 + 风险提示\n\n### 市场分析\n\n每日 A 股市场复盘：\n\n- 主要指数（上证/深证/创业板）\n- 涨跌统计（涨跌家数、涨停跌停数）\n- 板块排名（领涨/领跌 Top5）\n- 市场情绪判断 + 操作建议\n\n## 使用方式\n\n### 生成分析报告（推荐）\n\n```bash\n# 个股分析报告 → 保存到 reports/{代码}_{日期}.md\npython3 {baseDir}/scripts/report.py stock 600519\n\n# 市场分析报告 → 保存到 reports/market_{日期}.md\npython3 {baseDir}/scripts/report.py market\n\n# 同时输出 JSON\npython3 {baseDir}/scripts/report.py stock 600519 --json\n\n# 自定义输出目录\npython3 {baseDir}/scripts/report.py stock 600519 -o ./my-reports\n```\n\n### JSON 输出\n\n```bash\npython3 {baseDir}/scripts/analyze_stock.py 600519\npython3 {baseDir}/scripts/analyze_market.py\n```\n\n### Handler 调用\n\n```python\nfrom src.index import handler\nresult = await handler({\"mode\": \"stock\", \"code\": \"600519\"})\nresult = await handler({\"mode\": \"market\"})\nresult = await handler({\"mode\": \"stock\", \"code\": \"600519\", \"save\": True})\nresult = await handler({\"mode\": \"stock\", \"code\": \"600519\", \"save\": True, \"output_dir\": \"./reports\"})\n```\n\n## 输入格式\n\n| 字段          | 类型      | 必填            | 说明                            |\n| ----------- | ------- | ------------- | ----------------------------- |\n| mode        | string  | 是             | \"stock\" 或 \"market\"            |\n| code        | string  | mode=stock时必填 | A股股票代码，如 \"600519\"             |\n| save        | boolean | 否             | 是否保存 Markdown 报告到 reports/ 目录 |\n| output_dir | string  | 否             | 自定义报告输出目录（需 save=true）        |\n\n## 输出格式\n\n### 个股分析结果\n\n```json\n{\n  \"stock_code\": \"600519\",\n  \"stock_name\": \"贵州茅台\",\n  \"core_conclusion\": \"一句话核心结论\",\n  \"score\": 75,\n  \"action\": \"买入/观望/卖出\",\n  \"trend\": \"看多/震荡/看空\",\n  \"buy_price\": 1800.0,\n  \"stop_loss_price\": 1700.0,\n  \"target_price\": 2000.0,\n  \"checklist\": [{\"condition\": \"...\", \"status\": \"✅/❌\", \"detail\": \"...\"}],\n  \"risk_alerts\": [\"风险1\", \"风险2\"],\n  \"positive_catalysts\": [\"利好1\"],\n  \"strategy\": \"买卖策略建议\",\n  \"stock_info\": {\"code\": \"600519\", \"name\": \"贵州茅台\", \"industry\": \"白酒\", \"market_cap\": 2200000000000},\n  \"realtime\": {\"price\": 1800.0, \"change_pct\": 1.5, \"turnover_rate\": 0.8},\n  \"tech\": {\"ma5\": 1780.0, \"ma10\": 1760.0, \"ma20\": 1740.0, \"ma60\": 1700.0, \"is_bullish_alignment\": true, \"bias\": 2.1, \"volume_ratio\": 1.2},\n  \"chip\": {\"profit_ratio\": 75.0, \"avg_cost\": 1720.0, \"concentration\": 12.5},\n  \"capital_flow\": {\"super_large_net\": 500000000, \"large_net\": 200000000, \"ddx\": 0.26, \"ddy\": 0.15, \"ddz\": 5.3},\n  \"valuation\": {\"pe_ttm\": 28.5, \"pb\": 8.2, \"pe_percentile\": 45.0, \"pb_percentile\": 30.0},\n  \"financial\": {\"net_profit\": 55000000000, \"revenue\": 120000000000, \"roe\": 30.5, \"gross_margin\": 91.2, \"debt_ratio\": 25.3, \"institution_holding_pct\": 65.0},\n  \"news\": [{\"title\": \"...\", \"snippet\": \"LLM提取摘要\", \"date\": \"2025-01-15\", \"source\": \"中泰证券·研报·买入\", \"info_type\": \"report\"}],\n  \"raw_report\": \"LLM完整分析报告(Markdown)\",\n  \"disclaimer\": \"仅供参考，不构成投资建议\"\n}\n```\n\n### 市场分析结果\n\n```json\n{\n  \"date\": \"2025-01-15\",\n  \"core_conclusion\": \"一句话核心结论\",\n  \"indices\": [{\"name\": \"上证指数\", \"close\": 3200.0, \"change_pct\": 0.5}],\n  \"statistics\": {\"up_count\": 3000, \"down_count\": 1500, \"limit_up_count\": 50},\n  \"top_sectors\": [{\"name\": \"半导体\", \"change_pct\": 3.2}],\n  \"bottom_sectors\": [{\"name\": \"房地产\", \"change_pct\": -1.5}],\n  \"sentiment\": \"偏多/中性/偏空\",\n  \"strategy\": \"操作建议\",\n  \"raw_report\": \"LLM完整复盘报告(Markdown)\"\n}\n```\n\n## 数据源\n\n### 行情数据\n\n四级自动容灾，并行竞争 + 超时控制：\n\n| 优先级 | 数据源          | 覆盖能力              | 需要 Key        |\n| --- | ------------ | ----------------- | ------------- |\n| 0   | **妙想金融**     | 行情 + 财务 + 资金 + 估值 | ✅ `MX_APIKEY` |\n| 1   | **Efinance** | 行情 + 板块 + 市场统计    | ❌             |\n| 2   | **AkShare**  | 行情 + 筹码 + 板块      | ❌             |\n| 3   | **Pytdx**    | 行情 + 指数（兜底）       | ❌             |\n\n- 配置 `MX_APIKEY` 后妙想自动成为最高优先级；未配置时从 Efinance 开始\n- 所有数据源**并行请求**，按优先级取第一个有效结果；日K线取行数最多的结果\n- 单数据源超时 10 秒自动降级，任一数据源异常不影响整体分析\n\n### 资讯搜索\n\n五级自动容灾，串行降级：\n\n| 优先级 | 搜索引擎     | 返回内容                   | 需要 Key          |\n| --- | -------- | ---------------------- | --------------- |\n| 0   | **妙想搜索** | 完整正文 + 新闻/研报/公告 + 机构评级 | ✅ `MX_APIKEY`   |\n| 1   | SerpAPI  | snippet                | ✅ `SERPAPI_KEY` |\n| 2   | Tavily   | snippet                | ✅ `TAVILY_KEY`  |\n| 3   | Brave    | snippet                | ✅ `BRAVE_KEY`   |\n| 4   | Bocha    | snippet                | ✅ `BOCHA_KEY`   |\n\n- 妙想搜索返回完整正文，由 LLM 自动提取核心摘要；其他引擎仅返回 snippet\n- 研报类型含机构名称和评级（如\"中泰证券·研报·买入\"），LLM 可据此参考机构观点\n\n详见 references/data-sources.md。\n\n## 性能特性\n\n- **并行数据采集**：个股分析的 7 个数据维度（日K线、实时行情、筹码、资金、估值、财务、资讯）并行获取，总耗时取决于最慢的单项\n- **并行数据源竞争**：同一数据维度在多个数据源间并行请求，按优先级取第一个有效结果\n- **超时保护**：单数据源请求超时 10 秒自动降级，避免阻塞\n- **LLM 摘要提取**：妙想资讯返回完整正文，由 LLM 批量提取核心摘要，保留关键投资信息\n\n## 环境变量\n\n| 变量            | 必填 | 说明                                               |\n| -------------- | -- | ------------------------------------------------ |\n| LLM_API_KEY    | 是  | LLM API Key                                      |\n| LLM_BASE_URL   | 是  | OpenAI 兼容 API 地址                                 |\n| LLM_MODEL      | 是  | 模型名称                                             |\n| MX_APIKEY      | 否  | 妙想金融 API Key（配置后自动成为行情数据 + 财务/资金/估值 + 资讯搜索第一优先级） |\n| SERPAPI_KEY    | 否  | SerpAPI 搜索 Key                                   |\n| TAVILY_KEY     | 否  | Tavily 搜索 Key                                    |\n| BRAVE_KEY      | 否  | Brave 搜索 Key                                     |\n| BOCHA_KEY      | 否  | 博查搜索 Key                                         |\n\n## 注意事项\n\n- Efinance / AkShare / Pytdx 为免费接口，无需注册；妙想金融需配置 `MX_APIKEY`\n- 分析结果仅供参考，不构成投资建议\n\nFile v1.0.7:README.md\n\n<div align=\"center\">\n\n# 📈 A 股股票市场分析 Skill\n\n专为 OpenClaw 等智能体设计的 A 股股票分析技能\n\n[![License: MIT-0](https://img.shields.io/badge/License-MIT--0-yellow.svg)](LICENSE)\n[![Python 3.9+](https://img.shields.io/badge/Python-3.9%2B-blue.svg)](https://www.python.org/)\n[![OpenClaw Skill](https://img.shields.io/badge/OpenClaw-Skill-green.svg)](https://github.com/openclaw)\n\n基于 [daily_stock_analysis](https://github.com/ZhuLinsen/daily_stock_analysis) 项目精简重写，去除 WebUI、通知推送、Agent 问股等非核心功能，聚焦分析能力本身。\n\n</div>\n\n---\n\n## ✨ 功能特性\n\n### 📊 个股分析\n\n输入股票代码，输出结构化分析结果：\n\n- **技术面分析**：MA5/MA10/MA20/MA60 均线、多头排列判断、乖离率、量比\n- **筹码分布**：获利比例、平均成本、集中度\n- **舆情情报**：妙想金融资讯（新闻/研报/公告）+ 多引擎新闻搜索\n- **实时行情**：当前价、涨跌幅、成交量、换手率等\n- **分析结论**：一句话核心结论 + 评分 + 操作方向 + 精确买卖点位 + 操作检查清单 + 买卖策略\n\n### 🌐 市场分析\n\n每日 A 股市场复盘：\n\n- **主要指数**：上证指数、深证成指、创业板指\n- **市场统计**：涨跌家数、涨停跌停数\n- **板块排名**：领涨 / 领跌板块 Top5\n- **分析结论**：市场情绪判断 + 操作建议 + 完整复盘报告\n\n### 🔄 多源数据架构\n\n行情数据采用四级自动容灾策略：\n\n| 优先级 | 数据源 | 说明 | 需要 Token |\n| :---: | --- | --- | :---: |\n| 0 | **妙想金融** | 东财妙想 API，覆盖行情 + 财务数据 | ✅ `MX_APIKEY` |\n| 1 | **Efinance** | 基于东财接口，覆盖日 K、实时行情、板块排名、市场统计 | ❌ |\n| 2 | **AkShare** | 东财 + 新浪双通道，额外支持筹码分布 | ❌ |\n| 3 | **Pytdx** | 直连通达信行情服务器，支持日 K、实时行情、指数数据 | ❌ |\n\n> - 配置 `MX_APIKEY` 后妙想自动成为最高优先级；未配置时从 Efinance 开始\n> - 任意数据源异常时自动切换到下一级，无需人工干预\n\n## 🚀 快速开始\n\n### 1. 安装依赖\n\n```bash\npip install -r requirements.txt\n```\n\n### 2. 配置环境变量\n\n```bash\ncp .env.example .env\n```\n\n编辑 `.env` 文件，填入你的 API Key：\n\n```env\n# LLM 配置（必填）— 支持 DeepSeek 和 OpenAI 兼容模型\nLLM_BASE_URL=https://api.deepseek.com/v1\nLLM_API_KEY=your-api-key-here\nLLM_MODEL=deepseek-chat\n\n# 妙想金融数据（可选，配置后自动成为第一优先级数据源 + 资讯搜索源）\nMX_APIKEY=\n\n# 新闻搜索（至少配置一个，可选）\nSERPAPI_KEY=\nTAVILY_KEY=\nBRAVE_KEY=\nBOCHA_KEY=\n```\n\n> 💡 行情数据源（Efinance / AkShare / Pytdx）均为免费接口，无需配置任何 Token。\n\n### 3. 调用分析\n\n#### 生成 Markdown 报告（推荐）\n\n```bash\n# 个股分析报告 → reports/{代码}_{日期}.md\npython3 scripts/report.py stock 600519\n\n# 市场分析报告 → reports/market_{日期}.md\npython3 scripts/report.py market\n\n# 同时输出 JSON\npython3 scripts/report.py stock 600519 --json\n\n# 自定义输出目录\npython3 scripts/report.py stock 600519 -o ./my-reports\n```\n\n#### JSON 输出\n\n```bash\npython3 scripts/analyze_stock.py 600519    # 个股分析\npython3 scripts/analyze_market.py          # 市场分析\n```\n\n#### Python API\n\n```python\nimport asyncio\nfrom src.index import analyze_stock, analyze_market\n\n# 个股分析 + 保存报告\nresult = asyncio.run(analyze_stock(\"600519\", save=True))\nprint(result.core_conclusion)   # 一句话核心结论\nprint(result.action)            # 买入/观望/卖出\n\n# 市场分析 + 保存报告\nresult = asyncio.run(analyze_market(save=True))\nprint(result.sentiment)         # 偏多/中性/偏空\n```\n\n#### OpenClaw Handler\n\n```python\nfrom src.index import handler\n\nresult = await handler({\"mode\": \"stock\", \"code\": \"600519\"})\nresult = await handler({\"mode\": \"market\", \"save\": True})\n```\n\n<details>\n<summary>自定义配置</summary>\n\n```python\nfrom src.config import SkillConfig\n\nconfig = SkillConfig(\n    llm_base_url=\"https://api.openai.com/v1\",\n    llm_api_key=\"sk-xxx\",\n    llm_model=\"gpt-4o\",\n)\n\nresult = asyncio.run(analyze_stock(\"000001\", config=config))\n```\n\n</details>\n\n## 📁 项目结构\n\n```\nstock-analysis/\n├── SKILL.md                     # Skill 定义（OpenClaw 标准入口）\n├── manifest.yaml                # 机器可读元数据 + 输入输出 Schema\n├── src/                         # 源代码\n│   ├── index.py                 # Skill 入口（handler + analyze_stock/market）\n│   ├── config.py                # 配置管理（环境变量 + .env）\n│   ├── models.py                # 数据模型定义\n│   ├── report.py                # Markdown 报告生成\n│   ├── analyzer/\n│   │   ├── stock.py             # 个股分析引擎\n│   │   ├── market.py            # 市场分析引擎\n│   │   └── prompts.py           # Prompt 模板\n│   ├── data/\n│   │   ├── provider.py          # 数据源抽象基类\n│   │   ├── efinance_provider.py # Efinance 数据源（优先级 1）\n│   │   ├── akshare_provider.py  # AkShare 数据源（优先级 2）\n│   │   ├── pytdx_provider.py    # Pytdx 数据源（优先级 3）\n│   │   ├── manager.py           # 数据源管理器（多源自动容灾）\n│   │   └── utils.py             # 公共工具（缓存/统计/限流）\n│   ├── search/\n│   │   ├── base.py              # 搜索引擎抽象基类\n│   │   ├── miaoxiang.py         # 妙想金融资讯搜索（优先级 0）\n│   │   ├── serpapi.py           # SerpAPI 搜索\n│   │   ├── tavily.py            # Tavily 搜索\n│   │   ├── brave.py             # Brave 搜索\n│   │   └── bocha.py             # Bocha 搜索\n│   └── llm/\n│       └── client.py            # LLM 客户端（OpenAI 兼容接口）\n├── scripts/                     # CLI 入口脚本\n│   ├── report.py                # 报告生成器（推荐入口）\n│   ├── analyze_stock.py         # 个股分析 JSON 输出\n│   └── analyze_market.py        # 市场分析 JSON 输出\n├── references/                  # 按需加载的详细文档\n│   └── data-sources.md          # 数据源架构详细说明\n├── test/                        # 测试\n├── requirements.txt\n├── config.example.yaml          # YAML 格式示例配置\n├── .env.example\n└── .gitignore\n```\n\n## 🏗️ 架构设计\n\n```\n┌──────────────────────────────────────────┐\n│         SKILL.md / manifest.yaml          │\n│         OpenClaw Skill 定义层             │\n└──────────────────┬───────────────────────┘\n                   │\n┌──────────────────▼───────────────────────┐\n│         src/index.py（接口层）              │\n│  handler()  analyze_stock()  analyze_market() │\n└──────────────────┬───────────────────────┘\n                   │\n┌──────────────────▼───────────────────────┐\n│        src/analyzer/（分析层）              │\n│     组装数据 + 构建 Prompt + 调用 LLM       │\n└──┬───────────────┬───────────┬───────────┘\n   │               │           │\n   ▼               ▼           ▼\n┌────────────┐ ┌──────┐ ┌──────────┐\n│  src/data/ │ │search│ │   llm/   │\n│   数据层    │ │搜索层 │ │  模型层   │\n│ 四级自动容灾 │ │5 引擎 │ │DeepSeek  │\n│            │ │(可扩展)│ │(OpenAI兼容)│\n│ 妙想(可选)  │ └──────┘ └──────────┘\n│  ↓ 失败     │\n│ Efinance   │\n│  ↓ 失败     │\n│ AkShare    │\n│  ↓ 失败     │\n│ Pytdx      │\n└────────────┘\n```\n\n每层均通过抽象基类解耦，可独立扩展：\n\n- **数据层**：实现 `MarketDataProvider` 即可接入新数据源，`DataProviderManager` 自动管理容灾切换\n- **搜索层**：实现 `NewsSearchEngine` 即可接入新搜索引擎\n- **模型层**：所有 OpenAI 兼容 API 均可直接使用\n\n### 数据源能力矩阵\n\n| 能力 | 妙想金融 | Efinance | AkShare | Pytdx |\n| --- | :---: | :---: | :---: | :---: |\n| 股票基本信息 | ✅ | ✅ | ✅ | ✅ |\n| 日 K 线数据 | ✅ | ✅ | ✅ | ✅ |\n| 实时行情 | ✅ | ✅ | ✅ | ✅ |\n| 筹码分布 | ❌ | ❌ | ✅ | ❌ |\n| 板块排名 | ❌ | ✅ | ✅ | ❌ |\n| 市场统计 | ❌ | ✅ | ✅ | ❌ |\n| 指数数据 | ✅ | ✅ | ✅ | ✅ |\n| 财务数据 | ✅ | ❌ | ❌ | ❌ |\n| 主力资金 | ✅ | ❌ | ❌ | ❌ |\n| 估值数据 | ✅ | ❌ | ❌ | ❌ |\n\n### 资讯搜索架构\n\n| 优先级 | 搜索引擎 | 数据源 | 需要 Key | 返回内容 |\n| :---: | --- | --- | :---: | --- |\n| 0 | **妙想搜索** | 东财妙想资讯 API | ✅ `MX_APIKEY` | 完整正文 + 新闻/研报/公告 |\n| 1 | SerpAPI | Google 搜索 | ✅ | snippet |\n| 2 | Tavily | Tavily AI 搜索 | ✅ | snippet |\n| 3 | Brave | Brave 搜索 | ✅ | snippet |\n| 4 | Bocha | 博查搜索 | ✅ | snippet |\n\n> - 配置 `MX_APIKEY` 后妙想搜索自动成为最高优先级，返回新闻 + 研报 + 公告三种类型\n> - 妙想搜索返回完整正文，由 LLM 自动提取核心摘要；其他引擎仅返回 snippet\n> - 研报类型含机构名称和评级（如\"中泰证券·研报·买入\"），LLM 可据此参考机构观点\n\n### 反封禁策略\n\n参照原项目实现，内置多项反封禁措施：\n\n- 随机 User-Agent 轮换（5 组 UA）\n- 请求间随机 Sleep（1.5 ~ 3.0 秒抖动）\n- 全市场实时行情缓存（TTL 600 秒）\n- 涨停 / 跌停精确计算（科创板 / 创业板 20%、北交所 30%、ST 5%、普通 10%）\n\n## ⚙️ 配置说明\n\n| 环境变量 | 必填 | 默认值 | 说明 |\n| --- | :---: | --- | --- |\n| `LLM_BASE_URL` | ✅ | `https://api.deepseek.com/v1` | OpenAI 兼容 API 地址 |\n| `LLM_API_KEY` | ✅ | — | API Key |\n| `LLM_MODEL` | ✅ | `deepseek-chat` | 模型名称 |\n| `SERPAPI_KEY` | ❌ | — | SerpAPI Key |\n| `TAVILY_KEY` | ❌ | — | Tavily Key |\n| `BRAVE_KEY` | ❌ | — | Brave Search Key |\n| `BOCHA_KEY` | ❌ | — | 博查搜索 Key |\n| `MX_APIKEY` | ❌ | — | 妙想金融数据 API Key（配置后自动成为第一优先级数据源） |\n| `BIAS_THRESHOLD` | ❌ | `5.0` | 乖离率阈值（%） |\n| `NEWS_MAX_AGE_DAYS` | ❌ | `3` | 新闻最大时效（天） |\n| `ENABLE_CHIP` | ❌ | `true` | 是否启用筹码分布 |\n| `LOG_LEVEL` | ❌ | `INFO` | 日志级别：DEBUG/INFO/WARNING/ERROR |\n\n## 📋 分析结果结构\n\n<details>\n<summary>个股分析 — StockAnalysisResult</summary>\n\n| 字段 | 类型 | 说明 |\n| --- | --- | --- |\n| `stock_code` | str | 股票代码 |\n| `stock_name` | str | 股票名称 |\n| `core_conclusion` | str | 一句话核心结论 |\n| `score` | int | 评分 0-100 |\n| `action` | str | 操作方向：买入/观望/卖出 |\n| `trend` | str | 趋势判断：看多/震荡/看空 |\n| `buy_price` | float | 建议买入价 |\n| `stop_loss_price` | float | 止损价 |\n| `target_price` | float | 目标价 |\n| `checklist` | list[CheckItem] | 操作检查清单 |\n| `risk_alerts` | list[str] | 风险警报 |\n| `positive_catalysts` | list[str] | 利好催化 |\n| `strategy` | str | 买卖策略建议 |\n| `raw_report` | str | LLM 完整分析报告（Markdown） |\n| `disclaimer` | str | 免责声明 |\n\n</details>\n\n<details>\n<summary>市场分析 — MarketAnalysisResult</summary>\n\n| 字段 | 类型 | 说明 |\n| --- | --- | --- |\n| `date` | str | 分析日期 |\n| `core_conclusion` | str | 一句话核心结论 |\n| `indices` | list[IndexData] | 主要指数数据 |\n| `statistics` | MarketStatistics | 涨跌统计 |\n| `top_sectors` | list[SectorData] | 领涨板块 |\n| `bottom_sectors` | list[SectorData] | 领跌板块 |\n| `sentiment` | str | 市场情绪：偏多/中性/偏空 |\n| `strategy` | str | 操作建议 |\n| `raw_report` | str | LLM 完整复盘报告（Markdown） |\n| `disclaimer` | str | 免责声明 |\n\n</details>\n\n## ⚠️ 注意事项\n\n- **免 Token 数据源**：Efinance / AkShare / Pytdx 均为免费接口，无需注册；妙想金融需配置 `MX_APIKEY`\n- **自动容灾**：任一数据源异常时自动切换至下一级，日志输出 `[数据源切换]` 提示\n- **网络环境**：东财接口在企业内网 / 代理下可能受限，系统会自动回退至新浪或通达信通道\n- **API 限流**：搜索 API 有调用频率限制，频繁调用可能触发限流\n- **数据时效**：实时行情基于最新日线数据，盘中数据可能有延迟\n- **无状态设计**：Skill 不保存任何分析结果，每次调用独立执行\n\n## 📄 License\n\n本项目基于 [MIT-0 License](LICENSE) 开源。\n\n## ⚖️ 免责声明\n\n本项目所有分析结果仅供参考，不构成投资建议。股市有风险，投资需谨慎。\n\nFile v1.0.7:_meta.json\n\n{\n  \"ownerId\": \"kn7da87j1vga39tq7bxyc830gh834079\",\n  \"slug\": \"stock-analysis-report\",\n  \"version\": \"1.0.7\",\n  \"publishedAt\": 1776765148808\n}\n\nFile v1.0.7:config.example.yaml\n\n# LLM 配置（必填）\nllm_base_url: \"https://api.deepseek.com/v1\"\nllm_api_key: \"your-api-key-here\"\nllm_model: \"deepseek-chat\"\n\n# 新闻搜索（至少配置一个）\nserpapi_key: \"\"\ntavily_key: \"\"\nbrave_key: \"\"\nbocha_key: \"\"\n\n# 妙想金融数据源（可选）— 配置后自动成为第一优先级\nmx_apikey: \"\"\n\n# 分析参数\nbias_threshold: 5.0\nnews_max_age_days: 3\nenable_chip: true\n\n# 日志级别：DEBUG / INFO / WARNING / ERROR\nlog_level: \"INFO\"\n\nFile v1.0.7:manifest.yaml\n\nname: stock-analysis\nversion: 1.0.6\nauthor: Derrors\nlicense: MIT-0\nruntime: python\nentry: src/index.py\ndescription: A股市场分析与个股深度分析技能，支持基本面（财务/估值）、资金面（主力资金/DDX）、技术面、筹码分布、舆情情报等多维度分析\n\ncategories:\n  - finance\n  - analysis\n\nrequires:\n  env:\n    - LLM_API_KEY\n    - LLM_BASE_URL\n    - LLM_MODEL\n  bins:\n    - python3\n\noptional:\n  env:\n    - MX_APIKEY\n    - SERPAPI_KEY\n    - TAVILY_KEY\n    - BRAVE_KEY\n    - BOCHA_KEY\n    - BIAS_THRESHOLD\n    - NEWS_MAX_AGE_DAYS\n    - ENABLE_CHIP\n    - LOG_LEVEL\n\ninstall:\n  - kind: uv\n    command: pip install -r requirements.txt\n\nconfig:\n  - key: llm_base_url\n    type: string\n    required: true\n    default: \"https://api.deepseek.com/v1\"\n    description: OpenAI兼容API地址\n  - key: llm_api_key\n    type: string\n    required: true\n    description: LLM API Key\n  - key: llm_model\n    type: string\n    required: true\n    default: \"deepseek-chat\"\n    description: 模型名称\n  - key: mx_apikey\n    type: string\n    required: false\n    description: 妙想金融API Key（配置后自动成为行情数据+财务/资金/估值+资讯搜索第一优先级）\n  - key: serpapi_key\n    type: string\n    required: false\n    description: SerpAPI搜索Key\n  - key: tavily_key\n    type: string\n    required: false\n    description: Tavily搜索Key\n  - key: brave_key\n    type: string\n    required: false\n    description: Brave搜索Key\n  - key: bocha_key\n    type: string\n    required: false\n    description: 博查搜索Key\n  - key: bias_threshold\n    type: number\n    required: false\n    default: 5.0\n    description: 乖离率阈值(%)\n  - key: news_max_age_days\n    type: integer\n    required: false\n    default: 3\n    description: 新闻最大时效(天)\n  - key: enable_chip\n    type: boolean\n    required: false\n    default: true\n    description: 是否启用筹码分布\n  - key: log_level\n    type: string\n    required: false\n    default: \"INFO\"\n    description: 日志级别 DEBUG/INFO/WARNING/ERROR\n\ninput:\n  type: object\n  properties:\n    mode:\n      type: string\n      enum: [stock, market]\n      description: 分析模式\n    code:\n      type: string\n      description: A股股票代码(mode=stock时必填)\n    save:\n      type: boolean\n      description: 是否保存Markdown报告到reports/目录\n    output_dir:\n      type: string\n      description: 自定义报告输出目录(需save=true)\n  required: [mode]\n\noutput:\n  type: object\n  properties:\n    stock_code:\n      type: string\n      description: 股票代码\n    stock_name:\n      type: string\n      description: 股票名称\n    core_conclusion:\n      type: string\n      description: 一句话核心结论\n    score:\n      type: integer\n      description: 评分0-100\n    action:\n      type: string\n      description: 操作方向(买入/观望/卖出)\n    trend:\n      type: string\n      description: 趋势判断(看多/震荡/看空)\n    buy_price:\n      type: number\n      description: 建议买入价\n    stop_loss_price:\n      type: number\n      description: 止损价\n    target_price:\n      type: number\n      description: 目标价\n    capital_flow:\n      type: object\n      description: 主力资金流向(超大单/大单/中单/小单净额+DDX/DDY/DDZ)\n    valuation:\n      type: object\n      description: 估值数据(PE_TTM/PB/历史分位)\n    financial:\n      type: object\n      description: 核心财务指标(净利润/营收/ROE/毛利率/资产负债率/机构持股)\n    sentiment:\n      type: string\n      description: 市场情绪(偏多/中性/偏空)\n    raw_report:\n      type: string\n      description: LLM完整分析报告(Markdown)\n\nFile v1.0.7:requirements.txt\n\nopenai>=1.0.0\nefinance>=0.5.0\nakshare>=1.10.0\npytdx>=1.72\nnumpy>=1.24.0\npandas>=2.0.0\nhttpx>=0.25.0\nrequests>=2.28.0\npython-dotenv>=1.0.0\n\nArchive v1.0.6: 41 files, 68861 bytes\n\nFiles: config.example.yaml (461b), manifest.yaml (3674b), README.md (13610b), requirements.txt (138b), scripts/analyze_market.py (727b), scripts/analyze_stock.py (835b), scripts/report.py (1828b), SKILL.md (8990b), src/__init__.py (1b), src/analyzer/__init__.py (0b), src/analyzer/market.py (3998b), src/analyzer/prompts.py (4800b), src/analyzer/stock.py (21758b), src/config.py (2254b), src/data/__init__.py (0b), src/data/akshare_provider.py (16773b), src/data/efinance_provider.py (13216b), src/data/manager.py (8595b), src/data/miaoxiang_provider.py (29278b), src/data/provider.py (2507b), src/data/pytdx_provider.py (10921b), src/data/utils.py (5193b), src/index.py (7115b), src/llm/__init__.py (0b), src/llm/client.py (2742b), src/models.py (4682b), src/report.py (19641b), src/search/__init__.py (0b), src/search/base.py (428b), src/search/bocha.py (1702b), src/search/brave.py (1711b), src/search/miaoxiang.py (4550b), src/search/serpapi.py (1534b), src/search/tavily.py (1505b), test/__init__.py (0b), test/test_config.py (3163b), test/test_index.py (1973b), test/test_manager.py (12835b), test/test_models.py (3012b), test/test_utils.py (2517b), _meta.json (140b)\n\nFile v1.0.6:SKILL.md\n\n---\n\nname: stock-analysis\ndescription: |\n  A股市场分析与个股深度分析技能。支持基本面（财务指标/估值分位）、资金面（主力资金/DDX/DDY/DDZ）、技术面（均线/乖离率/量比）、筹码分布、舆情情报（新闻/研报/公告）等多维度分析，输出结构化评分与操作建议。\n\nTriggers: \"分析股票\", \"个股分析\", \"市场分析\", \"A股分析\", \"stock analysis\", \"analyze stock\", \"market analysis\", \"股票评分\", \"买卖建议\", \"涨停分析\"\n\nDoes NOT trigger:\n\n- 简单的股价查询（无需深度分析）\n- 港股/美股/非A股市场分析\n- 基金/债券/期货分析\n\nOutput: 结构化分析报告（评分0-100、操作方向、买卖点位、风险提示、检查清单）\nversion: 1.0.6\nlicense: MIT-0\nmetadata:\n  openclaw:\n    requires:\n      env:\n        - LLM_API_KEY\n        - LLM_BASE_URL\n        - LLM_MODEL\n      bins:\n        - python3\n    optional:\n      env:\n        - MX_APIKEY\n        - SERPAPI_KEY\n        - TAVILY_KEY\n        - BRAVE_KEY\n        - BOCHA_KEY\n        - BIAS_THRESHOLD\n        - NEWS_MAX_AGE_DAYS\n        - ENABLE_CHIP\n        - LOG_LEVEL\n    primaryEnv: LLM_API_KEY\n    emoji: \"📈\"\n    install:\n      - kind: uv\n        command: pip install -r requirements.txt\n\n---\n\n# A股股票市场分析 Skill\n\n## 功能\n\n### 个股分析\n\n输入股票代码，输出结构化分析结果：\n\n- **基本面**：净利润、营收、ROE、毛利率、资产负债率、机构持股比例、盈利预测\n- **估值**：PE(TTM)、PB、历史分位\n- **资金面**：主力资金流向（超大单/大单/中单/小单净额）、DDX/DDY/DDZ 指标\n- **技术面**：MA5/MA10/MA20/MA60 均线、多头排列、乖离率、量比\n- **筹码分布**：获利比例、平均成本、集中度\n- **舆情情报**：妙想金融资讯（新闻/研报/公告，LLM 摘要提取）+ 多引擎新闻搜索\n- **实时行情**：当前价、涨跌幅、成交量、换手率\n- **分析结论**：评分 + 操作方向 + 买卖点位 + 检查清单 + 风险提示\n\n### 市场分析\n\n每日 A 股市场复盘：\n\n- 主要指数（上证/深证/创业板）\n- 涨跌统计（涨跌家数、涨停跌停数）\n- 板块排名（领涨/领跌 Top5）\n- 市场情绪判断 + 操作建议\n\n## 使用方式\n\n### 生成分析报告（推荐）\n\n```bash\n# 个股分析报告 → 保存到 reports/{代码}_{日期}.md\npython3 {baseDir}/scripts/report.py stock 600519\n\n# 市场分析报告 → 保存到 reports/market_{日期}.md\npython3 {baseDir}/scripts/report.py market\n\n# 同时输出 JSON\npython3 {baseDir}/scripts/report.py stock 600519 --json\n\n# 自定义输出目录\npython3 {baseDir}/scripts/report.py stock 600519 -o ./my-reports\n```\n\n### JSON 输出\n\n```bash\npython3 {baseDir}/scripts/analyze_stock.py 600519\npython3 {baseDir}/scripts/analyze_market.py\n```\n\n### Handler 调用\n\n```python\nfrom src.index import handler\nresult = await handler({\"mode\": \"stock\", \"code\": \"600519\"})\nresult = await handler({\"mode\": \"market\"})\nresult = await handler({\"mode\": \"stock\", \"code\": \"600519\", \"save\": True})\nresult = await handler({\"mode\": \"stock\", \"code\": \"600519\", \"save\": True, \"output_dir\": \"./reports\"})\n```\n\n## 输入格式\n\n| 字段          | 类型      | 必填            | 说明                            |\n| ----------- | ------- | ------------- | ----------------------------- |\n| mode        | string  | 是             | \"stock\" 或 \"market\"            |\n| code        | string  | mode=stock时必填 | A股股票代码，如 \"600519\"             |\n| save        | boolean | 否             | 是否保存 Markdown 报告到 reports/ 目录 |\n| output_dir | string  | 否             | 自定义报告输出目录（需 save=true）        |\n\n## 输出格式\n\n### 个股分析结果\n\n```json\n{\n  \"stock_code\": \"600519\",\n  \"stock_name\": \"贵州茅台\",\n  \"core_conclusion\": \"一句话核心结论\",\n  \"score\": 75,\n  \"action\": \"买入/观望/卖出\",\n  \"trend\": \"看多/震荡/看空\",\n  \"buy_price\": 1800.0,\n  \"stop_loss_price\": 1700.0,\n  \"target_price\": 2000.0,\n  \"checklist\": [{\"condition\": \"...\", \"status\": \"✅/❌\", \"detail\": \"...\"}],\n  \"risk_alerts\": [\"风险1\", \"风险2\"],\n  \"positive_catalysts\": [\"利好1\"],\n  \"strategy\": \"买卖策略建议\",\n  \"stock_info\": {\"code\": \"600519\", \"name\": \"贵州茅台\", \"industry\": \"白酒\", \"market_cap\": 2200000000000},\n  \"realtime\": {\"price\": 1800.0, \"change_pct\": 1.5, \"turnover_rate\": 0.8},\n  \"tech\": {\"ma5\": 1780.0, \"ma10\": 1760.0, \"ma20\": 1740.0, \"ma60\": 1700.0, \"is_bullish_alignment\": true, \"bias\": 2.1, \"volume_ratio\": 1.2},\n  \"chip\": {\"profit_ratio\": 75.0, \"avg_cost\": 1720.0, \"concentration\": 12.5},\n  \"capital_flow\": {\"super_large_net\": 500000000, \"large_net\": 200000000, \"ddx\": 0.26, \"ddy\": 0.15, \"ddz\": 5.3},\n  \"valuation\": {\"pe_ttm\": 28.5, \"pb\": 8.2, \"pe_percentile\": 45.0, \"pb_percentile\": 30.0},\n  \"financial\": {\"net_profit\": 55000000000, \"revenue\": 120000000000, \"roe\": 30.5, \"gross_margin\": 91.2, \"debt_ratio\": 25.3, \"institution_holding_pct\": 65.0},\n  \"news\": [{\"title\": \"...\", \"snippet\": \"LLM提取摘要\", \"date\": \"2025-01-15\", \"source\": \"中泰证券·研报·买入\", \"info_type\": \"report\"}],\n  \"raw_report\": \"LLM完整分析报告(Markdown)\",\n  \"disclaimer\": \"仅供参考，不构成投资建议\"\n}\n```\n\n### 市场分析结果\n\n```json\n{\n  \"date\": \"2025-01-15\",\n  \"core_conclusion\": \"一句话核心结论\",\n  \"indices\": [{\"name\": \"上证指数\", \"close\": 3200.0, \"change_pct\": 0.5}],\n  \"statistics\": {\"up_count\": 3000, \"down_count\": 1500, \"limit_up_count\": 50},\n  \"top_sectors\": [{\"name\": \"半导体\", \"change_pct\": 3.2}],\n  \"bottom_sectors\": [{\"name\": \"房地产\", \"change_pct\": -1.5}],\n  \"sentiment\": \"偏多/中性/偏空\",\n  \"strategy\": \"操作建议\",\n  \"raw_report\": \"LLM完整复盘报告(Markdown)\"\n}\n```\n\n## 数据源\n\n### 行情数据\n\n四级自动容灾，并行竞争 + 超时控制：\n\n| 优先级 | 数据源          | 覆盖能力              | 需要 Key        |\n| --- | ------------ | ----------------- | ------------- |\n| 0   | **妙想金融**     | 行情 + 财务 + 资金 + 估值 | ✅ `MX_APIKEY` |\n| 1   | **Efinance** | 行情 + 板块 + 市场统计    | ❌             |\n| 2   | **AkShare**  | 行情 + 筹码 + 板块      | ❌             |\n| 3   | **Pytdx**    | 行情 + 指数（兜底）       | ❌             |\n\n- 配置 `MX_APIKEY` 后妙想自动成为最高优先级；未配置时从 Efinance 开始\n- 所有数据源**并行请求**，按优先级取第一个有效结果；日K线取行数最多的结果\n- 单数据源超时 10 秒自动降级，任一数据源异常不影响整体分析\n\n### 资讯搜索\n\n五级自动容灾，串行降级：\n\n| 优先级 | 搜索引擎     | 返回内容                   | 需要 Key          |\n| --- | -------- | ---------------------- | --------------- |\n| 0   | **妙想搜索** | 完整正文 + 新闻/研报/公告 + 机构评级 | ✅ `MX_APIKEY`   |\n| 1   | SerpAPI  | snippet                | ✅ `SERPAPI_KEY` |\n| 2   | Tavily   | snippet                | ✅ `TAVILY_KEY`  |\n| 3   | Brave    | snippet                | ✅ `BRAVE_KEY`   |\n| 4   | Bocha    | snippet                | ✅ `BOCHA_KEY`   |\n\n- 妙想搜索返回完整正文，由 LLM 自动提取核心摘要；其他引擎仅返回 snippet\n- 研报类型含机构名称和评级（如\"中泰证券·研报·买入\"），LLM 可据此参考机构观点\n\n详见 references/data-sources.md。\n\n## 性能特性\n\n- **并行数据采集**：个股分析的 7 个数据维度（日K线、实时行情、筹码、资金、估值、财务、资讯）并行获取，总耗时取决于最慢的单项\n- **并行数据源竞争**：同一数据维度在多个数据源间并行请求，按优先级取第一个有效结果\n- **超时保护**：单数据源请求超时 10 秒自动降级，避免阻塞\n- **LLM 摘要提取**：妙想资讯返回完整正文，由 LLM 批量提取核心摘要，保留关键投资信息\n\n## 环境变量\n\n| 变量            | 必填 | 说明                                               |\n| -------------- | -- | ------------------------------------------------ |\n| LLM_API_KEY    | 是  | LLM API Key                                      |\n| LLM_BASE_URL   | 是  | OpenAI 兼容 API 地址                                 |\n| LLM_MODEL      | 是  | 模型名称                                             |\n| MX_APIKEY      | 否  | 妙想金融 API Key（配置后自动成为行情数据 + 财务/资金/估值 + 资讯搜索第一优先级） |\n| SERPAPI_KEY    | 否  | SerpAPI 搜索 Key                                   |\n| TAVILY_KEY     | 否  | Tavily 搜索 Key                                    |\n| BRAVE_KEY      | 否  | Brave 搜索 Key                                     |\n| BOCHA_KEY      | 否  | 博查搜索 Key                                         |\n\n## 注意事项\n\n- Efinance / AkShare / Pytdx 为免费接口，无需注册；妙想金融需配置 `MX_APIKEY`\n- 分析结果仅供参考，不构成投资建议\n\nFile v1.0.6:README.md\n\n<div align=\"center\">\n\n# 📈 A 股股票市场分析 Skill\n\n专为 OpenClaw 等智能体设计的 A 股股票分析技能\n\n[![License: MIT-0](https://img.shields.io/badge/License-MIT--0-yellow.svg)](LICENSE)\n[![Python 3.9+](https://img.shields.io/badge/Python-3.9%2B-blue.svg)](https://www.python.org/)\n[![OpenClaw Skill](https://img.shields.io/badge/OpenClaw-Skill-green.svg)](https://github.com/openclaw)\n\n基于 [daily_stock_analysis](https://github.com/ZhuLinsen/daily_stock_analysis) 项目精简重写，去除 WebUI、通知推送、Agent 问股等非核心功能，聚焦分析能力本身。\n\n</div>\n\n---\n\n## ✨ 功能特性\n\n### 📊 个股分析\n\n输入股票代码，输出结构化分析结果：\n\n- **技术面分析**：MA5/MA10/MA20/MA60 均线、多头排列判断、乖离率、量比\n- **筹码分布**：获利比例、平均成本、集中度\n- **舆情情报**：妙想金融资讯（新闻/研报/公告）+ 多引擎新闻搜索\n- **实时行情**：当前价、涨跌幅、成交量、换手率等\n- **分析结论**：一句话核心结论 + 评分 + 操作方向 + 精确买卖点位 + 操作检查清单 + 买卖策略\n\n### 🌐 市场分析\n\n每日 A 股市场复盘：\n\n- **主要指数**：上证指数、深证成指、创业板指\n- **市场统计**：涨跌家数、涨停跌停数\n- **板块排名**：领涨 / 领跌板块 Top5\n- **分析结论**：市场情绪判断 + 操作建议 + 完整复盘报告\n\n### 🔄 多源数据架构\n\n行情数据采用四级自动容灾策略：\n\n| 优先级 | 数据源 | 说明 | 需要 Token |\n| :---: | --- | --- | :---: |\n| 0 | **妙想金融** | 东财妙想 API，覆盖行情 + 财务数据 | ✅ `MX_APIKEY` |\n| 1 | **Efinance** | 基于东财接口，覆盖日 K、实时行情、板块排名、市场统计 | ❌ |\n| 2 | **AkShare** | 东财 + 新浪双通道，额外支持筹码分布 | ❌ |\n| 3 | **Pytdx** | 直连通达信行情服务器，支持日 K、实时行情、指数数据 | ❌ |\n\n> - 配置 `MX_APIKEY` 后妙想自动成为最高优先级；未配置时从 Efinance 开始\n> - 任意数据源异常时自动切换到下一级，无需人工干预\n\n## 🚀 快速开始\n\n### 1. 安装依赖\n\n```bash\npip install -r requirements.txt\n```\n\n### 2. 配置环境变量\n\n```bash\ncp .env.example .env\n```\n\n编辑 `.env` 文件，填入你的 API Key：\n\n```env\n# LLM 配置（必填）— 支持 DeepSeek 和 OpenAI 兼容模型\nLLM_BASE_URL=https://api.deepseek.com/v1\nLLM_API_KEY=your-api-key-here\nLLM_MODEL=deepseek-chat\n\n# 妙想金融数据（可选，配置后自动成为第一优先级数据源 + 资讯搜索源）\nMX_APIKEY=\n\n# 新闻搜索（至少配置一个，可选）\nSERPAPI_KEY=\nTAVILY_KEY=\nBRAVE_KEY=\nBOCHA_KEY=\n```\n\n> 💡 行情数据源（Efinance / AkShare / Pytdx）均为免费接口，无需配置任何 Token。\n\n### 3. 调用分析\n\n#### 生成 Markdown 报告（推荐）\n\n```bash\n# 个股分析报告 → reports/{代码}_{日期}.md\npython3 scripts/report.py stock 600519\n\n# 市场分析报告 → reports/market_{日期}.md\npython3 scripts/report.py market\n\n# 同时输出 JSON\npython3 scripts/report.py stock 600519 --json\n\n# 自定义输出目录\npython3 scripts/report.py stock 600519 -o ./my-reports\n```\n\n#### JSON 输出\n\n```bash\npython3 scripts/analyze_stock.py 600519    # 个股分析\npython3 scripts/analyze_market.py          # 市场分析\n```\n\n#### Python API\n\n```python\nimport asyncio\nfrom src.index import analyze_stock, analyze_market\n\n# 个股分析 + 保存报告\nresult = asyncio.run(analyze_stock(\"600519\", save=True))\nprint(result.core_conclusion)   # 一句话核心结论\nprint(result.action)            # 买入/观望/卖出\n\n# 市场分析 + 保存报告\nresult = asyncio.run(analyze_market(save=True))\nprint(result.sentiment)         # 偏多/中性/偏空\n```\n\n#### OpenClaw Handler\n\n```python\nfrom src.index import handler\n\nresult = await handler({\"mode\": \"stock\", \"code\": \"600519\"})\nresult = await handler({\"mode\": \"market\", \"save\": True})\n```\n\n<details>\n<summary>自定义配置</summary>\n\n```python\nfrom src.config import SkillConfig\n\nconfig = SkillConfig(\n    llm_base_url=\"https://api.openai.com/v1\",\n    llm_api_key=\"sk-xxx\",\n    llm_model=\"gpt-4o\",\n)\n\nresult = asyncio.run(analyze_stock(\"000001\", config=config))\n```\n\n</details>\n\n## 📁 项目结构\n\n```\nstock-analysis/\n├── SKILL.md                     # Skill 定义（OpenClaw 标准入口）\n├── manifest.yaml                # 机器可读元数据 + 输入输出 Schema\n├── src/                         # 源代码\n│   ├── index.py                 # Skill 入口（handler + analyze_stock/market）\n│   ├── config.py                # 配置管理（环境变量 + .env）\n│   ├── models.py                # 数据模型定义\n│   ├── report.py                # Markdown 报告生成\n│   ├── analyzer/\n│   │   ├── stock.py             # 个股分析引擎\n│   │   ├── market.py            # 市场分析引擎\n│   │   └── prompts.py           # Prompt 模板\n│   ├── data/\n│   │   ├── provider.py          # 数据源抽象基类\n│   │   ├── efinance_provider.py # Efinance 数据源（优先级 1）\n│   │   ├── akshare_provider.py  # AkShare 数据源（优先级 2）\n│   │   ├── pytdx_provider.py    # Pytdx 数据源（优先级 3）\n│   │   ├── manager.py           # 数据源管理器（多源自动容灾）\n│   │   └── utils.py             # 公共工具（缓存/统计/限流）\n│   ├── search/\n│   │   ├── base.py              # 搜索引擎抽象基类\n│   │   ├── miaoxiang.py         # 妙想金融资讯搜索（优先级 0）\n│   │   ├── serpapi.py           # SerpAPI 搜索\n│   │   ├── tavily.py            # Tavily 搜索\n│   │   ├── brave.py             # Brave 搜索\n│   │   └── bocha.py             # Bocha 搜索\n│   └── llm/\n│       └── client.py            # LLM 客户端（OpenAI 兼容接口）\n├── scripts/                     # CLI 入口脚本\n│   ├── report.py                # 报告生成器（推荐入口）\n│   ├── analyze_stock.py         # 个股分析 JSON 输出\n│   └── analyze_market.py        # 市场分析 JSON 输出\n├── references/                  # 按需加载的详细文档\n│   └── data-sources.md          # 数据源架构详细说明\n├── test/                        # 测试\n├── requirements.txt\n├── config.example.yaml          # YAML 格式示例配置\n├── .env.example\n└── .gitignore\n```\n\n## 🏗️ 架构设计\n\n```\n┌──────────────────────────────────────────┐\n│         SKILL.md / manifest.yaml          │\n│         OpenClaw Skill 定义层             │\n└──────────────────┬───────────────────────┘\n                   │\n┌──────────────────▼───────────────────────┐\n│         src/index.py（接口层）              │\n│  handler()  analyze_stock()  analyze_market() │\n└──────────────────┬───────────────────────┘\n                   │\n┌──────────────────▼───────────────────────┐\n│        src/analyzer/（分析层）              │\n│     组装数据 + 构建 Prompt + 调用 LLM       │\n└──┬───────────────┬───────────┬───────────┘\n   │               │           │\n   ▼               ▼           ▼\n┌────────────┐ ┌──────┐ ┌──────────┐\n│  src/data/ │ │search│ │   llm/   │\n│   数据层    │ │搜索层 │ │  模型层   │\n│ 四级自动容灾 │ │5 引擎 │ │DeepSeek  │\n│            │ │(可扩展)│ │(OpenAI兼容)│\n│ 妙想(可选)  │ └──────┘ └──────────┘\n│  ↓ 失败     │\n│ Efinance   │\n│  ↓ 失败     │\n│ AkShare    │\n│  ↓ 失败     │\n│ Pytdx      │\n└────────────┘\n```\n\n每层均通过抽象基类解耦，可独立扩展：\n\n- **数据层**：实现 `MarketDataProvider` 即可接入新数据源，`DataProviderManager` 自动管理容灾切换\n- **搜索层**：实现 `NewsSearchEngine` 即可接入新搜索引擎\n- **模型层**：所有 OpenAI 兼容 API 均可直接使用\n\n### 数据源能力矩阵\n\n| 能力 | 妙想金融 | Efinance | AkShare | Pytdx |\n| --- | :---: | :---: | :---: | :---: |\n| 股票基本信息 | ✅ | ✅ | ✅ | ✅ |\n| 日 K 线数据 | ✅ | ✅ | ✅ | ✅ |\n| 实时行情 | ✅ | ✅ | ✅ | ✅ |\n| 筹码分布 | ❌ | ❌ | ✅ | ❌ |\n| 板块排名 | ❌ | ✅ | ✅ | ❌ |\n| 市场统计 | ❌ | ✅ | ✅ | ❌ |\n| 指数数据 | ✅ | ✅ | ✅ | ✅ |\n| 财务数据 | ✅ | ❌ | ❌ | ❌ |\n| 主力资金 | ✅ | ❌ | ❌ | ❌ |\n| 估值数据 | ✅ | ❌ | ❌ | ❌ |\n\n### 资讯搜索架构\n\n| 优先级 | 搜索引擎 | 数据源 | 需要 Key | 返回内容 |\n| :---: | --- | --- | :---: | --- |\n| 0 | **妙想搜索** | 东财妙想资讯 API | ✅ `MX_APIKEY` | 完整正文 + 新闻/研报/公告 |\n| 1 | SerpAPI | Google 搜索 | ✅ | snippet |\n| 2 | Tavily | Tavily AI 搜索 | ✅ | snippet |\n| 3 | Brave | Brave 搜索 | ✅ | snippet |\n| 4 | Bocha | 博查搜索 | ✅ | snippet |\n\n> - 配置 `MX_APIKEY` 后妙想搜索自动成为最高优先级，返回新闻 + 研报 + 公告三种类型\n> - 妙想搜索返回完整正文，由 LLM 自动提取核心摘要；其他引擎仅返回 snippet\n> - 研报类型含机构名称和评级（如\"中泰证券·研报·买入\"），LLM 可据此参考机构观点\n\n### 反封禁策略\n\n参照原项目实现，内置多项反封禁措施：\n\n- 随机 User-Agent 轮换（5 组 UA）\n- 请求间随机 Sleep（1.5 ~ 3.0 秒抖动）\n- 全市场实时行情缓存（TTL 600 秒）\n- 涨停 / 跌停精确计算（科创板 / 创业板 20%、北交所 30%、ST 5%、普通 10%）\n\n## ⚙️ 配置说明\n\n| 环境变量 | 必填 | 默认值 | 说明 |\n| --- | :---: | --- | --- |\n| `LLM_BASE_URL` | ✅ | `https://api.deepseek.com/v1` | OpenAI 兼容 API 地址 |\n| `LLM_API_KEY` | ✅ | — | API Key |\n| `LLM_MODEL` | ✅ | `deepseek-chat` | 模型名称 |\n| `SERPAPI_KEY` | ❌ | — | SerpAPI Key |\n| `TAVILY_KEY` | ❌ | — | Tavily Key |\n| `BRAVE_KEY` | ❌ | — | Brave Search Key |\n| `BOCHA_KEY` | ❌ | — | 博查搜索 Key |\n| `MX_APIKEY` | ❌ | — | 妙想金融数据 API Key（配置后自动成为第一优先级数据源） |\n| `BIAS_THRESHOLD` | ❌ | `5.0` | 乖离率阈值（%） |\n| `NEWS_MAX_AGE_DAYS` | ❌ | `3` | 新闻最大时效（天） |\n| `ENABLE_CHIP` | ❌ | `true` | 是否启用筹码分布 |\n| `LOG_LEVEL` | ❌ | `INFO` | 日志级别：DEBUG/INFO/WARNING/ERROR |\n\n## 📋 分析结果结构\n\n<details>\n<summary>个股分析 — StockAnalysisResult</summary>\n\n| 字段 | 类型 | 说明 |\n| --- | --- | --- |\n| `stock_code` | str | 股票代码 |\n| `stock_name` | str | 股票名称 |\n| `core_conclusion` | str | 一句话核心结论 |\n| `score` | int | 评分 0-100 |\n| `action` | str | 操作方向：买入/观望/卖出 |\n| `trend` | str | 趋势判断：看多/震荡/看空 |\n| `buy_price` | float | 建议买入价 |\n| `stop_loss_price` | float | 止损价 |\n| `target_price` | float | 目标价 |\n| `checklist` | list[CheckItem] | 操作检查清单 |\n| `risk_alerts` | list[str] | 风险警报 |\n| `positive_catalysts` | list[str] | 利好催化 |\n| `strategy` | str | 买卖策略建议 |\n| `raw_report` | str | LLM 完整分析报告（Markdown） |\n| `disclaimer` | str | 免责声明 |\n\n</details>\n\n<details>\n<summary>市场分析 — MarketAnalysisResult</summary>\n\n| 字段 | 类型 | 说明 |\n| --- | --- | --- |\n| `date` | str | 分析日期 |\n| `core_conclusion` | str | 一句话核心结论 |\n| `indices` | list[IndexData] | 主要指数数据 |\n| `statistics` | MarketStatistics | 涨跌统计 |\n| `top_sectors` | list[SectorData] | 领涨板块 |\n| `bottom_sectors` | list[SectorData] | 领跌板块 |\n| `sentiment` | str | 市场情绪：偏多/中性/偏空 |\n| `strategy` | str | 操作建议 |\n| `raw_report` | str | LLM 完整复盘报告（Markdown） |\n| `disclaimer` | str | 免责声明 |\n\n</details>\n\n## ⚠️ 注意事项\n\n- **免 Token 数据源**：Efinance / AkShare / Pytdx 均为免费接口，无需注册；妙想金融需配置 `MX_APIKEY`\n- **自动容灾**：任一数据源异常时自动切换至下一级，日志输出 `[数据源切换]` 提示\n- **网络环境**：东财接口在企业内网 / 代理下可能受限，系统会自动回退至新浪或通达信通道\n- **API 限流**：搜索 API 有调用频率限制，频繁调用可能触发限流\n- **数据时效**：实时行情基于最新日线数据，盘中数据可能有延迟\n- **无状态设计**：Skill 不保存任何分析结果，每次调用独立执行\n\n## 📄 License\n\n本项目基于 [MIT-0 License](LICENSE) 开源。\n\n## ⚖️ 免责声明\n\n本项目所有分析结果仅供参考，不构成投资建议。股市有风险，投资需谨慎。\n\nFile v1.0.6:_meta.json\n\n{\n  \"ownerId\": \"kn7da87j1vga39tq7bxyc830gh834079\",\n  \"slug\": \"stock-analysis-report\",\n  \"version\": \"1.0.6\",\n  \"publishedAt\": 1776764186670\n}\n\nFile v1.0.6:config.example.yaml\n\n# LLM 配置（必填）\nllm_base_url: \"https://api.deepseek.com/v1\"\nllm_api_key: \"your-api-key-here\"\nllm_model: \"deepseek-chat\"\n\n# 新闻搜索（至少配置一个）\nserpapi_key: \"\"\ntavily_key: \"\"\nbrave_key: \"\"\nbocha_key: \"\"\n\n# 妙想金融数据源（可选）— 配置后自动成为第一优先级\nmx_apikey: \"\"\n\n# 分析参数\nbias_threshold: 5.0\nnews_max_age_days: 3\nenable_chip: true\n\n# 日志级别：DEBUG / INFO / WARNING / ERROR\nlog_level: \"INFO\"\n\nFile v1.0.6:manifest.yaml\n\nname: stock-analysis\nversion: 1.0.6\nauthor: Derrors\nlicense: MIT-0\nruntime: python\nentry: src/index.py\ndescription: A股市场分析与个股深度分析技能，支持基本面（财务/估值）、资金面（主力资金/DDX）、技术面、筹码分布、舆情情报等多维度分析\n\ncategories:\n  - finance\n  - analysis\n\nrequires:\n  env:\n    - LLM_API_KEY\n    - LLM_BASE_URL\n    - LLM_MODEL\n  bins:\n    - python3\n\noptional:\n  env:\n    - MX_APIKEY\n    - SERPAPI_KEY\n    - TAVILY_KEY\n    - BRAVE_KEY\n    - BOCHA_KEY\n    - BIAS_THRESHOLD\n    - NEWS_MAX_AGE_DAYS\n    - ENABLE_CHIP\n    - LOG_LEVEL\n\ninstall:\n  - kind: uv\n    command: pip install -r requirements.txt\n\nconfig:\n  - key: llm_base_url\n    type: string\n    required: true\n    default: \"https://api.deepseek.com/v1\"\n    description: OpenAI兼容API地址\n  - key: llm_api_key\n    type: string\n    required: true\n    description: LLM API Key\n  - key: llm_model\n    type: string\n    required: true\n    default: \"deepseek-chat\"\n    description: 模型名称\n  - key: mx_apikey\n    type: string\n    required: false\n    description: 妙想金融API Key（配置后自动成为行情数据+财务/资金/估值+资讯搜索第一优先级）\n  - key: serpapi_key\n    type: string\n    required: false\n    description: SerpAPI搜索Key\n  - key: tavily_key\n    type: string\n    required: false\n    description: Tavily搜索Key\n  - key: brave_key\n    type: string\n    required: false\n    description: Brave搜索Key\n  - key: bocha_key\n    type: string\n    required: false\n    description: 博查搜索Key\n  - key: bias_threshold\n    type: number\n    required: false\n    default: 5.0\n    description: 乖离率阈值(%)\n  - key: news_max_age_days\n    type: integer\n    required: false\n    default: 3\n    description: 新闻最大时效(天)\n  - key: enable_chip\n    type: boolean\n    required: false\n    default: true\n    description: 是否启用筹码分布\n  - key: log_level\n    type: string\n    required: false\n    default: \"INFO\"\n    description: 日志级别 DEBUG/INFO/WARNING/ERROR\n\ninput:\n  type: object\n  properties:\n    mode:\n      type: string\n      enum: [stock, market]\n      description: 分析模式\n    code:\n      type: string\n      description: A股股票代码(mode=stock时必填)\n    save:\n      type: boolean\n      description: 是否保存Markdown报告到reports/目录\n    output_dir:\n      type: string\n      description: 自定义报告输出目录(需save=true)\n  required: [mode]\n\noutput:\n  type: object\n  properties:\n    stock_code:\n      type: string\n      description: 股票代码\n    stock_name:\n      type: string\n      description: 股票名称\n    core_conclusion:\n      type: string\n      description: 一句话核心结论\n    score:\n      type: integer\n      description: 评分0-100\n    action:\n      type: string\n      description: 操作方向(买入/观望/卖出)\n    trend:\n      type: string\n      description: 趋势判断(看多/震荡/看空)\n    buy_price:\n      type: number\n      description: 建议买入价\n    stop_loss_price:\n      type: number\n      description: 止损价\n    target_price:\n      type: number\n      description: 目标价\n    capital_flow:\n      type: object\n      description: 主力资金流向(超大单/大单/中单/小单净额+DDX/DDY/DDZ)\n    valuation:\n      type: object\n      description: 估值数据(PE_TTM/PB/历史分位)\n    financial:\n      type: object\n      description: 核心财务指标(净利润/营收/ROE/毛利率/资产负债率/机构持股)\n    sentiment:\n      type: string\n      description: 市场情绪(偏多/中性/偏空)\n    raw_report:\n      type: string\n      description: LLM完整分析报告(Markdown)\n\nFile v1.0.6:requirements.txt\n\nopenai>=1.0.0\nefinance>=0.5.0\nakshare>=1.10.0\npytdx>=1.72\nnumpy>=1.24.0\npandas>=2.0.0\nhttpx>=0.25.0\nrequests>=2.28.0\npython-dotenv>=1.0.0\n\nArchive v1.0.5: 41 files, 68862 bytes\n\nFiles: config.example.yaml (461b), manifest.yaml (3674b), README.md (13610b), requirements.txt (138b), scripts/analyze_market.py (727b), scripts/analyze_stock.py (835b), scripts/report.py (1828b), SKILL.md (8990b), src/__init__.py (1b), src/analyzer/__init__.py (0b), src/analyzer/market.py (3998b), src/analyzer/prompts.py (4800b), src/analyzer/stock.py (21758b), src/config.py (2254b), src/data/__init__.py (0b), src/data/akshare_provider.py (16773b), src/data/efinance_provider.py (13216b), src/data/manager.py (8595b), src/data/miaoxiang_provider.py (29278b), src/data/provider.py (2507b), src/data/pytdx_provider.py (10921b), src/data/utils.py (5193b), src/index.py (7115b), src/llm/__init__.py (0b), src/llm/client.py (2742b), src/models.py (4682b), src/report.py (19641b), src/search/__init__.py (0b), src/search/base.py (428b), src/search/bocha.py (1702b), src/search/brave.py (1711b), src/search/miaoxiang.py (4550b), src/search/serpapi.py (1534b), src/search/tavily.py (1505b), test/__init__.py (0b), test/test_config.py (3163b), test/test_index.py (1973b), test/test_manager.py (12835b), test/test_models.py (3012b), test/test_utils.py (2517b), _meta.json (140b)\n\nFile v1.0.5:SKILL.md\n\n---\n\nname: stock-analysis\ndescription: |\n  A股市场分析与个股深度分析技能。支持基本面（财务指标/估值分位）、资金面（主力资金/DDX/DDY/DDZ）、技术面（均线/乖离率/量比）、筹码分布、舆情情报（新闻/研报/公告）等多维度分析，输出结构化评分与操作建议。\n\nTriggers: \"分析股票\", \"个股分析\", \"市场分析\", \"A股分析\", \"stock analysis\", \"analyze stock\", \"market analysis\", \"股票评分\", \"买卖建议\", \"涨停分析\"\n\nDoes NOT trigger:\n\n- 简单的股价查询（无需深度分析）\n- 港股/美股/非A股市场分析\n- 基金/债券/期货分析\n\nOutput: 结构化分析报告（评分0-100、操作方向、买卖点位、风险提示、检查清单）\nversion: 1.1.0\nlicense: MIT-0\nmetadata:\n  openclaw:\n    requires:\n      env:\n        - LLM_API_KEY\n        - LLM_BASE_URL\n        - LLM_MODEL\n      bins:\n        - python3\n    optional:\n      env:\n        - MX_APIKEY\n        - SERPAPI_KEY\n        - TAVILY_KEY\n        - BRAVE_KEY\n        - BOCHA_KEY\n        - BIAS_THRESHOLD\n        - NEWS_MAX_AGE_DAYS\n        - ENABLE_CHIP\n        - LOG_LEVEL\n    primaryEnv: LLM_API_KEY\n    emoji: \"📈\"\n    install:\n      - kind: uv\n        command: pip install -r requirements.txt\n\n---\n\n# A股股票市场分析 Skill\n\n## 功能\n\n### 个股分析\n\n输入股票代码，输出结构化分析结果：\n\n- **基本面**：净利润、营收、ROE、毛利率、资产负债率、机构持股比例、盈利预测\n- **估值**：PE(TTM)、PB、历史分位\n- **资金面**：主力资金流向（超大单/大单/中单/小单净额）、DDX/DDY/DDZ 指标\n- **技术面**：MA5/MA10/MA20/MA60 均线、多头排列、乖离率、量比\n- **筹码分布**：获利比例、平均成本、集中度\n- **舆情情报**：妙想金融资讯（新闻/研报/公告，LLM 摘要提取）+ 多引擎新闻搜索\n- **实时行情**：当前价、涨跌幅、成交量、换手率\n- **分析结论**：评分 + 操作方向 + 买卖点位 + 检查清单 + 风险提示\n\n### 市场分析\n\n每日 A 股市场复盘：\n\n- 主要指数（上证/深证/创业板）\n- 涨跌统计（涨跌家数、涨停跌停数）\n- 板块排名（领涨/领跌 Top5）\n- 市场情绪判断 + 操作建议\n\n## 使用方式\n\n### 生成分析报告（推荐）\n\n```bash\n# 个股分析报告 → 保存到 reports/{代码}_{日期}.md\npython3 {baseDir}/scripts/report.py stock 600519\n\n# 市场分析报告 → 保存到 reports/market_{日期}.md\npython3 {baseDir}/scripts/report.py market\n\n# 同时输出 JSON\npython3 {baseDir}/scripts/report.py stock 600519 --json\n\n# 自定义输出目录\npython3 {baseDir}/scripts/report.py stock 600519 -o ./my-reports\n```\n\n### JSON 输出\n\n```bash\npython3 {baseDir}/scripts/analyze_stock.py 600519\npython3 {baseDir}/scripts/analyze_market.py\n```\n\n### Handler 调用\n\n```python\nfrom src.index import handler\nresult = await handler({\"mode\": \"stock\", \"code\": \"600519\"})\nresult = await handler({\"mode\": \"market\"})\nresult = await handler({\"mode\": \"stock\", \"code\": \"600519\", \"save\": True})\nresult = await handler({\"mode\": \"stock\", \"code\": \"600519\", \"save\": True, \"output_dir\": \"./reports\"})\n```\n\n## 输入格式\n\n| 字段          | 类型      | 必填            | 说明                            |\n| ----------- | ------- | ------------- | ----------------------------- |\n| mode        | string  | 是             | \"stock\" 或 \"market\"            |\n| code        | string  | mode=stock时必填 | A股股票代码，如 \"600519\"             |\n| save        | boolean | 否             | 是否保存 Markdown 报告到 reports/ 目录 |\n| output_dir | string  | 否             | 自定义报告输出目录（需 save=true）        |\n\n## 输出格式\n\n### 个股分析结果\n\n```json\n{\n  \"stock_code\": \"600519\",\n  \"stock_name\": \"贵州茅台\",\n  \"core_conclusion\": \"一句话核心结论\",\n  \"score\": 75,\n  \"action\": \"买入/观望/卖出\",\n  \"trend\": \"看多/震荡/看空\",\n  \"buy_price\": 1800.0,\n  \"stop_loss_price\": 1700.0,\n  \"target_price\": 2000.0,\n  \"checklist\": [{\"condition\": \"...\", \"status\": \"✅/❌\", \"detail\": \"...\"}],\n  \"risk_alerts\": [\"风险1\", \"风险2\"],\n  \"positive_catalysts\": [\"利好1\"],\n  \"strategy\": \"买卖策略建议\",\n  \"stock_info\": {\"code\": \"600519\", \"name\": \"贵州茅台\", \"industry\": \"白酒\", \"market_cap\": 2200000000000},\n  \"realtime\": {\"price\": 1800.0, \"change_pct\": 1.5, \"turnover_rate\": 0.8},\n  \"tech\": {\"ma5\": 1780.0, \"ma10\": 1760.0, \"ma20\": 1740.0, \"ma60\": 1700.0, \"is_bullish_alignment\": true, \"bias\": 2.1, \"volume_ratio\": 1.2},\n  \"chip\": {\"profit_ratio\": 75.0, \"avg_cost\": 1720.0, \"concentration\": 12.5},\n  \"capital_flow\": {\"super_large_net\": 500000000, \"large_net\": 200000000, \"ddx\": 0.26, \"ddy\": 0.15, \"ddz\": 5.3},\n  \"valuation\": {\"pe_ttm\": 28.5, \"pb\": 8.2, \"pe_percentile\": 45.0, \"pb_percentile\": 30.0},\n  \"financial\": {\"net_profit\": 55000000000, \"revenue\": 120000000000, \"roe\": 30.5, \"gross_margin\": 91.2, \"debt_ratio\": 25.3, \"institution_holding_pct\": 65.0},\n  \"news\": [{\"title\": \"...\", \"snippet\": \"LLM提取摘要\", \"date\": \"2025-01-15\", \"source\": \"中泰证券·研报·买入\", \"info_type\": \"report\"}],\n  \"raw_report\": \"LLM完整分析报告(Markdown)\",\n  \"disclaimer\": \"仅供参考，不构成投资建议\"\n}\n```\n\n### 市场分析结果\n\n```json\n{\n  \"date\": \"2025-01-15\",\n  \"core_conclusion\": \"一句话核心结论\",\n  \"indices\": [{\"name\": \"上证指数\", \"close\": 3200.0, \"change_pct\": 0.5}],\n  \"statistics\": {\"up_count\": 3000, \"down_count\": 1500, \"limit_up_count\": 50},\n  \"top_sectors\": [{\"name\": \"半导体\", \"change_pct\": 3.2}],\n  \"bottom_sectors\": [{\"name\": \"房地产\", \"change_pct\": -1.5}],\n  \"sentiment\": \"偏多/中性/偏空\",\n  \"strategy\": \"操作建议\",\n  \"raw_report\": \"LLM完整复盘报告(Markdown)\"\n}\n```\n\n## 数据源\n\n### 行情数据\n\n四级自动容灾，并行竞争 + 超时控制：\n\n| 优先级 | 数据源          | 覆盖能力              | 需要 Key        |\n| --- | ------------ | ----------------- | ------------- |\n| 0   | **妙想金融**     | 行情 + 财务 + 资金 + 估值 | ✅ `MX_APIKEY` |\n| 1   | **Efinance** | 行情 + 板块 + 市场统计    | ❌             |\n| 2   | **AkShare**  | 行情 + 筹码 + 板块      | ❌             |\n| 3   | **Pytdx**    | 行情 + 指数（兜底）       | ❌             |\n\n- 配置 `MX_APIKEY` 后妙想自动成为最高优先级；未配置时从 Efinance 开始\n- 所有数据源**并行请求**，按优先级取第一个有效结果；日K线取行数最多的结果\n- 单数据源超时 10 秒自动降级，任一数据源异常不影响整体分析\n\n### 资讯搜索\n\n五级自动容灾，串行降级：\n\n| 优先级 | 搜索引擎     | 返回内容                   | 需要 Key          |\n| --- | -------- | ---------------------- | --------------- |\n| 0   | **妙想搜索** | 完整正文 + 新闻/研报/公告 + 机构评级 | ✅ `MX_APIKEY`   |\n| 1   | SerpAPI  | snippet                | ✅ `SERPAPI_KEY` |\n| 2   | Tavily   | snippet                | ✅ `TAVILY_KEY`  |\n| 3   | Brave    | snippet                | ✅ `BRAVE_KEY`   |\n| 4   | Bocha    | snippet                | ✅ `BOCHA_KEY`   |\n\n- 妙想搜索返回完整正文，由 LLM 自动提取核心摘要；其他引擎仅返回 snippet\n- 研报类型含机构名称和评级（如\"中泰证券·研报·买入\"），LLM 可据此参考机构观点\n\n详见 references/data-sources.md。\n\n## 性能特性\n\n- **并行数据采集**：个股分析的 7 个数据维度（日K线、实时行情、筹码、资金、估值、财务、资讯）并行获取，总耗时取决于最慢的单项\n- **并行数据源竞争**：同一数据维度在多个数据源间并行请求，按优先级取第一个有效结果\n- **超时保护**：单数据源请求超时 10 秒自动降级，避免阻塞\n- **LLM 摘要提取**：妙想资讯返回完整正文，由 LLM 批量提取核心摘要，保留关键投资信息\n\n## 环境变量\n\n| 变量            | 必填 | 说明                                               |\n| -------------- | -- | ------------------------------------------------ |\n| LLM_API_KEY    | 是  | LLM API Key                                      |\n| LLM_BASE_URL   | 是  | OpenAI 兼容 API 地址                                 |\n| LLM_MODEL      | 是  | 模型名称                                             |\n| MX_APIKEY      | 否  | 妙想金融 API Key（配置后自动成为行情数据 + 财务/资金/估值 + 资讯搜索第一优先级） |\n| SERPAPI_KEY    | 否  | SerpAPI 搜索 Key                                   |\n| TAVILY_KEY     | 否  | Tavily 搜索 Key                                    |\n| BRAVE_KEY      | 否  | Brave 搜索 Key                                     |\n| BOCHA_KEY      | 否  | 博查搜索 Key                                         |\n\n## 注意事项\n\n- Efinance / AkShare / Pytdx 为免费接口，无需注册；妙想金融需配置 `MX_APIKEY`\n- 分析结果仅供参考，不构成投资建议\n\nFile v1.0.5:README.md\n\n<div align=\"center\">\n\n# 📈 A 股股票市场分析 Skill\n\n专为 OpenClaw 等智能体设计的 A 股股票分析技能\n\n[![License: MIT-0](https://img.shields.io/badge/License-MIT--0-yellow.svg)](LICENSE)\n[![Python 3.9+](https://img.shields.io/badge/Python-3.9%2B-blue.svg)](https://www.python.org/)\n[![OpenClaw Skill](https://img.shields.io/badge/OpenClaw-Skill-green.svg)](https://github.com/openclaw)\n\n基于 [daily_stock_analysis](https://github.com/ZhuLinsen/daily_stock_analysis) 项目精简重写，去除 WebUI、通知推送、Agent 问股等非核心功能，聚焦分析能力本身。\n\n</div>\n\n---\n\n## ✨ 功能特性\n\n### 📊 个股分析\n\n输入股票代码，输出结构化分析结果：\n\n- **技术面分析**：MA5/MA10/MA20/MA60 均线、多头排列判断、乖离率、量比\n- **筹码分布**：获利比例、平均成本、集中度\n- **舆情情报**：妙想金融资讯（新闻/研报/公告）+ 多引擎新闻搜索\n- **实时行情**：当前价、涨跌幅、成交量、换手率等\n- **分析结论**：一句话核心结论 + 评分 + 操作方向 + 精确买卖点位 + 操作检查清单 + 买卖策略\n\n### 🌐 市场分析\n\n每日 A 股市场复盘：\n\n- **主要指数**：上证指数、深证成指、创业板指\n- **市场统计**：涨跌家数、涨停跌停数\n- **板块排名**：领涨 / 领跌板块 Top5\n- **分析结论**：市场情绪判断 + 操作建议 + 完整复盘报告\n\n### 🔄 多源数据架构\n\n行情数据采用四级自动容灾策略：\n\n| 优先级 | 数据源 | 说明 | 需要 Token |\n| :---: | --- | --- | :---: |\n| 0 | **妙想金融** | 东财妙想 API，覆盖行情 + 财务数据 | ✅ `MX_APIKEY` |\n| 1 | **Efinance** | 基于东财接口，覆盖日 K、实时行情、板块排名、市场统计 | ❌ |\n| 2 | **AkShare** | 东财 + 新浪双通道，额外支持筹码分布 | ❌ |\n| 3 | **Pytdx** | 直连通达信行情服务器，支持日 K、实时行情、指数数据 | ❌ |\n\n> - 配置 `MX_APIKEY` 后妙想自动成为最高优先级；未配置时从 Efinance 开始\n> - 任意数据源异常时自动切换到下一级，无需人工干预\n\n## 🚀 快速开始\n\n### 1. 安装依赖\n\n```bash\npip install -r requirements.txt\n```\n\n### 2. 配置环境变量\n\n```bash\ncp .env.example .env\n```\n\n编辑 `.env` 文件，填入你的 API Key：\n\n```env\n# LLM 配置（必填）— 支持 DeepSeek 和 OpenAI 兼容模型\nLLM_BASE_URL=https://api.deepseek.com/v1\nLLM_API_KEY=your-api-key-here\nLLM_MODEL=deepseek-chat\n\n# 妙想金融数据（可选，配置后自动成为第一优先级数据源 + 资讯搜索源）\nMX_APIKEY=\n\n# 新闻搜索（至少配置一个，可选）\nSERPAPI_KEY=\nTAVILY_KEY=\nBRAVE_KEY=\nBOCHA_KEY=\n```\n\n> 💡 行情数据源（Efinance / AkShare / Pytdx）均为免费接口，无需配置任何 Token。\n\n### 3. 调用分析\n\n#### 生成 Markdown 报告（推荐）\n\n```bash\n# 个股分析报告 → reports/{代码}_{日期}.md\npython3 scripts/report.py stock 600519\n\n# 市场分析报告 → reports/market_{日期}.md\npython3 scripts/report.py market\n\n# 同时输出 JSON\npython3 scripts/report.py stock 600519 --json\n\n# 自定义输出目录\npython3 scripts/report.py stock 600519 -o ./my-reports\n```\n\n#### JSON 输出\n\n```bash\npython3 scripts/analyze_stock.py 600519    # 个股分析\npython3 scripts/analyze_market.py          # 市场分析\n```\n\n#### Python API\n\n```python\nimport asyncio\nfrom src.index import analyze_stock, analyze_market\n\n# 个股分析 + 保存报告\nresult = asyncio.run(analyze_stock(\"600519\", save=True))\nprint(result.core_conclusion)   # 一句话核心结论\nprint(result.action)            # 买入/观望/卖出\n\n# 市场分析 + 保存报告\nresult = asyncio.run(analyze_market(save=True))\nprint(result.sentiment)         # 偏多/中性/偏空\n```\n\n#### OpenClaw Handler\n\n```python\nfrom src.index import handler\n\nresult = await handler({\"mode\": \"stock\", \"code\": \"600519\"})\nresult = await handler({\"mode\": \"market\", \"save\": True})\n```\n\n<details>\n<summary>自定义配置</summary>\n\n```python\nfrom src.config import SkillConfig\n\nconfig = SkillConfig(\n    llm_base_url=\"https://api.openai.com/v1\",\n    llm_api_key=\"sk-xxx\",\n    llm_model=\"gpt-4o\",\n)\n\nresult = asyncio.run(analyze_stock(\"000001\", config=config))\n```\n\n</details>\n\n## 📁 项目结构\n\n```\nstock-analysis/\n├── SKILL.md                     # Skill 定义（OpenClaw 标准入口）\n├── manifest.yaml                # 机器可读元数据 + 输入输出 Schema\n├── src/                         # 源代码\n│   ├── index.py                 # Skill 入口（handler + analyze_stock/market）\n│   ├── config.py                # 配置管理（环境变量 + .env）\n│   ├── models.py                # 数据模型定义\n│   ├── report.py                # Markdown 报告生成\n│   ├── analyzer/\n│   │   ├── stock.py             # 个股分析引擎\n│   │   ├── market.py            # 市场分析引擎\n│   │   └── prompts.py           # Prompt 模板\n│   ├── data/\n│   │   ├── provider.py          # 数据源抽象基类\n│   │   ├── efinance_provider.py # Efinance 数据源（优先级 1）\n│   │   ├── akshare_provider.py  # AkShare 数据源（优先级 2）\n│   │   ├── pytdx_provider.py    # Pytdx 数据源（优先级 3）\n│   │   ├── manager.py           # 数据源管理器（多源自动容灾）\n│   │   └── utils.py             # 公共工具（缓存/统计/限流）\n│   ├── search/\n│   │   ├── base.py              # 搜索引擎抽象基类\n│   │   ├── miaoxiang.py         # 妙想金融资讯搜索（优先级 0）\n│   │   ├── serpapi.py           # SerpAPI 搜索\n│   │   ├── tavily.py            # Tavily 搜索\n│   │   ├── brave.py             # Brave 搜索\n│   │   └── bocha.py             # Bocha 搜索\n│   └── llm/\n│       └── client.py            # LLM 客户端（OpenAI 兼容接口）\n├── scripts/                     # CLI 入口脚本\n│   ├── report.py                # 报告生成器（推荐入口）\n│   ├── analyze_stock.py         # 个股分析 JSON 输出\n│   └── analyze_market.py        # 市场分析 JSON 输出\n├── references/                  # 按需加载的详细文档\n│   └── data-sources.md          # 数据源架构详细说明\n├── test/                        # 测试\n├── requirements.txt\n├── config.example.yaml          # YAML 格式示例配置\n├── .env.example\n└── .gitignore\n```\n\n## 🏗️ 架构设计\n\n```\n┌──────────────────────────────────────────┐\n│         SKILL.md / manifest.yaml          │\n│         OpenClaw Skill 定义层             │\n└──────────────────┬───────────────────────┘\n                   │\n┌──────────────────▼───────────────────────┐\n│         src/index.py（接口层）              │\n│  handler()  analyze_stock()  analyze_market() │\n└──────────────────┬───────────────────────┘\n                   │\n┌──────────────────▼───────────────────────┐\n│        src/analyzer/（分析层）              │\n│     组装数据 + 构建 Prompt + 调用 LLM       │\n└──┬───────────────┬───────────┬───────────┘\n   │               │           │\n   ▼               ▼           ▼\n┌────────────┐ ┌──────┐ ┌──────────┐\n│  src/data/ │ │search│ │   llm/   │\n│   数据层    │ │搜索层 │ │  模型层   │\n│ 四级自动容灾 │ │5 引擎 │ │DeepSeek  │\n│            │ │(可扩展)│ │(OpenAI兼容)│\n│ 妙想(可选)  │ └──────┘ └──────────┘\n│  ↓ 失败     │\n│ Efinance   │\n│  ↓ 失败     │\n│ AkShare    │\n│  ↓ 失败     │\n│ Pytdx      │\n└────────────┘\n```\n\n每层均通过抽象基类解耦，可独立扩展：\n\n- **数据层**：实现 `MarketDataProvider` 即可接入新数据源，`DataProviderManager` 自动管理容灾切换\n- **搜索层**：实现 `NewsSearchEngine` 即可接入新搜索引擎\n- **模型层**：所有 OpenAI 兼容 API 均可直接使用\n\n### 数据源能力矩阵\n\n| 能力 | 妙想金融 | Efinance | AkShare | Pytdx |\n| --- | :---: | :---: | :---: | :---: |\n| 股票基本信息 | ✅ | ✅ | ✅ | ✅ |\n| 日 K 线数据 | ✅ | ✅ | ✅ | ✅ |\n| 实时行情 | ✅ | ✅ | ✅ | ✅ |\n| 筹码分布 | ❌ | ❌ | ✅ | ❌ |\n| 板块排名 | ❌ | ✅ | ✅ | ❌ |\n| 市场统计 | ❌ | ✅ | ✅ | ❌ |\n| 指数数据 | ✅ | ✅ | ✅ | ✅ |\n| 财务数据 | ✅ | ❌ | ❌ | ❌ |\n| 主力资金 | ✅ | ❌ | ❌ | ❌ |\n| 估值数据 | ✅ | ❌ | ❌ | ❌ |\n\n### 资讯搜索架构\n\n| 优先级 | 搜索引擎 | 数据源 | 需要 Key | 返回内容 |\n| :---: | --- | --- | :---: | --- |\n| 0 | **妙想搜索** | 东财妙想资讯 API | ✅ `MX_APIKEY` | 完整正文 + 新闻/研报/公告 |\n| 1 | SerpAPI | Google 搜索 | ✅ | snippet |\n| 2 | Tavily | Tavily AI 搜索 | ✅ | snippet |\n| 3 | Brave | Brave 搜索 | ✅ | snippet |\n| 4 | Bocha | 博查搜索 | ✅ | snippet |\n\n> - 配置 `MX_APIKEY` 后妙想搜索自动成为最高优先级，返回新闻 + 研报 + 公告三种类型\n> - 妙想搜索返回完整正文，由 LLM 自动提取核心摘要；其他引擎仅返回 snippet\n> - 研报类型含机构名称和评级（如\"中泰证券·研报·买入\"），LLM 可据此参考机构观点\n\n### 反封禁策略\n\n参照原项目实现，内置多项反封禁措施：\n\n- 随机 User-Agent 轮换（5 组 UA）\n- 请求间随机 Sleep（1.5 ~ 3.0 秒抖动）\n- 全市场实时行情缓存（TTL 600 秒）\n- 涨停 / 跌停精确计算（科创板 / 创业板 20%、北交所 30%、ST 5%、普通 10%）\n\n## ⚙️ 配置说明\n\n| 环境变量 | 必填 | 默认值 | 说明 |\n| --- | :---: | --- | --- |\n| `LLM_BASE_URL` | ✅ | `https://api.deepseek.com/v1` | OpenAI 兼容 API 地址 |\n| `LLM_API_KEY` | ✅ | — | API Key |\n| `LLM_MODEL` | ✅ | `deepseek-chat` | 模型名称 |\n| `SERPAPI_KEY` | ❌ | — | SerpAPI Key |\n| `TAVILY_KEY` | ❌ | — | Tavily Key |\n| `BRAVE_KEY` | ❌ | — | Brave Search Key |\n| `BOCHA_KEY` | ❌ | — | 博查搜索 Key |\n| `MX_APIKEY` | ❌ | — | 妙想金融数据 API Key（配置后自动成为第一优先级数据源） |\n| `BIAS_THRESHOLD` | ❌ | `5.0` | 乖离率阈值（%） |\n| `NEWS_MAX_AGE_DAYS` | ❌ | `3` | 新闻最大时效（天） |\n| `ENABLE_CHIP` | ❌ | `true` | 是否启用筹码分布 |\n| `LOG_LEVEL` | ❌ | `INFO` | 日志级别：DEBUG/INFO/WARNING/ERROR |\n\n## 📋 分析结果结构\n\n<details>\n<summary>个股分析 — StockAnalysisResult</summary>\n\n| 字段 | 类型 | 说明 |\n| --- | --- | --- |\n| `stock_code` | str | 股票代码 |\n| `stock_name` | str | 股票名称 |\n| `core_conclusion` | str | 一句话核心结论 |\n| `score` | int | 评分 0-100 |\n| `action` | str | 操作方向：买入/观望/卖出 |\n| `trend` | str | 趋势判断：看多/震荡/看空 |\n| `buy_price` | float | 建议买入价 |\n| `stop_loss_price` | float | 止损价 |\n| `target_price` | float | 目标价 |\n| `checklist` | list[CheckItem] | 操作检查清单 |\n| `risk_alerts` | list[str] | 风险警报 |\n| `positive_catalysts` | list[str] | 利好催化 |\n| `strategy` | str | 买卖策略建议 |\n| `raw_report` | str | LLM 完整分析报告（Markdown） |\n| `disclaimer` | str | 免责声明 |\n\n</details>\n\n<details>\n<summary>市场分析 — MarketAnalysisResult</summary>\n\n| 字段 | 类型 | 说明 |\n| --- | --- | --- |\n| `date` | str | 分析日期 |\n| `core_conclusion` | str | 一句话核心结论 |\n| `indices` | list[IndexData] | 主要指数数据 |\n| `statistics` | MarketStatistics | 涨跌统计 |\n| `top_sectors` | list[SectorData] | 领涨板块 |\n| `bottom_sectors` | list[SectorData] | 领跌板块 |\n| `sentiment` | str | 市场情绪：偏多/中性/偏空 |\n| `strategy` | str | 操作建议 |\n| `raw_report` | str | LLM 完整复盘报告（Markdown） |\n| `disclaimer` | str | 免责声明 |\n\n</details>\n\n## ⚠️ 注意事项\n\n- **免 Token 数据源**：Efinance / AkShare / Pytdx 均为免费接口，无需注册；妙想金融需配置 `MX_APIKEY`\n- **自动容灾**：任一数据源异常时自动切换至下一级，日志输出 `[数据源切换]` 提示\n- **网络环境**：东财接口在企业内网 / 代理下可能受限，系统会自动回退至新浪或通达信通道\n- **API 限流**：搜索 API 有调用频率限制，频繁调用可能触发限流\n- **数据时效**：实时行情基于最新日线数据，盘中数据可能有延迟\n- **无状态设计**：Skill 不保存任何分析结果，每次调用独立执行\n\n## 📄 License\n\n本项目基于 [MIT-0 License](LICENSE) 开源。\n\n## ⚖️ 免责声明\n\n本项目所有分析结果仅供参考，不构成投资建议。股市有风险，投资需谨慎。\n\nFile v1.0.5:_meta.json\n\n{\n  \"ownerId\": \"kn7da87j1vga39tq7bxyc830gh834079\",\n  \"slug\": \"stock-analysis-report\",\n  \"version\": \"1.0.5\",\n  \"publishedAt\": 1776763754725\n}\n\nFile v1.0.5:config.example.yaml\n\n# LLM 配置（必填）\nllm_base_url: \"https://api.deepseek.com/v1\"\nllm_api_key: \"your-api-key-here\"\nllm_model: \"deepseek-chat\"\n\n# 新闻搜索（至少配置一个）\nserpapi_key: \"\"\ntavily_key: \"\"\nbrave_key: \"\"\nbocha_key: \"\"\n\n# 妙想金融数据源（可选）— 配置后自动成为第一优先级\nmx_apikey: \"\"\n\n# 分析参数\nbias_threshold: 5.0\nnews_max_age_days: 3\nenable_chip: true\n\n# 日志级别：DEBUG / INFO / WARNING / ERROR\nlog_level: \"INFO\"\n\nFile v1.0.5:manifest.yaml\n\nname: stock-analysis\nversion: 1.0.5\nauthor: Derrors\nlicense: MIT-0\nruntime: python\nentry: src/index.py\ndescription: A股市场分析与个股深度分析技能，支持基本面（财务/估值）、资金面（主力资金/DDX）、技术面、筹码分布、舆情情报等多维度分析\n\ncategories:\n  - finance\n  - analysis\n\nrequires:\n  env:\n    - LLM_API_KEY\n    - LLM_BASE_URL\n    - LLM_MODEL\n  bins:\n    - python3\n\noptional:\n  env:\n    - MX_APIKEY\n    - SERPAPI_KEY\n    - TAVILY_KEY\n    - BRAVE_KEY\n    - BOCHA_KEY\n    - BIAS_THRESHOLD\n    - NEWS_MAX_AGE_DAYS\n    - ENABLE_CHIP\n    - LOG_LEVEL\n\ninstall:\n  - kind: uv\n    command: pip install -r requirements.txt\n\nconfig:\n  - key: llm_base_url\n    type: string\n    required: true\n    default: \"https://api.deepseek.com/v1\"\n    description: OpenAI兼容API地址\n  - key: llm_api_key\n    type: string\n    required: true\n    description: LLM API Key\n  - key: llm_model\n    type: string\n    required: true\n    default: \"deepseek-chat\"\n    description: 模型名称\n  - key: mx_apikey\n    type: string\n    required: false\n    description: 妙想金融API Key（配置后自动成为行情数据+财务/资金/估值+资讯搜索第一优先级）\n  - key: serpapi_key\n    type: string\n    required: false\n    description: SerpAPI搜索Key\n  - key: tavily_key\n    type: string\n    required: false\n    description: Tavily搜索Key\n  - key: brave_key\n    type: string\n    required: false\n    description: Brave搜索Key\n  - key: bocha_key\n    type: string\n    required: false\n    description: 博查搜索Key\n  - key: bias_threshold\n    type: number\n    required: false\n    default: 5.0\n    description: 乖离率阈值(%)\n  - key: news_max_age_days\n    type: integer\n    required: false\n    default: 3\n    description: 新闻最大时效(天)\n  - key: enable_chip\n    type: boolean\n    required: false\n    default: true\n    description: 是否启用筹码分布\n  - key: log_level\n    type: string\n    required: false\n    default: \"INFO\"\n    description: 日志级别 DEBUG/INFO/WARNING/ERROR\n\ninput:\n  type: object\n  properties:\n    mode:\n      type: string\n      enum: [stock, market]\n      description: 分析模式\n    code:\n      type: string\n      description: A股股票代码(mode=stock时必填)\n    save:\n      type: boolean\n      description: 是否保存Markdown报告到reports/目录\n    output_dir:\n      type: string\n      description: 自定义报告输出目录(需save=true)\n  required: [mode]\n\noutput:\n  type: object\n  properties:\n    stock_code:\n      type: string\n      description: 股票代码\n    stock_name:\n      type: string\n      description: 股票名称\n    core_conclusion:\n      type: string\n      description: 一句话核心结论\n    score:\n      type: integer\n      description: 评分0-100\n    action:\n      type: string\n      description: 操作方向(买入/观望/卖出)\n    trend:\n      type: string\n      description: 趋势判断(看多/震荡/看空)\n    buy_price:\n      type: number\n      description: 建议买入价\n    stop_loss_price:\n      type: number\n      description: 止损价\n    target_price:\n      type: number\n      description: 目标价\n    capital_flow:\n      type: object\n      description: 主力资金流向(超大单/大单/中单/小单净额+DDX/DDY/DDZ)\n    valuation:\n      type: object\n      description: 估值数据(PE_TTM/PB/历史分位)\n    financial:\n      type: object\n      description: 核心财务指标(净利润/营收/ROE/毛利率/资产负债率/机构持股)\n    sentiment:\n      type: string\n      description: 市场情绪(偏多/中性/偏空)\n    raw_report:\n      type: string\n      description: LLM完整分析报告(Markdown)\n\nFile v1.0.5:requirements.txt\n\nopenai>=1.0.0\nefinance>=0.5.0\nakshare>=1.10.0\npytdx>=1.72\nnumpy>=1.24.0\npandas>=2.0.0\nhttpx>=0.25.0\nrequests>=2.28.0\npython-dotenv>=1.0.0\n\nArchive v1.0.4: 41 files, 68687 bytes\n\nFiles: config.example.yaml (461b), manifest.yaml (3333b), README.md (13610b), requirements.txt (138b), scripts/analyze_market.py (727b), scripts/analyze_stock.py (835b), scripts/report.py (1828b), SKILL.md (8990b), src/__init__.py (1b), src/analyzer/__init__.py (0b), src/analyzer/market.py (3998b), src/analyzer/prompts.py (4800b), src/analyzer/stock.py (21758b), src/config.py (2254b), src/data/__init__.py (0b), src/data/akshare_provider.py (16773b), src/data/efinance_provider.py (13216b), src/data/manager.py (8595b), src/data/miaoxiang_provider.py (29278b), src/data/provider.py (2507b), src/data/pytdx_provider.py (10921b), src/data/utils.py (5193b), src/index.py (7115b), src/llm/__init__.py (0b), src/llm/client.py (2742b), src/models.py (4682b), src/report.py (19641b), src/search/__init__.py (0b), src/search/base.py (428b), src/search/bocha.py (1702b), src/search/brave.py (1711b), src/search/miaoxiang.py (4550b), src/search/serpapi.py (1534b), src/search/tavily.py (1505b), test/__init__.py (0b), test/test_config.py (3163b), test/test_index.py (1973b), test/test_manager.py (12835b), test/test_models.py (3012b), test/test_utils.py (2517b), _meta.json (140b)\n\nFile v1.0.4:SKILL.md\n\n---\n\nname: stock-analysis\ndescription: |\n  A股市场分析与个股深度分析技能。支持基本面（财务指标/估值分位）、资金面（主力资金/DDX/DDY/DDZ）、技术面（均线/乖离率/量比）、筹码分布、舆情情报（新闻/研报/公告）等多维度分析，输出结构化评分与操作建议。\n\nTriggers: \"分析股票\", \"个股分析\", \"市场分析\", \"A股分析\", \"stock analysis\", \"analyze stock\", \"market analysis\", \"股票评分\", \"买卖建议\", \"涨停分析\"\n\nDoes NOT trigger:\n\n- 简单的股价查询（无需深度分析）\n- 港股/美股/非A股市场分析\n- 基金/债券/期货分析\n\nOutput: 结构化分析报告（评分0-100、操作方向、买卖点位、风险提示、检查清单）\nversion: 1.1.0\nlicense: MIT-0\nmetadata:\n  openclaw:\n    requires:\n      env:\n        - LLM_API_KEY\n        - LLM_BASE_URL\n        - LLM_MODEL\n      bins:\n        - python3\n    optional:\n      env:\n        - MX_APIKEY\n        - SERPAPI_KEY\n        - TAVILY_KEY\n        - BRAVE_KEY\n        - BOCHA_KEY\n        - BIAS_THRESHOLD\n        - NEWS_MAX_AGE_DAYS\n        - ENABLE_CHIP\n        - LOG_LEVEL\n    primaryEnv: LLM_API_KEY\n    emoji: \"📈\"\n    install:\n      - kind: uv\n        command: pip install -r requirements.txt\n\n---\n\n# A股股票市场分析 Skill\n\n## 功能\n\n### 个股分析\n\n输入股票代码，输出结构化分析结果：\n\n- **基本面**：净利润、营收、ROE、毛利率、资产负债率、机构持股比例、盈利预测\n- **估值**：PE(TTM)、PB、历史分位\n- **资金面**：主力资金流向（超大单/大单/中单/小单净额）、DDX/DDY/DDZ 指标\n- **技术面**：MA5/MA10/MA20/MA60 均线、多头排列、乖离率、量比\n- **筹码分布**：获利比例、平均成本、集中度\n- **舆情情报**：妙想金融资讯（新闻/研报/公告，LLM 摘要提取）+ 多引擎新闻搜索\n- **实时行情**：当前价、涨跌幅、成交量、换手率\n- **分析结论**：评分 + 操作方向 + 买卖点位 + 检查清单 + 风险提示\n\n### 市场分析\n\n每日 A 股市场复盘：\n\n- 主要指数（上证/深证/创业板）\n- 涨跌统计（涨跌家数、涨停跌停数）\n- 板块排名（领涨/领跌 Top5）\n- 市场情绪判断 + 操作建议\n\n## 使用方式\n\n### 生成分析报告（推荐）\n\n```bash\n# 个股分析报告 → 保存到 reports/{代码}_{日期}.md\npython3 {baseDir}/scripts/report.py stock 600519\n\n# 市场分析报告 → 保存到 reports/market_{日期}.md\npython3 {baseDir}/scripts/report.py market\n\n# 同时输出 JSON\npython3 {baseDir}/scripts/report.py stock 600519 --json\n\n# 自定义输出目录\npython3 {baseDir}/scripts/report.py stock 600519 -o ./my-reports\n```\n\n### JSON 输出\n\n```bash\npython3 {baseDir}/scripts/analyze_stock.py 600519\npython3 {baseDir}/scripts/analyze_market.py\n```\n\n### Handler 调用\n\n```python\nfrom src.index import handler\nresult = await handler({\"mode\": \"stock\", \"code\": \"600519\"})\nresult = await handler({\"mode\": \"market\"})\nresult = await handler({\"mode\": \"stock\", \"code\": \"600519\", \"save\": True})\nresult = await handler({\"mode\": \"stock\", \"code\": \"600519\", \"save\": True, \"output_dir\": \"./reports\"})\n```\n\n## 输入格式\n\n| 字段          | 类型      | 必填            | 说明                            |\n| ----------- | ------- | ------------- | ----------------------------- |\n| mode        | string  | 是             | \"stock\" 或 \"market\"            |\n| code        | string  | mode=stock时必填 | A股股票代码，如 \"600519\"             |\n| save        | boolean | 否             | 是否保存 Markdown 报告到 reports/ 目录 |\n| output_dir | string  | 否             | 自定义报告输出目录（需 save=true）        |\n\n## 输出格式\n\n### 个股分析结果\n\n```json\n{\n  \"stock_code\": \"600519\",\n  \"stock_name\": \"贵州茅台\",\n  \"core_conclusion\": \"一句话核心结论\",\n  \"score\": 75,\n  \"action\": \"买入/观望/卖出\",\n  \"trend\": \"看多/震荡/看空\",\n  \"buy_price\": 1800.0,\n  \"stop_loss_price\": 1700.0,\n  \"target_price\": 2000.0,\n  \"checklist\": [{\"condition\": \"...\", \"status\": \"✅/❌\", \"detail\": \"...\"}],\n  \"risk_alerts\": [\"风险1\", \"风险2\"],\n  \"positive_catalysts\": [\"利好1\"],\n  \"strategy\": \"买卖策略建议\",\n  \"stock_info\": {\"code\": \"600519\", \"name\": \"贵州茅台\", \"industry\": \"白酒\", \"market_cap\": 2200000000000},\n  \"realtime\": {\"price\": 1800.0, \"change_pct\": 1.5, \"turnover_rate\": 0.8},\n  \"tech\": {\"ma5\": 1780.0, \"ma10\": 1760.0, \"ma20\": 1740.0, \"ma60\": 1700.0, \"is_bullish_alignment\": true, \"bias\": 2.1, \"volume_ratio\": 1.2},\n  \"chip\": {\"profit_ratio\": 75.0, \"avg_cost\": 1720.0, \"concentration\": 12.5},\n  \"capital_flow\": {\"super_large_net\": 500000000, \"large_net\": 200000000, \"ddx\": 0.26, \"ddy\": 0.15, \"ddz\": 5.3},\n  \"valuation\": {\"pe_ttm\": 28.5, \"pb\": 8.2, \"pe_percentile\": 45.0, \"pb_percentile\": 30.0},\n  \"financial\": {\"net_profit\": 55000000000, \"revenue\": 120000000000, \"roe\": 30.5, \"gross_margin\": 91.2, \"debt_ratio\": 25.3, \"institution_holding_pct\": 65.0},\n  \"news\": [{\"title\": \"...\", \"snippet\": \"LLM提取摘要\", \"date\": \"2025-01-15\", \"source\": \"中泰证券·研报·买入\", \"info_type\": \"report\"}],\n  \"raw_report\": \"LLM完整分析报告(Markdown)\",\n  \"disclaimer\": \"仅供参考，不构成投资建议\"\n}\n```\n\n### 市场分析结果\n\n```json\n{\n  \"date\": \"2025-01-15\",\n  \"core_conclusion\": \"一句话核心结论\",\n  \"indices\": [{\"name\": \"上证指数\", \"close\": 3200.0, \"change_pct\": 0.5}],\n  \"statistics\": {\"up_count\": 3000, \"down_count\": 1500, \"limit_up_count\": 50},\n  \"top_sectors\": [{\"name\": \"半导体\", \"change_pct\": 3.2}],\n  \"bottom_sectors\": [{\"name\": \"房地产\", \"change_pct\": -1.5}],\n  \"sentiment\": \"偏多/中性/偏空\",\n  \"strategy\": \"操作建议\",\n  \"raw_report\": \"LLM完整复盘报告(Markdown)\"\n}\n```\n\n## 数据源\n\n### 行情数据\n\n四级自动容灾，并行竞争 + 超时控制：\n\n| 优先级 | 数据源          | 覆盖能力              | 需要 Key        |\n| --- | ------------ | ----------------- | ------------- |\n| 0   | **妙想金融**     | 行情 + 财务 + 资金 + 估值 | ✅ `MX_APIKEY` |\n| 1   | **Efinance** | 行情 + 板块 + 市场统计    | ❌             |\n| 2   | **AkShare**  | 行情 + 筹码 + 板块      | ❌             |\n| 3   | **Pytdx**    | 行情 + 指数（兜底）       | ❌             |\n\n- 配置 `MX_APIKEY` 后妙想自动成为最高优先级；未配置时从 Efinance 开始\n- 所有数据源**并行请求**，按优先级取第一个有效结果；日K线取行数最多的结果\n- 单数据源超时 10 秒自动降级，任一数据源异常不影响整体分析\n\n### 资讯搜索\n\n五级自动容灾，串行降级：\n\n| 优先级 | 搜索引擎     | 返回内容                   | 需要 Key          |\n| --- | -------- | ---------------------- | --------------- |\n| 0   | **妙想搜索** | 完整正文 + 新闻/研报/公告 + 机构评级 | ✅ `MX_APIKEY`   |\n| 1   | SerpAPI  | snippet                | ✅ `SERPAPI_KEY` |\n| 2   | Tavily   | snippet                | ✅ `TAVILY_KEY`  |\n| 3   | Brave    | snippet                | ✅ `BRAVE_KEY`   |\n| 4   | Bocha    | snippet                | ✅ `BOCHA_KEY`   |\n\n- 妙想搜索返回完整正文，由 LLM 自动提取核心摘要；其他引擎仅返回 snippet\n- 研报类型含机构名称和评级（如\"中泰证券·研报·买入\"），LLM 可据此参考机构观点\n\n详见 references/data-sources.md。\n\n## 性能特性\n\n- **并行数据采集**：个股分析的 7 个数据维度（日K线、实时行情、筹码、资金、估值、财务、资讯）并行获取，总耗时取决于最慢的单项\n- **并行数据源竞争**：同一数据维度在多个数据源间并行请求，按优先级取第一个有效结果\n- **超时保护**：单数据源请求超时 10 秒自动降级，避免阻塞\n- **LLM 摘要提取**：妙想资讯返回完整正文，由 LLM 批量提取核心摘要，保留关键投资信息\n\n## 环境变量\n\n| 变量            | 必填 | 说明                                               |\n| -------------- | -- | ------------------------------------------------ |\n| LLM_API_KEY    | 是  | LLM API Key                                      |\n| LLM_BASE_URL   | 是  | OpenAI 兼容 API 地址                                 |\n| LLM_MODEL      | 是  | 模型名称                                             |\n| MX_APIKEY      | 否  | 妙想金融 API Key（配置后自动成为行情数据 + 财务/资金/估值 + 资讯搜索第一优先级） |\n| SERPAPI_KEY    | 否  | SerpAPI 搜索 Key                                   |\n| TAVILY_KEY     | 否  | Tavily 搜索 Key                                    |\n| BRAVE_KEY      | 否  | Brave 搜索 Key                                     |\n| BOCHA_KEY      | 否  | 博查搜索 Key                                         |\n\n## 注意事项\n\n- Efinance / AkShare / Pytdx 为免费接口，无需注册；妙想金融需配置 `MX_APIKEY`\n- 分析结果仅供参考，不构成投资建议\n\nFile v1.0.4:README.md\n\n<div align=\"center\">\n\n# 📈 A 股股票市场分析 Skill\n\n专为 OpenClaw 等智能体设计的 A 股股票分析技能\n\n[![License: MIT-0](https://img.shields.io/badge/License-MIT--0-yellow.svg)](LICENSE)\n[![Python 3.9+](https://img.shields.io/badge/Python-3.9%2B-blue.svg)](https://www.python.org/)\n[![OpenClaw Skill](https://img.shields.io/badge/OpenClaw-Skill-green.svg)](https://github.com/openclaw)\n\n基于 [daily_stock_analysis](https://github.com/ZhuLinsen/daily_stock_analysis) 项目精简重写，去除 WebUI、通知推送、Agent 问股等非核心功能，聚焦分析能力本身。\n\n</div>\n\n---\n\n## ✨ 功能特性\n\n### 📊 个股分析\n\n输入股票代码，输出结构化分析结果：\n\n- **技术面分析**：MA5/MA10/MA20/MA60 均线、多头排列判断、乖离率、量比\n- **筹码分布**：获利比例、平均成本、集中度\n- **舆情情报**：妙想金融资讯（新闻/研报/公告）+ 多引擎新闻搜索\n- **实时行情**：当前价、涨跌幅、成交量、换手率等\n- **分析结论**：一句话核心结论 + 评分 + 操作方向 + 精确买卖点位 + 操作检查清单 + 买卖策略\n\n### 🌐 市场分析\n\n每日 A 股市场复盘：\n\n- **主要指数**：上证指数、深证成指、创业板指\n- **市场统计**：涨跌家数、涨停跌停数\n- **板块排名**：领涨 / 领跌板块 Top5\n- **分析结论**：市场情绪判断 + 操作建议 + 完整复盘报告\n\n### 🔄 多源数据架构\n\n行情数据采用四级自动容灾策略：\n\n| 优先级 | 数据源 | 说明 | 需要 Token |\n| :---: | --- | --- | :---: |\n| 0 | **妙想金融** | 东财妙想 API，覆盖行情 + 财务数据 | ✅ `MX_APIKEY` |\n| 1 | **Efinance** | 基于东财接口，覆盖日 K、实时行情、板块排名、市场统计 | ❌ |\n| 2 | **AkShare** | 东财 + 新浪双通道，额外支持筹码分布 | ❌ |\n| 3 | **Pytdx** | 直连通达信行情服务器，支持日 K、实时行情、指数数据 | ❌ |\n\n> - 配置 `MX_APIKEY` 后妙想自动成为最高优先级；未配置时从 Efinance 开始\n> - 任意数据源异常时自动切换到下一级，无需人工干预\n\n## 🚀 快速开始\n\n### 1. 安装依赖\n\n```bash\npip install -r requirements.txt\n```\n\n### 2. 配置环境变量\n\n```bash\ncp .env.example .env\n```\n\n编辑 `.env` 文件，填入你的 API Key：\n\n```env\n# LLM 配置（必填）— 支持 DeepSeek 和 OpenAI 兼容模型\nLLM_BASE_URL=https://api.deepseek.com/v1\nLLM_API_KEY=your-api-key-here\nLLM_MODEL=deepseek-chat\n\n# 妙想金融数据（可选，配置后自动成为第一优先级数据源 + 资讯搜索源）\nMX_APIKEY=\n\n# 新闻搜索（至少配置一个，可选）\nSERPAPI_KEY=\nTAVILY_KEY=\nBRAVE_KEY=\nBOCHA_KEY=\n```\n\n> 💡 行情数据源（Efinance / AkShare / Pytdx）均为免费接口，无需配置任何 Token。\n\n### 3. 调用分析\n\n#### 生成 Markdown 报告（推荐）\n\n```bash\n# 个股分析报告 → reports/{代码}_{日期}.md\npython3 scripts/report.py stock 600519\n\n# 市场分析报告 → reports/market_{日期}.md\npython3 scripts/report.py market\n\n# 同时输出 JSON\npython3 scripts/report.py stock 600519 --json\n\n# 自定义输出目录\npython3 scripts/report.py stock 600519 -o ./my-reports\n```\n\n#### JSON 输出\n\n```bash\npython3 scripts/analyze_stock.py 600519    # 个股分析\npython3 scripts/analyze_market.py          # 市场分析\n```\n\n#### Python API\n\n```python\nimport asyncio\nfrom src.index import analyze_stock, analyze_market\n\n# 个股分析 + 保存报告\nresult = asyncio.run(analyze_stock(\"600519\", save=True))\nprint(result.core_conclusion)   # 一句话核心结论\nprint(result.action)            # 买入/观望/卖出\n\n# 市场分析 + 保存报告\nresult = asyncio.run(analyze_market(save=True))\nprint(result.sentiment)         # 偏多/中性/偏空\n```\n\n#### OpenClaw Handler\n\n```python\nfrom src.index import handler\n\nresult = await handler({\"mode\": \"stock\", \"code\": \"600519\"})\nresult = await handler({\"mode\": \"market\", \"save\": True})\n```\n\n<details>\n<summary>自定义配置</summary>\n\n```python\nfrom src.config import SkillConfig\n\nconfig = SkillConfig(\n    llm_base_url=\"https://api.openai.com/v1\",\n    llm_api_key=\"sk-xxx\",\n    llm_model=\"gpt-4o\",\n)\n\nresult = asyncio.run(analyze_stock(\"000001\", config=config))\n```\n\n</details>\n\n## 📁 项目结构\n\n```\nstock-analysis/\n├── SKILL.md                     # Skill 定义（OpenClaw 标准入口）\n├── manifest.yaml                # 机器可读元数据 + 输入输出 Schema\n├── src/                         # 源代码\n│   ├── index.py                 # Skill 入口（handler + analyze_stock/market）\n│   ├── config.py                # 配置管理（环境变量 + .env）\n│   ├── models.py                # 数据模型定义\n│   ├── report.py                # Markdown 报告生成\n│   ├── analyzer/\n│   │   ├── stock.py             # 个股分析引擎\n│   │   ├── market.py            # 市场分析引擎\n│   │   └── prompts.py           # Prompt 模板\n│   ├── data/\n│   │   ├── provider.py          # 数据源抽象基类\n│   │   ├── efinance_provider.py # Efinance 数据源（优先级 1）\n│   │   ├── akshare_provider.py  # AkShare 数据源（优先级 2）\n│   │   ├── pytdx_provider.py    # Pytdx 数据源（优先级 3）\n│   │   ├── manager.py           # 数据源管理器（多源自动容灾）\n│   │   └── utils.py             # 公共工具（缓存/统计/限流）\n│   ├── search/\n│   │   ├── base.py              # 搜索引擎抽象基类\n│   │   ├── miaoxiang.py         # 妙想金融资讯搜索（优先级 0）\n│   │   ├── serpapi.py           # SerpAPI 搜索\n│   │   ├── tavily.py            # Tavily 搜索\n│   │   ├── brave.py             # Brave 搜索\n│   │   └── bocha.py             # Bocha 搜索\n│   └── llm/\n│       └── client.py            # LLM 客户端（OpenAI 兼容接口）\n├── scripts/                     # CLI 入口脚本\n│   ├── report.py                # 报告生成器（推荐入口）\n│   ├── analyze_stock.py         # 个股分析 JSON 输出\n│   └── analyze_market.py        # 市场分析 JSON 输出\n├── references/                  # 按需加载的详细文档\n│   └── data-sources.md          # 数据源架构详细说明\n├── test/                        # 测试\n├── requirements.txt\n├── config.example.yaml          # YAML 格式示例配置\n├── .env.example\n└── .gitignore\n```\n\n## 🏗️ 架构设计\n\n```\n┌──────────────────────────────────────────┐\n│         SKILL.md / manifest.yaml          │\n│         OpenClaw Skill 定义层             │\n└──────────────────┬───────────────────────┘\n                   │\n┌──────────────────▼───────────────────────┐\n│         src/index.py（接口层）              │\n│  handler()  analyze_stock()  analyze_market() │\n└──────────────────┬───────────────────────┘\n                   │\n┌──────────────────▼───────────────────────┐\n│        src/analyzer/（分析层）              │\n│     组装数据 + 构建 Prompt + 调用 LLM       │\n└──┬───────────────┬───────────┬───────────┘\n   │               │           │\n   ▼               ▼           ▼\n┌────────────┐ ┌──────┐ ┌──────────┐\n│  src/data/ │ │search│ │   llm/   │\n│   数据层    │ │搜索层 │ │  模型层   │\n│ 四级自动容灾 │ │5 引擎 │ │DeepSeek  │\n│            │ │(可扩展)│ │(OpenAI兼容)│\n│ 妙想(可选)  │ └──────┘ └──────────┘\n│  ↓ 失败     │\n│ Efinance   │\n│  ↓ 失败     │\n│ AkShare    │\n│  ↓ 失败     │\n│ Pytdx      │\n└────────────┘\n```\n\n每层均通过抽象基类解耦，可独立扩展：\n\n- **数据层**：实现 `MarketDataProvider` 即可接入新数据源，`DataProviderManager` 自动管理容灾切换\n- **搜索层**：实现 `NewsSearchEngine` 即可接入新搜索引擎\n- **模型层**：所有 OpenAI 兼容 API 均可直接使用\n\n### 数据源能力矩阵\n\n| 能力 | 妙想金融 | Efinance | AkShare | Pytdx |\n| --- | :---: | :---: | :---: | :---: |\n| 股票基本信息 | ✅ | ✅ | ✅ | ✅ |\n| 日 K 线数据 | ✅ | ✅ | ✅ | ✅ |\n| 实时行情 | ✅ | ✅ | ✅ | ✅ |\n| 筹码分布 | ❌ | ❌ | ✅ | ❌ |\n| 板块排名 | ❌ | ✅ | ✅ | ❌ |\n| 市场统计 | ❌ | ✅ | ✅ | ❌ |\n| 指数数据 | ✅ | ✅ | ✅ | ✅ |\n| 财务数据 | ✅ | ❌ | ❌ | ❌ |\n| 主力资金 | ✅ | ❌ | ❌ | ❌ |\n| 估值数据 | ✅ | ❌ | ❌ | ❌ |\n\n### 资讯搜索架构\n\n| 优先级 | 搜索引擎 | 数据源 | 需要 Key | 返回内容 |\n| :---: | --- | --- | :---: | --- |\n| 0 | **妙想搜索** | 东财妙想资讯 API | ✅ `MX_APIKEY` | 完整正文 + 新闻/研报/公告 |\n| 1 | SerpAPI | Google 搜索 | ✅ | snippet |\n| 2 | Tavily | Tavily AI 搜索 | ✅ | snippet |\n| 3 | Brave | Brave 搜索 | ✅ | snippet |\n| 4 | Bocha | 博查搜索 | ✅ | snippet |\n\n> - 配置 `MX_APIKEY` 后妙想搜索自动成为最高优先级，返回新闻 + 研报 + 公告三种类型\n> - 妙想搜索返回完整正文，由 LLM 自动提取核心摘要；其他引擎仅返回 snippet\n> - 研报类型含机构名称和评级（如\"中泰证券·研报·买入\"），LLM 可据此参考机构观点\n\n### 反封禁策略\n\n参照原项目实现，内置多项反封禁措施：\n\n- 随机 User-Agent 轮换（5 组 UA）\n- 请求间随机 Sleep（1.5 ~ 3.0 秒抖动）\n- 全市场实时行情缓存（TTL 600 秒）\n- 涨停 / 跌停精确计算（科创板 / 创业板 20%、北交所 30%、ST 5%、普通 10%）\n\n## ⚙️ 配置说明\n\n| 环境变量 | 必填 | 默认值 | 说明 |\n| --- | :---: | --- | --- |\n| `LLM_BASE_URL` | ✅ | `https://api.deepseek.com/v1` | OpenAI 兼容 API 地址 |\n| `LLM_API_KEY` | ✅ | — | API Key |\n| `LLM_MODEL` | ✅ | `deepseek-chat` | 模型名称 |\n| `SERPAPI_KEY` | ❌ | — | SerpAPI Key |\n| `TAVILY_KEY` | ❌ | — | Tavily Key |\n| `BRAVE_KEY` | ❌ | — | Brave Search Key |\n| `BOCHA_KEY` | ❌ | — | 博查搜索 Key |\n| `MX_APIKEY` | ❌ | — | 妙想金融数据 API Key（配置后自动成为第一优先级数据源） |\n| `BIAS_THRESHOLD` | ❌ | `5.0` | 乖离率阈值（%） |\n| `NEWS_MAX_AGE_DAYS` | ❌ | `3` | 新闻最大时效（天） |\n| `ENABLE_CHIP` | ❌ | `true` | 是否启用筹码分布 |\n| `LOG_LEVEL` | ❌ | `INFO` | 日志级别：DEBUG/INFO/WARNING/ERROR |\n\n## 📋 分析结果结构\n\n<details>\n<summary>个股分析 — StockAnalysisResult</summary>\n\n| 字段 | 类型 | 说明 |\n| --- | --- | --- |\n| `stock_code` | str | 股票代码 |\n| `stock_name` | str | 股票名称 |\n| `core_conclusion` | str | 一句话核心结论 |\n| `score` | int | 评分 0-100 |\n| `action` | str | 操作方向：买入/观望/卖出 |\n| `trend` | str | 趋势判断：看多/震荡/看空 |\n| `buy_price` | float | 建议买入价 |\n| `stop_loss_price` | float | 止损价 |\n| `target_price` | float | 目标价 |\n| `checklist` | list[CheckItem] | 操作检查清单 |\n| `risk_alerts` | list[str] | 风险警报 |\n| `positive_catalysts` | list[str] | 利好催化 |\n| `strategy` | str | 买卖策略建议 |\n| `raw_report` | str | LLM 完整分析报告（Markdown） |\n| `disclaimer` | str | 免责声明 |\n\n</details>\n\n<details>\n<summary>市场分析 — MarketAnalysisResult</summary>\n\n| 字段 | 类型 | 说明 |\n| --- | --- | --- |\n| `date` | str | 分析日期 |\n| `core_conclusion` | str | 一句话核心结论 |\n| `indices` | list[IndexData] | 主要指数数据 |\n| `statistics` | MarketStatistics | 涨跌统计 |\n| `top_sectors` | list[SectorData] | 领涨板块 |\n| `bottom_sectors` | list[SectorData] | 领跌板块 |\n| `sentiment` | str | 市场情绪：偏多/中性/偏空 |\n| `strategy` | str | 操作建议 |\n| `raw_report` | str | LLM 完整复盘报告（Markdown） |\n| `disclaimer` | str | 免责声明 |\n\n</details>\n\n## ⚠️ 注意事项\n\n- **免 Token 数据源**：Efinance / AkShare / Pytdx 均为免费接口，无需注册；妙想金融需配置 `MX_APIKEY`\n- **自动容灾**：任一数据源异常时自动切换至下一级，日志输出 `[数据源切换]` 提示\n- **网络环境**：东财接口在企业内网 / 代理下可能受限，系统会自动回退至新浪或通达信通道\n- **API 限流**：搜索 API 有调用频率限制，频繁调用可能触发限流\n- **数据时效**：实时行情基于最新日线数据，盘中数据可能有延迟\n- **无状态设计**：Skill 不保存任何分析结果，每次调用独立执行\n\n## 📄 License\n\n本项目基于 [MIT-0 License](LICENSE) 开源。\n\n## ⚖️ 免责声明\n\n本项目所有分析结果仅供参考，不构成投资建议。股市有风险，投资需谨慎。\n\nFile v1.0.4:_meta.json\n\n{\n  \"ownerId\": \"kn7da87j1vga39tq7bxyc830gh834079\",\n  \"slug\": \"stock-analysis-report\",\n  \"version\": \"1.0.4\",\n  \"publishedAt\": 1776763288646\n}\n\nFile v1.0.4:config.example.yaml\n\n# LLM 配置（必填）\nllm_base_url: \"https://api.deepseek.com/v1\"\nllm_api_key: \"your-api-key-here\"\nllm_model: \"deepseek-chat\"\n\n# 新闻搜索（至少配置一个）\nserpapi_key: \"\"\ntavily_key: \"\"\nbrave_key: \"\"\nbocha_key: \"\"\n\n# 妙想金融数据源（可选）— 配置后自动成为第一优先级\nmx_apikey: \"\"\n\n# 分析参数\nbias_threshold: 5.0\nnews_max_age_days: 3\nenable_chip: true\n\n# 日志级别：DEBUG / INFO / WARNING / ERROR\nlog_level: \"INFO\"\n\nFile v1.0.4:manifest.yaml\n\nname: stock-analysis\nversion: 1.1.0\nauthor: Derrors\nlicense: MIT-0\nruntime: python\nentry: src/index.py\ndescription: A股市场分析与个股深度分析技能，支持基本面（财务/估值）、资金面（主力资金/DDX）、技术面、筹码分布、舆情情报等多维度分析\n\ncategories:\n  - finance\n  - analysis\n\nconfig:\n  - key: llm_base_url\n    type: string\n    required: true\n    default: \"https://api.deepseek.com/v1\"\n    description: OpenAI兼容API地址\n  - key: llm_api_key\n    type: string\n    required: true\n    description: LLM API Key\n  - key: llm_model\n    type: string\n    required: true\n    default: \"deepseek-chat\"\n    description: 模型名称\n  - key: mx_apikey\n    type: string\n    required: false\n    description: 妙想金融API Key（配置后自动成为行情数据+财务/资金/估值+资讯搜索第一优先级）\n  - key: serpapi_key\n    type: string\n    required: false\n    description: SerpAPI搜索Key\n  - key: tavily_key\n    type: string\n    required: false\n    description: Tavily搜索Key\n  - key: brave_key\n    type: string\n    required: false\n    description: Brave搜索Key\n  - key: bocha_key\n    type: string\n    required: false\n    description: 博查搜索Key\n  - key: bias_threshold\n    type: number\n    required: false\n    default: 5.0\n    description: 乖离率阈值(%)\n  - key: news_max_age_days\n    type: integer\n    required: false\n    default: 3\n    description: 新闻最大时效(天)\n  - key: enable_chip\n    type: boolean\n    required: false\n    default: true\n    description: 是否启用筹码分布\n  - key: log_level\n    type: string\n    required: false\n    default: \"INFO\"\n    description: 日志级别 DEBUG/INFO/WARNING/ERROR\n\ninput:\n  type: object\n  properties:\n    mode:\n      type: string\n      enum: [stock, market]\n      description: 分析模式\n    code:\n      type: string\n      description: A股股票代码(mode=stock时必填)\n    save:\n      type: boolean\n      description: 是否保存Markdown报告到reports/目录\n    output_dir:\n      type: string\n      description: 自定义报告输出目录(需save=true)\n  required: [mode]\n\noutput:\n  type: object\n  properties:\n    stock_code:\n      type: string\n      description: 股票代码\n    stock_name:\n      type: string\n      description: 股票名称\n    core_conclusion:\n      type: string\n      description: 一句话核心结论\n    score:\n      type: integer\n      description: 评分0-100\n    action:\n      type: string\n      description: 操作方向(买入/观望/卖出)\n    trend:\n      type: string\n      description: 趋势判断(看多/震荡/看空)\n    buy_price:\n      type: number\n      description: 建议买入价\n    stop_loss_price:\n      type: number\n      description: 止损价\n    target_price:\n      type: number\n      description: 目标价\n    capital_flow:\n      type: object\n      description: 主力资金流向(超大单/大单/中单/小单净额+DDX/DDY/DDZ)\n    valuation:\n      type: object\n      description: 估值数据(PE_TTM/PB/历史分位)\n    financial:\n      type: object\n      description: 核心财务指标(净利润/营收/ROE/毛利率/资产负债率/机构持股)\n    sentiment:\n      type: string\n      description: 市场情绪(偏多/中性/偏空)\n    raw_report:\n      type: string\n      description: LLM完整分析报告(Markdown)\n\nFile v1.0.4:requirements.txt\n\nopenai>=1.0.0\nefinance>=0.5.0\nakshare>=1.10.0\npytdx>=1.72\nnumpy>=1.24.0\npandas>=2.0.0\nhttpx>=0.25.0\nrequests>=2.28.0\npython-dotenv>=1.0.0\n\nArchive v1.0.3: 41 files, 68262 bytes\n\nFiles: config.example.yaml (461b), manifest.yaml (3333b), README.md (13610b), requirements.txt (138b), scripts/analyze_market.py (727b), scripts/analyze_stock.py (835b), scripts/report.py (1828b), SKILL.md (8990b), src/__init__.py (1b), src/analyzer/__init__.py (0b), src/analyzer/market.py (3998b), src/analyzer/prompts.py (4800b), src/analyzer/stock.py (21758b), src/config.py (2254b), src/data/__init__.py (0b), src/data/akshare_provider.py (16773b), src/data/efinance_provider.py (13216b), src/data/manager.py (8595b), src/data/miaoxiang_provider.py (26559b), src/data/provider.py (2507b), src/data/pytdx_provider.py (10921b), src/data/utils.py (5193b), src/index.py (7115b), src/llm/__init__.py (0b), src/llm/client.py (2742b), src/models.py (4682b), src/report.py (19641b), src/search/__init__.py (0b), src/search/base.py (428b), src/search/bocha.py (1702b), src/search/brave.py (1711b), src/search/miaoxiang.py (4550b), src/search/serpapi.py (1534b), src/search/tavily.py (1505b), test/__init__.py (0b), test/test_config.py (3163b), test/test_index.py (1973b), test/test_manager.py (12835b), test/test_models.py (3012b), test/test_utils.py (2517b), _meta.json (140b)\n\nFile v1.0.3:SKILL.md\n\n---\n\nname: stock-analysis\ndescription: |\n  A股市场分析与个股深度分析技能。支持基本面（财务指标/估值分位）、资金面（主力资金/DDX/DDY/DDZ）、技术面（均线/乖离率/量比）、筹码分布、舆情情报（新闻/研报/公告）等多维度分析，输出结构化评分与操作建议。\n\nTriggers: \"分析股票\", \"个股分析\", \"市场分析\", \"A股分析\", \"stock analysis\", \"analyze stock\", \"market analysis\", \"股票评分\", \"买卖建议\", \"涨停分析\"\n\nDoes NOT trigger:\n\n- 简单的股价查询（无需深度分析）\n- 港股/美股/非A股市场分析\n- 基金/债券/期货分析\n\nOutput: 结构化分析报告（评分0-100、操作方向、买卖点位、风险提示、检查清单）\nversion: 1.1.0\nlicense: MIT-0\nmetadata:\n  openclaw:\n    requires:\n      env:\n        - LLM_API_KEY\n        - LLM_BASE_URL\n        - LLM_MODEL\n      bins:\n        - python3\n    optional:\n      env:\n        - MX_APIKEY\n        - SERPAPI_KEY\n        - TAVILY_KEY\n        - BRAVE_KEY\n        - BOCHA_KEY\n        - BIAS_THRESHOLD\n        - NEWS_MAX_AGE_DAYS\n        - ENABLE_CHIP\n        - LOG_LEVEL\n    primaryEnv: LLM_API_KEY\n    emoji: \"📈\"\n    install:\n      - kind: uv\n        command: pip install -r requirements.txt\n\n---\n\n# A股股票市场分析 Skill\n\n## 功能\n\n### 个股分析\n\n输入股票代码，输出结构化分析结果：\n\n- **基本面**：净利润、营收、ROE、毛利率、资产负债率、机构持股比例、盈利预测\n- **估值**：PE(TTM)、PB、历史分位\n- **资金面**：主力资金流向（超大单/大单/中单/小单净额）、DDX/DDY/DDZ 指标\n- **技术面**：MA5/MA10/MA20/MA60 均线、多头排列、乖离率、量比\n- **筹码分布**：获利比例、平均成本、集中度\n- **舆情情报**：妙想金融资讯（新闻/研报/公告，LLM 摘要提取）+ 多引擎新闻搜索\n- **实时行情**：当前价、涨跌幅、成交量、换手率\n- **分析结论**：评分 + 操作方向 + 买卖点位 + 检查清单 + 风险提示\n\n### 市场分析\n\n每日 A 股市场复盘：\n\n- 主要指数（上证/深证/创业板）\n- 涨跌统计（涨跌家数、涨停跌停数）\n- 板块排名（领涨/领跌 Top5）\n- 市场情绪判断 + 操作建议\n\n## 使用方式\n\n### 生成分析报告（推荐）\n\n```bash\n# 个股分析报告 → 保存到 reports/{代码}_{日期}.md\npython3 {baseDir}/scripts/report.py stock 600519\n\n# 市场分析报告 → 保存到 reports/market_{日期}.md\npython3 {baseDir}/scripts/report.py market\n\n# 同时输出 JSON\npython3 {baseDir}/scripts/report.py stock 600519 --json\n\n# 自定义输出目录\npython3 {baseDir}/scripts/report.py stock 600519 -o ./my-reports\n```\n\n### JSON 输出\n\n```bash\npython3 {baseDir}/scripts/analyze_stock.py 600519\npython3 {baseDir}/scripts/analyze_market.py\n```\n\n### Handler 调用\n\n```python\nfrom src.index import handler\nresult = await handler({\"mode\": \"stock\", \"code\": \"600519\"})\nresult = await handler({\"mode\": \"market\"})\nresult = await handler({\"mode\": \"stock\", \"code\": \"600519\", \"save\": True})\nresult = await handler({\"mode\": \"stock\", \"code\": \"600519\", \"save\": True, \"output_dir\": \"./reports\"})\n```\n\n## 输入格式\n\n| 字段          | 类型      | 必填            | 说明                            |\n| ----------- | ------- | ------------- | ----------------------------- |\n| mode        | string  | 是             | \"stock\" 或 \"market\"            |\n| code        | string  | mode=stock时必填 | A股股票代码，如 \"600519\"             |\n| save        | boolean | 否             | 是否保存 Markdown 报告到 reports/ 目录 |\n| output_dir | string  | 否             | 自定义报告输出目录（需 save=true）        |\n\n## 输出格式\n\n### 个股分析结果\n\n```json\n{\n  \"stock_code\": \"600519\",\n  \"stock_name\": \"贵州茅台\",\n  \"core_conclusion\": \"一句话核心结论\",\n  \"score\": 75,\n  \"action\": \"买入/观望/卖出\",\n  \"trend\": \"看多/震荡/看空\",\n  \"buy_price\": 1800.0,\n  \"stop_loss_price\": 1700.0,\n  \"target_price\": 2000.0,\n  \"checklist\": [{\"condition\": \"...\", \"status\": \"✅/❌\", \"detail\": \"...\"}],\n  \"risk_alerts\": [\"风险1\", \"风险2\"],\n  \"positive_catalysts\": [\"利好1\"],\n  \"strategy\": \"买卖策略建议\",\n  \"stock_info\": {\"code\": \"600519\", \"name\": \"贵州茅台\", \"industry\": \"白酒\", \"market_cap\": 2200000000000},\n  \"realtime\": {\"price\": 1800.0, \"change_pct\": 1.5, \"turnover_rate\": 0.8},\n  \"tech\": {\"ma5\": 1780.0, \"ma10\": 1760.0, \"ma20\": 1740.0, \"ma60\": 1700.0, \"is_bullish_alignment\": true, \"bias\": 2.1, \"volume_ratio\": 1.2},\n  \"chip\": {\"profit_ratio\": 75.0, \"avg_cost\": 1720.0, \"concentration\": 12.5},\n  \"capital_flow\": {\"super_large_net\": 500000000, \"large_net\": 200000000, \"ddx\": 0.26, \"ddy\": 0.15, \"ddz\": 5.3},\n  \"valuation\": {\"pe_ttm\": 28.5, \"pb\": 8.2, \"pe_percentile\": 45.0, \"pb_percentile\": 30.0},\n  \"financial\": {\"net_profit\": 55000000000, \"revenue\": 120000000000, \"roe\": 30.5, \"gross_margin\": 91.2, \"debt_ratio\": 25.3, \"institution_holding_pct\": 65.0},\n  \"news\": [{\"title\": \"...\", \"snippet\": \"LLM提取摘要\", \"date\": \"2025-01-15\", \"source\": \"中泰证券·研报·买入\", \"info_type\": \"report\"}],\n  \"raw_report\": \"LLM完整分析报告(Markdown)\",\n  \"disclaimer\": \"仅供参考，不构成投资建议\"\n}\n```\n\n### 市场分析结果\n\n```json\n{\n  \"date\": \"2025-01-15\",\n  \"core_conclusion\": \"一句话核心结论\",\n  \"indices\": [{\"name\": \"上证指数\", \"close\": 3200.0, \"change_pct\": 0.5}],\n  \"statistics\": {\"up_count\": 3000, \"down_count\": 1500, \"limit_up_count\": 50},\n  \"top_sectors\": [{\"name\": \"半导体\", \"change_pct\": 3.2}],\n  \"bottom_sectors\": [{\"name\": \"房地产\", \"change_pct\": -1.5}],\n  \"sentiment\": \"偏多/中性/偏空\",\n  \"strategy\": \"操作建议\",\n  \"raw_report\": \"LLM完整复盘报告(Markdown)\"\n}\n```\n\n## 数据源\n\n### 行情数据\n\n四级自动容灾，并行竞争 + 超时控制：\n\n| 优先级 | 数据源          | 覆盖能力              | 需要 Key        |\n| --- | ------------ | ----------------- | ------------- |\n| 0   | **妙想金融**     | 行情 + 财务 + 资金 + 估值 | ✅ `MX_APIKEY` |\n| 1   | **Efinance** | 行情 + 板块 + 市场统计    | ❌             |\n| 2   | **AkShare**  | 行情 + 筹码 + 板块      | ❌             |\n| 3   | **Pytdx**    | 行情 + 指数（兜底）       | ❌             |\n\n- 配置 `MX_APIKEY` 后妙想自动成为最高优先级；未配置时从 Efinance 开始\n- 所有数据源**并行请求**，按优先级取第一个有效结果；日K线取行数最多的结果\n- 单数据源超时 10 秒自动降级，任一数据源异常不影响整体分析\n\n### 资讯搜索\n\n五级自动容灾，串行降级：\n\n| 优先级 | 搜索引擎     | 返回内容                   | 需要 Key          |\n| --- | -------- | ---------------------- | --------------- |\n| 0   | **妙想搜索** | 完整正文 + 新闻/研报/公告 + 机构评级 | ✅ `MX_APIKEY`   |\n| 1   | SerpAPI  | snippet                | ✅ `SERPAPI_KEY` |\n| 2   | Tavily   | snippet                | ✅ `TAVILY_KEY`  |\n| 3   | Brave    | snippet                | ✅ `BRAVE_KEY`   |\n| 4   | Bocha    | snippet                | ✅ `BOCHA_KEY`   |\n\n- 妙想搜索返回完整正文，由 LLM 自动提取核心摘要；其他引擎仅返回 snippet\n- 研报类型含机构名称和评级（如\"中泰证券·研报·买入\"），LLM 可据此参考机构观点\n\n详见 references/data-sources.md。\n\n## 性能特性\n\n- **并行数据采集**：个股分析的 7 个数据维度（日K线、实时行情、筹码、资金、估值、财务、资讯）并行获取，总耗时取决于最慢的单项\n- **并行数据源竞争**：同一数据维度在多个数据源间并行请求，按优先级取第一个有效结果\n- **超时保护**：单数据源请求超时 10 秒自动降级，避免阻塞\n- **LLM 摘要提取**：妙想资讯返回完整正文，由 LLM 批量提取核心摘要，保留关键投资信息\n\n## 环境变量\n\n| 变量            | 必填 | 说明                                               |\n| -------------- | -- | ------------------------------------------------ |\n| LLM_API_KEY    | 是  | LLM API Key                                      |\n| LLM_BASE_URL   | 是  | OpenAI 兼容 API 地址                                 |\n| LLM_MODEL      | 是  | 模型名称                                             |\n| MX_APIKEY      | 否  | 妙想金融 API Key（配置后自动成为行情数据 + 财务/资金/估值 + 资讯搜索第一优先级） |\n| SERPAPI_KEY    | 否  | SerpAPI 搜索 Key                                   |\n| TAVILY_KEY     | 否  | Tavily 搜索 Key                                    |\n| BRAVE_KEY      | 否  | Brave 搜索 Key                                     |\n| BOCHA_KEY      | 否  | 博查搜索 Key                                         |\n\n## 注意事项\n\n- Efinance / AkShare / Pytdx 为免费接口，无需注册；妙想金融需配置 `MX_APIKEY`\n- 分析结果仅供参考，不构成投资建议\n\nFile v1.0.3:README.md\n\n<div align=\"center\">\n\n# 📈 A 股股票市场分析 Skill\n\n专为 OpenClaw 等智能体设计的 A 股股票分析技能\n\n[![License: MIT-0](https://img.shields.io/badge/License-MIT--0-yellow.svg)](LICENSE)\n[![Python 3.9+](https://img.shields.io/badge/Python-3.9%2B-blue.svg)](https://www.python.org/)\n[![OpenClaw Skill](https://img.shields.io/badge/OpenClaw-Skill-green.svg)](https://github.com/openclaw)\n\n基于 [daily_stock_analysis](https://github.com/ZhuLinsen/daily_stock_analysis) 项目精简重写，去除 WebUI、通知推送、Agent 问股等非核心功能，聚焦分析能力本身。\n\n</div>\n\n---\n\n## ✨ 功能特性\n\n### 📊 个股分析\n\n输入股票代码，输出结构化分析结果：\n\n- **技术面分析**：MA5/MA10/MA20/MA60 均线、多头排列判断、乖离率、量比\n- **筹码分布**：获利比例、平均成本、集中度\n- **舆情情报**：妙想金融资讯（新闻/研报/公告）+ 多引擎新闻搜索\n- **实时行情**：当前价、涨跌幅、成交量、换手率等\n- **分析结论**：一句话核心结论 + 评分 + 操作方向 + 精确买卖点位 + 操作检查清单 + 买卖策略\n\n### 🌐 市场分析\n\n每日 A 股市场复盘：\n\n- **主要指数**：上证指数、深证成指、创业板指\n- **市场统计**：涨跌家数、涨停跌停数\n- **板块排名**：领涨 / 领跌板块 Top5\n- **分析结论**：市场情绪判断 + 操作建议 + 完整复盘报告\n\n### 🔄 多源数据架构\n\n行情数据采用四级自动容灾策略：\n\n| 优先级 | 数据源 | 说明 | 需要 Token |\n| :---: | --- | --- | :---: |\n| 0 | **妙想金融** | 东财妙想 API，覆盖行情 + 财务数据 | ✅ `MX_APIKEY` |\n| 1 | **Efinance** | 基于东财接口，覆盖日 K、实时行情、板块排名、市场统计 | ❌ |\n| 2 | **AkShare** | 东财 + 新浪双通道，额外支持筹码分布 | ❌ |\n| 3 | **Pytdx** | 直连通达信行情服务器，支持日 K、实时行情、指数数据 | ❌ |\n\n> - 配置 `MX_APIKEY` 后妙想自动成为最高优先级；未配置时从 Efinance 开始\n> - 任意数据源异常时自动切换到下一级，无需人工干预\n\n## 🚀 快速开始\n\n### 1. 安装依赖\n\n```bash\npip install -r requirements.txt\n```\n\n### 2. 配置环境变量\n\n```bash\ncp .env.example .env\n```\n\n编辑 `.env` 文件，填入你的 API Key：\n\n```env\n# LLM 配置（必填）— 支持 DeepSeek 和 OpenAI 兼容模型\nLLM_BASE_URL=https://api.deepseek.com/v1\nLLM_API_KEY=your-api-key-here\nLLM_MODEL=deepseek-chat\n\n# 妙想金融数据（可选，配置后自动成为第一优先级数据源 + 资讯搜索源）\nMX_APIKEY=\n\n# 新闻搜索（至少配置一个，可选）\nSERPAPI_KEY=\nTAVILY_KEY=\nBRAVE_KEY=\nBOCHA_KEY=\n```\n\n> 💡 行情数据源（Efinance / AkShare / Pytdx）均为免费接口，无需配置任何 Token。\n\n### 3. 调用分析\n\n#### 生成 Markdown 报告（推荐）\n\n```bash\n# 个股分析报告 → reports/{代码}_{日期}.md\npython3 scripts/report.py stock 600519\n\n# 市场分析报告 → reports/market_{日期}.md\npython3 scripts/report.py market\n\n# 同时输出 JSON\npython3 scripts/report.py stock 600519 --json\n\n# 自定义输出目录\npython3 scripts/report.py stock 600519 -o ./my-reports\n```\n\n#### JSON 输出\n\n```bash\npython3 scripts/analyze_stock.py 600519    # 个股分析\npython3 scripts/analyze_market.py          # 市场分析\n```\n\n#### Python API\n\n```python\nimport asyncio\nfrom src.index import analyze_stock, analyze_market\n\n# 个股分析 + 保存报告\nresult = asyncio.run(analyze_stock(\"600519\", save=True))\nprint(result.core_conclusion)   # 一句话核心结论\nprint(result.action)            # 买入/观望/卖出\n\n# 市场分析 + 保存报告\nresult = asyncio.run(analyze_market(save=True))\nprint(result.sentiment)         # 偏多/中性/偏空\n```\n\n#### OpenClaw Handler\n\n```python\nfrom src.index import handler\n\nresult = await handler({\"mode\": \"stock\", \"code\": \"600519\"})\nresult = await handler({\"mode\": \"market\", \"save\": True})\n```\n\n<details>\n<summary>自定义配置</summary>\n\n```python\nfrom src.config import SkillConfig\n\nconfig = SkillConfig(\n    llm_base_url=\"https://api.openai.com/v1\",\n    llm_api_key=\"sk-xxx\",\n    llm_model=\"gpt-4o\",\n)\n\nresult = asyncio.run(analyze_stock(\"000001\", config=config))\n```\n\n</details>\n\n## 📁 项目结构\n\n```\nstock-analysis/\n├── SKILL.md                     # Skill 定义（OpenClaw 标准入口）\n├── manifest.yaml                # 机器可读元数据 + 输入输出 Schema\n├── src/                         # 源代码\n│   ├── index.py                 # Skill 入口（handler + analyze_stock/market）\n│   ├── config.py                # 配置管理（环境变量 + .env）\n│   ├── models.py                # 数据模型定义\n│   ├── report.py                # Markdown 报告生成\n│   ├── analyzer/\n│   │   ├── stock.py             # 个股分析引擎\n│   │   ├── market.py            # 市场分析引擎\n│   │   └── prompts.py           # Prompt 模板\n│   ├── data/\n│   │   ├── provider.py          # 数据源抽象基类\n│   │   ├── efinance_provider.py # Efinance 数据源（优先级 1）\n│   │   ├── akshare_provider.py  # AkShare 数据源（优先级 2）\n│   │   ├── pytdx_provider.py    # Pytdx 数据源（优先级 3）\n│   │   ├── manager.py           # 数据源管理器（多源自动容灾）\n│   │   └── utils.py             # 公共工具（缓存/统计/限流）\n│   ├── search/\n│   │   ├── base.py              # 搜索引擎抽象基类\n│   │   ├── miaoxiang.py         # 妙想金融资讯搜索（优先级 0）\n│   │   ├── serpapi.py           # SerpAPI 搜索\n│   │   ├── tavily.py            # Tavily 搜索\n│   │   ├── brave.py             # Brave 搜索\n│   │   └── bocha.py             # Bocha 搜索\n│   └── llm/\n│       └── client.py            # LLM 客户端（OpenAI 兼容接口）\n├── scripts/                     # CLI 入口脚本\n│   ├── report.py                # 报告生成器（推荐入口）\n│   ├── analyze_stock.py         # 个股分析 JSON 输出\n│   └── analyze_market.py        # 市场分析 JSON 输出\n├── references/                  # 按需加载的详细文档\n│   └── data-sources.md          # 数据源架构详细说明\n├── test/                        # 测试\n├── requirements.txt\n├── config.example.yaml          # YAML 格式示例配置\n├── .env.example\n└── .gitignore\n```\n\n## 🏗️ 架构设计\n\n```\n┌──────────────────────────────────────────┐\n│         SKILL.md / manifest.yaml          │\n│         OpenClaw Skill 定义层             │\n└──────────────────┬───────────────────────┘\n                   │\n┌──────────────────▼───────────────────────┐\n│         src/index.py（接口层）              │\n│  handler()  analyze_stock()  analyze_market() │\n└──────────────────┬───────────────────────┘\n                   │\n┌──────────────────▼───────────────────────┐\n│        src/analyzer/（分析层）              │\n│     组装数据 + 构建 Prompt + 调用 LLM       │\n└──┬───────────────┬───────────┬───────────┘\n   │               │           │\n   ▼               ▼           ▼\n┌────────────┐ ┌──────┐ ┌──────────┐\n│  src/data/ │ │search│ │   llm/   │\n│   数据层    │ │搜索层 │ │  模型层   │\n│ 四级自动容灾 │ │5 引擎 │ │DeepSeek  │\n│            │ │(可扩展)│ │(OpenAI兼容)│\n│ 妙想(可选)  │ └──────┘ └──────────┘\n│  ↓ 失败     │\n│ Efinance   │\n│  ↓ 失败     │\n│ AkShare    │\n│  ↓ 失败     │\n│ Pytdx      │\n└────────────┘\n```\n\n每层均通过抽象基类解耦，可独立扩展：\n\n- **数据层**：实现 `MarketDataProvider` 即可接入新数据源，`DataProviderManager` 自动管理容灾切换\n- **搜索层**：实现 `NewsSearchEngine` 即可接入新搜索引擎\n- **模型层**：所有 OpenAI 兼容 API 均可直接使用\n\n### 数据源能力矩阵\n\n| 能力 | 妙想金融 | Efinance | AkShare | Pytdx |\n| --- | :---: | :---: | :---: | :---: |\n| 股票基本信息 | ✅ | ✅ | ✅ | ✅ |\n| 日 K 线数据 | ✅ | ✅ | ✅ | ✅ |\n| 实时行情 | ✅ | ✅ | ✅ | ✅ |\n| 筹码分布 | ❌ | ❌ | ✅ | ❌ |\n| 板块排名 | ❌ | ✅ | ✅ | ❌ |\n| 市场统计 | ❌ | ✅ | ✅ | ❌ |\n| 指数数据 | ✅ | ✅ | ✅ | ✅ |\n| 财务数据 | ✅ | ❌ | ❌ | ❌ |\n| 主力资金 | ✅ | ❌ | ❌ | ❌ |\n| 估值数据 | ✅ | ❌ | ❌ | ❌ |\n\n### 资讯搜索架构\n\n| 优先级 | 搜索引擎 | 数据源 | 需要 Key | 返回内容 |\n| :---: | --- | --- | :---: | --- |\n| 0 | **妙想搜索** | 东财妙想资讯 API | ✅ `MX_APIKEY` | 完整正文 + 新闻/研报/公告 |\n| 1 | SerpAPI | Google 搜索 | ✅ | snippet |\n| 2 | Tavily | Tavily AI 搜索 | ✅ | snippet |\n| 3 | Brave | Brave 搜索 | ✅ | snippet |\n| 4 | Bocha | 博查搜索 | ✅ | snippet |\n\n> - 配置 `MX_APIKEY` 后妙想搜索自动成为最高优先级，返回新闻 + 研报 + 公告三种类型\n> - 妙想搜索返回完整正文，由 LLM 自动提取核心摘要；其他引擎仅返回 snippet\n> - 研报类型含机构名称和评级（如\"中泰证券·研报·买入\"），LLM 可据此参考机构观点\n\n### 反封禁策略\n\n参照原项目实现，内置多项反封禁措施：\n\n- 随机 User-Agent 轮换（5 组 UA）\n- 请求间随机 Sleep（1.5 ~ 3.0 秒抖动）\n- 全市场实时行情缓存（TTL 600 秒）\n- 涨停 / 跌停精确计算（科创板 / 创业板 20%、北交所 30%、ST 5%、普通 10%）\n\n## ⚙️ 配置说明\n\n| 环境变量 | 必填 | 默认值 | 说明 |\n| --- | :---: | --- | --- |\n| `LLM_BASE_URL` | ✅ | `https://api.deepseek.com/v1` | OpenAI 兼容 API 地址 |\n| `LLM_API_KEY` | ✅ | — | API Key |\n| `LLM_MODEL` | ✅ | `deepseek-chat` | 模型名称 |\n| `SERPAPI_KEY` | ❌ | — | SerpAPI Key |\n| `TAVILY_KEY` | ❌ | — | Tavily Key |\n| `BRAVE_KEY` | ❌ | — | Brave Search Key |\n| `BOCHA_KEY` | ❌ | — | 博查搜索 Key |\n| `MX_APIKEY` | ❌ | — | 妙想金融数据 API Key（配置后自动成为第一优先级数据源） |\n| `BIAS_THRESHOLD` | ❌ | `5.0` | 乖离率阈值（%） |\n| `NEWS_MAX_AGE_DAYS` | ❌ | `3` | 新闻最大时效（天） |\n| `ENABLE_CHIP` | ❌ | `true` | 是否启用筹码分布 |\n| `LOG_LEVEL` | ❌ | `INFO` | 日志级别：DEBUG/INFO/WARNING/ERROR |\n\n## 📋 分析结果结构\n\n<details>\n<summary>个股分析 — StockAnalysisResult</summary>\n\n| 字段 | 类型 | 说明 |\n| --- | --- | --- |\n| `stock_code` | str | 股票代码 |\n| `stock_name` | str | 股票名称 |\n| `core_conclusion` | str | 一句话核心结论 |\n| `score` | int | 评分 0-100 |\n| `action` | str | 操作方向：买入/观望/卖出 |\n| `trend` | str | 趋势判断：看多/震荡/看空 |\n| `buy_price` | float | 建议买入价 |\n| `stop_loss_price` | float | 止损价 |\n| `target_price` | float | 目标价 |\n| `checklist` | list[CheckItem] | 操作检查清单 |\n| `risk_alerts` | list[str] | 风险警报 |\n| `positive_catalysts` | list[str] | 利好催化 |\n| `strategy` | str | 买卖策略建议 |\n| `raw_report` | str | LLM 完整分析报告（Markdown） |\n| `disclaimer` | str | 免责声明 |\n\n</details>\n\n<details>\n<summary>市场分析 — MarketAnalysisResult</summary>\n\n| 字段 | 类型 | 说明 |\n| --- | --- | --- |\n| `date` | str | 分析日期 |\n| `core_conclusion` | str | 一句话核心结论 |\n| `indices` | list[IndexData] | 主要指数数据 |\n| `statistics` | MarketStatistics | 涨跌统计 |\n| `top_sectors` | list[SectorData] | 领涨板块 |\n| `bottom_sectors` | list[SectorData] | 领跌板块 |\n| `sentiment` | str | 市场情绪：偏多/中性/偏空 |\n| `strategy` | str | 操作建议 |\n| `raw_report` | str | LLM 完整复盘报告（Markdown） |\n| `disclaimer` | str | 免责声明 |\n\n</details>\n\n## ⚠️ 注意事项\n\n- **免 Token 数据源**：Efinance / AkShare / Pytdx 均为免费接口，无需注册；妙想金融需配置 `MX_APIKEY`\n- **自动容灾**：任一数据源异常时自动切换至下一级，日志输出 `[数据源切换]` 提示\n- **网络环境**：东财接口在企业内网 / 代理下可能受限，系统会自动回退至新浪或通达信通道\n- **API 限流**：搜索 API 有调用频率限制，频繁调用可能触发限流\n- **数据时效**：实时行情基于最新日线数据，盘中数据可能有延迟\n- **无状态设计**：Skill 不保存任何分析结果，每次调用独立执行\n\n## 📄 License\n\n本项目基于 [MIT-0 License](LICENSE) 开源。\n\n## ⚖️ 免责声明\n\n本项目所有分析结果仅供参考，不构成投资建议。股市有风险，投资需谨慎。\n\nFile v1.0.3:_meta.json\n\n{\n  \"ownerId\": \"kn7da87j1vga39tq7bxyc830gh834079\",\n  \"slug\": \"stock-analysis-report\",\n  \"version\": \"1.0.3\",\n  \"publishedAt\": 1776759153879\n}\n\nFile v1.0.3:config.example.yaml\n\n# LLM 配置（必填）\nllm_base_url: \"https://api.deepseek.com/v1\"\nllm_api_key: \"your-api-key-here\"\nllm_model: \"deepseek-chat\"\n\n# 新闻搜索（至少配置一个）\nserpapi_key: \"\"\ntavily_key: \"\"\nbrave_key: \"\"\nbocha_key: \"\"\n\n# 妙想金融数据源（可选）— 配置后自动成为第一优先级\nmx_apikey: \"\"\n\n# 分析参数\nbias_threshold: 5.0\nnews_max_age_days: 3\nenable_chip: true\n\n# 日志级别：DEBUG / INFO / WARNING / E\n\nArchive v1.0.2: 41 files, 68254 bytes\n\nFiles: config.example.yaml (461b), manifest.yaml (3333b), README.md (13610b), requirements.txt (138b), scripts/analyze_market.py (727b), scripts/analyze_stock.py (835b), scripts/report.py (1828b), SKILL.md (8965b), src/__init__.py (1b), src/analyzer/__init__.py (0b), src/analyzer/market.py (3998b), src/analyzer/prompts.py (4800b), src/analyzer/stock.py (21758b), src/config.py (2254b), src/data/__init__.py (0b), src/data/akshare_provider.py (16773b), src/data/efinance_provider.py (13216b), src/data/manager.py (8595b), src/data/miaoxiang_provider.py (26559b), src/data/provider.py (2507b), src/data/pytdx_provider.py (10921b), src/data/utils.py (5193b), src/index.py (7115b), src/llm/__init__.py (0b), src/llm/client.py (2742b), src/models.py (4682b), src/report.py (19641b), src/search/__init__.py (0b), src/search/base.py (428b), src/search/bocha.py (1702b), src/search/brave.py (1711b), src/search/miaoxiang.py (4550b), src/search/serpapi.py (1534b), src/search/tavily.py (1505b), test/__init__.py (0b), test/test_config.py (3163b), test/test_index.py (1973b), test/test_manager.py (12835b), test/test_models.py (3012b), test/test_utils.py (2517b), _meta.json (140b)\n\nArchive v1.0.1: 41 files, 68240 bytes\n\nFiles: config.example.yaml (461b), manifest.yaml (3333b), README.md (13610b), requirements.txt (138b), scripts/analyze_market.py (727b), scripts/analyze_stock.py (835b), scripts/report.py (1828b), SKILL.md (8950b), src/__init__.py (1b), src/analyzer/__init__.py (0b), src/analyzer/market.py (3998b), src/analyzer/prompts.py (4800b), src/analyzer/stock.py (21758b), src/config.py (2254b), src/data/__init__.py (0b), src/data/akshare_provider.py (16773b), src/data/efinance_provider.py (13216b), src/data/manager.py (8595b), src/data/miaoxiang_provider.py (26559b), src/data/provider.py (2507b), src/data/pytdx_provider.py (10921b), src/data/utils.py (5193b), src/index.py (7115b), src/llm/__init__.py (0b), src/llm/client.py (2742b), src/models.py (4682b), src/report.py (19641b), src/search/__init__.py (0b), src/search/base.py (428b), src/search/bocha.py (1702b), src/search/brave.py (1711b), src/search/miaoxiang.py (4550b), src/search/serpapi.py (1534b), src/search/tavily.py (1505b), test/__init__.py (0b), test/test_config.py (3163b), test/test_index.py (1973b), test/test_manager.py (12835b), test/test_models.py (3012b), test/test_utils.py (2517b), _meta.json (140b)\n\nArchive v1.0.0: 39 files, 61362 bytes\n\nFiles: manifest.yaml (3333b), references/data-sources.md (2474b), requirements.txt (138b), scripts/analyze_market.py (727b), scripts/analyze_stock.py (835b), scripts/report.py (1828b), SKILL.md (8950b), src/__init__.py (1b), src/analyzer/__init__.py (0b), src/analyzer/market.py (3998b), src/analyzer/prompts.py (4800b), src/analyzer/stock.py (21758b), src/config.py (2254b), src/data/__init__.py (0b), src/data/akshare_provider.py (16773b), src/data/efinance_provider.py (13216b), src/data/manager.py (8624b), src/data/miaoxiang_provider.py (26559b), src/data/provider.py (2507b), src/data/pytdx_provider.py (10921b), src/data/utils.py (5193b), src/index.py (7115b), src/llm/__init__.py (0b), src/llm/client.py (2742b), src/models.py (4682b), src/report.py (19641b), src/search/__init__.py (0b), src/search/base.py (428b), src/search/bocha.py (1702b), src/search/brave.py (1711b), src/search/miaoxiang.py (4550b), src/search/serpapi.py (1534b), src/search/tavily.py (1505b), test/__init__.py (0b), test/test_config.py (3163b), test/test_index.py (1973b), test/test_models.py (3012b), test/test_utils.py (2517b), _meta.json (140b)","readmeExcerpt":"Skill: Stock Analysis Owner: derrors Summary: 提供A股个股及市场多维度深度分析，涵盖基本面、资金面、技术面、筹码和舆情，给出评分及买卖操作建议。 Tags: latest:1.0.9 Version history: v1.0.9 | 2026-04-22T02:08:51.064Z | auto - Pytdx 数据源被移除，精简为妙想金融、Efinance、AkShare 三级自动容灾。 - 妙想金融资讯正文将直接传递给 LLM 作为分析输入，辅助生成分析摘要和投资结论。 - SKILL.md 说明文档同步更新，优化并明确各数据源优先级及失效容灾逻辑。 - 依赖和主要脚本同步调整，确保移除 Pytdx 后运行和数据采集逻辑正常。 - 输出 json 字段和样例简化说明，将资讯摘要命名更通用，并统一 LLM 分析入口。 v1.0.8 | 2026-04-21T10:48:20.53","codeSnippets":[],"executableExamples":[{"language":"bash","snippet":"# 个股分析报告 → 保存到 reports/{代码}_{日期}.md\npython3 {baseDir}/scripts/report.py stock 600519\n\n# 市场分析报告 → 保存到 reports/market_{日期}.md\npython3 {baseDir}/scripts/report.py market\n\n# 同时输出 JSON\npython3 {baseDir}/scripts/report.py stock 600519 --json\n\n# 自定义输出目录\npython3 {baseDir}/scripts/report.py stock 600519 -o ./my-reports"},{"language":"bash","snippet":"python3 {baseDir}/scripts/analyze_stock.py 600519\npython3 {baseDir}/scripts/analyze_market.py"},{"language":"python","snippet":"from src.index import handler\nresult = await handler({\"mode\": \"stock\", \"code\": \"600519\"})\nresult = await handler({\"mode\": \"market\"})\nresult = await handler({\"mode\": \"stock\", \"code\": \"600519\", \"save\": True})\nresult = await handler({\"mode\": \"stock\", \"code\": \"600519\", \"save\": True, \"output_dir\": \"./reports\"})"},{"language":"json","snippet":"{\n  \"stock_code\": \"600519\",\n  \"stock_name\": \"贵州茅台\",\n  \"core_conclusion\": \"一句话核心结论\",\n  \"score\": 75,\n  \"action\": \"买入/观望/卖出\",\n  \"trend\": \"看多/震荡/看空\",\n  \"buy_price\": 1800.0,\n  \"stop_loss_price\": 1700.0,\n  \"target_price\": 2000.0,\n  \"checklist\": [{\"condition\": \"...\", \"status\": \"✅/❌\", \"detail\": \"...\"}],\n  \"risk_alerts\": [\"风险1\", \"风险2\"],\n  \"positive_catalysts\": [\"利好1\"],\n  \"strategy\": \"买卖策略建议\",\n  \"stock_info\": {\"code\": \"600519\", \"name\": \"贵州茅台\", \"industry\": \"白酒\", \"market_cap\": 2200000000000},\n  \"realtime\": {\"price\": 1800.0, \"change_pct\": 1.5, \"turnover_rate\": 0.8},\n  \"tech\": {\"ma5\": 1780.0, \"ma10\": 1760.0, \"ma20\": 1740.0, \"ma60\": 1700.0, \"is_bullish_alignment\": true, \"bias\": 2.1, \"volume_ratio\": 1.2},\n  \"chip\": {\"profit_ratio\": 75.0, \"avg_cost\": 1720.0, \"concentration\": 12.5},\n  \"capital_flow\": {\"super_large_net\": 500000000, \"large_net\": 200000000, \"ddx\": 0.26, \"ddy\": 0.15, \"ddz\": 5.3},\n  \"valuation\": {\"pe_ttm\": 28.5, \"pb\": 8.2, \"pe_percentile\": 45.0, \"pb_percentile\": 30.0},\n  \"financial\": {\"net_profit\": 55000000000, \"revenue\": 120000000000, \"roe\": 30.5, \"gross_margin\": 91.2, \"debt_ratio\": 25.3, \"institution_holding_pct\": 65.0},\n  \"news\": [{\"title\": \"...\", \"snippet\": \"资讯摘要\", \"date\": \"2025-01-15\", \"source\": \"中泰证券·研报·买入\", \"info_type\": \"report\"}],\n  \"raw_report\": \"LLM完整分析报告(Markdown)\",\n  \"disclaimer\": \"仅供参考，不构成投资建议\"\n}"},{"language":"json","snippet":"{\n  \"date\": \"2025-01-15\",\n  \"core_conclusion\": \"一句话核心结论\",\n  \"indices\": [{\"name\": \"上证指数\", \"close\": 3200.0, \"change_pct\": 0.5}],\n  \"statistics\": {\"up_count\": 3000, \"down_count\": 1500, \"limit_up_count\": 50},\n  \"top_sectors\": [{\"name\": \"半导体\", \"change_pct\": 3.2}],\n  \"bottom_sectors\": [{\"name\": \"房地产\", \"change_pct\": -1.5}],\n  \"sentiment\": \"偏多/中性/偏空\",\n  \"strategy\": \"操作建议\",\n  \"raw_report\": \"LLM完整复盘报告(Markdown)\"\n}"},{"language":"bash","snippet":"openclaw skill install stock-analysis-report"}],"parameters":null,"dependencies":[],"permissions":[],"extractedFiles":[{"path":"SKILL.md","content":"---\n\nname: stock-analysis\ndescription: |\n  A股市场分析与个股深度分析技能。支持基本面（财务指标/估值分位）、资金面（主力资金/DDX/DDY/DDZ）、技术面（均线/乖离率/量比）、筹码分布、舆情情报（新闻/研报/公告）等多维度分析，输出结构化评分与操作建议。\n\nTriggers: \"分析股票\", \"个股分析\", \"市场分析\", \"A股分析\", \"stock analysis\", \"analyze stock\", \"market analysis\", \"股票评分\", \"买卖建议\", \"涨停分析\"\n\nDoes NOT trigger:\n\n- 简单的股价查询（无需深度分析）\n- 港股/美股/非A股市场分析\n- 基金/债券/期货分析\n\nOutput: 结构化分析报告（评分0-100、操作方向、买卖点位、风险提示、检查清单）\nversion: 1.0.9\nlicense: MIT-0\nmetadata:\n  openclaw:\n    requires:\n      env:\n        - LLM_API_KEY\n        - LLM_BASE_URL\n        - LLM_MODEL\n      bins:\n        - python3\n    optional:\n      env:\n        - MX_APIKEY\n        - SERPAPI_KEY\n        - TAVILY_KEY\n        - BRAVE_KEY\n        - BOCHA_KEY\n        - BIAS_THRESHOLD\n        - NEWS_MAX_AGE_DAYS\n        - ENABLE_CHIP\n        - LOG_LEVEL\n    primaryEnv: LLM_API_KEY\n    emoji: \"📈\"\n    install:\n      - kind: uv\n        command: pip install -r requirements.txt\n\n---\n\n# A股股票市场分析 Skill\n\n## 功能\n\n### 个股分析\n\n输入股票代码，输出结构化分析结果：\n\n- **基本面**：净利润、营收、ROE、毛利率、资产负债率、机构持股比例、盈利预测\n- **估值**：PE(TTM)、PB、历史分位\n- **资金面**：主力资金流向（超大单/大单/中单/小单净额）、DDX/DDY/DDZ 指标\n- **技术面**：MA5/MA10/MA20/MA60 均线、多头排列、乖离率、量比\n- **筹码分布**：获利比例、平均成本、集中度\n- **舆情情报**：妙想金融资讯（新闻/研报/公告，LLM 分析）+ 多引擎新闻搜索\n- **实时行情**：当前价、涨跌幅、成交量、换手率\n- **分析结论**：评分 + 操作方向 + 买卖点位 + 检查清单 + 风险提示\n\n### 市场分析\n\n每日 A 股市场复盘：\n\n- 主要指数（上证/深证/创业板）\n- 涨跌统计（涨跌家数、涨停跌停数）\n- 板块排名（领涨/领跌 Top5）\n- 市场情绪判断 + 操作建议\n\n## 使用方式\n\n### 生成分析报告（推荐）\n\n```bash\n# 个股分析报告 → 保存到 reports/{代码}_{日期}.md\npython3 {baseDir}/scripts/report.py stock 600519\n\n# 市场分析报告 → 保存到 reports/market_{日期}.md\npython3 {baseDir}/scripts/report.py market\n\n# 同时输出 JSON\npython3 {baseDir}/scripts/report.py stock 600519 --json\n\n# 自定义输出目录\npython3 {baseDir}/scripts/report.py stock 600519 -o ./my-reports\n```\n\n### JSON 输出\n\n```bash\npython3 {baseDir}/scripts/analyze_stock.py 600519\npython3 {baseDir}/scripts/analyze_market.py\n```\n\n### Handler 调用\n\n```python\nfrom src.index import handler\nresult = await handler({\"mode\": \"stock\", \"code\": \"600519\"})\nresult = await handler({\"mode\": \"market\"})\nresult = await handler({\"mode\": \"stock\", \"code\": \"600519\", \"save\": True})\nresult = await handler({\"mode\": \"stock\", \"code\": \"600519\", \"save\": True, \"output_dir\": \"./reports\"})\n```\n\n## 输入格式\n\n| 字段          | 类型      | 必填            | 说明                            |\n| ----------- | ------- | ------------- | ----------------------------- |\n| mode        | string  | 是             | \"stock\" 或 \"market\"            |\n| code        | string  | mode=stock时必填 | A股股票代码，如 \"600519\"             |\n| save        | boolean | 否             | 是否保存 Markdown 报告到 reports/ 目录 |\n| output_dir | string  | 否             | 自定义报告输出目录（需 save=true）        |\n\n## 输出格式\n\n### 个股分析结果\n\n```json\n{\n  \"stock_code\": \"600519\",\n  \"stock_name\": \"贵州茅台\",\n  \"core_conclusion\": \"一句话核心结论\",\n  \"score\": 75,\n  \"action\": \"买入/观望/卖出\",\n  \"trend\": \"看多/震荡/看空\",\n  \"buy_price\": 1800.0,\n  \"stop_loss_price\": 1700.0,\n  \"target_price\": 2000.0,\n  \"checklist\": [{\"condition\": \"...\", \"status\": \"✅/❌\", \"detail\": \"...\"}],\n  \"risk_alerts\": [\"风险1\", \"风险2\"],\n  \"positive_catalyst"},{"path":"README.md","content":"<div align=\"center\">\n\n# 📈 A 股股票市场分析 Skill\n\n专为 OpenClaw 等智能体设计的 A 股股票分析技能\n\n[![License: MIT-0](https://img.shields.io/badge/License-MIT--0-yellow.svg)](LICENSE)\n[![Python 3.9+](https://img.shields.io/badge/Python-3.9%2B-blue.svg)](https://www.python.org/)\n[![OpenClaw Skill](https://img.shields.io/badge/OpenClaw-Skill-green.svg)](https://github.com/openclaw)\n\n基于 [daily\\_stock\\_analysis](https://github.com/ZhuLinsen/daily_stock_analysis) 项目精简重写，去除 WebUI、通知推送、Agent 问股等非核心功能，聚焦分析能力本身。\n\n</div>\n\n***\n\n## ✨ 功能特性\n\n### 📊 个股分析\n\n输入股票代码，输出结构化分析结果：\n\n- **技术面分析**：MA5/MA10/MA20/MA60 均线、多头排列判断、乖离率、量比\n- **筹码分布**：获利比例、平均成本、集中度\n- **舆情情报**：妙想金融资讯（新闻/研报/公告，LLM 分析）+ 多引擎新闻搜索\n- **实时行情**：当前价、涨跌幅、成交量、换手率等\n- **分析结论**：一句话核心结论 + 评分 + 操作方向 + 精确买卖点位 + 操作检查清单 + 买卖策略\n\n### 🌐 市场分析\n\n每日 A 股市场复盘：\n\n- **主要指数**：上证指数、深证成指、创业板指\n- **市场统计**：涨跌家数、涨停跌停数\n- **板块排名**：领涨 / 领跌板块 Top5\n- **分析结论**：市场情绪判断 + 操作建议 + 完整复盘报告\n\n### 🔄 多源数据架构\n\n#### 推荐配置：妙想金融\n\n配置 `MX_APIKEY` 后，妙想金融自动成为行情数据、财务/资金/估值、资讯搜索的**最高优先级数据源**，覆盖能力最全、数据质量最高。推荐优先配置。\n\n👉 前往 [妙想 Skills 页面](https://dl.dfcfs.com/m/itc4) 获取 API Key\n\n#### 行情数据采用自动容灾策略：\n\n| 优先级 | 数据源          | 说明                          |    需要 Token   |\n| :-: | ------------ | --------------------------- | :-----------: |\n|  0  | **妙想金融**     | 东财妙想 API，覆盖行情 + 财务数据        | ✅ `MX_APIKEY` |\n|  1  | **Efinance** | 基于东财接口，覆盖日 K、实时行情、板块排名、市场统计 |       ❌       |\n|  2  | **AkShare**  | 东财 + 新浪双通道，额外支持筹码分布         |       ❌       |\n\n> - 配置 `MX_APIKEY` 后妙想自动成为最高优先级；未配置时从 Efinance 开始\n> - 任意数据源异常时自动切换到下一级，无需人工干预\n\n## 🚀 快速开始\n\n### 方式一：通过 ClawHub 安装（推荐）\n\n使用 OpenClaw CLI 一键安装：\n\n```bash\nopenclaw skill install stock-analysis-report\n```\n\n安装后即可在 OpenClaw 中直接使用：\n\n```\n分析贵州茅台\n市场分析\n```\n\n### 方式二：本地开发\n\n#### 1. 安装依赖\n\n```bash\npip install -r requirements.txt\n```\n\n#### 2. 配置环境变量\n\n```bash\ncp .env.example .env\n```\n\n编辑 `.env` 文件，填入你的 API Key：\n\n```env\n# LLM 配置（必填）— 支持 DeepSeek 和 OpenAI 兼容模型\nLLM_BASE_URL=https://api.deepseek.com/v1\nLLM_API_KEY=your-api-key-here\nLLM_MODEL=deepseek-chat\n\n# 妙想金融数据（可选，配置后自动成为第一优先级数据源 + 资讯搜索源）\nMX_APIKEY=\n\n# 新闻搜索（至少配置一个，可选）\nSERPAPI_KEY=\nTAVILY_KEY=\nBRAVE_KEY=\nBOCHA_KEY=\n```\n\n> 💡 行情数据源（Efinance / AkShare）均为免费接口，无需配置任何 Token。\n\n#### 3. 调用分析\n\n#### 生成 Markdown 报告（推荐）\n\n```bash\n# 个股分析报告 → reports/{代码}_{日期}.md\npython3 scripts/report.py stock 600519\n\n# 市场分析报告 → reports/market_{日期}.md\npython3 scripts/report.py market\n\n# 同时输出 JSON\npython3 scripts/report.py stock 600519 --json\n\n# 自定义输出目录\npython3 scripts/report.py stock 600519 -o ./my-reports\n```\n\n#### JSON 输出\n\n```bash\npython3 scripts/analyze_stock.py 600519    # 个股分析\npython3 scripts/analyze_market.py          # 市场分析\n```\n\n#### Python API\n\n```python\nimport asyncio\nfrom src.index import analyze_stock, analyze_market\n\n# 个股分析 + 保存报告\nresult = asyncio.run(analyze_stock(\"600519\", save=True))\nprint(result.core_conclusion)   # 一句话核心结论\nprint(result.action)            # 买入/观望/卖出\n\n# 市场分析 + 保存报告\nresult = asyncio.run(analyze_market(save=True))\nprint(result.sentiment)         # 偏多/中性/偏空\n```\n\n#### OpenClaw Handler\n\n```python\nfrom src.index import handler\n\nresu"},{"path":"_meta.json","content":"{\n  \"ownerId\": \"kn7da87j1vga39tq7bxyc830gh834079\",\n  \"slug\": \"stock-analysis-report\",\n  \"version\": \"1.0.9\",\n  \"publishedAt\": 1776823731064\n}"},{"path":"skill-card.md","content":"## Description:\n\nAnalyzes A-share stocks and the broader A-share market across fundamentals, valuation, capital flows, technical indicators, chip distribution, and news or research signals to produce structured scores and operating suggestions.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[derrors](https://clawhub.ai/user/derrors)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nExternal users and developers use this skill to generate A-share stock deep-dive reports or daily A-share market reviews with structured conclusions, risk alerts, and suggested trading posture. It is intended for analysis support only and the artifact states that results are not investment advice.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: A caller-controlled LLM endpoint could expose the configured LLM API key or send market, news, and prompt content to an unintended provider.\n\nMitigation: Install only in a trusted environment, restrict allowed LLM endpoints, and do not expose the handler to untrusted callers until configuration fields are allowlisted.\n\nRisk: Saved reports may be written outside the intended reports folder when an unsafe output path is accepted.\n\nMitigation: Keep saved report paths under a known reports directory and validate or constrain output_dir before enabling report persistence.\n\nRisk: Market data, news content, and user prompts may be transmitted to configured LLM and search providers.\n\nMitigation: Review configured providers, keys, and data-sharing expectations before use, and treat generated investment analysis as support material rather than financial advice.\n\nRisk: Unpinned Python dependencies can change behavior across installs.\n\nMitigation: Pin dependency versions and review dependency updates before deployment.\n\n## Reference(s):\n\n- [ClawHub Skill Page](https://clawhub.ai/derrors/skills/stock-analysis-report)\n- [Miaoxiang Skills Page](https://dl.dfcfs.com/m/itc4)\n\n## Skill Output:\n\n**Output Type(s):** [Analysis, Markdown, JSON, Files, Guidance]\n\n**Output Format:** [Markdown reports and JSON objects with stock or market analysis fields]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Can save reports locally when requested; outputs include disclaimers and may include scores, suggested action, price levels, risk alerts, checklist items, news summaries, and raw LLM report text.]\n\n## Skill Version(s):\n\n1.0.9 (source: server release metadata, SKILL.md frontmatter, manifest.yaml)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment."},{"path":"config.example.yaml","content":"# LLM 配置（必填）\nllm_base_url: \"https://api.deepseek.com/v1\"\nllm_api_key: \"your-api-key-here\"\nllm_model: \"deepseek-chat\"\n\n# 新闻搜索（至少配置一个）\nserpapi_key: \"\"\ntavily_key: \"\"\nbrave_key: \"\"\nbocha_key: \"\"\n\n# 妙想金融数据源（可选）— 配置后自动成为第一优先级\nmx_apikey: \"\"\n\n# 分析参数\nbias_threshold: 5.0\nnews_max_age_days: 3\nenable_chip: true\n\n# 日志级别：DEBUG / INFO / WARNING / ERROR\nlog_level: \"INFO\""}],"languages":[],"docsSourceLabel":"CLAWHUB","editorialOverview":"提供A股个股及市场多维度深度分析，涵盖基本面、资金面、技术面、筹码和舆情，给出评分及买卖操作建议。 Skill: Stock Analysis Owner: derrors Summary: 提供A股个股及市场多维度深度分析，涵盖基本面、资金面、技术面、筹码和舆情，给出评分及买卖操作建议。 Tags: latest:1.0.9 Version history: v1.0.9 | 2026-04-22T02:08:51.064Z | auto - Pytdx 数据源被移除，精简为妙想金融、Efinance、AkShare 三级自动容灾。 - 妙想金融资讯正文将直接传递给 LLM 作为分析输入，辅助生成分析摘要和投资结论。 - SKILL.md 说明文档同步更新，优化并明确各数据源优先级及失效容灾逻辑。 - 依赖和主要脚本同步调整，确保移除 Pytdx 后运行和数据采集逻辑正常。 - 输出 json 字段和样例简化说明，将资讯摘要命名更通用，并统一 LLM 分析入口。 v1.0.8 | 2026-04-21T10:48:20.53","editorialQuality":{"score":100,"threshold":65,"status":"ready","wordCount":1208,"uniquenessScore":51,"reasons":[]}},"media":{"evidence":{"source":"no-media","verified":false,"confidence":"low","updatedAt":"2026-10-10T20:45:00.836Z","emptyReason":"No screenshots, media assets, or demo links are available."},"primaryImageUrl":null,"mediaAssetCount":0,"assets":[],"demoUrl":null},"ownerResources":{"evidence":{"source":"unclaimed","verified":false,"confidence":"low","updatedAt":"2026-10-10T20:45:00.836Z","emptyReason":"This page has not been claimed by the agent owner."},"hasCustomPage":false,"customPageUpdatedAt":null,"customLinks":[],"structuredLinks":{"docsUrl":null,"demoUrl":null,"supportUrl":null,"pricingUrl":null,"statusUrl":null},"customPage":null},"relatedAgents":{"evidence":{"source":"protocol-neighbors","verified":false,"confidence":"medium","updatedAt":"2026-10-10T23:45:49.059Z","emptyReason":null},"items":[{"id":"8ebccd8e-3863-4187-8355-c3f14e1f9edf","entityType":"agent","canonicalPath":"/agent/iofficeai-aionui","slug":"iofficeai-aionui","name":"AionUi","description":"Free, local, open-source 24/7 Cowork app and OpenClaw for Gemini CLI, Claude Code, Codex, OpenCode, Qwen Code, Goose CLI, Auggie, and more | 🌟 Star if you like it!","url":"https://github.com/iOfficeAI/AionUi","homepage":"https://www.aionui.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-10-09T19:11:12.944Z","createdAt":"2026-02-25T03:38:16.584Z","downloads":null},{"id":"b917f68a-ebff-438e-84f8-3f4b2494c0bc","entityType":"agent","canonicalPath":"/agent/activepieces-activepieces","slug":"activepieces-activepieces","name":"activepieces","description":"AI Agents & MCPs & AI Workflow Automation • (~400 MCP servers for AI agents) • AI Automation / AI Agent with MCPs • AI Workflows & AI Agents • MCPs for AI Agents","url":"https://github.com/activepieces/activepieces","homepage":"https://www.activepieces.com","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-15T02:22:12.426Z","createdAt":"2026-02-25T03:38:12.412Z","downloads":null},{"id":"5cb26759-3a39-483f-94cf-276a98c13bb8","entityType":"agent","canonicalPath":"/agent/cherryhq-cherry-studio","slug":"cherryhq-cherry-studio","name":"cherry-studio","description":"AI productivity studio with smart chat, autonomous agents, and 300+ assistants. Unified access to frontier LLMs","url":"https://github.com/CherryHQ/cherry-studio","homepage":"https://cherry-ai.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-11T14:38:40.986Z","createdAt":"2026-02-25T03:38:19.379Z","downloads":null},{"id":"6f6582d0-5d76-4f0f-b81d-86520247950b","entityType":"agent","canonicalPath":"/agent/copilotkit-copilotkit","slug":"copilotkit-copilotkit","name":"CopilotKit","description":"The Frontend for Agents & Generative UI. React + Angular","url":"https://github.com/CopilotKit/CopilotKit","homepage":"https://docs.copilotkit.ai","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-03-25T09:50:57.846Z","createdAt":"2026-02-25T03:39:14.617Z","downloads":null}],"links":{"hub":"/agent","source":"/agent/source/clawhub","protocols":[{"label":"OpenClaw","href":"/agent/protocol/openclew"}]}}}