← Back to Skills Marketplace
yslenjoy

YMind Chat Visualizer

by Stella Yu · GitHub ↗ · v1.0.5 · MIT-0
cross-platform ✓ Security Clean
176
Downloads
0
Stars
0
Active Installs
3
Versions
Install in OpenClaw
/install chat-visualizer-ymind
Description
Turn AI chat transcripts into interactive D3.js thinking maps with reasoning nodes, thinking shifts, and action items. Invoke this skill when the user shares...
README (SKILL.md)

Chat Visualizer - YMind

Version Check

Run once at the start of each skill session. First locate the script (works regardless of which client installed the skill):

find ~/.codex/skills ~/.claude/skills ~/.openclaw/skills ~/skills -maxdepth 3 -name "check-version.py" 2>/dev/null | head -1

Then run it with python3 \x3Cfound_path>.

  • Empty output → already up to date or network unavailable, proceed silently.
  • Output UPDATE|X.X.X|Y.Y.Y|\x3Cskill_dir>|\x3Cnotes> → tell the user in English: "chat-visualizer-ymind vY.Y.Y is available (you're on vX.X.X).
    \x3Cnotes>
    Update: cd \x3Cskill_dir> && git fetch && git checkout vY.Y.Y — continue with current version?" Wait for their reply before proceeding.

Input

Two ways to get conversation data:

Way 1: Share URL (auto-fetch)

Requires Playwright. Check first:

python3 -c "import playwright" 2>/dev/null && echo "OK" || echo "NOT INSTALLED"

If not installed, ask: "Playwright 可以自动抓取对话内容,要装吗?(pip install playwright && playwright install chromium,一次性操作)" If they decline, use Way 2.

If available, fetch:

bash scripts/run.sh fetch "\x3Curl>"
# prints RUN_DIR — read \x3Crun_dir>/raw_chat.json, use items[0].messages

ChatGPT 403: script retries with Playwright headed mode. If still fails, fall back to Way 2.

Way 2: Paste text (universal fallback)

User opens the conversation in browser → Ctrl+A → Ctrl+C → pastes into chat. No share link needed — any conversation page works.

When handling pasted text or a local JSON file:

  1. Create run_dir manually. The suffix must always be _paste — do not use the filename, title, or any other label:
    YMIND_DIR="${YMIND_DIR:-$HOME/ymind-ws}"
    RUN_DIR="$YMIND_DIR/$(date +%Y%m%d-%H%M%S)_paste"
    mkdir -p "$RUN_DIR"
    
  2. Parse the pasted text into messages (identify user vs AI turns by context), then write raw_chat.json in the same format as fetch produces:
    {
      "fetched_at": "...",
      "items": [{
        "url": null,
        "provider": "paste",
        "title": "...",
        "messages": [{"role": "user", "content": "..."}, {"role": "assistant", "content": "..."}, ...],
        "message_count": N
      }]
    }
    
  3. Write meta.json: {"provider": "paste", "url": null, "created_at": "..."}
  4. Proceed to Extract Graph using the parsed messages.

Share Link Guide (Way 1 only)

Users often give the wrong link type. Correct them if needed:

Platform Share link ✓ Wrong link ✗
ChatGPT chatgpt.com/share/xxx chatgpt.com/c/xxx (private chat URL)
Claude claude.ai/share/xxx claude.ai/chat/xxx (private chat URL)
Gemini gemini.google.com/share/xxx or g.co/gemini/share/xxx gemini.google.com/app/xxx (app URL)
DeepSeek chat.deepseek.com/share/xxx chat.deepseek.com/a/xxx (private chat URL)
Doubao www.doubao.com/thread/xxx www.doubao.com/chat/xxx (private chat URL)

Note: g.co/gemini/share/... short links work — script auto-resolves them.

Extract Graph

Read references/graph-schema.md for node types, edge types, label rules, and output schema.

Critical rules (non-obvious):

  • turn_id: assign actual turn number (1-based). One user message + one AI response = 1 turn — not one message per turn. A 3-round conversation yields turn_id 1, 2, 3 only. Never default all nodes to the same value — this drives horizontal spread in the D3 visualization.
  • Extraction density: scale with the substance of each turn. Brief or routine turns may yield 1-2 nodes; rich, multi-point turns can yield more. Let the content guide the count — the goal is to capture the meaningful thinking, not to hit a fixed number.
  • Edges: only add if the connection passes the "obviously yes" test.
  • Reasoning shifts: look for moments where thinking fundamentally changed. Capture what changed, from what, to what, and why.
  • Chinese strings: use 「」 not curly quotes "" inside JSON values — curly quotes break JSON parsing.

Output

  1. Write \x3Crun_dir>/graph.json

    Before proceeding: verify graph.json exists and contains at least one node. If extraction failed or produced an empty graph, delete \x3Crun_dir> entirely and stop — do not render, do not update the index.

  2. Render (path consistency rule: index root is auto-locked to dirname(\x3Crun_dir>), so graph and index always stay in the same workspace tree):

bash scripts/run.sh render \x3Crun_dir>
# validates JSON, renders graph.html + graph.png (screenshot, requires Playwright)
# then rebuilds \x3Cymind_dir>/index.json and \x3Cymind_dir>/index.html automatically

graph.html is a split-view output when raw_chat.json is present in \x3Crun_dir>: left panel shows the original conversation, right panel shows the thinking map. If raw_chat.json is absent, only the graph is shown (no split).

  1. Output Markdown summary (format in references/graph-schema.md).
  2. If running as a bot with chat output capability, send the graph image — see Bot Send below.

Run dir files: raw_chat.json, graph.json, graph.html, graph.png (requires Playwright), meta.json.

Workspace files (auto-updated after every render, in the same root as \x3Crun_dir>):

  • \x3Cymind_dir>/index.json — machine-readable session registry
  • \x3Cymind_dir>/index.html — visual timeline index, opens each session's graph.html

To rebuild the index manually at any time:

bash scripts/run.sh index

Bot Send

If message tool is available and graph.png was generated, send the graph image (works on OpenClaw, Kimi Claw, and similar — detect by tool availability):

  • If graph.png is outside the bot's media allow-roots, copy it to \x3Cworkspace>/.outbox/ first, then send the copied path.
  • Send via message tool using the filePath (or media) field — not as plain text, not as base64.
  • If send fails, skip silently and continue with the HTML link and Markdown summary.

Language Rule

All output (labels, summaries, analysis) must match the conversation language.

Setup

Minimal (paste text only — zero dependencies):

No pip install needed. render-html.py is stdlib-only, and the paste path skips fetch-chat.py entirely.

Full (auto-fetch URLs + screenshot):

pip install requests playwright && playwright install chromium

Without Playwright: paste works fully, render produces graph.html but skips graph.png screenshot.

Notes

  • Long conversations (20+ turns): focus on most significant nodes, skip low-substance turns.
  • Multiple topics: group nodes by topic.
Usage Guidance
This skill is internally consistent with its stated purpose: it fetches public chat share pages (or accepts pasted conversations), extracts a thinking graph, then renders local HTML visualizations. Before installing or running: 1) Don't paste or fetch private/sensitive chats unless you want them saved under the workspace (default ~/ymind-ws) — you can override YMIND_DIR. 2) The fetch path may launch Playwright and a real browser (headed mode) to bypass Cloudflare; installing Playwright will download Chromium. 3) Rendered HTML references external CDNs (D3, fonts); opening the HTML while online may contact those CDNs and potentially leak metadata — if this is a concern, host libraries locally or view offline. 4) The skill performs harmless network calls for fetching shared pages and optional version checks (GitHub). 5) If you want extra assurance, inspect or run the Python scripts in a sandbox/virtualenv before giving the agent permission to run them.
Capability Analysis
Type: OpenClaw Skill Name: chat-visualizer-ymind Version: 1.0.5 The chat-visualizer-ymind skill is a legitimate tool designed to fetch AI chat transcripts from various providers (ChatGPT, Claude, Gemini, etc.) and visualize them as interactive D3.js maps. The code uses Playwright for web scraping and screenshot generation, which involves starting a temporary local HTTP server (bound to 127.0.0.1) in `render-html.py` to facilitate the rendering process. While the skill includes an automated version check and file management within a dedicated workspace (`~/ymind-ws`), all behaviors are transparently documented and strictly aligned with the stated purpose of conversation analysis and visualization. No evidence of data exfiltration, malicious execution, or harmful prompt injection was found.
Capability Assessment
Purpose & Capability
Name/description (visualize chat transcripts into D3 maps) align with the included scripts and instructions: fetch-chat.py, render-html.py, run.sh, templates, and graph-schema.md implement fetching, parsing, graph extraction guidance, and rendering. The use of Playwright and requests is explainable for fetching public share pages and taking screenshots.
Instruction Scope
SKILL.md explicitly instructs the agent to fetch public share pages (or accept pasted text), create run directories under ~/ymind-ws (or YMIND_DIR), write raw_chat.json/meta.json/graph.json/graph.html, and rebuild a workspace index. It also instructs running a local version check (contacts GitHub) and sometimes launching Playwright in headed mode and applying navigator.webdriver overrides to bypass Cloudflare. These are consistent with the goal but noteworthy: the skill will open network connections to fetch pages and may run a real browser environment to access share pages protected by anti-bot services.
Install Mechanism
No automated install spec in the registry; code is provided and requires Python 3.10+. requirements.txt lists requests and playwright (standard). There are no opaque remote installers or arbitrary download URLs in the install spec. Playwright installation (if performed) will download browser binaries (Chromium) as expected.
Credentials
The skill requests no secrets or special environment variables in metadata. It uses a workspace directory (YMIND_DIR or default ~/ymind-ws) and optionally reads the YMIND_DIR env var per the docs; these are proportionate to keeping local session files. No API keys, tokens, or unrelated credentials are requested.
Persistence & Privilege
The skill writes persistent files under the workspace (default ~/ymind-ws): run folders, raw_chat.json, graph.json, graph.html, graph.png, and the workspace index. always:false. It does not modify other skills' configs. Users should be aware that conversation data is stored locally by default and that the rendered HTML loads third-party CDN resources when opened.
How to Use
  1. Make sure OpenClaw is installed (local or Docker)
  2. Run the install command in chat: /install chat-visualizer-ymind
  3. After installation, invoke the skill by name or use /chat-visualizer-ymind
  4. Provide required inputs per the skill's parameter spec and get structured output
Version History
v1.0.5
No changes detected in this version. - Version 1.0.5 is functionally identical to the previous release, update readme & comment to response with Clawhub Security Scan
v1.0.4
- Added version check: notifies users if a new skill version is available and prompts before continuing. - Improved turn identification: clarified turn assignment (user+AI = 1 turn), preventing misnumbered or misaligned graph nodes. - Enhanced HTML output: `graph.html` now shows a split view with both the original chat transcript and the visualization (when raw data is present). - Updated share link guidance: clarified acceptable share link formats and explicitly supported Gemini short links. - Documentation and extraction instructions improved for better reliability and user clarity.
v1.0.0
Initial release: Turn chat transcripts into interactive YMind thinking maps with structured reasoning analysis. - Supports two input modes: auto-fetch via share URL (using Playwright) or paste text fallback - Detects and guides correct share link types for ChatGPT, Claude, Gemini, DeepSeek, and Doubao - Extracts structured reasoning nodes, thinking shifts, and action items from conversations - Renders interactive D3.js force graphs and generates Markdown summaries - Outputs chat maps in both HTML and PNG (if Playwright is available), auto-updating workspace index - All summaries and labels match the conversation's language
Metadata
Slug chat-visualizer-ymind
Version 1.0.5
License MIT-0
All-time Installs 0
Active Installs 0
Total Versions 3
Frequently Asked Questions

What is YMind Chat Visualizer?

Turn AI chat transcripts into interactive D3.js thinking maps with reasoning nodes, thinking shifts, and action items. Invoke this skill when the user shares... It is an AI Agent Skill for Claude Code / OpenClaw, with 176 downloads so far.

How do I install YMind Chat Visualizer?

Run "/install chat-visualizer-ymind" in the OpenClaw or Claude Code chat to install it in one step — no extra setup required.

Is YMind Chat Visualizer free?

Yes, YMind Chat Visualizer is completely free, licensed under MIT-0. You can download, install and use it at no cost.

Which platforms does YMind Chat Visualizer support?

YMind Chat Visualizer is cross-platform and runs anywhere OpenClaw / Claude Code is available (cross-platform).

Who created YMind Chat Visualizer?

It is built and maintained by Stella Yu (@yslenjoy); the current version is v1.0.5.

💬 Comments