Token导航 LogoToken导航TokenDH.com
开发执行命令clawhub未标认证来源可访问clear审计提醒

fox-veille福克斯维耶

Agent Skill

fox-veille 用于补充开发相关能力,适合在 OpenClaw 中需要让 Agent 承接开发相关任务时使用。可结合来源仓库、安装命令和原始 README 继续核验具体用法。安装前建议确认权限范围、维护状态,以及是否会触发联网、命令执行或文件读写。

总安装

2,868

周安装

116

GitHub Stars

公开资料未说明

下载量

714
OpenClaw

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

GitHub

来源数

2

许可证

MIT-0

最后核验

2026-05-01

来源状态

来源可访问

安装方式

通过对话安装

复制提示词发给支持本地命令或 Skills 的 AI 助手,先确认命令和权限,再让它执行。

请帮我安装这个 Agent Skill:fox-veille(福克斯维耶)
来源仓库:https://github.com/qinthqod/fox-veille
安装命令:
openclaw skills install fox-veille
安装前请先检查当前环境是否支持对应 CLI,并向我确认将要执行的命令、安装目录、联网范围和文件读写权限;确认后再执行。

命令行安装

复制命令到本机终端执行。该命令会通过 OpenClaw 从第三方来源获取 Skill;本站只展示命令,不托管安装包,也不自动执行。

ClawHubOpenClaw
openclaw skills install fox-veille

简介

fox-veille 聚合 RSS 资讯并过滤重复内容,调度高质量输出。

  • 适用于跟踪行业动态、技术趋势或竞品更新的信息监测场景。
  • 内置 LLM 评分机制,优先推送相关性强的文章摘要。
  • 需配置可信源列表并设置去重阈值以保证信息质量。fox-veille 属于开发类 Skill,可作为该场景下的辅助能力补充。
  • 建议定期检查订阅源有效性以防链接失效或内容过时。

SKILL.md

name
fox-veille
description
RSS feed aggregator, deduplication engine, LLM scoring, and output dispatcher for OpenClaw agents. Use when: fetching recent articles from configured sources, filtering already-seen URLs, deduplicating by topic, scoring with LLM, dispatching digests to Telegram/email/Nextcloud/file. Enhanced by mail-client (email output) and nextcloud-files (cloud storage).
homepage
https://github.com/Rwx-G/openclaw-skill-veille
compatibility
Python 3.9+ - no external dependencies (stdlib only) - network access to RSS feeds
metadata
ontology
reads
[rss_feeds]
writes
[local_data_files]
enhancedBy
[mail-client, nextcloud-files]

Skill Veille - RSS Aggregator

RSS feed aggregator with URL deduplication and topic-based deduplication for OpenClaw agents. Fetches articles from 20+ configured sources, filters already-seen URLs (TTL 14 days), and deduplicates articles covering the same story using Jaccard similarity + named entities.

No external dependencies: stdlib Python only (urllib, xml.etree, email.utils).


Trigger phrases

  • "fais une veille"
  • "quoi de neuf en securite / tech / crypto / IA ?"
  • "donne-moi les news du jour"
  • "articles recents sur [sujet]"
  • "veille RSS"
  • "digest du matin"
  • "nouvelles non vues"

Quick Start

# 1. Setup
python3 scripts/setup.py

# 2. Validate
python3 scripts/init.py

# 3. Fetch + Score + Send (full pipeline)
python3 scripts/veille.py fetch --filter-seen --filter-topic \
  | python3 scripts/veille.py score \
  | python3 scripts/veille.py send

Setup

Requirements

  • Python 3.9+
  • Network access to RSS feeds (public, no auth required)
  • No pip installs needed

Installation

# From the skill directory
python3 scripts/setup.py

# Validate
python3 scripts/init.py

The wizard creates:

  • ~/.openclaw/config/veille/config.json (from config.example.json)
  • ~/.openclaw/data/veille/ (data directory)

Customizing sources

Edit ~/.openclaw/config/veille/config.json and add/remove entries in the "sources" dict:

{
  "sources": {
    "My Blog": "https://example.com/feed.xml",
    "BleepingComputer": "https://www.bleepingcomputer.com/feed/"
  }
}

Storage and credentials

Files written by this skill

PathWritten byPurposeContains secrets
~/.openclaw/config/veille/config.jsonsetup.pySources, outputs, optionsNO
~/.openclaw/data/veille/seen_urls.jsonveille.pyURL dedup store (TTL 14d)NO
~/.openclaw/data/veille/topic_seen.jsonveille.pyTopic dedup store (TTL 5d)NO

Files read from outside the skill

PathRead byKey accessedWhen
~/.openclaw/openclaw.jsondispatch.pychannels.telegram.botToken (read-only)Only when telegram_bot output is enabled and no bot_token is set in the output config

This is the only cross-config read. To avoid it entirely, set bot_token explicitly in your output config:

{ "type": "telegram_bot", "bot_token": "YOUR_BOT_TOKEN", "chat_id": "...", "enabled": true }

Output credentials (optional)

Credentials are only used if you enable the corresponding output. None are required for core functionality (RSS fetch + dedup).

OutputCredential sourceWhat is used
telegram_bot~/.openclaw/openclaw.json or bot_token in output configBot token (read-only)
mail-clientDelegated to mail-client skill (its own creds)Nothing read directly
mail-client (SMTP fallback)smtp_user / smtp_pass in output configSMTP login
nextcloudDelegated to nextcloud-files skill (its own creds)Nothing read directly

Cleanup on uninstall

python3 scripts/setup.py --cleanup

Security model

Credential isolation

  • API keys are read from dedicated files (default ~/.openclaw/secrets/), never from config.json. The scorer warns at runtime if a key file has overly permissive filesystem permissions.
  • SMTP credentials (fallback only) are stored in the output config block — use the mail-client skill delegation to avoid storing SMTP passwords.

Subprocess boundaries

  • Dispatch delegates to other OpenClaw skills via subprocess.run() (never shell=True). Script paths are validated to reside under ~/.openclaw/workspace/skills/ before execution, preventing path traversal.
  • No credentials are passed as subprocess arguments — each skill manages its own authentication.

File output safety

  • The file output type validates the target path before writing: only ~/.openclaw/ is allowed by default. Additional directories can be whitelisted via config.security.allowed_output_dirs. Sensitive paths (.ssh, .gnupg, /etc/, .bashrc, etc.) are always blocked regardless of allowlist.
  • Written content is checked for suspicious patterns (shell shebangs, SSH keys, PGP blocks, code injection) and size-limited to 1 MB.

Cross-config reads

  • The only cross-config file read is ~/.openclaw/openclaw.json for the Telegram bot token, and only when telegram_bot output is enabled without an explicit bot_token. This read is logged to stderr. Set bot_token in the output config to eliminate this read entirely.

Autonomous dispatch

  • When scheduled (cron), the skill can send messages/files to configured outputs without user interaction. All dispatch actions are logged to stderr with an audit summary. Use enabled: false on any output to disable it without removing its config.

CLI reference

fetch

python3 veille.py fetch [--hours N] [--filter-seen] [--filter-topic] [--sources FILE]

Options:

  • --hours N : lookback window in hours (default: from config, usually 24)
  • --filter-seen : filter already-seen URLs (uses seen_urls.json TTL store)
  • --filter-topic : deduplicate by topic (uses topic_seen.json + Jaccard similarity)
  • --sources FILE : path to custom JSON sources file

Output (JSON on stdout):

{
  "hours": 24,
  "count": 42,
  "skipped_url": 5,
  "skipped_topic": 3,
  "articles": [...],
  "wrapped_listing": "=== UNTRUSTED EXTERNAL CONTENT ..."
}

seen-stats

python3 veille.py seen-stats

Shows URL seen store statistics (count, TTL, file path).

topic-stats

python3 veille.py topic-stats

Shows topic deduplication store statistics.

mark-seen

python3 veille.py mark-seen URL [URL ...]

Marks one or more URLs as already seen (prevents them from appearing in future fetches with --filter-seen).

score

python3 veille.py score [--dry-run]

Reads a digest JSON from stdin (output of fetch) and scores articles using an OpenAI-compatible LLM. Returns enriched JSON with scored, ghost_picks, and per-article score/reason fields.

Options:

  • --dry-run : print summary on stderr without calling the LLM API

When llm.enabled is false (default), articles pass through unchanged ("scored": false).

Pipeline usage:

python3 veille.py fetch --filter-seen --filter-topic | python3 veille.py score | python3 veille.py send

send

python3 veille.py send [--profile NAME]

Reads a digest JSON from stdin and dispatches to all enabled outputs configured in config.json. Accepts both raw fetch output (articles key) and LLM-processed digests (categories key).

Output types: telegram_bot, mail-client, nextcloud, file.

  • telegram_bot: bot token auto-read from OpenClaw config - no extra setup if Telegram already configured.
  • mail-client: delegates to mail-client skill if installed, falls back to raw SMTP config.
  • nextcloud: delegates to nextcloud-files skill if installed (append mode by default with date separator).
  • file: writes digest to a local file. Path must be under ~/.openclaw/ (default) or a directory listed in config.security.allowed_output_dirs. Sensitive paths and suspicious content are blocked (see Security model).

Configure outputs interactively:

python3 scripts/setup.py --manage-outputs

config

python3 veille.py config

Prints the active configuration (no secrets).


LLM scoring configuration

The llm key in config.json controls the optional LLM-based article scoring:

{
  "llm": {
    "enabled": false,
    "base_url": "https://api.openai.com/v1",
    "api_key_file": "~/.openclaw/secrets/openai_api_key",
    "model": "gpt-4o-mini",
    "top_n": 10,
    "ghost_threshold": 5
  }
}
KeyDefaultDescription
enabledfalseEnable LLM scoring (requires API key)
base_urlhttps://api.openai.com/v1OpenAI-compatible API endpoint
api_key_file~/.openclaw/secrets/openai_api_keyPath to file containing the API key
modelgpt-4o-miniModel to use for scoring
top_n10Max articles to send to LLM per batch
ghost_threshold5Score threshold for ghost_picks (blog-worthy articles)

Scoring rules:

  • Only the first top_n articles are sent to the LLM. Articles beyond top_n

are excluded from the digest entirely. fetch returns articles sorted by date desc, so top_n selects the most recent ones. Increase top_n to evaluate more articles per run (higher token cost).

  • Score >= ghost_threshold : added to ghost_picks list
  • Score >= 3 : kept in articles list
  • Score <= 2 : excluded from output
  • Articles are sorted by score (descending)

When disabled, the score subcommand passes data through unchanged.

Nextcloud output mode

The nextcloud output now defaults to append mode with a date separator. Each dispatch adds content below a ## YYYY-MM-DD HH:MM header, preserving previous entries.

Set "mode": "overwrite" in the output config to restore the old behavior:

{ "type": "nextcloud", "path": "/Veille/digest.md", "mode": "overwrite" }

File output configuration

The file output writes digests to the local filesystem. By default, only paths under ~/.openclaw/ are allowed. To authorize additional directories, use config.security.allowed_output_dirs:

{
  "security": {
    "allowed_output_dirs": [
      "~/Documents/veille",
      "/srv/digests"
    ]
  }
}

Blocked paths (always rejected, even if inside an allowed directory): .ssh, .gnupg, .config/systemd, crontab, /etc/, .bashrc, .profile, .bash_profile, .zshrc, .env

Content validation — written content is rejected if it:

  • Exceeds 1 MB
  • Contains shell shebangs (#!/), SSH keys, PGP blocks, or code injection patterns (eval(, exec(, __import__(, import os, import subprocess)

All blocked attempts are logged to stderr with the reason.


Templates (agent usage)

Basic digest

# In agent tool call:
result = exec("python3 scripts/veille.py fetch --hours 24 --filter-seen --filter-topic")
data = json.loads(result.stdout)
# data["wrapped_listing"] is ready for LLM prompt injection
# data["count"] = number of new articles
# data["articles"] = list of article dicts

Prompt template

You are a news analyst. Here are today's articles:

{data["wrapped_listing"]}

Please summarize the 5 most important stories, focusing on security and tech.

Agent workflow example

1. Call veille fetch --filter-seen --filter-topic
2. Pipe through veille score (LLM scoring, if enabled)
3. If count > 0: pass wrapped_listing to LLM for analysis
4. LLM produces digest summary
5. Pipe through veille send (dispatches to configured outputs)

Pipeline (CLI)

python3 scripts/veille.py fetch --filter-seen --filter-topic \
  | python3 scripts/veille.py score \
  | python3 scripts/veille.py send

Filtering by keyword (post-fetch)

data = json.loads(fetch_output)
security_articles = [
    a for a in data["articles"]
    if any(kw in a["title"].lower() for kw in ["cve", "vuln", "patch", "breach"])
]

Ideas

  • Add keyword-based filtering (--keywords security,cve,linux)
  • Add per-source TTL override in config
  • Export digest as HTML or Markdown
  • Schedule with cron: 0 8 * * * python3 veille.py fetch --filter-seen --filter-topic
  • Weight articles by source tier for LLM prioritization
  • Add OPML import/export for source list management
  • Integrate with ntfy or Telegram for real-time alerts on high-priority articles

Combine with

  • mail-client : send the digest by email after fetching
  veille fetch --filter-seen | ... | mail-client send
  • nextcloud-files : archive the daily digest as a Markdown file
  veille fetch --filter-seen | jq .wrapped_listing -r > /tmp/digest.md
  nextcloud-files upload /tmp/digest.md /Digests/$(date +%Y-%m-%d).md

Troubleshooting

See references/troubleshooting.md for detailed troubleshooting steps.

Common issues:

  • No articles returned: check --hours value, verify feed URLs in config
  • XML parse error on a feed: some feeds use non-standard XML; the skill skips broken items silently
  • All articles filtered as seen: run seen-stats to check store size; reset with rm seen_urls.json
  • Import error: ensure you run veille.py from its directory or via full path
  • File output blocked: path is outside ~/.openclaw/ — add the target directory to config.security.allowed_output_dirs (see File output configuration)

适合场景

01

OpenClaw 用户查找和安装 Skill 时

02

用户想查找某类 Agent Skill 时

03

需要根据任务场景推荐可安装能力包时

04

需要对比不同来源的安装命令和来源信息时

能力概览

能力 1

按任务关键词查找相关 Skills

能力 2

展示可复制的安装命令

能力 3

保留来源站点、仓库和原始说明,方便继续核验

能力 4

补充不同宿主或平台的使用分布数据

能力 5

展示第三方安全扫描或审计结果

安装后应在对应宿主中按原始 README 的触发条件使用;具体调用方式请以来源页面和 README 为准。

平台分布

OpenClaw

95.97%
按下载量换算685

安全审计

VirusTotal

通过

ClawScan

通过

Static analysis

可疑

权限和风险

执行命令

安装流程涉及命令执行,可能通过 openclaw skills install fox-veille 联网下载 Skill 或依赖。用户安装前应确认命令来源、仓库内容和执行环境。

安装前确认

本站仅展示第三方公开信息,不托管安装包,不提供自动安装或运行环境。安装前应自行审查源码、依赖和命令行为。来源安全扫描存在 warning/failed 结果,不能写成本站确认安全。当前只有一个来源,正式发布前建议补源仓库或其他目录站核验。

来源信息

继续浏览同类 Skills