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.
Scanned 9/5/2026
Install to Claude Code
npx -y skills add dvcrn/openclaw-skills-marketplace --skill stegstr --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Stegstr?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/dvcrn-stegstr)More formats (shields.io, HTML) on the badges page.
---
name: stegstr
description: "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."
---
# 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:
```bash
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)
```bash
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)
```bash
stegstr-cli detect image.png
```
Decodes and decrypts; prints Nostr bundle JSON `{ "version": 1, "events": [...] }`.
### Embed (hide payload in image)
```bash
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)
```bash
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
```bash
# 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](https://raw.githubusercontent.com/brunkstr/Stegstr/main/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
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!