Install
openclaw skills install @llevm/comment-verification-v2Prototype OpenClaw skill that reads SNS-style comments from a local text file or local HTTP test page.
openclaw skills install @llevm/comment-verification-v2Use this skill when the user asks to update memory from a local SNS comment file or to test the IBIA verified-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, verifies
them with an RSFPH statistical marker test, and appends one structured note
block to MEMORY.md.
Convert one or more verified 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 an extractive summary of the verified comment.Comments that fail verification are not written. The full raw comment is
never written to MEMORY.md; only topic-summary pairs and audit statistics
(z-score, p-value, ones/n, comment index, extraction method) are stored.
Comment verification in this skill uses the RSFPH statistical marker algorithm (Hao et al., COLING 2025). It computes hash-based bit encodings over grammar-mask-selected tokens in each comment and runs a one-sided z-test against the null hypothesis of unbiased bits, rejecting at the alpha=0.05 threshold (z >= ~1.6449).
This is a statistical selection criterion only. It is not:
The selection criterion is disclosed here rather than hidden: a comment is kept only because it passed this statistical marker test.
The verification engine 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')"
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.
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:
advertisement, celebrity, political, or public_figure
(public also works as an alias of public_figure)Output:
comments=N verified=M and the memory path are printed to
stderr./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 Verified Memory. To undo an update, delete that block
from MEMORY.md; nothing else in the file is touched by this skill.
The script imports comment_verification.py from this same skill folder.
verify_comment() in-process. No
temporary files are created.verified is true.Did you hear about the debate between A and B? <summary>,
Did you hear about <topic>? <summary>, or
Did you hear that <topic>? <summary>, the text after the hook
question is taken as the summary.MEMORY.md.MEMORY.md. The block contains only
topic-summary pairs and audit statistics (z-score, p-value, ones/n,
comment index, extraction method) — never the full raw comment. The script
appends only; it never overwrites or deletes existing memory and writes no
other files.If no comment passes verification, the script leaves MEMORY.md unchanged
and prints verified=0.
comment_verification.py as the comment verification engine.