Install
openclaw skills install huahua-dailyUse HuahuaDaily MCP to query portfolio, transactions, market data, screenshot imports, and send App-confirmed trade/import requests.
openclaw skills install huahua-dailyThis SKILL.md intentionally uses the smallest common Agent Skills format: YAML frontmatter with only name and description, followed by Markdown instructions. Platform-specific setup for Codex, Codex CLI, Claude Code, Claude Desktop, OpenClaw, Hermes Agent, and other MCP clients belongs in README/configuration, not in this file.
花花日记 MCP 让 Agent 读取用户授权的云端同步数据、基金行情、交易流水和系统公告,识别截图,并向 App 发送待确认请求。
Agent 不直接写入交易、不直接导入持仓、不覆盖云同步。所有买入、卖出、持仓导入、自选导入、交易记录导入,都必须由用户在 App 确认页最终确认。
首次使用或不确定能力时,调用:
get_tool_manifest()
用途:
Token 缺失、无效或过期时,提示用户在 App「小窝 / 设置 → Agent 访问令牌」重新生成,并配置环境变量 HUAHUA_AGENT_TOKEN。
首选:
get_summary()
返回重点:
totalMarketValue:总市值。todayProfit:今日收益。totalHoldingProfit:持有收益。cumulativeProfit:累计收益。totalReturnRate:累计收益率。dataUpdatedAt:云同步时间。回答时必须说明 dataUpdatedAt。如果时间明显旧,提醒用户在 App 执行「立即同步」。
不要为了资产概况先调用 get_raw_sync_data()。
首选:
get_records({"include_transactions": false})
返回重点:
holdings:有持仓的基金。watchlist:自选或清仓观察项。groups:分组。summary:汇总。dataUpdatedAt:云同步时间。如果用户要求交易流水、成本来源、审计收益,再调用:
get_transactions({"code": "", "include_pending": true})
或:
get_records({"include_transactions": true})
先调用:
get_sync_meta()
返回重点:
updated_at:云端更新时间。etag:云端快照指纹。size_bytes:快照大小。需要完整检查时调用:
get_raw_sync_data({"include_json_text": false})
检查重点:
data.funds 是否存在且非空。data.groups、data.watchlistGroups 是否存在。data.globalTags 是否存在。meta.contains_ledger 通常为 false,这是正常的。只有用户明确要求导出原始 JSON 文本时,才设置 include_json_text=true。默认不要返回大段 JSON。
分组:
get_groups()
标签:
get_tags()
使用规则:
get_groups() 用于解释持仓账户分组、自选分组。get_tags() 用于解释全局标签和每只基金绑定标签。查询实时估算:
get_item_estimate({"codes": ["110022"]})
用途:
注意:
codes 最多 50 个。先搜索:
search_item({"query": "易方达消费"})
处理规则:
按需调用:
get_item_detail({"code": "110022"})
get_item_history({"code": "110022"})
get_fund_fees({"code": "110022"})
get_item_dividends({"code": "110022"})
get_fund_period_rank({"code": "110022"})
get_fund_timeline({"code": "110022"})
选择规则:
get_item_estimate。get_item_history。get_fund_fees。get_item_dividends。get_fund_period_rank(单只)或 get_batch_fund_period_ranks(批量,最多 50 只)。get_fund_timeline。get_item_detail。此工具较重,不要作为日常行情首选。get_night_estimate(需会员,美股交易时段有效);用户在 App 添加的夜盘自选基金列表用 get_night_watchlist,通常先调这个再传给 get_night_estimate。概览:
get_overview()
主要指数:
get_indices()
今日涨跌榜:
get_daily_rank()
是否交易日:
get_status()
默认沪深300:
get_benchmark_history({"code": "sh000300"})
常用代码:
sh000300:沪深300。sh000001:上证指数。sz399001:深证成指。510300。需要基金自身走势时,再调用 get_item_history(code)。
QDII 基金投资美股/港股,北京时间夜间才是它们的交易时段。夜盘估值在美股交易时段(21:30–次日04:00 夏令时)提供实时持仓穿透。
推荐流程(无需用户报代码):先用 get_night_watchlist() 读用户在 App 添加的夜盘自选列表,再用其结果调 get_night_estimate():
get_night_watchlist()
// 返回 {"codes": ["016665", "018147", ...], "count": N, "has_customized": true, "dataUpdatedAt": "..."}
若 has_customized=false(用户未自定义过),codes 为空,应提示用户先去 App 夜盘页面添加自选基金,或允许用户手动指定一组代码。
get_night_estimate({"codes": ["016665", "018147"]})
返回每只基金的:
estimatedChangePercent:盘后复合涨跌幅(股价×汇率)。estimatedNav:估算净值。breakdown:穿透到个股的持仓明细、股价涨跌、汇率变动、贡献度。status:ready(数据就绪)/ pending(等待开盘)/ closed(休市)。注意:
has_customized 会是 false。下一个交易日:
get_next_trading_day({"date": "2026-05-13"})
基金确认日期:
calculate_trading_dates({
"date": "2026-05-13",
"time_mode": "PRE_MARKET",
"confirm_days": 2
})
参数:
time_mode: PRE_MARKET 表示收盘前,POST_MARKET 表示收盘后。confirm_days: T+1/T+2/T+3 等,未知时先用 get_fund_fees(code) 获取 confirm_days。先确认:
发送请求:
request_transaction({
"item_code": "110022",
"item_name": "易方达消费行业股票",
"record_type": "BUY",
"amount": 1000,
"date": "2026-05-13",
"note": "Agent 发起",
"group_name": "我的账户"
})
规则:
record_type 只能是 BUY 或 SELL。查看:
get_agent_requests()
用户明确要求忽略/撤销时:
update_agent_request({
"request_id": "请求 id",
"status": "DISMISSED"
})
不要替 App 把请求标记为 PROCESSED,除非用户明确要求且你知道这只是状态处理,不代表真实交易执行。
持仓截图(本地路径):
import_holding_screenshots({
"image_paths": ["/absolute/path/holding.png"],
"import_type": "HOLDINGS"
})
自选截图(务必传 import_type: "WATCHLIST"):
import_holding_screenshots({
"image_paths": ["/absolute/path/watchlist.png"],
"import_type": "WATCHLIST"
})
Base64:
import_holding_screenshots({
"images_base64": [
{"filename": "holding.png", "mime": "image/png", "base64": "..."}
],
"import_type": "HOLDINGS"
})
import_type 说明:
HOLDINGS(默认):持仓页面通常不显示基金代码,后端按名称四步匹配(可能出现模糊匹配)。WATCHLIST:自选页面明确显示 6 位代码,后端用专门 prompt 提取代码并精确匹配;AI 漏识别代码时回退名称匹配。自选场景务必传此值,否则会强制走名称模糊匹配。返回重点:
items:识别条目。summary.total:总条数。summary.unmatched:未匹配数量。resolution_required:是否需要轻确认。resolution_reason:轻确认原因。用途:
import_type="HOLDINGS")。import_type="WATCHLIST")。识别后不要直接声称导入完成。
本地路径:
import_transaction_screenshots({
"image_paths": ["/absolute/path/transactions.png"]
})
Base64:
import_transaction_screenshots({
"images_base64": [
{"filename": "transactions.png", "mime": "image/png", "base64": "..."}
]
})
返回重点:
type: BUY 或 SELL。fund_name:截图识别名称。fund_code:匹配代码。fund_real_name:标准基金名。matched:是否匹配。date、time_mode、amount、shares。skip / skip_reason:应跳过的条目。resolution_required / resolution_reason。只在对话里确认“识别歧义”,不要让用户在对话里完成大型表格审核。
需要轻确认的情况:
resolution_required=true。match_status=unmatched。matched=false。amount。shares。轻确认完成后,修改 items 中对应字段,再发送到 App。
持仓导入:
request_import_review({
"import_type": "HOLDINGS",
"items": [...],
"source_note": "Agent 识别持仓截图"
})
自选导入:
request_import_review({
"import_type": "WATCHLIST",
"items": [...],
"source_note": "Agent 识别自选截图"
})
交易记录导入:
request_import_review({
"import_type": "TRANSACTIONS",
"items": [...],
"source_note": "Agent 识别交易记录截图"
})
限制:
import_type 只能是 HOLDINGS、WATCHLIST、TRANSACTIONS。items 最多 300 条。调用后必须告诉用户:
查看某基金弹幕:
get_danmaku({"code": "110022"})
发送弹幕:
send_danmaku({
"fund_code": "110022",
"text": "今天波动有点大"
})
规则:
send_danmaku。text 最多 30 字。系统公告:
get_notices({"since": 0})
since 是 Unix 秒时间戳;默认 0 表示拉取最近公告。
401:Token 无效或过期,要求用户重新生成。403:权限不足或会员状态不满足,要求用户检查 PRO 状态。