用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
直接命令不会经过审查 Prompt;运行前请先检查来源。
npx skills add https://github.com/aAAaqwq/AGI-Super-Team --skill web-content-capture命令会保持在同一行。复制前请横向滚动并检查完整内容。
想先保存到本地?可下载 SkillsMP 当前能够提供的文件。
正在显示 SKILL.md
币安广场合约投机雷达 v5:以最近24小时专业交易帖为主要证据,回源核验帖子, 联合币安公共合约行情、4周期K线、布林带、ATR、量能和RR,生成可审计的本地影子报告。 触发词:币安广场、扫描币安、binance square、合约机会、交易信号雷达、4小时雷达
BTC 5分钟K线实时方向预测。v5.9对抗式审查重构: 13因子收敛到3个有证据信号(half_body延续+volume放量+meanrev回归, 11个47-49%硬币因子清零) + 三层独立信息过滤(多周期4h/1h/15m趋势 + 跨资产ETH/SOL广度 + 真订单流OFI) + 移除bull×0.92惩罚/Platt置信度门控。半K线策略第2分钟执行。黑天鹅防护: ATR spike+FNG<25。Binance端点双向故障切换。
BB 双向套利策略:加密合约 10x 杠杆布林带均值回归。布林带收窄=横盘→在下轨买、上轨卖;三重过滤器(1h趋势/RSI/BB甜区)确认碗平放,轨对轨止盈(RR 2:1~4:1)。含实时WebSocket模拟盘(paper)、历史回测(simulate/backtest_daily)、币安永续实盘CLI(trade_exec)。触发:'bb套利'、'布林带'、'bollinger'、'横盘策略'、'NEAR'、'回测'、'模拟盘'、'paper trading'。
基于 SOC 职业分类
| name | web-content-capture |
| description | 为内容生产提供**网页截图和素材采集**能力。所有内容生成类 skill 在素材阶段应调用本 skill。 |
MediaClaw 通用素材采集工具
为内容生产提供网页截图和素材采集能力。所有内容生成类 skill 在素材阶段应调用本 skill。
1. OpenClaw browser (profile="openclaw")
→ 保持登录态,适合 X/Reddit/需登录平台
→ 截图保存到 ~/.openclaw/media/browser/
2. OpenClaw browser (profile="user")
→ 使用 Daniel 的 Chrome session(需 debug port 9222)
3. Playwright headless (exec + python3)
→ 无登录态,适合 GitHub/文档站/博客等公开页面
→ 最快最稳定
4. web_fetch
→ 仅获取文本,无法截图
→ 代理环境可能导致 SSRF 拦截
browser(action="status", profile="openclaw")
running: false → browser(action="start", profile="openclaw")gateway(action="restart") 等待5秒重试browser(action="open", profile="openclaw", targetUrl="https://...")
保留返回的 targetId 用于后续操作。每个平台用独立 tab。
browser(action="act", profile="openclaw", targetId="xxx",
request={"kind": "wait", "timeMs": 8000})
| 平台 | 建议 |
|---|---|
| GitHub | 3-5秒 |
| Reddit(公开) | 5-8秒 |
| X/Twitter | 8-12秒 |
| Google搜索 | 3-5秒 |
| Medium/Blog | 5-8秒 |
browser(action="screenshot", profile="openclaw", targetId="xxx", type="png")
OpenClaw browser 截图存在 ~/.openclaw/media/browser/,必须复制到项目输出目录:
# 找到最新截图(按时间倒序,取 >20KB 的有效文件)
ls -lt ~/.openclaw/media/browser/*.{png,jpg} | head -10
# 复制到目标文章素材目录
cp ~/.openclaw/media/browser/<file> <OUTPUT_DIR>/<descriptive-name>.png
# 快速检查:文件大小 > 20KB
ls -lh <screenshot>
# 深度检查:是否空白
python3 -c "
from PIL import Image; import numpy as np
img = np.array(Image.open('<path>'))
print('BLANK' if img.mean() > 250 else 'OK')
"
当 OpenClaw browser 不可用或无需登录时:
import asyncio
from playwright.async_api import async_playwright
async def capture(url, output_path):
async with async_playwright() as p:
browser = await p.chromium.launch(headless=True)
page = await browser.new_page(
user_agent="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36",
viewport={"width": 1400, "height": 900}
)
await page.goto(url, timeout=25000)
await page.wait_for_load_state("domcontentloaded", timeout=15000)
await asyncio.sleep(5)
await page.screenshot(path=output_path)
await browser.close()
asyncio.run(capture("https://github.com/user/repo", "github-repo.png"))
| 平台 | URL | 登录 |
|---|---|---|
| X | https://x.com/search?q=关键词&f=live | ✅ |
https://reddit.com/r/{sub}/search/?q=关键词&sort=top&t=month | 部分 | |
| GitHub | https://github.com/{user}/{repo} | ❌ |
https://google.com/search?q=关键词 | ❌ | |
| Medium | https://medium.com/search?q=关键词 | ❌ |
| 知乎 | https://zhihu.com/search?type=content&q=关键词 | 部分 |
由调用方指定,不写死。标准结构:
<OUTPUT_DIR>/
├── github-*.png
├── reddit-*.png
├── x-*.png
├── google-*.png
├── cover-*.png
└── article.md
OUTPUT_DIR 由内容生成 skill 在调用时传入,通常为:
~/clawd/projects/MediaClaw/output/articles/{YYYY-MM-DD}/{topic-slug}/
严禁截取全页面(可能暴露 profile、通知、DM、关注列表等)。
正确做法:只截目标推文/评论
Page.captureScreenshot + clip 参数裁剪单条内容# CDP 裁剪单条推文(示例)
import json, base64, websockets
async with websockets.connect(ws_url) as ws:
# 1. 定位目标推文的 bounding box
await ws.send(json.dumps({
"id": 1,
"method": "Runtime.evaluate",
"params": {
"expression": """
(() => {
const articles = document.querySelectorAll('article');
let best = null, bestScore = 0;
for (const a of articles) {
const t = a.textContent;
// 找 likes 最高的相关推文
const m = t.match(/([\d,.]+)\s*[Ll]ikes?/);
const score = m ? parseInt(m[1].replace(/,/g,'')) : 0;
if (score > bestScore && t.includes('KEYWORD')) {
bestScore = score;
best = a.getBoundingClientRect();
}
}
return best ? {x:best.x, y:best.y, w:best.width, h:best.height} : null;
})()
""",
"returnByValue": True
}
}))
bbox = json.loads(await ws.recv())['result']['result']['value']
# 2. 裁剪截图(scale=2 对应 deviceScaleFactor)
clip = {"x": bbox['x']*2, "y": bbox['y']*2,
"width": bbox['w']*2, "height": bbox['h']*2, "scale": 1}
await ws.send(json.dumps({
"id": 2,
: ,
: {: , : clip}
}))
data = json.loads( ws.recv())[][]
(, ) f:
f.write(base64.b64decode(data))
| 平台 | 裁剪策略 | 裁掉什么 |
|---|---|---|
| X/Twitter | 单条推文 bounding box | 导航栏、侧栏、推荐关注 |
| 搜索结果区域 | 顶栏、侧栏、广告 | |
| GitHub | 仓库主体区域(去掉侧边栏) | 右侧推荐、赞助 |
| 搜索结果主体 | 顶栏、广告、侧栏 |
| 问题 | 解决 |
|---|---|
| browser 超时 | gateway restart + browser start |
| 截图空白 | 增加等待时间 / 换 Playwright / 检查登录态 |
| SSRF 拦截 | 用 OpenClaw browser 替代 web_fetch |
| X 需登录 | 用 OpenClaw browser (openclaw profile),首次需扫码 |
| 截图暴露隐私 | 用 CDP clip 裁剪单条内容,不截全页 |