mcpField
M
Mind Elixir Plaintext Format

Mind Elixir Plaintext Format

github.com/ssshooter生産性3.2k73 回インストール1 週間前に更新
リポジトリ

Mind Elixir Plaintext Format について

Mind Elixir Plaintext Formatは、Mind Elixirのマインドマップ向けに、インデントで階層を表すテキスト形式とデータ変換方法を説明します。ノード参照、リンク、スタイル、要約に対応し、手動編集やAI生成、ストリーミングに使えます。

主な機能

  1. 01インデントによるノード階層の表現
  2. 02ノードへのカスタムID付与
  3. 03双方向リンクと一方向リンクの定義
  4. 04JSON風構文によるノードのスタイル設定
  5. 05要約ノードの作成
  6. 06テキストとMind Elixirデータの相互変換

活用シーン

  1. 01AI生成コンテンツをマインドマップに変換
  2. 02TXTやMarkdownファイルでマインドマップを保存
  3. 03Gitの差分やマージを使った共同編集

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/ssshooter/mind-elixir-core --skill mind-elixir-plaintext-format

インストール後、Claude Code で/mind-elixir-plaintext-formatを入力して読み込まれたか確認します。

詳細

Mind Elixir プレーンテキスト形式

このスキルでは、Mind Elixir のプレーンテキスト形式の仕様と、Mind Elixir の JSON データ構造との相互変換方法について説明します。プレーンテキスト形式は、人による編集、AI による生成、ストリーミングのシナリオに最適です。

1. 形式の概要

プレーンテキスト形式では、Markdown のリストに似たインデントベースの構文を使用します。各行はマインドマップのノードを表し、インデント(レベルごとに 2 つのスペース)で階層を定義します。

基本構造
- Root Node
  - Child Node 1
    - Child Node 1-1
    - Child Node 1-2
  - Child Node 2
    - Child Node 2-1

主なルール:

  • ルートノードは -(ダッシュとその後のスペース)で始まります
  • 各子ノードは親ノードに対して 2 つのスペース分インデントします
  • 各ノードの行は - に続くスペースとトピックのテキストで始まります

2. 高度な機能

2.1 ノード参照(ID)

[^id] 構文を使用して、相互参照用のカスタム ID をノードに割り当てます。

- Root
  - Node A [^id1]
  - Node B [^id2]

形式: トピックのテキストの末尾に [^customId] を記述します。

2.2 ノードリンク

> プレフィックスと矢印構文を使用して、ノード間の接続を作成します。

双方向リンク
- Root
  - Node A [^id1]
  - Node B [^id2]
  - > [^id1] (10,20) <-Link Label-> (-10,-20) [^id2]

形式: > [^sourceId] (delta1X,delta1Y) <-Label-> (delta2X,delta2Y) [^targetId]

  • (delta1X,delta1Y):開始ノードからの制御点のオフセットです。
  • (delta2X,delta2Y):終了ノードからの制御点のオフセットです。

ヒント

座標は省略可能です: プレーンテキストを手動で記述または生成する場合(AI による生成など)、(x,y) 座標を省略できます。Mind Elixir は描画時に、バランスの取れたデフォルトのオフセットを自動で計算します。ただし、データをプレーンテキストにエクスポートすると、UI で行った手動調整を保持するため、これらの座標が含まれます。

一方向リンク
- Root
  - Node A [^id1]
  - Node B [^id2]
  - > [^id1] >-Forward Link-> [^id2]

形式:

  • 順方向:> [^sourceId] >-Label-> [^targetId]
2.3 ノードのスタイル設定

JSON に似た構文を使用してインラインスタイルを適用します。

- Root
  - Styled Node {"color": "#e87a90"}
  - Another Node {"color": "#3298db", "background": "#ecf0f1"}

形式: トピックのテキストの末尾に {"property": "value", "property2": "value2"} を記述します。

一般的なプロパティ:

  • color:テキストの色(16 進数コード)
  • background:背景色(16 進数コード)
  • fontSize:フォントサイズ(文字列としての数値。例:"16")
2.4 サマリーノード

前にある兄弟ノードを視覚的にまとめるサマリーノードを作成します。

- Root
  - Node 1
  - Node 2
  - Node 3
  - } Summary of all above nodes

形式:

  • } Summary text - 前にあるすべての兄弟ノードをまとめます
  • }:N Summary text - 前にある N 個の兄弟ノードをまとめます(例:最後の 2 つのノードには }:2 を使用します)
- Root
  - Node 1
  - Node 2
  - Node 3
  - }:2 Summary of Node 2 and Node 3
2.5 完全な例
- Project Planning
  - Phase 1: Research [^phase1]
    - Market Analysis {"color": "#3298db"}
    - Competitor Study {"color": "#3298db"}
    - }:2 Research Summary
  - Phase 2: Development [^phase2]
    - Frontend {"color": "#2ecc71"}
    - Backend {"color": "#2ecc71"}
    - Testing {"color": "#f39c12"}
    - } Development Summary
  - Phase 3: Launch [^phase3]
    - Marketing
    - Deployment
  - > [^phase1] (50,0) >-Leads to-> (-50,0) [^phase2]
  - > [^phase2] >-Leads to-> [^phase3]

3. 変換 API

3.1 プレーンテキストから Mind Elixir データへの変換

Mind Elixir には、プレーンテキストを解析する組み込みコンバーターが用意されています。

import { plaintextToMindElixir } from 'mind-elixir/plaintextConverter'

const plaintext = `
- Root Node
  - Child 1
  - Child 2
`

const mindElixirData = plaintextToMindElixir(plaintext)
// Returns MindElixirData object ready for mind.init() or mind.refresh()
3.2 Mind Elixir データからプレーンテキストへの変換

既存のマインドマップをプレーンテキスト形式に戻すこともできます。これはデータのエクスポートや保存に便利です。

import { mindElixirToPlaintext } from 'mind-elixir/plaintextConverter'

const mindElixirData = mind.getAllData()
const plaintext = mindElixirToPlaintext(mindElixirData)
// Returns a string containing the mind map in plaintext format
3.3 統合例
import MindElixir from 'mind-elixir'
import { plaintextToMindElixir } from 'mind-elixir/plaintextConverter'

// 1. Parse plaintext
const plaintext = `
- My Mind Map
  - Topic 1
    - Subtopic 1.1
    - Subtopic 1.2
  - Topic 2
`

const data = plaintextToMindElixir(plaintext)

// 2. Initialize Mind Elixir
const mind = new MindElixir({
  el: '#map',
  direction: MindElixir.RIGHT,
})

mind.init(data)

4. 使用例

4.1 AI 生成のマインドマップ

プレーンテキスト形式は LLM による生成に最適です。

// Prompt example for AI
const prompt = `
Generate a mind map in plaintext format about "Web Development".
Use this format:
- Root Topic
  - Subtopic 1
    - Detail 1.1
  - Subtopic 2
`

// Then parse the AI response
const aiResponse = await callAI(prompt)
const data = plaintextToMindElixir(aiResponse)
mind.refresh(data)
4.2 ファイルベースのマインドマップ

マインドマップを .txt または .md ファイルとして保存します。

// Load from file
const response = await fetch('/mindmaps/project.txt')
const plaintext = await response.text()
const data = plaintextToMindElixir(plaintext)
mind.init(data)
4.3 共同編集

プレーンテキスト形式は、バージョン管理でのマージに適しています。

# Easy to diff and merge in Git
git diff mindmap.txt

5. エラー処理

解析処理は必ず try-catch ブロックで囲みます。

function safeParse(plaintext: string): MindElixirData | null {
  try {
    return plaintextToMindElixir(plaintext)
  } catch (error) {
    console.error('Parse error:', error)
    // Return fallback data
    return {
      nodeData: {
        id: 'root',
        topic: 'Parse Error',
        children: []
      }
    }
  }
}

6. ベストプラクティス

  1. 一貫したインデント: レベルごとに必ず 2 つのスペースを使用します
  2. 一意の ID: 参照を使用する場合、ドキュメント内で ID が一意になるようにします
  3. リンクの配置: リンクはどこにでも配置できますが、読みやすさのため、関連するノードの近くに配置します
  4. 検証: 特にユーザー入力の場合は、解析前にプレーンテキストを検証します
  5. ストリーミング: ストリーミングのシナリオでは、段階的に解析し、不完全なデータを適切に処理します

7. Format Specification Summary

FeatureSyntaxExample
Node- Topic- My Node
Node with ID- Topic [^id]- Node A [^id1]
Node with Style- Topic {"prop": "value"}- Node {"color": "#ff0000"}
Bidirectional Link> [^id1] (x,y) <-Label-> (x,y) [^id2]> [^a] (10,20) <-connects-> (-10,-20) [^b]
Forward Link> [^id1] (x,y) >-Label-> (x,y) [^id2]> [^a] (10,20) >-leads to-> (-10,-20) [^b]
Summary (all)} Summary text} Overview
Summary (N nodes)}:N Summary text}:3 Last three items

8. TypeScript Types

import type { MindElixirData, NodeObj } from 'mind-elixir'

// Converter functions
function plaintextToMindElixir(plaintext: string): MindElixirData
function mindElixirToPlaintext(data: MindElixirData): string

コメント