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.

install
source · Clone the upstream repo
git clone https://github.com/openclaw/skills
Claude Code · Install into ~/.claude/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"
OpenClaw · Install into ~/.openclaw/skills/
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"
manifest: skills/brunkstr/stegstr/SKILL.md
source content

Stegstr

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:
    STEGSTR
    (7 bytes ASCII)
  • 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