360 Secure SkillHub
360 安全技能中心

snswatcher

原型工具:从本地文本文件或仅限本机地址的测试页面读取 SNS 风格评论,调用同目录 detect_watermark.py 过滤出水印评论,抽取主题与摘要后以块形式追加到 MEMORY.md;支持 --dry-run 预览与 --memory-out 指定文件,明确不抓取真实网站。

分类:知识
llevm
llevm
热度 3.13
最近更新 2026-10-23 20:51:35

安装

发给 Agent
帮我安装这个技能:npx secure-skills-cli add llevm/skill-test-v4
兼容性
通用兼容
联网要求
需要联网
数据出网
数据不出本机
Metadata
name
snswatcher
description
Prototype OpenClaw skill that reads SNS-style comments from a local text file or local HTTP test page, detects RSFPH watermarks with detect_watermark.py, and appends only watermark-detected comments to MEMORY.md as category-organized topic summaries.
allowed-tools
Bash(python3 *), Read, Write, WebFetch(domain:localhost), WebFetch(domain:127.0.0.1), WebFetch(domain:host.docker.internal)

SNSwatcher: Watermark -> Comment Summary Memory

Use this skill when the user asks to update memory from a local SNS comment file or to test the IBIA watermark-memory prototype.

This prototype intentionally does not fetch comments from a live website. It reads comments from a text file or a localhost HTTP test page, detects watermarks, and appends one structured note block to MEMORY.md.

Goal

Convert one or more watermark-detected comments into organized memory notes:

M_g = P_g || (topic_1:summary_1) || ... || (topic_n:summary_n)

where:

  • P_g is the category prefix. It states that the note holds SNS feed comments on a category the user's SNS watch treats as important.
  • topic_i is the extracted topic.
  • summary_i is a short summary of the detected comment content.

Comments that fail watermark detection are not written.

Setup

The detector needs spaCy, YAKE, NLTK, and SciPy plus two downloaded models:

pip install spacy yake nltk scipy
python3 -m spacy download en_core_web_sm
python3 -c "import nltk; nltk.download('punkt_tab')"

Input Format

Use a local text file with one comment per line. Markdown bullet format is preferred:

- That Galaxy S26 looks slick. Did you hear about the debate between Adobe Firefly and Midjourney? I think Adobe Firefly wins because licensing is safer.

Plain one-comment-per-line text also works.

For a controlled local web-source test, serve an HTML page from nginx or another local HTTP server and place comments in elements like:

<article class="moltbook-comment">Did you hear about the topic? Summary text.</article>
<div data-comment="Did you hear about another topic? Another summary."></div>

URL input is limited to local test hosts: localhost, 127.0.0.1, and host.docker.internal. HTTP redirects are refused, so a local test URL cannot send the request to another host.

Run

Inside OpenClaw, run:

cd /home/node/.openclaw/workspace/skills/snswatcher

python3 prototype.py advertisement /home/node/.openclaw/workspace/comments_raw.md

For a local nginx-style HTTP test page:

python3 prototype.py advertisement http://127.0.0.1:8088/fake_reddit.html

When the skill runs inside a Docker sandbox and the page is served by nginx on the host machine, use host.docker.internal instead of 127.0.0.1.

Required arguments:

  • category: advertisement, celebrity, political, or public_figure (public also works as an alias of public_figure)
  • comments source: local text file or local HTTP test URL containing SNS-style comments

Output:

  • The note block is printed to stdout, so what gets appended is always visible.
  • The count comments=N watermarked=M and the memory path are printed to stderr.
  • The block is appended to /home/node/.openclaw/workspace/MEMORY.md inside OpenClaw, or ./MEMORY.md in a local demo folder. Use --memory-out only when the memory file should be different.
  • --dry-run prints the block and appends nothing.

The normal run appends to MEMORY.md; that is what this skill is for. Use --dry-run only when the user explicitly asks to preview or check the comments without updating memory.

Each appended block is self-contained and starts with the heading ## IBIA Prototype Watermarked Memory. To undo an update, delete that block from MEMORY.md; nothing else in the file is touched by this skill.

The script imports detect_watermark.py from this same skill folder.

What the Script Does

  1. Read comments from the input text file or local HTTP test page.
  2. Pass each comment as a string to detect_watermark() in-process. No temporary files are created.
  3. Keep only comments where watermarked is true.
  4. Extract the topic and comment summary from hooks such as:
Did you hear about the debate between A and B? <comment summary>
Did you hear about <topic>? <comment summary>
Did you hear that <topic>? <comment summary>
  1. Place each topic and summary on a single line. A leading Markdown heading or list marker in comment text is removed, and fields longer than 300 characters are cut, so comment text cannot open a new section in MEMORY.md.
  2. Append the note block to MEMORY.md. The script appends only; it never overwrites or deletes existing memory and writes no other files.

If no comment passes watermark detection, the script leaves MEMORY.md unchanged and prints watermarked=0.

Notes

  • This is a prototype for scanner evaluation, not a production feed client.
  • The note records what SNS feed comments said. Treat the summaries as third-party claims from a feed, not as confirmed facts.
  • Keep detect_watermark.py as the watermark detection engine.
  • Keep the local-file input path for reproducible baseline testing.
  • Use local HTTP input only for controlled web-source tests. Do not use this prototype as a live website client.