Skills stegstr
Decode and embed Stegstr payloads in PNG images. Use when the user needs to extract hidden Nostr data from a Stegstr image, encode a payload into a cover PNG, or work with steganographic social networking (Nostr-in-images). Supports CLI (stegstr-cli decode, detect, embed, post) for scripts and AI agents.
git clone https://github.com/openclaw/skills
T=$(mktemp -d) && git clone --depth=1 https://github.com/openclaw/skills "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/brunkstr/stegstr" ~/.claude/skills/openclaw-skills-stegstr && rm -rf "$T"
T=$(mktemp -d) && git clone --depth=1 https://github.com/openclaw/skills "$T" && mkdir -p ~/.openclaw/skills && cp -r "$T/skills/brunkstr/stegstr" ~/.openclaw/skills/openclaw-skills-stegstr && rm -rf "$T"
skills/brunkstr/stegstr/SKILL.mdStegstr
Stegstr hides Nostr messages and arbitrary payloads inside PNG images using steganography. Users embed their feed (posts, DMs, JSON) into images and share them; recipients use Detect to load the hidden content. No registration, works offline.
When to use this skill
- User wants to decode (extract) hidden data from a PNG that contains Stegstr data.
- User wants to embed a payload into a cover PNG (e.g. Nostr bundle, JSON, text).
- User mentions steganography, Nostr-in-images, Stegstr, hiding data in images, or secret messages in photos.
- User needs programmatic access for automation, scripts, or AI agents.
CLI (headless)
Build the CLI from the Stegstr repo:
git clone https://github.com/brunkstr/Stegstr.git cd Stegstr/src-tauri cargo build --release --bin stegstr-cli
Binary:
target/release/stegstr-cli (or stegstr-cli.exe on Windows).
Decode (extract payload)
stegstr-cli decode image.png
Writes raw payload to stdout. Valid UTF-8 JSON is printed as text; otherwise
base64:<data>. Exit 0 on success.
Detect (decode + decrypt app bundle)
stegstr-cli detect image.png
Decodes and decrypts; prints Nostr bundle JSON
{ "version": 1, "events": [...] }.
Embed (hide payload in image)
stegstr-cli embed cover.png -o out.png --payload "text or JSON" stegstr-cli embed cover.png -o out.png --payload @bundle.json stegstr-cli embed cover.png -o out.png --payload @bundle.json --encrypt
Use
--payload @file to load from file. Use --encrypt so any Stegstr user can detect. Use --payload-base64 <base64> for binary payloads.
Post (create kind 1 note bundle)
stegstr-cli post "Your message here" --output bundle.json stegstr-cli post "Message" --privkey-hex <64-char-hex> --output bundle.json
Creates a Nostr bundle; use
stegstr-cli embed to hide it in an image.
Example workflow
# Create a post bundle stegstr-cli post "Hello from OpenClaw" --output bundle.json # Embed into a cover image (encrypted for any Stegstr user) stegstr-cli embed cover.png -o stego.png --payload @bundle.json --encrypt # Recipient detects and extracts stegstr-cli detect stego.png
Image format
PNG only (lossless). JPEG or other lossy formats will corrupt the hidden data.
Payload format
- Magic:
(7 bytes ASCII)STEGSTR - Length: 4 bytes, big-endian
- Payload: UTF-8 JSON or raw bytes (desktop app encrypts; CLI can embed raw or
)--encrypt
Decrypted bundle:
{ "version": 1, "events": [ ... Nostr events ... ] }. Schema: bundle.schema.json.
Links
- agents.txt: https://www.stegstr.com/agents.txt
- For agents: https://www.stegstr.com/wiki/for-agents.html
- CLI docs: https://www.stegstr.com/wiki/cli.html
- Downloads: https://github.com/brunkstr/Stegstr/releases/latest