story-roleplay

Parse SillyTavern character cards and world info files from PNG, WebP, and JSON formats.

Updated Jul 10, 2026
One-click install
npx skills add https://github.com/Grong/openhub-client --skill story-roleplay-grong
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: story-roleplay
Source: https://github.com/Grong/openhub-client/tree/main/crates/backend/openhub-app/assets/builtin-skills/story-roleplay
Command: npx skills add https://github.com/Grong/openhub-client --skill story-roleplay-grong

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill requires png-chunks-extract, png-chunk-text, and includes scripts (resource) components.

What problem does it solve? Character cards and world info files exported from SillyTavern embed data as Base64-encoded JSON inside PNG or WebP image metadata, making them impossible to read or apply without a dedicated parser. This Skill extracts that data reliably and applies it to roleplay conversations with keyword-triggered world info injection. ## Core Features & Use Cases - Character Card Parsing: Extract name, personality, scenario, first message, and system prompt from PNG (chara/ccv3 chunks), WebP, or JSON files in Tavern Card V2/V3 format. - World Info with Keyword Triggers: Parse world info entries (naidata keyword) and inject content into conversations when matching keywords appear, sorted by priority. - Character Book Support: Handle character-specific knowledge bases embedded in cards, with priority handling relative to general world info. - Use Case: A user downloads a SillyTavern character card PNG and asks the AI to load it; the Skill runs the bundled Node.js parser, saves the result as character.json, and starts the roleplay using the card's first message and system prompt. ## Quick Start Load the character card from character.png and start the roleplay using its personality and opening message.

Frequently Asked Questions about story-roleplay

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I extract character card data from a PNG image?

Run the bundled Node.js parser with the image path and an output JSON path, for example: node parse-character-card.js character.png character.json. The script reads tEXt chunks, decodes the Base64 chara or ccv3 data, and writes validated JSON to the output file.

How do I parse SillyTavern world info files?

Pass the --world-info flag to the parser script so it looks for the naidata keyword in the PNG metadata instead of chara or ccv3. The extracted JSON contains an entries array with keys, content, priority, and enabled fields for keyword-triggered injection.

Does this support WebP character card images?

WebP parsing is not directly supported by the bundled script, which only handles PNG files. The recommended workflow is to convert the WebP image to PNG first, or ask for the card in JSON format exported from SillyTavern.

Why does PNG parsing fail with a metadata error?

The error occurs when the PNG contains no tEXt chunks or lacks the chara, ccv3, or naidata keywords, meaning it is not a valid SillyTavern export. Re-export the card from SillyTavern with embedded data or use the JSON format instead.

What character card formats are compatible?

The parser supports Tavern Card V2 (chara keyword) and V3 (ccv3 keyword) embedded in PNG, plus plain JSON files with fields like name, description, personality, scenario, first_mes, system_prompt, and character_book. V3 data takes precedence when both are present.