本文へ移動
cccskills
無料GitHub で公開

article-material-collect

上层编排 Skill,通过 **Brave Search 发现 → 智能选择浏览器截图** 完成结构化素材采集。文章素材收集编排Skill。为MediaClaw内容生产提供结构化的多平台素材采集workflow。

强制使用OpenClaw Browser截图实际文章页面,支持GitHub/Reddit/X/Medium/知乎等。用法: (1) content-ops-toolkit素材阶段调用 (2) daily-*-content素材采集 (3) 独立素材收集任务。

Trigger: "收集素材", "素材收集", "采集素材", "素材", "找素材", "research materials", "material collect". Author: Daniel Li version: 2.1.0 dependencies: [brave-search, web-content-capture]

インストール方法を見る

含まれるファイル(1)

  • SKILL.md11.7 KB

SKILL.md(原文)

インストールする前に、エージェントに与えられる指示の中身を確認できます。

文章素材收集 v2.1

MediaClaw 素材收集编排 Skill — OpenClaw Browser + Playwright 双模式

v1.0 → v2.1 修复历程

版本修复内容
v1.0问题版:Playwright 优先 → 截图搜索页
v2.0修复:OpenClaw Browser 强制优先 → 截图实际文章页
v2.1当前版:强化质量门槛、平台登录要求、修复 Reddit/X 截无效图问题

定位

上层编排 Skill,通过 Brave Search 发现 → 智能选择浏览器截图 完成结构化素材采集。

智能选择原则:公开页面用 Playwright(更快更稳),需要登录的页面用 OpenClaw Browser。

默认配置

配置项默认值说明
公开页面浏览器Playwright headlessReddit、DEV、GitHub、Medium
需登录页面浏览器OpenClaw Browser (openclaw profile)X/Twitter、知乎(部分)
截图质量门槛≥50KB(v2.1 从 20KB 提高到 50KB)
信息源DEV, GitHub, Reddit, X, Medium, 知乎可扩展
保存位置MediaClaw/output/articles/{date}/{topic}/素材/调用方可覆盖
搜索工具Brave Search APInode ~/.openclaw/skills/brave-search/search.js

平台登录要求(v2.1 新增)

平台需要登录推荐浏览器素材价值
DEV Community❌ 否Playwright⭐⭐⭐⭐⭐ 推荐替代 X/Reddit
GitHub❌ 否Playwright⭐⭐⭐⭐⭐ 代码/项目测评必备
Reddit❌ 否Playwright⭐⭐⭐⭐ 社区观点,需实际帖子 URL
Medium❌ 否Playwright⭐⭐⭐⭐ 技术博客
X/Twitter✅ 是OpenClaw Browser(需登录)⭐⭐⭐ 大V观点,未登录则跳过
知乎✅ 部分OpenClaw Browser⭐⭐⭐ 中文内容,未登录则跳过
Google❌ 否Playwright⭐ 热度参考,不截图搜索结果

Workflow(v2.1)

Phase 1: 确认收集参数

必须明确以下3项才能开始采集:

1. 主题/关键词 → 用来搜索的query(可以是中英文多个)
2. 文章关联 → 对应哪篇文章(日期+slug),决定保存路径
3. 信息源 → 从哪些平台收集(建议:DEV + GitHub + Reddit + Medium,跳过 X/知乎除非已登录)

输出确认:

素材收集确认(v2.1):
- 主题:{query}
- 关联文章:{date}/{slug}
- 保存位置:{output_dir}/素材/
- 信息源:{platforms}
- 浏览器策略:公开页面 → Playwright / 需登录 → OpenClaw Browser

Phase 2: 搜索发现(获取实际内容页 URL)

用 Brave Search API 发现实际内容页 URL(不是搜索结果页):

node ~/.openclaw/skills/brave-search/search.js "Claude Code vs Codex comparison 2026" -n 10 --content

关键原则:从搜索结果中提取实际文章/帖子 URL,按以下优先级:

优先级平台类型URL 特征说明
⭐⭐⭐⭐⭐DEV Community 文章dev.to/{user}/{slug}公开内容,质量高,优先采集
⭐⭐⭐⭐⭐GitHub 项目页面github.com/{user}/{repo}工具/项目测评必备
⭐⭐⭐⭐Reddit 帖子reddit.com/r/{sub}/comments/{id}/从搜索结果提取实际帖子 URL
⭐⭐⭐⭐技术博客(NxCode等)独立域名文章页有数据、有观点、可截图
⭐⭐⭐Medium / 知乎 / CSDN文章页 URL中文内容,需文章页 URL
⭐⭐X 大V 推文x.com/{user}/status/{id}需登录,未登录则跳过
⭐Google 搜索结果页google.com/search?q=仅作热度证明,不截文章

🚨 v2.1 特别注意:

  • Reddit:URL 必须是 /comments/{id}/ 格式,不是 /search/?q= 格式
  • X:必须从搜索结果提取实际推文 URL,未登录则跳过
  • Google:严禁截图搜索结果页,只记录搜索结果数量

Phase 3: 智能采集(按平台选择浏览器)

公开页面 → Playwright(推荐)

import asyncio
from playwright.async_api import async_playwright

async def collect_material(url: str, output_path: str, wait_s: int = 8) -> dict:
    """采集公开页面素材"""
    async with async_playwright() as p:
        browser = await p.chromium.launch(headless=True)
        page = await browser.new_page(
            viewport={"width": 1400, "height": 900},
            user_agent="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36"
        )
        try:
            await page.goto(url, timeout=25000, wait_until="networkidle")
            await asyncio.sleep(wait_s)
            await page.screenshot(path=output_path, full_page=True)
            size = os.path.getsize(output_path)
            return {"status": "ok", "size": size, "path": output_path}
        except Exception as e:
            return {"status": "error", "error": str(e)}
        finally:
            await browser.close()

需要登录 → OpenClaw Browser

# 检查登录状态
browser(action="status", profile="openclaw")
# 如果 running=true → 已登录,继续
# 如果 running=false → 未登录 → 跳过该平台
# 打开页面
browser(action="open", profile="openclaw", targetUrl="https://...")

# 等待加载(X/知乎需要更长等待)
browser(action="act", targetId="xxx", request={"kind": "wait", "timeMs": 12000})

# 截图
browser(action="screenshot", profile="openclaw", targetId="xxx", type="png")

Phase 4: 质量验证(强制门控)

每个截图必须通过以下检查:

# 1. 文件大小 ≥ 50KB
size=$(stat -c%s "$path")
if [ $size -lt 51200 ]; then
    echo "FAIL: 文件太小 (${size}B < 50KB),重试"
    # 重试:增加等待时间 +5s
fi

# 2. 非空白图片
python3 -c "
from PIL import Image; import numpy as np
img = np.array(Image.open('$path'))
if img.mean() > 250:
    print('FAIL: blank image')
else:
    print('OK')
"

# 3. 内容相关性(目测检查截图是否包含目标关键词)

重试策略:

  1. 第一次失败 → 等待时间 +5s,重试
  2. 第二次失败 → 换浏览器方式(OpenClaw ↔ Playwright)
  3. 第三次失败 → 标记为"截图失败"并记录原因

Phase 5: 保存与索引

目录结构:

{OUTPUT_DIR}/素材/
├── README.md              ← 素材索引(必须)
├── dev-community/         ← DEV 文章截图
│   └── *.png
├── github/                ← GitHub 项目截图
│   └── *.png
├── reddit/                ← Reddit 帖子截图
│   └── *.png
├── medium/                ← Medium 文章截图
│   └── *.png
├── x/                     ← X 推文截图(仅登录成功时)
│   └── *.png
└── failed/                 ← 截图失败的记录
    └── README.md

素材索引 README.md(必须):

# 素材索引 — {topic}
## 采集时间: {YYYY-MM-DD HH:MM}
## 采集工具: Playwright (公开页) + OpenClaw Browser (需登录页)

| 平台 | 标题 | URL | 文件 | 大小 | 状态 |
|------|------|-----|------|------|------|
| DEV | Claude Code vs Codex | https://dev.to/... | dev-xxx.png | 240KB | ✅ |
| Reddit | 500+ developers | https://reddit.com/r/... | reddit-xxx.png | 85KB | ✅ |
| X | @user analysis | - | - | - | ❌ 未登录跳过 |
| Google | - | - | - | - | ℹ️ 仅记录数量 |

统计: 有效截图 {n} 张 / 总计划 {n} 张
跳过: {platforms}(原因:{reasons})

快速调用模板

调用 article-material-collect v2.1:
  topic: "Claude vs Codex 对比"
  query_zh: "Claude Code Codex 对比 评测 2026"
  query_en: "Claude Code vs Codex comparison 2026"
  article: "2026-04-16/claude-vs-codex"
  sources: [dev-community, github, reddit, medium]  ← 推荐:跳过 X/知乎除非已登录
  output_dir: ~/clawd/projects/MediaClaw/output/articles/2026-04-16/claude-vs-codex/素材/

质量标准(v2.1)

  • 素材文件夹包含 README.md 索引
  • 每张截图 ≥ 50KB(非空白)✅ 强化
  • 截图的是实际文章内容,不是搜索结果页 ✅ 强化
  • Reddit 截图是帖子页,不是 /search/ 页面 ✅ 新增
  • X 截图有登录态才执行,无登录则跳过并记录 ✅ 新增
  • Google 搜索结果不截图,只记录数量 ✅ 新增
  • DEV Community 作为优先信息源 ✅ 新增
  • 文件命名有意义(非 screenshot-1.png)
  • 素材可直接用于文章嵌入(清晰、相关、裁剪得当)

铁律(v2.1)

  1. 智能选择浏览器 — 公开页面用 Playwright(更快),需登录用 OpenClaw Browser
  2. 截取实际内容页 — 禁止截图 Reddit/X/Google 搜索结果页
  3. 质量门控 — 每个截图必须 ≥ 50KB + 非空白
  4. 跳过而非失败 — X/知乎等平台未登录时,跳过并记录原因(不算失败)
  5. DEV 优先 — DEV Community 是最可靠的公开技术内容源,优先采集
  6. 必须索引 — 每次采集必须生成 README.md
  7. 先确认再采集 — Phase 1 参数确认后才执行 Phase 2-5
  8. 不暴露隐私 — 截图前检查无个人信息泄露

已知问题与应对

问题原因应对
Reddit 截图是搜索页v1.0 行为,未更新 URLv2.1:必须用 /comments/ URL
Reddit headless 超时Reddit 检测 headless 浏览器v2.1:改用 domcontentloaded + 真实 UA + 10s 等待
X 截图 22KB(空白)openclaw profile 未登录 Xv2.1:跳过或用 OpenClaw Browser(需登录态)
Nitter 备选不可靠Nitter 实例不稳定v2.1:仅作备选,主要靠 openclaw browser 登录态
Google 截图没用搜索结果页无实质内容v2.1:明确禁止,改为记录数量
知乎需要登录大部分内容需登录v2.1:跳过并记录

实测结果(2026-04-16):

平台方法结果大小
RedditPlaywright (domcontentloaded)✅ 通过860KB
DEV CommunityPlaywright (domcontentloaded)✅ 极佳1706KB
NitterPlaywright❌ 几乎空白6KB
X/TwitterOpenClaw Browser (未登录)❌ 空白<50KB

结论:Reddit → Playwright(真实UA);X → OpenClaw Browser(登录态)或跳过;Nitter 不可靠。


上层调用

content-ops-toolkit 在素材阶段调用本 skill。本 skill 内部调用:

  • brave-search → 搜索发现
  • web-content-capture → 底层截图(v2.1 修复版)

更新日志

  • v2.1.0 (2026-04-16): 修复 Daniel 反馈的素材无效问题
    • 提高质量门槛:20KB → 50KB
    • 添加完整平台登录要求文档
    • 修复 Reddit URL(必须 /comments/ 而非 /search/)
    • 添加 X 未登录跳过机制
    • 明确禁止截图 Google 搜索结果
    • 新增 DEV Community 作为优先信息源
    • 添加跳过机制(平台未登录不算失败)
    • 细化质量验证和重试策略
  • v2.0.0 (2026-04-15): OpenClaw Browser 强制优先,动态等待
  • v1.0.0 (2026-04-14): 初始版本

レビュー

まだレビューはありません。使ってみた感想をお寄せください。

同じリポジトリのスキル

概要と使いどころ

监控 A 股基金实时估值与盘后净值,自动判断交易日并生成提醒或分析。

日本語の概要は準備中です。原文の説明を表示しています。

aAAaqwq/openclaw-team22026年6月18日 更新

You are an accessibility expert specializing in WCAG compliance, inclusive design, and assistive technology compatibility. Conduct audits, identify barriers, and provide remediation guidance.

日本語の概要は準備中です。原文の説明を表示しています。

aAAaqwq/openclaw-team22026年6月18日 更新

Expert sales execution covering pipeline management, discovery, demos, negotiation, and deal closing. Use when qualifying opportunities, running MEDDIC discovery, building account plans, handling objections, structuring proposals, or forecasting pipeline.

日本語の概要は準備中です。原文の説明を表示しています。

aAAaqwq/openclaw-team22026年6月18日 更新

Support accounting understanding from basic bookkeeping to professional practice and research.

日本語の概要は準備中です。原文の説明を表示しています。

aAAaqwq/openclaw-team22026年6月18日 更新

Automate ActiveCampaign tasks via Rube MCP (Composio): manage contacts, tags, list subscriptions, automation enrollment, and tasks. Always search tools first for current schemas.

日本語の概要は準備中です。原文の説明を表示しています。

aAAaqwq/openclaw-team22026年6月18日 更新

add-lead

無料

Add company/person/relationship to CRM

日本語の概要は準備中です。原文の説明を表示しています。

aAAaqwq/openclaw-team22026年6月18日 更新

aAAaqwq のスキルをすべて見る

このスキルの問題を報告する