OpenClaw 配置小红书发 ETF 实战指南
记录使用 OpenClaw 自动分析股票数据并发布 ETF 推荐到小红书的完整过程
📋 目录
环境配置 1. 安装依赖 1 2 apt-get install -y xvfb imagemagick zbar-tools fonts-noto-cjk python3-pil pip3 install mysql-connector-python --break-system-packages
2. 启动虚拟显示 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 cat > /etc/systemd/system/xvfb.service << 'EOF' [Unit] Description=X Virtual Frame Buffer After=network.target [Service] ExecStart=/usr/bin/Xvfb :99 -screen 0 1920x1080x24 Restart=always [Install] WantedBy=multi-user.target EOF systemctl enable xvfb && systemctl start xvfb
小红书 MCP 服务 1. 下载安装 1 2 3 4 5 mkdir -p ~/xiaohongshu-mcpcd ~/xiaohongshu-mcpwget https://github.com/xpzouying/xiaohongshu-mcp/releases/latest/download/xiaohongshu-mcp-linux-amd64.tar.gz tar xzf xiaohongshu-mcp-linux-amd64.tar.gz chmod +x xiaohongshu-*
2. 登录方式 推荐:手动 Cookie 登录
浏览器访问 https://www.xiaohongshu.com/ 并登录
F12 → Network → 刷新页面
复制 Cookie 字符串
转换为 JSON 格式保存到 cookies.json
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 python3 -c " import json cookie_str = 'web_session=xxx;id_token=xxx' # 替换为你的 Cookie cookies = [] for pair in cookie_str.split(';'): pair = pair.strip() if '=' not in pair: continue name, value = pair.split('=', 1) cookies.append({ 'name': name.strip(), 'value': value.strip(), 'domain': '.xiaohongshu.com', 'path': '/', 'httpOnly': name.strip() in ('web_session', 'id_token'), 'secure': name.strip() in ('web_session', 'id_token') }) with open('cookies.json', 'w') as f: json.dump(cookies, f, ensure_ascii=False) print(f'已保存 {len(cookies)} 个 Cookie') "
3. 启动服务 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 cat > /etc/systemd/system/xhs-mcp.service << 'EOF' [Unit] Description=Xiaohongshu MCP Service After=network.target xvfb.service Requires=xvfb.service [Service] Environment=DISPLAY=:99 WorkingDirectory=/root/xiaohongshu-mcp ExecStart=/root/xiaohongshu-mcp/xiaohongshu-mcp-linux-amd64 Restart=always [Install] WantedBy=multi-user.target EOF systemctl daemon-reload systemctl enable xhs-mcp && systemctl start xhs-mcp systemctl status xhs-mcp
发布效果展示 📊 第一篇:3 只低估 ETF 闭眼入 标题: 3 只低估 ETF 闭眼入📈翻倍潜力
内容:
筛选逻辑:52 周分位<10%、日均成交>3000 万、偏离均线<-5%
推荐 3 只 ETF:通信 ETF(159994)、光伏 ETF(515790)、恒生 ETF(510900)
包含预期收益、止盈止损位、持仓时间
封面图: 1080x1440 深色渐变背景,卡片式布局
📈 第二篇:3 月 9 日 ETF 策略 标题: 3 月 9 日 ETF 策略|3 只低估基
内容:
市场日报:沪深 300 -0.81%、中证 500 -0.88%
3 只 ETF 详细对比图
操作建议:分批建仓、设置止盈、严格执行
封面图: 3 张专业图表(市场概览、ETF 对比、操作建议)
💊 第三篇:ETF 复盘 标题: ETF 复盘|没买的后悔了吗
内容:
今日净值:通信 ETF -2.25%、光伏 ETF -0.64%、恒生 ETF -0.27%
复盘总结:继续看好通信、坚定持有光伏、外资回流恒生
投资策略:52 周分位<10% 才买入、分批建仓、长期持有
封面图: 2 张图表(行情复盘、后悔药时间)
核心代码 1. 筛选低估 ETF 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 SELECT d.symbol, s.sec_name, d.close, ROUND((d.close - h.min_price) / (h.max_price - h.min_price) * 100 , 2 ) as percentile_52w FROM daily_data dJOIN stock_info s ON d.symbol = s.symbolJOIN ( SELECT symbol, MIN (close ) as min_price, MAX (close ) as max_price FROM daily_data WHERE trade_date >= DATE_SUB(CURDATE(), INTERVAL 250 DAY ) GROUP BY symbol ) h ON d.symbol = h.symbol WHERE d.trade_date = CURDATE()AND s.type = 'ETF' ORDER BY percentile_52w ASC LIMIT 10 ;
2. 生成封面图 1 2 3 4 5 6 7 8 9 10 11 from PIL import Image, ImageDraw, ImageFontimg = Image.new('RGB' , (1080 , 1440 ), color='#1a1a2e' ) draw = ImageDraw.Draw(img) font = ImageFont.truetype('/usr/share/fonts/opentype/noto/NotoSansCJK-Bold.ttc' , 72 ) draw.text((540 , 150 ), "3 只低估 ETF" , fill='#e94560' , font=font, anchor='mm' ) draw.text((540 , 250 ), "闭眼入" , fill='#ffffff' , font=font, anchor='mm' ) img.save('/tmp/xhs_cover.png' )
3. 发布到小红书 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 MCP_URL="http://localhost:18060/mcp" SESSION_ID=$(curl -s -D /tmp/headers -X POST "$MCP_URL " \ -H "Content-Type: application/json" \ -d '{"jsonrpc":"2.0","method":"initialize","params":{"protocolVersion":"2024-11-05"}}' | \ grep -i 'Mcp-Session-Id' | awk '{print $2}' ) curl -s -X POST "$MCP_URL " \ -H "Content-Type: application/json" \ -H "Mcp-Session-Id: $SESSION_ID " \ -d '{ "jsonrpc":"2.0", "method":"tools/call", "params":{ "name":"publish_content", "arguments":{ "title":"3 只低估 ETF 闭眼入📈翻倍潜力", "content":"宝子们!OpenClaw 从数据库分析 50+ETF...", "images":["/tmp/xhs_cover.png"] } }, "id":2 }'
总结 ✅ 配置要点
Xvfb 虚拟显示 - 必须运行
Cookie 登录 - 比扫码更稳定
systemd 守护 - 保证服务持续运行
Pillow 中文字体 - 确保图片正常显示
📊 发布成果
3 篇笔记 成功发布
5 张封面图 自动生成
7081 条 股票信息入库
138 万条 行情数据可用
💡 经验总结
Cookie 登录比扫码更稳定
图片避免使用 emoji(可能显示异常)
数据库 stock_info 表必须有准确的 ETF 名称
分批建仓、长期持有是核心策略
作者: xiaomao博客: https://oneops.top GitHub: https://github.com/xxxxxx 更新时间: 2026-03-10