freeplane-and-yaml 0.1.2__py3-none-any.whl → 0.1.4__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {freeplane_and_yaml-0.1.2.dist-info → freeplane_and_yaml-0.1.4.dist-info}/METADATA +85 -22
- freeplane_and_yaml-0.1.4.dist-info/RECORD +9 -0
- freeplane_and_yaml-0.1.2.dist-info/RECORD +0 -9
- {freeplane_and_yaml-0.1.2.dist-info → freeplane_and_yaml-0.1.4.dist-info}/LICENSE +0 -0
- {freeplane_and_yaml-0.1.2.dist-info → freeplane_and_yaml-0.1.4.dist-info}/WHEEL +0 -0
- {freeplane_and_yaml-0.1.2.dist-info → freeplane_and_yaml-0.1.4.dist-info}/entry_points.txt +0 -0
- {freeplane_and_yaml-0.1.2.dist-info → freeplane_and_yaml-0.1.4.dist-info}/top_level.txt +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: freeplane-and-yaml
|
3
|
-
Version: 0.1.
|
3
|
+
Version: 0.1.4
|
4
4
|
Summary: A tool to convert YAML files to Freeplane MM format
|
5
5
|
Home-page: https://github.com/romilly/freeplane-and-yaml
|
6
6
|
Author: Romilly Cocking
|
@@ -19,10 +19,11 @@ Requires-Dist: PyYAML
|
|
19
19
|
|
20
20
|
A Python tool that converts YAML files into Freeplane mind maps. This allows you to generate mind maps programmatically from structured YAML data.
|
21
21
|
|
22
|
-
The YAML file can be created using [Claude AI](https://claude.ai/chat/).
|
22
|
+
The YAML file can be created using [Claude AI](https://claude.ai/chat/).
|
23
|
+
A suitable prompt is given [below](https://github.com/romilly/freeplane-and-yaml?tab=readme-ov-file#converting-documents-to-yaml-using-claude-ai).
|
23
24
|
|
24
25
|
You can read about how it got written using AI on [medium](https://medium.com/@romillyc/build-your-own-mind-map-tools-with-ai-b193564f2464?sk=b353aa7d16d6412e4aae8f3eab0ec554).
|
25
|
-
That's a
|
26
|
+
That's a _friend link_ so you can read it even if you're not a subscriber.
|
26
27
|
|
27
28
|
## Installation
|
28
29
|
|
@@ -38,21 +39,83 @@ pip install freeplane-and-yaml
|
|
38
39
|
|
39
40
|
## Usage
|
40
41
|
|
41
|
-
Your YAML file should follow
|
42
|
-
|
43
|
-
```
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
42
|
+
Your YAML file should follow this [schema](https://raw.githubusercontent.com/romilly/freeplane-and-yaml/refs/heads/main/src/schema/mindmap-schema.json). It includes an example.
|
43
|
+
|
44
|
+
```json
|
45
|
+
{
|
46
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
47
|
+
"title": "Mind Map Schema",
|
48
|
+
"description": "Schema for Freeplane-compatible mind map YAML format",
|
49
|
+
|
50
|
+
"definitions": {
|
51
|
+
"node": {
|
52
|
+
"type": "object",
|
53
|
+
"required": ["title"],
|
54
|
+
"properties": {
|
55
|
+
"title": {
|
56
|
+
"type": "string",
|
57
|
+
"description": "The display text for the node"
|
58
|
+
},
|
59
|
+
"note": {
|
60
|
+
"type": "string",
|
61
|
+
"description": "Rich text note attached to the node"
|
62
|
+
},
|
63
|
+
"children": {
|
64
|
+
"type": "object",
|
65
|
+
"description": "Child nodes of this node",
|
66
|
+
"patternProperties": {
|
67
|
+
"^[a-zA-Z0-9_]+$": {
|
68
|
+
"$ref": "#/definitions/node"
|
69
|
+
}
|
70
|
+
},
|
71
|
+
"additionalProperties": false
|
72
|
+
}
|
73
|
+
},
|
74
|
+
"additionalProperties": false
|
75
|
+
}
|
76
|
+
},
|
77
|
+
|
78
|
+
"type": "object",
|
79
|
+
"required": ["root"],
|
80
|
+
"properties": {
|
81
|
+
"root": {
|
82
|
+
"allOf": [
|
83
|
+
{ "$ref": "#/definitions/node" },
|
84
|
+
{
|
85
|
+
"required": ["children"],
|
86
|
+
"description": "The root node must have at least one child"
|
87
|
+
}
|
88
|
+
]
|
89
|
+
}
|
90
|
+
},
|
91
|
+
"additionalProperties": false,
|
92
|
+
|
93
|
+
"examples": [
|
94
|
+
{
|
95
|
+
"root": {
|
96
|
+
"title": "Example Mind Map",
|
97
|
+
"note": "This is the root node",
|
98
|
+
"children": {
|
99
|
+
"topic1": {
|
100
|
+
"title": "First Topic",
|
101
|
+
"note": "Note for first topic",
|
102
|
+
"children": {
|
103
|
+
"subtopic1": {
|
104
|
+
"title": "Subtopic 1",
|
105
|
+
"note": "Note for subtopic"
|
106
|
+
}
|
107
|
+
}
|
108
|
+
},
|
109
|
+
"topic2": {
|
110
|
+
"title": "Second Topic",
|
111
|
+
"note": "Note for second topic"
|
112
|
+
}
|
113
|
+
}
|
114
|
+
}
|
115
|
+
}
|
116
|
+
]
|
117
|
+
}
|
118
|
+
|
56
119
|
```
|
57
120
|
|
58
121
|
### Converting YAML to Mind Map
|
@@ -65,22 +128,22 @@ To convert a YAML file to a Freeplane mind map:
|
|
65
128
|
convert data/marr.yaml temp
|
66
129
|
```
|
67
130
|
|
68
|
-
### YAML Schema
|
131
|
+
### YAML Schema requirements explained
|
69
132
|
|
70
|
-
The YAML must conform to these rules:
|
133
|
+
As the schema specifies, The YAML must conform to these rules:
|
71
134
|
- Must have a root node with a title and at least one child
|
72
135
|
- Each node requires a title
|
73
136
|
- Notes are optional
|
74
137
|
- Child node keys must be alphanumeric (including underscores)
|
75
138
|
- No additional properties are allowed beyond title, note, and children
|
76
139
|
|
77
|
-
For full schema details, see
|
140
|
+
For full schema details, see above.
|
78
141
|
|
79
142
|
### Converting Documents to YAML using Claude AI
|
80
143
|
|
81
144
|
You can use Claude Sonnet to automatically convert documents (PDFs, articles, specifications, etc.) into the required YAML format. Here's the workflow:
|
82
145
|
|
83
|
-
1. Share your document and the
|
146
|
+
1. Share your document and the schema (above) with Claude Sonnet.
|
84
147
|
2. Use this prompt:
|
85
148
|
```
|
86
149
|
I've uploaded a document and a schema file. I'd like you to summarise the document as a yaml file following the schema that I uploaded.
|
@@ -0,0 +1,9 @@
|
|
1
|
+
freeplane_and_yaml/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
2
|
+
freeplane_and_yaml/cli.py,sha256=qeUJXw2MqCf6Kv7c-K63-srGj339beL4JTrAXi5_-3c,1213
|
3
|
+
freeplane_and_yaml/convert.py,sha256=dyQLt2FlmCgsQOnutnp1DyLXzqk-guazL8TZwTH0vHI,3440
|
4
|
+
freeplane_and_yaml-0.1.4.dist-info/LICENSE,sha256=gCmvBRHqGZibjt4wyMG81SeYWMKuhoGFVQh_Kn1wZ98,1072
|
5
|
+
freeplane_and_yaml-0.1.4.dist-info/METADATA,sha256=BVBe-V68MU9x5nvP1OZQD5cZHcjZqXgOtpZrOG7_7l4,5656
|
6
|
+
freeplane_and_yaml-0.1.4.dist-info/WHEEL,sha256=tZoeGjtWxWRfdplE7E3d45VPlLNQnvbKiYnx7gwAy8A,92
|
7
|
+
freeplane_and_yaml-0.1.4.dist-info/entry_points.txt,sha256=kWuCk_RZlzcO9h7yk7uJ4dtJiccQxBocEuQPVt6qzxo,57
|
8
|
+
freeplane_and_yaml-0.1.4.dist-info/top_level.txt,sha256=UY6T4vy985r4DAfWpM1D_n6t0cEis5SxtfkPPd-xDhQ,19
|
9
|
+
freeplane_and_yaml-0.1.4.dist-info/RECORD,,
|
@@ -1,9 +0,0 @@
|
|
1
|
-
freeplane_and_yaml/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
2
|
-
freeplane_and_yaml/cli.py,sha256=qeUJXw2MqCf6Kv7c-K63-srGj339beL4JTrAXi5_-3c,1213
|
3
|
-
freeplane_and_yaml/convert.py,sha256=dyQLt2FlmCgsQOnutnp1DyLXzqk-guazL8TZwTH0vHI,3440
|
4
|
-
freeplane_and_yaml-0.1.2.dist-info/LICENSE,sha256=gCmvBRHqGZibjt4wyMG81SeYWMKuhoGFVQh_Kn1wZ98,1072
|
5
|
-
freeplane_and_yaml-0.1.2.dist-info/METADATA,sha256=kTtNNw4SJFhFIfUbpOrMunKQnElit7T7zq08zrzuUzI,4097
|
6
|
-
freeplane_and_yaml-0.1.2.dist-info/WHEEL,sha256=tZoeGjtWxWRfdplE7E3d45VPlLNQnvbKiYnx7gwAy8A,92
|
7
|
-
freeplane_and_yaml-0.1.2.dist-info/entry_points.txt,sha256=kWuCk_RZlzcO9h7yk7uJ4dtJiccQxBocEuQPVt6qzxo,57
|
8
|
-
freeplane_and_yaml-0.1.2.dist-info/top_level.txt,sha256=UY6T4vy985r4DAfWpM1D_n6t0cEis5SxtfkPPd-xDhQ,19
|
9
|
-
freeplane_and_yaml-0.1.2.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|