Umfangreiche Erweiterung der Skill-Bibliothek: Neue Skills für Humanisierung (Englisch/PT-BR), Design-Validierung, AI-SEO und Coolify-Deployment inkl. Regelwerke, Presets, Pattern-Referenzen, Testfälle und Automatisierungsskripte. Zusätzliche Skills für Revenue-Centric Design, Pier Cloud, OKF, Lebenslauf- und LinkedIn-Optimierung sowie zahlreiche Referenzdateien, Checklisten und YAML/JSON/Markdown-Templates. Einführung einer vollständigen OpenWiki-Dokumentation mit Architektur-, Domain- und Workflow-Beschreibungen, zentralem Index und automatisierten Updates. Modularer Aufbau, restriktive Lizenzen und umfassende Qualitäts- und Evaluationsmechanismen für alle neuen Inhalte.
4.1 KiB
4.1 KiB
Converting Sources to OKF
Guides for transforming existing knowledge into conformant OKF bundles.
From Notion Export
Notion exports as markdown with properties in YAML-like format.
Steps
- Export from Notion as Markdown & CSV
- Clean filenames — remove UUID suffixes (
Page Name abc123def.md→page-name.md) - Map properties to frontmatter:
| Notion Property | OKF Field |
|---|---|
| Type (select) | type (required) |
| Name | title |
| Tags (multi-select) | tags |
| Last Edited | timestamp |
| URL | resource |
- Convert links — Notion uses
[Page Name](Page%20Name%20abc123def.md). Convert to clean relative paths:[Page Name](./page-name.md) - Remove Notion artifacts — empty toggle blocks, breadcrumb headers, cover image references
- Add missing
typefield — if Notion had no "Type" property, ask the user what type to assign
Edge cases
- Notion databases: each row becomes a concept. Database title becomes the directory name.
- Nested pages: respect the hierarchy. Child pages go in subdirectories.
- Inline databases: flatten into a list in the parent concept's body.
- Notion formulas/rollups: drop them — they don't translate to static markdown.
From Obsidian Vault
Obsidian vaults are already close to OKF. Main differences: wikilinks and potentially missing type field.
Steps
-
Convert wikilinks to standard links:
[[Note Name]]→[Note Name](./note-name.md)[[Note Name|Display Text]]→[Display Text](./note-name.md)[[Note Name#Heading]]→[Note Name](./note-name.md#heading)
-
Ensure
typefield exists in every frontmatter block. Common mappings:
| Obsidian pattern | Suggested OKF type |
|---|---|
| Daily notes | Log |
| MOC / index note | Convert to index.md (reserved file) |
| Permanent notes | Reference |
| Literature notes | Reference |
| Project notes | Playbook or domain-specific |
-
Convert tags:
- Inline
#tag→ move to frontmattertags: [tag] - Nested
#parent/child→ flatten totags: [parent, child]or keep asparent/child
- Inline
-
Handle embeds:
![[Note]]— convert to a regular link or inline the content![[image.png]]— keep as standard markdown image
-
Remove Obsidian-specific syntax:
%%comments%%→ remove> [!callout]→ convert to blockquote or heading- Dataview queries → remove (dynamic, not portable)
What to keep as-is
- Standard markdown formatting (headings, lists, tables, code blocks)
- Existing YAML frontmatter (just add
typeif missing) - Standard markdown links (already OKF-compatible)
- Mermaid diagrams (standard markdown fenced blocks)
From CSV / Spreadsheet
Each row becomes one concept document.
Steps
- Identify column mapping:
| Column role | Maps to |
|---|---|
| Primary identifier / name | Filename (slugified) |
| Category / kind | type field |
| Short description | description field |
| Tags / labels | tags field |
| URL / link | resource field |
| Last modified date | timestamp field |
| All other columns | Body content (as table or sections) |
- Generate one
.mdper row:
---
type: {category_column}
title: {name_column}
description: {description_column}
tags: [{tag1}, {tag2}]
timestamp: {date_column}T00:00:00Z
---
# {name_column}
| Field | Value |
|-------|-------|
| Column3 | {value} |
| Column4 | {value} |
- Generate index.md from the full list:
# {Sheet Name}
- [{row1_name}](./{row1_slug}.md) - {row1_description}
- [{row2_name}](./{row2_slug}.md) - {row2_description}
- Generate log.md with creation entry:
# Update Log
## {today_iso8601}
- **Creation**: Generated {N} concepts from spreadsheet import.
Edge cases
- Empty cells: omit the field entirely (don't write empty strings)
- Multi-value cells (comma-separated): parse into YAML list for
tags - Very long text cells: put in body as a section, not in frontmatter
- Duplicate names: append a disambiguator (e.g.,
widget-v1.md,widget-v2.md)