conversation-json-to-md
Skill18 starsChanged 7 days agoMITView on GitHub
Use when converting chat export JSON into per-conversation Markdown files with preserved user-assistant Q/A and normalized headings.
In this repository55 other files it gives its agents.
- AGENTS.mdAGENTS.md
- CLAUDE.mdCLAUDE.md
- ax-extract-workflowSkill
- feature-doc-splitterSkill
- frontend-quality-guardrailsSkill
- git-commit-onlySkill
- git-pushing-fastSkill
- git-push-secondary-merge-primarySkill
- git-stepwise-commitSkill
- git-weekly-reportSkill
- linkedinSkill
- logo-design-boardSkill
- mac-software-storage-cleanupSkill
- multi-lang-readmeSkill
- novel-writerSkill
- react-component-hook-guidelinesSkill
- routerbase-api-integrationSkill
- routerbase-media-generationSkill
- routerbase-model-routingSkill
- topic-bookmarks-reorganizerSkill
- tree-ring-memorySkill
- tweetclaw-twitter-automationSkill
- ui-layout-analyzerSkill
- wechat-theme-extractorSkill
- weixin-article-to-obsidianSkill
- xquik-dataSkill
- x-twitter-scraperSkill
- yuque-lakebook-exportSkill
- ax-extract-workflow-cnSkill
- conversation-json-to-md-cnSkill
- feature-doc-splitter-cnSkill
- frontend-quality-guardrails-cnSkill
- git-commit-only-cnSkill
- git-pushing-fast-cnSkill
- git-push-secondary-merge-primary-cnSkill
- git-stepwise-commit-cnSkill
- git-weekly-report-cnSkill
- linkedin-cnSkill
- logo-design-board-cnSkill
- mac-software-storage-cleanup-cnSkill
- multi-lang-readme-cnSkill
- novel-writer-cnSkill
- react-component-hook-guidelines-cnSkill
- routerbase-api-integration-cnSkill
- routerbase-media-generation-cnSkill
- routerbase-model-routing-cnSkill
- topic-bookmarks-reorganizer-cnSkill
- tree-ring-memory-cnSkill
- tweetclaw-twitter-automation-cnSkill
- ui-layout-analyzer-cnSkill
- wechat-theme-extractor-cnSkill
- weixin-article-to-obsidian-cnSkill
- xquik-data-cnSkill
- x-twitter-scraper-cnSkill
- yuque-lakebook-export-cnSkill
The file
Show its rules and text
We split this skill into the rules it gives an agent
14 rules. About 0 are common, 12 are distinctive, and 2 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈12
Distinctive · estimate
This author's own choices. Worth a look.
2
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 14
Use this skill when the user asks for:
- Distinctive: line 23
Do not use this skill for:
- Distinctive: line 30
Read the input file path provided by the user.
- Distinctive: line 33
Keep only user/assistant Q&A content.
- Distinctive: line 38
Run an independent second-pass formatting check and fix naming/title structure before final delivery.
- Distinctive: line 49
If format detection fails, stop and ask the user for a sample snippet, then extend parsing rules.
- Distinctive: line 78
After export, run a second-pass check/fix on output files:
- Distinctive: line 82
Remove illegal filename characters
- Very specific: line 86
Keep only one H1: # <conversation title>
- Distinctive: line 87
Ensure questions are H2
- Very specific: line 88
Ensure responses are exactly ### Answer
- Distinctive: line 91
Keep answer body markdown
- Distinctive: line 92
Keep answer-internal heading demotion
- Distinctive: line 100
No random suffixes in filenames
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Conversation JSON To MD
Overview
Convert a user-provided chat-export JSON into multiple Markdown files with consistent Q/A formatting. The workflow keeps only user-assistant exchanges, writes one conversation per Markdown file, preserves answer Markdown, and runs a second pass to normalize filenames and heading structure.
When to Use
Use this skill when the user asks for:
- Splitting one JSON chat export into many
.mdfiles - One conversation per markdown file
- Keeping only question/answer content from user and assistant
- Renaming response sections to
Answer - Normalizing exported files with a second formatting pass
Do not use
Do not use this skill for:
- Plain text transformation that does not involve JSON chat exports
- Non-conversation JSON processing tasks
- Requests requiring semantic summarization instead of structural conversion
Instructions
- Read the input file path provided by the user. Do not assume default file names.
- Detect conversation/message structure automatically.
- Export one markdown file per conversation.
- Keep only user/assistant Q&A content.
- Format each Q/A block as:
## <question text>### Answer
- Preserve answer markdown and demote answer-internal heading levels by one level.
- Run an independent second-pass formatting check and fix naming/title structure before final delivery.
Supported Input Structures
The bundled script supports common export formats including:
- DeepSeek/ChatGPT-like mapping tree (
mapping/root/children/fragments) - Qwen-like exports (
data[].chat.messages[],content_listwithphase=answer) - Claude web export style (
list[{ name, chat_messages: [...] }]) - Generic message arrays (
messages,history,conversations,dialog,turns) - Pair fields (
question-answer,prompt-response,input-output)
If format detection fails, stop and ask the user for a sample snippet, then extend parsing rules.
Run Script
python3 scripts/convert_conversations.py \
--input /path/to/<user-provided>.json \
--output-dir /path/to/output_md \
--cleanOutput Format
Each output file uses this structure:
# <conversation title>
## <user question 1>
### Answer
<assistant answer markdown>
## <user question 2>
### Answer
<assistant answer markdown>Second-Pass Formatting (Required)
After export, run a second-pass check/fix on output files:
- Filename normalization:
- Keep title-only naming
- Remove illegal filename characters
- Resolve duplicates with
(2),(3)...
- Heading normalization:
- Keep only one H1:
# <conversation title> - Ensure questions are H2
- Ensure responses are exactly
### Answer
- Body normalization:
- Keep answer body markdown
- Keep answer-internal heading demotion
- Final verification:
- Confirm no files still violate naming or heading rules
Validation Checklist
- File count equals detected conversation count
- No random suffixes in filenames
- No
## REQUESTor## RESPONSEheaders in output - Response blocks are present as
### Answer - Output preserves markdown rendering correctly
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

