PlanOpticon

planopticon / guide / export / index.html
1
2
<!doctype html>
3
<html lang="en" class="no-js">
4
<head>
5
6
<meta charset="utf-8">
7
<meta name="viewport" content="width=device-width,initial-scale=1">
8
9
<meta name="description" content="AI-powered video analysis and knowledge extraction">
10
11
12
<meta name="author" content="CONFLICT LLC">
13
14
15
<link rel="canonical" href="https://planopticon.dev/guide/export/">
16
17
18
<link rel="prev" href="../authentication/">
19
20
21
<link rel="next" href="../output-formats/">
22
23
24
25
26
27
<link rel="icon" href="../../assets/images/favicon.png">
28
<meta name="generator" content="mkdocs-1.6.1, mkdocs-material-9.7.4">
29
30
31
32
<title>Export & Documents - PlanOpticon</title>
33
34
35
36
<link rel="stylesheet" href="../../assets/stylesheets/main.484c7ddc.min.css">
37
38
39
<link rel="stylesheet" href="../../assets/stylesheets/palette.ab4e12ef.min.css">
40
41
42
43
44
45
46
47
48
49
50
51
52
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
53
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&display=fallback">
54
<style>:root{--md-text-font:"Roboto";--md-code-font:"Roboto Mono"}</style>
55
56
57
58
<link rel="stylesheet" href="../../assets/_mkdocstrings.css">
59
60
<link rel="stylesheet" href="../../assets/css/custom.css">
61
62
<script>__md_scope=new URL("../..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script>
63
64
65
66
67
68
</head>
69
70
71
72
73
74
75
76
77
78
<body dir="ltr" data-md-color-scheme="slate" data-md-color-primary="custom" data-md-color-accent="custom">
79
80
81
<input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
82
<input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
83
<label class="md-overlay" for="__drawer"></label>
84
<div data-md-component="skip">
85
86
87
<a href="#export" class="md-skip">
88
Skip to content
89
</a>
90
91
</div>
92
<div data-md-component="announce">
93
94
</div>
95
96
97
98
99
<header class="md-header" data-md-component="header">
100
<nav class="md-header__inner md-grid" aria-label="Header">
101
<a href="../.." title="PlanOpticon" class="md-header__button md-logo" aria-label="PlanOpticon" data-md-component="logo">
102
103
<img src="../../assets/images/conflict-logo.svg" alt="logo">
104
105
</a>
106
<label class="md-header__button md-icon" for="__drawer">
107
108
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg>
109
</label>
110
<div class="md-header__title" data-md-component="header-title">
111
<div class="md-header__ellipsis">
112
<div class="md-header__topic">
113
<span class="md-ellipsis">
114
PlanOpticon
115
</span>
116
</div>
117
<div class="md-header__topic" data-md-component="header-topic">
118
<span class="md-ellipsis">
119
120
Export & Documents
121
122
</span>
123
</div>
124
</div>
125
</div>
126
127
128
<form class="md-header__option" data-md-component="palette">
129
130
131
132
133
<input class="md-option" data-md-color-media="(prefers-color-scheme: dark)" data-md-color-scheme="slate" data-md-color-primary="custom" data-md-color-accent="custom" aria-label="Switch to light mode" type="radio" name="__palette" id="__palette_0">
134
135
<label class="md-header__button md-icon" title="Switch to light mode" for="__palette_1" hidden>
136
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12s-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6a6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg>
137
</label>
138
139
140
141
142
143
<input class="md-option" data-md-color-media="(prefers-color-scheme: light)" data-md-color-scheme="default" data-md-color-primary="custom" data-md-color-accent="custom" aria-label="Switch to dark mode" type="radio" name="__palette" id="__palette_1">
144
145
<label class="md-header__button md-icon" title="Switch to dark mode" for="__palette_0" hidden>
146
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4m0 10a6 6 0 0 1-6-6 6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg>
147
</label>
148
149
150
</form>
151
152
153
154
<script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script>
155
156
157
158
159
160
<label class="md-header__button md-icon" for="__search">
161
162
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg>
163
</label>
164
<div class="md-search" data-md-component="search" role="dialog">
165
<label class="md-search__overlay" for="__search"></label>
166
<div class="md-search__inner" role="search">
167
<form class="md-search__form" name="search">
168
<input type="text" class="md-search__input" name="query" aria-label="Search" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="search-query" required>
169
<label class="md-search__icon md-icon" for="__search">
170
171
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg>
172
173
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg>
174
</label>
175
<nav class="md-search__options" aria-label="Search">
176
177
<button type="reset" class="md-search__icon md-icon" title="Clear" aria-label="Clear" tabindex="-1">
178
179
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/></svg>
180
</button>
181
</nav>
182
183
<div class="md-search__suggest" data-md-component="search-suggest"></div>
184
185
</form>
186
<div class="md-search__output">
187
<div class="md-search__scrollwrap" tabindex="0" data-md-scrollfix>
188
<div class="md-search-result" data-md-component="search-result">
189
<div class="md-search-result__meta">
190
Initializing search
191
</div>
192
<ol class="md-search-result__list" role="presentation"></ol>
193
</div>
194
</div>
195
</div>
196
</div>
197
</div>
198
199
200
201
<div class="md-header__source">
202
<a href="https://github.com/ConflictHQ/PlanOpticon" title="Go to repository" class="md-source" data-md-component="source">
203
<div class="md-source__icon md-icon">
204
205
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg>
206
</div>
207
<div class="md-source__repository">
208
ConflictHQ/PlanOpticon
209
</div>
210
</a>
211
</div>
212
213
</nav>
214
215
</header>
216
217
<div class="md-container" data-md-component="container">
218
219
220
221
222
223
<nav class="md-tabs" aria-label="Tabs" data-md-component="tabs">
224
<div class="md-grid">
225
<ul class="md-tabs__list">
226
227
228
229
230
231
232
<li class="md-tabs__item">
233
<a href="../.." class="md-tabs__link">
234
235
236
237
238
239
Home
240
241
</a>
242
</li>
243
244
245
246
247
248
249
250
251
252
253
<li class="md-tabs__item">
254
<a href="../../getting-started/installation/" class="md-tabs__link">
255
256
257
258
Getting Started
259
260
</a>
261
</li>
262
263
264
265
266
267
268
269
270
271
272
273
274
275
<li class="md-tabs__item md-tabs__item--active">
276
<a href="../single-video/" class="md-tabs__link">
277
278
279
280
User Guide
281
282
</a>
283
</li>
284
285
286
287
288
289
290
291
292
293
<li class="md-tabs__item">
294
<a href="../../use-cases/" class="md-tabs__link">
295
296
297
298
299
300
Use Cases
301
302
</a>
303
</li>
304
305
306
307
308
309
310
311
312
<li class="md-tabs__item">
313
<a href="../../cli-reference/" class="md-tabs__link">
314
315
316
317
318
319
CLI Reference
320
321
</a>
322
</li>
323
324
325
326
327
328
329
330
331
332
333
<li class="md-tabs__item">
334
<a href="../../architecture/overview/" class="md-tabs__link">
335
336
337
338
Architecture
339
340
</a>
341
</li>
342
343
344
345
346
347
348
349
350
351
352
353
<li class="md-tabs__item">
354
<a href="../../api/models/" class="md-tabs__link">
355
356
357
358
API Reference
359
360
</a>
361
</li>
362
363
364
365
366
367
368
369
370
371
<li class="md-tabs__item">
372
<a href="../../faq/" class="md-tabs__link">
373
374
375
376
377
378
FAQ & Troubleshooting
379
380
</a>
381
</li>
382
383
384
385
386
387
388
389
390
<li class="md-tabs__item">
391
<a href="../../contributing/" class="md-tabs__link">
392
393
394
395
396
397
Contributing
398
399
</a>
400
</li>
401
402
403
404
</ul>
405
</div>
406
</nav>
407
408
409
410
<main class="md-main" data-md-component="main">
411
<div class="md-main__inner md-grid">
412
413
414
415
<div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" >
416
<div class="md-sidebar__scrollwrap">
417
<div class="md-sidebar__inner">
418
419
420
421
422
423
424
<nav class="md-nav md-nav--primary md-nav--lifted" aria-label="Navigation" data-md-level="0">
425
<label class="md-nav__title" for="__drawer">
426
<a href="../.." title="PlanOpticon" class="md-nav__button md-logo" aria-label="PlanOpticon" data-md-component="logo">
427
428
<img src="../../assets/images/conflict-logo.svg" alt="logo">
429
430
</a>
431
PlanOpticon
432
</label>
433
434
<div class="md-nav__source">
435
<a href="https://github.com/ConflictHQ/PlanOpticon" title="Go to repository" class="md-source" data-md-component="source">
436
<div class="md-source__icon md-icon">
437
438
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg>
439
</div>
440
<div class="md-source__repository">
441
ConflictHQ/PlanOpticon
442
</div>
443
</a>
444
</div>
445
446
<ul class="md-nav__list" data-md-scrollfix>
447
448
449
450
451
452
453
454
<li class="md-nav__item">
455
<a href="../.." class="md-nav__link">
456
457
458
459
<span class="md-ellipsis">
460
461
462
Home
463
464
465
466
</span>
467
468
469
470
</a>
471
</li>
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
<li class="md-nav__item md-nav__item--nested">
492
493
494
495
496
497
<input class="md-nav__toggle md-toggle md-toggle--indeterminate" type="checkbox" id="__nav_2" >
498
499
500
<label class="md-nav__link" for="__nav_2" id="__nav_2_label" tabindex="0">
501
502
503
504
<span class="md-ellipsis">
505
506
507
Getting Started
508
509
510
511
</span>
512
513
514
515
<span class="md-nav__icon md-icon"></span>
516
</label>
517
518
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_2_label" aria-expanded="false">
519
<label class="md-nav__title" for="__nav_2">
520
<span class="md-nav__icon md-icon"></span>
521
522
523
Getting Started
524
525
526
</label>
527
<ul class="md-nav__list" data-md-scrollfix>
528
529
530
531
532
533
534
535
<li class="md-nav__item">
536
<a href="../../getting-started/installation/" class="md-nav__link">
537
538
539
540
<span class="md-ellipsis">
541
542
543
Installation
544
545
546
547
</span>
548
549
550
551
</a>
552
</li>
553
554
555
556
557
558
559
560
561
562
563
<li class="md-nav__item">
564
<a href="../../getting-started/quickstart/" class="md-nav__link">
565
566
567
568
<span class="md-ellipsis">
569
570
571
Quick Start
572
573
574
575
</span>
576
577
578
579
</a>
580
</li>
581
582
583
584
585
586
587
588
589
590
591
<li class="md-nav__item">
592
<a href="../../getting-started/configuration/" class="md-nav__link">
593
594
595
596
<span class="md-ellipsis">
597
598
599
Configuration
600
601
602
603
</span>
604
605
606
607
</a>
608
</li>
609
610
611
612
613
</ul>
614
</nav>
615
616
</li>
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
<li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested">
642
643
644
645
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3" checked>
646
647
648
<label class="md-nav__link" for="__nav_3" id="__nav_3_label" tabindex="">
649
650
651
652
<span class="md-ellipsis">
653
654
655
User Guide
656
657
658
659
</span>
660
661
662
663
<span class="md-nav__icon md-icon"></span>
664
</label>
665
666
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_3_label" aria-expanded="true">
667
<label class="md-nav__title" for="__nav_3">
668
<span class="md-nav__icon md-icon"></span>
669
670
671
User Guide
672
673
674
</label>
675
<ul class="md-nav__list" data-md-scrollfix>
676
677
678
679
680
681
682
683
<li class="md-nav__item">
684
<a href="../single-video/" class="md-nav__link">
685
686
687
688
<span class="md-ellipsis">
689
690
691
Single Video Analysis
692
693
694
695
</span>
696
697
698
699
</a>
700
</li>
701
702
703
704
705
706
707
708
709
710
711
<li class="md-nav__item">
712
<a href="../batch/" class="md-nav__link">
713
714
715
716
<span class="md-ellipsis">
717
718
719
Batch Processing
720
721
722
723
</span>
724
725
726
727
</a>
728
</li>
729
730
731
732
733
734
735
736
737
738
739
<li class="md-nav__item">
740
<a href="../document-ingestion/" class="md-nav__link">
741
742
743
744
<span class="md-ellipsis">
745
746
747
Document Ingestion
748
749
750
751
</span>
752
753
754
755
</a>
756
</li>
757
758
759
760
761
762
763
764
765
766
767
<li class="md-nav__item">
768
<a href="../cloud-sources/" class="md-nav__link">
769
770
771
772
<span class="md-ellipsis">
773
774
775
Cloud Sources
776
777
778
779
</span>
780
781
782
783
</a>
784
</li>
785
786
787
788
789
790
791
792
793
794
795
<li class="md-nav__item">
796
<a href="../knowledge-graphs/" class="md-nav__link">
797
798
799
800
<span class="md-ellipsis">
801
802
803
Knowledge Graphs
804
805
806
807
</span>
808
809
810
811
</a>
812
</li>
813
814
815
816
817
818
819
820
821
822
823
<li class="md-nav__item">
824
<a href="../companion/" class="md-nav__link">
825
826
827
828
<span class="md-ellipsis">
829
830
831
Interactive Companion
832
833
834
835
</span>
836
837
838
839
</a>
840
</li>
841
842
843
844
845
846
847
848
849
850
851
<li class="md-nav__item">
852
<a href="../planning-agent/" class="md-nav__link">
853
854
855
856
<span class="md-ellipsis">
857
858
859
Planning Agent
860
861
862
863
</span>
864
865
866
867
</a>
868
</li>
869
870
871
872
873
874
875
876
877
878
879
<li class="md-nav__item">
880
<a href="../authentication/" class="md-nav__link">
881
882
883
884
<span class="md-ellipsis">
885
886
887
Authentication
888
889
890
891
</span>
892
893
894
895
</a>
896
</li>
897
898
899
900
901
902
903
904
905
906
907
908
909
<li class="md-nav__item md-nav__item--active">
910
911
<input class="md-nav__toggle md-toggle" type="checkbox" id="__toc">
912
913
914
915
916
917
<label class="md-nav__link md-nav__link--active" for="__toc">
918
919
920
921
<span class="md-ellipsis">
922
923
924
Export & Documents
925
926
927
928
</span>
929
930
931
932
<span class="md-nav__icon md-icon"></span>
933
</label>
934
935
<a href="./" class="md-nav__link md-nav__link--active">
936
937
938
939
<span class="md-ellipsis">
940
941
942
Export & Documents
943
944
945
946
</span>
947
948
949
950
</a>
951
952
953
954
<nav class="md-nav md-nav--secondary" aria-label="Table of contents">
955
956
957
958
959
960
961
<label class="md-nav__title" for="__toc">
962
<span class="md-nav__icon md-icon"></span>
963
Table of contents
964
</label>
965
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
966
967
<li class="md-nav__item">
968
<a href="#overview-of-export-options" class="md-nav__link">
969
<span class="md-ellipsis">
970
971
Overview of export options
972
973
</span>
974
</a>
975
976
</li>
977
978
<li class="md-nav__item">
979
<a href="#markdown-document-generator" class="md-nav__link">
980
<span class="md-ellipsis">
981
982
Markdown document generator
983
984
</span>
985
</a>
986
987
<nav class="md-nav" aria-label="Markdown document generator">
988
<ul class="md-nav__list">
989
990
<li class="md-nav__item">
991
<a href="#cli-usage" class="md-nav__link">
992
<span class="md-ellipsis">
993
994
CLI usage
995
996
</span>
997
</a>
998
999
</li>
1000
1001
<li class="md-nav__item">
1002
<a href="#document-types" class="md-nav__link">
1003
<span class="md-ellipsis">
1004
1005
Document types
1006
1007
</span>
1008
</a>
1009
1010
<nav class="md-nav" aria-label="Document types">
1011
<ul class="md-nav__list">
1012
1013
<li class="md-nav__item">
1014
<a href="#summary-executive-summary" class="md-nav__link">
1015
<span class="md-ellipsis">
1016
1017
summary (Executive Summary)
1018
1019
</span>
1020
</a>
1021
1022
</li>
1023
1024
<li class="md-nav__item">
1025
<a href="#meeting-notes-meeting-notes" class="md-nav__link">
1026
<span class="md-ellipsis">
1027
1028
meeting-notes (Meeting Notes)
1029
1030
</span>
1031
</a>
1032
1033
</li>
1034
1035
<li class="md-nav__item">
1036
<a href="#glossary-glossary" class="md-nav__link">
1037
<span class="md-ellipsis">
1038
1039
glossary (Glossary)
1040
1041
</span>
1042
</a>
1043
1044
</li>
1045
1046
<li class="md-nav__item">
1047
<a href="#relationship-map-relationship-map" class="md-nav__link">
1048
<span class="md-ellipsis">
1049
1050
relationship-map (Relationship Map)
1051
1052
</span>
1053
</a>
1054
1055
</li>
1056
1057
<li class="md-nav__item">
1058
<a href="#status-report-status-report" class="md-nav__link">
1059
<span class="md-ellipsis">
1060
1061
status-report (Status Report)
1062
1063
</span>
1064
</a>
1065
1066
</li>
1067
1068
<li class="md-nav__item">
1069
<a href="#entity-index-entity-index" class="md-nav__link">
1070
<span class="md-ellipsis">
1071
1072
entity-index (Entity Index)
1073
1074
</span>
1075
</a>
1076
1077
</li>
1078
1079
<li class="md-nav__item">
1080
<a href="#csv-csv-export" class="md-nav__link">
1081
<span class="md-ellipsis">
1082
1083
csv (CSV Export)
1084
1085
</span>
1086
</a>
1087
1088
</li>
1089
1090
</ul>
1091
</nav>
1092
1093
</li>
1094
1095
<li class="md-nav__item">
1096
<a href="#entity-briefs" class="md-nav__link">
1097
<span class="md-ellipsis">
1098
1099
Entity briefs
1100
1101
</span>
1102
</a>
1103
1104
</li>
1105
1106
</ul>
1107
</nav>
1108
1109
</li>
1110
1111
<li class="md-nav__item">
1112
<a href="#obsidian-vault-export" class="md-nav__link">
1113
<span class="md-ellipsis">
1114
1115
Obsidian vault export
1116
1117
</span>
1118
</a>
1119
1120
<nav class="md-nav" aria-label="Obsidian vault export">
1121
<ul class="md-nav__list">
1122
1123
<li class="md-nav__item">
1124
<a href="#cli-usage_1" class="md-nav__link">
1125
<span class="md-ellipsis">
1126
1127
CLI usage
1128
1129
</span>
1130
</a>
1131
1132
</li>
1133
1134
<li class="md-nav__item">
1135
<a href="#generated-structure" class="md-nav__link">
1136
<span class="md-ellipsis">
1137
1138
Generated structure
1139
1140
</span>
1141
</a>
1142
1143
</li>
1144
1145
<li class="md-nav__item">
1146
<a href="#entity-notes" class="md-nav__link">
1147
<span class="md-ellipsis">
1148
1149
Entity notes
1150
1151
</span>
1152
</a>
1153
1154
</li>
1155
1156
<li class="md-nav__item">
1157
<a href="#index-note-map-of-content" class="md-nav__link">
1158
<span class="md-ellipsis">
1159
1160
Index note (Map of Content)
1161
1162
</span>
1163
</a>
1164
1165
</li>
1166
1167
<li class="md-nav__item">
1168
<a href="#tag-pages" class="md-nav__link">
1169
<span class="md-ellipsis">
1170
1171
Tag pages
1172
1173
</span>
1174
</a>
1175
1176
</li>
1177
1178
</ul>
1179
</nav>
1180
1181
</li>
1182
1183
<li class="md-nav__item">
1184
<a href="#notion-compatible-markdown-export" class="md-nav__link">
1185
<span class="md-ellipsis">
1186
1187
Notion-compatible markdown export
1188
1189
</span>
1190
</a>
1191
1192
<nav class="md-nav" aria-label="Notion-compatible markdown export">
1193
<ul class="md-nav__list">
1194
1195
<li class="md-nav__item">
1196
<a href="#cli-usage_2" class="md-nav__link">
1197
<span class="md-ellipsis">
1198
1199
CLI usage
1200
1201
</span>
1202
</a>
1203
1204
</li>
1205
1206
<li class="md-nav__item">
1207
<a href="#generated-structure_1" class="md-nav__link">
1208
<span class="md-ellipsis">
1209
1210
Generated structure
1211
1212
</span>
1213
</a>
1214
1215
</li>
1216
1217
<li class="md-nav__item">
1218
<a href="#entity-pages" class="md-nav__link">
1219
<span class="md-ellipsis">
1220
1221
Entity pages
1222
1223
</span>
1224
</a>
1225
1226
</li>
1227
1228
<li class="md-nav__item">
1229
<a href="#csv-database" class="md-nav__link">
1230
<span class="md-ellipsis">
1231
1232
CSV database
1233
1234
</span>
1235
</a>
1236
1237
</li>
1238
1239
<li class="md-nav__item">
1240
<a href="#overview-page" class="md-nav__link">
1241
<span class="md-ellipsis">
1242
1243
Overview page
1244
1245
</span>
1246
</a>
1247
1248
</li>
1249
1250
</ul>
1251
</nav>
1252
1253
</li>
1254
1255
<li class="md-nav__item">
1256
<a href="#github-wiki-generator" class="md-nav__link">
1257
<span class="md-ellipsis">
1258
1259
GitHub wiki generator
1260
1261
</span>
1262
</a>
1263
1264
<nav class="md-nav" aria-label="GitHub wiki generator">
1265
<ul class="md-nav__list">
1266
1267
<li class="md-nav__item">
1268
<a href="#cli-usage_3" class="md-nav__link">
1269
<span class="md-ellipsis">
1270
1271
CLI usage
1272
1273
</span>
1274
</a>
1275
1276
</li>
1277
1278
<li class="md-nav__item">
1279
<a href="#generated-pages" class="md-nav__link">
1280
<span class="md-ellipsis">
1281
1282
Generated pages
1283
1284
</span>
1285
</a>
1286
1287
</li>
1288
1289
<li class="md-nav__item">
1290
<a href="#entity-pages_1" class="md-nav__link">
1291
<span class="md-ellipsis">
1292
1293
Entity pages
1294
1295
</span>
1296
</a>
1297
1298
</li>
1299
1300
<li class="md-nav__item">
1301
<a href="#push-behavior" class="md-nav__link">
1302
<span class="md-ellipsis">
1303
1304
Push behavior
1305
1306
</span>
1307
</a>
1308
1309
</li>
1310
1311
</ul>
1312
</nav>
1313
1314
</li>
1315
1316
<li class="md-nav__item">
1317
<a href="#planopticonexchange-json-format" class="md-nav__link">
1318
<span class="md-ellipsis">
1319
1320
PlanOpticonExchange JSON format
1321
1322
</span>
1323
</a>
1324
1325
<nav class="md-nav" aria-label="PlanOpticonExchange JSON format">
1326
<ul class="md-nav__list">
1327
1328
<li class="md-nav__item">
1329
<a href="#cli-usage_4" class="md-nav__link">
1330
<span class="md-ellipsis">
1331
1332
CLI usage
1333
1334
</span>
1335
</a>
1336
1337
</li>
1338
1339
<li class="md-nav__item">
1340
<a href="#schema" class="md-nav__link">
1341
<span class="md-ellipsis">
1342
1343
Schema
1344
1345
</span>
1346
</a>
1347
1348
</li>
1349
1350
<li class="md-nav__item">
1351
<a href="#merging-exchange-files" class="md-nav__link">
1352
<span class="md-ellipsis">
1353
1354
Merging exchange files
1355
1356
</span>
1357
</a>
1358
1359
</li>
1360
1361
<li class="md-nav__item">
1362
<a href="#python-api" class="md-nav__link">
1363
<span class="md-ellipsis">
1364
1365
Python API
1366
1367
</span>
1368
</a>
1369
1370
</li>
1371
1372
</ul>
1373
</nav>
1374
1375
</li>
1376
1377
<li class="md-nav__item">
1378
<a href="#python-api-for-all-exporters" class="md-nav__link">
1379
<span class="md-ellipsis">
1380
1381
Python API for all exporters
1382
1383
</span>
1384
</a>
1385
1386
<nav class="md-nav" aria-label="Python API for all exporters">
1387
<ul class="md-nav__list">
1388
1389
<li class="md-nav__item">
1390
<a href="#markdown-document-generation" class="md-nav__link">
1391
<span class="md-ellipsis">
1392
1393
Markdown document generation
1394
1395
</span>
1396
</a>
1397
1398
</li>
1399
1400
<li class="md-nav__item">
1401
<a href="#obsidian-export" class="md-nav__link">
1402
<span class="md-ellipsis">
1403
1404
Obsidian export
1405
1406
</span>
1407
</a>
1408
1409
</li>
1410
1411
<li class="md-nav__item">
1412
<a href="#notion-export" class="md-nav__link">
1413
<span class="md-ellipsis">
1414
1415
Notion export
1416
1417
</span>
1418
</a>
1419
1420
</li>
1421
1422
<li class="md-nav__item">
1423
<a href="#wiki-generation" class="md-nav__link">
1424
<span class="md-ellipsis">
1425
1426
Wiki generation
1427
1428
</span>
1429
</a>
1430
1431
</li>
1432
1433
</ul>
1434
</nav>
1435
1436
</li>
1437
1438
<li class="md-nav__item">
1439
<a href="#companion-repl" class="md-nav__link">
1440
<span class="md-ellipsis">
1441
1442
Companion REPL
1443
1444
</span>
1445
</a>
1446
1447
</li>
1448
1449
<li class="md-nav__item">
1450
<a href="#common-workflows" class="md-nav__link">
1451
<span class="md-ellipsis">
1452
1453
Common workflows
1454
1455
</span>
1456
</a>
1457
1458
<nav class="md-nav" aria-label="Common workflows">
1459
<ul class="md-nav__list">
1460
1461
<li class="md-nav__item">
1462
<a href="#analyze-videos-and-export-to-obsidian" class="md-nav__link">
1463
<span class="md-ellipsis">
1464
1465
Analyze videos and export to Obsidian
1466
1467
</span>
1468
</a>
1469
1470
</li>
1471
1472
<li class="md-nav__item">
1473
<a href="#generate-project-documentation" class="md-nav__link">
1474
<span class="md-ellipsis">
1475
1476
Generate project documentation
1477
1478
</span>
1479
</a>
1480
1481
</li>
1482
1483
<li class="md-nav__item">
1484
<a href="#publish-a-github-wiki" class="md-nav__link">
1485
<span class="md-ellipsis">
1486
1487
Publish a GitHub wiki
1488
1489
</span>
1490
</a>
1491
1492
</li>
1493
1494
<li class="md-nav__item">
1495
<a href="#share-data-between-projects" class="md-nav__link">
1496
<span class="md-ellipsis">
1497
1498
Share data between projects
1499
1500
</span>
1501
</a>
1502
1503
</li>
1504
1505
<li class="md-nav__item">
1506
<a href="#export-for-spreadsheet-analysis" class="md-nav__link">
1507
<span class="md-ellipsis">
1508
1509
Export for spreadsheet analysis
1510
1511
</span>
1512
</a>
1513
1514
</li>
1515
1516
</ul>
1517
</nav>
1518
1519
</li>
1520
1521
</ul>
1522
1523
</nav>
1524
1525
</li>
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
<li class="md-nav__item">
1537
<a href="../output-formats/" class="md-nav__link">
1538
1539
1540
1541
<span class="md-ellipsis">
1542
1543
1544
Output Formats
1545
1546
1547
1548
</span>
1549
1550
1551
1552
</a>
1553
</li>
1554
1555
1556
1557
1558
</ul>
1559
</nav>
1560
1561
</li>
1562
1563
1564
1565
1566
1567
1568
1569
1570
1571
<li class="md-nav__item">
1572
<a href="../../use-cases/" class="md-nav__link">
1573
1574
1575
1576
<span class="md-ellipsis">
1577
1578
1579
Use Cases
1580
1581
1582
1583
</span>
1584
1585
1586
1587
</a>
1588
</li>
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
<li class="md-nav__item">
1599
<a href="../../cli-reference/" class="md-nav__link">
1600
1601
1602
1603
<span class="md-ellipsis">
1604
1605
1606
CLI Reference
1607
1608
1609
1610
</span>
1611
1612
1613
1614
</a>
1615
</li>
1616
1617
1618
1619
1620
1621
1622
1623
1624
1625
1626
1627
1628
1629
1630
1631
1632
1633
1634
1635
<li class="md-nav__item md-nav__item--nested">
1636
1637
1638
1639
1640
1641
<input class="md-nav__toggle md-toggle md-toggle--indeterminate" type="checkbox" id="__nav_6" >
1642
1643
1644
<label class="md-nav__link" for="__nav_6" id="__nav_6_label" tabindex="0">
1645
1646
1647
1648
<span class="md-ellipsis">
1649
1650
1651
Architecture
1652
1653
1654
1655
</span>
1656
1657
1658
1659
<span class="md-nav__icon md-icon"></span>
1660
</label>
1661
1662
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_6_label" aria-expanded="false">
1663
<label class="md-nav__title" for="__nav_6">
1664
<span class="md-nav__icon md-icon"></span>
1665
1666
1667
Architecture
1668
1669
1670
</label>
1671
<ul class="md-nav__list" data-md-scrollfix>
1672
1673
1674
1675
1676
1677
1678
1679
<li class="md-nav__item">
1680
<a href="../../architecture/overview/" class="md-nav__link">
1681
1682
1683
1684
<span class="md-ellipsis">
1685
1686
1687
Overview
1688
1689
1690
1691
</span>
1692
1693
1694
1695
</a>
1696
</li>
1697
1698
1699
1700
1701
1702
1703
1704
1705
1706
1707
<li class="md-nav__item">
1708
<a href="../../architecture/providers/" class="md-nav__link">
1709
1710
1711
1712
<span class="md-ellipsis">
1713
1714
1715
Provider System
1716
1717
1718
1719
</span>
1720
1721
1722
1723
</a>
1724
</li>
1725
1726
1727
1728
1729
1730
1731
1732
1733
1734
1735
<li class="md-nav__item">
1736
<a href="../../architecture/pipeline/" class="md-nav__link">
1737
1738
1739
1740
<span class="md-ellipsis">
1741
1742
1743
Processing Pipeline
1744
1745
1746
1747
</span>
1748
1749
1750
1751
</a>
1752
</li>
1753
1754
1755
1756
1757
</ul>
1758
</nav>
1759
1760
</li>
1761
1762
1763
1764
1765
1766
1767
1768
1769
1770
1771
1772
1773
1774
1775
1776
1777
1778
1779
1780
<li class="md-nav__item md-nav__item--nested">
1781
1782
1783
1784
1785
1786
<input class="md-nav__toggle md-toggle md-toggle--indeterminate" type="checkbox" id="__nav_7" >
1787
1788
1789
<label class="md-nav__link" for="__nav_7" id="__nav_7_label" tabindex="0">
1790
1791
1792
1793
<span class="md-ellipsis">
1794
1795
1796
API Reference
1797
1798
1799
1800
</span>
1801
1802
1803
1804
<span class="md-nav__icon md-icon"></span>
1805
</label>
1806
1807
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_7_label" aria-expanded="false">
1808
<label class="md-nav__title" for="__nav_7">
1809
<span class="md-nav__icon md-icon"></span>
1810
1811
1812
API Reference
1813
1814
1815
</label>
1816
<ul class="md-nav__list" data-md-scrollfix>
1817
1818
1819
1820
1821
1822
1823
1824
<li class="md-nav__item">
1825
<a href="../../api/models/" class="md-nav__link">
1826
1827
1828
1829
<span class="md-ellipsis">
1830
1831
1832
Models
1833
1834
1835
1836
</span>
1837
1838
1839
1840
</a>
1841
</li>
1842
1843
1844
1845
1846
1847
1848
1849
1850
1851
1852
<li class="md-nav__item">
1853
<a href="../../api/providers/" class="md-nav__link">
1854
1855
1856
1857
<span class="md-ellipsis">
1858
1859
1860
Providers
1861
1862
1863
1864
</span>
1865
1866
1867
1868
</a>
1869
</li>
1870
1871
1872
1873
1874
1875
1876
1877
1878
1879
1880
<li class="md-nav__item">
1881
<a href="../../api/analyzers/" class="md-nav__link">
1882
1883
1884
1885
<span class="md-ellipsis">
1886
1887
1888
Analyzers
1889
1890
1891
1892
</span>
1893
1894
1895
1896
</a>
1897
</li>
1898
1899
1900
1901
1902
1903
1904
1905
1906
1907
1908
<li class="md-nav__item">
1909
<a href="../../api/agent/" class="md-nav__link">
1910
1911
1912
1913
<span class="md-ellipsis">
1914
1915
1916
Agent & Skills
1917
1918
1919
1920
</span>
1921
1922
1923
1924
</a>
1925
</li>
1926
1927
1928
1929
1930
1931
1932
1933
1934
1935
1936
<li class="md-nav__item">
1937
<a href="../../api/sources/" class="md-nav__link">
1938
1939
1940
1941
<span class="md-ellipsis">
1942
1943
1944
Sources
1945
1946
1947
1948
</span>
1949
1950
1951
1952
</a>
1953
</li>
1954
1955
1956
1957
1958
1959
1960
1961
1962
1963
1964
<li class="md-nav__item">
1965
<a href="../../api/auth/" class="md-nav__link">
1966
1967
1968
1969
<span class="md-ellipsis">
1970
1971
1972
Authentication
1973
1974
1975
1976
</span>
1977
1978
1979
1980
</a>
1981
</li>
1982
1983
1984
1985
1986
</ul>
1987
</nav>
1988
1989
</li>
1990
1991
1992
1993
1994
1995
1996
1997
1998
1999
<li class="md-nav__item">
2000
<a href="../../faq/" class="md-nav__link">
2001
2002
2003
2004
<span class="md-ellipsis">
2005
2006
2007
FAQ & Troubleshooting
2008
2009
2010
2011
</span>
2012
2013
2014
2015
</a>
2016
</li>
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
<li class="md-nav__item">
2027
<a href="../../contributing/" class="md-nav__link">
2028
2029
2030
2031
<span class="md-ellipsis">
2032
2033
2034
Contributing
2035
2036
2037
2038
</span>
2039
2040
2041
2042
</a>
2043
</li>
2044
2045
2046
2047
</ul>
2048
</nav>
2049
</div>
2050
</div>
2051
</div>
2052
2053
2054
2055
<div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" >
2056
<div class="md-sidebar__scrollwrap">
2057
<div class="md-sidebar__inner">
2058
2059
2060
<nav class="md-nav md-nav--secondary" aria-label="Table of contents">
2061
2062
2063
2064
2065
2066
2067
<label class="md-nav__title" for="__toc">
2068
<span class="md-nav__icon md-icon"></span>
2069
Table of contents
2070
</label>
2071
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
2072
2073
<li class="md-nav__item">
2074
<a href="#overview-of-export-options" class="md-nav__link">
2075
<span class="md-ellipsis">
2076
2077
Overview of export options
2078
2079
</span>
2080
</a>
2081
2082
</li>
2083
2084
<li class="md-nav__item">
2085
<a href="#markdown-document-generator" class="md-nav__link">
2086
<span class="md-ellipsis">
2087
2088
Markdown document generator
2089
2090
</span>
2091
</a>
2092
2093
<nav class="md-nav" aria-label="Markdown document generator">
2094
<ul class="md-nav__list">
2095
2096
<li class="md-nav__item">
2097
<a href="#cli-usage" class="md-nav__link">
2098
<span class="md-ellipsis">
2099
2100
CLI usage
2101
2102
</span>
2103
</a>
2104
2105
</li>
2106
2107
<li class="md-nav__item">
2108
<a href="#document-types" class="md-nav__link">
2109
<span class="md-ellipsis">
2110
2111
Document types
2112
2113
</span>
2114
</a>
2115
2116
<nav class="md-nav" aria-label="Document types">
2117
<ul class="md-nav__list">
2118
2119
<li class="md-nav__item">
2120
<a href="#summary-executive-summary" class="md-nav__link">
2121
<span class="md-ellipsis">
2122
2123
summary (Executive Summary)
2124
2125
</span>
2126
</a>
2127
2128
</li>
2129
2130
<li class="md-nav__item">
2131
<a href="#meeting-notes-meeting-notes" class="md-nav__link">
2132
<span class="md-ellipsis">
2133
2134
meeting-notes (Meeting Notes)
2135
2136
</span>
2137
</a>
2138
2139
</li>
2140
2141
<li class="md-nav__item">
2142
<a href="#glossary-glossary" class="md-nav__link">
2143
<span class="md-ellipsis">
2144
2145
glossary (Glossary)
2146
2147
</span>
2148
</a>
2149
2150
</li>
2151
2152
<li class="md-nav__item">
2153
<a href="#relationship-map-relationship-map" class="md-nav__link">
2154
<span class="md-ellipsis">
2155
2156
relationship-map (Relationship Map)
2157
2158
</span>
2159
</a>
2160
2161
</li>
2162
2163
<li class="md-nav__item">
2164
<a href="#status-report-status-report" class="md-nav__link">
2165
<span class="md-ellipsis">
2166
2167
status-report (Status Report)
2168
2169
</span>
2170
</a>
2171
2172
</li>
2173
2174
<li class="md-nav__item">
2175
<a href="#entity-index-entity-index" class="md-nav__link">
2176
<span class="md-ellipsis">
2177
2178
entity-index (Entity Index)
2179
2180
</span>
2181
</a>
2182
2183
</li>
2184
2185
<li class="md-nav__item">
2186
<a href="#csv-csv-export" class="md-nav__link">
2187
<span class="md-ellipsis">
2188
2189
csv (CSV Export)
2190
2191
</span>
2192
</a>
2193
2194
</li>
2195
2196
</ul>
2197
</nav>
2198
2199
</li>
2200
2201
<li class="md-nav__item">
2202
<a href="#entity-briefs" class="md-nav__link">
2203
<span class="md-ellipsis">
2204
2205
Entity briefs
2206
2207
</span>
2208
</a>
2209
2210
</li>
2211
2212
</ul>
2213
</nav>
2214
2215
</li>
2216
2217
<li class="md-nav__item">
2218
<a href="#obsidian-vault-export" class="md-nav__link">
2219
<span class="md-ellipsis">
2220
2221
Obsidian vault export
2222
2223
</span>
2224
</a>
2225
2226
<nav class="md-nav" aria-label="Obsidian vault export">
2227
<ul class="md-nav__list">
2228
2229
<li class="md-nav__item">
2230
<a href="#cli-usage_1" class="md-nav__link">
2231
<span class="md-ellipsis">
2232
2233
CLI usage
2234
2235
</span>
2236
</a>
2237
2238
</li>
2239
2240
<li class="md-nav__item">
2241
<a href="#generated-structure" class="md-nav__link">
2242
<span class="md-ellipsis">
2243
2244
Generated structure
2245
2246
</span>
2247
</a>
2248
2249
</li>
2250
2251
<li class="md-nav__item">
2252
<a href="#entity-notes" class="md-nav__link">
2253
<span class="md-ellipsis">
2254
2255
Entity notes
2256
2257
</span>
2258
</a>
2259
2260
</li>
2261
2262
<li class="md-nav__item">
2263
<a href="#index-note-map-of-content" class="md-nav__link">
2264
<span class="md-ellipsis">
2265
2266
Index note (Map of Content)
2267
2268
</span>
2269
</a>
2270
2271
</li>
2272
2273
<li class="md-nav__item">
2274
<a href="#tag-pages" class="md-nav__link">
2275
<span class="md-ellipsis">
2276
2277
Tag pages
2278
2279
</span>
2280
</a>
2281
2282
</li>
2283
2284
</ul>
2285
</nav>
2286
2287
</li>
2288
2289
<li class="md-nav__item">
2290
<a href="#notion-compatible-markdown-export" class="md-nav__link">
2291
<span class="md-ellipsis">
2292
2293
Notion-compatible markdown export
2294
2295
</span>
2296
</a>
2297
2298
<nav class="md-nav" aria-label="Notion-compatible markdown export">
2299
<ul class="md-nav__list">
2300
2301
<li class="md-nav__item">
2302
<a href="#cli-usage_2" class="md-nav__link">
2303
<span class="md-ellipsis">
2304
2305
CLI usage
2306
2307
</span>
2308
</a>
2309
2310
</li>
2311
2312
<li class="md-nav__item">
2313
<a href="#generated-structure_1" class="md-nav__link">
2314
<span class="md-ellipsis">
2315
2316
Generated structure
2317
2318
</span>
2319
</a>
2320
2321
</li>
2322
2323
<li class="md-nav__item">
2324
<a href="#entity-pages" class="md-nav__link">
2325
<span class="md-ellipsis">
2326
2327
Entity pages
2328
2329
</span>
2330
</a>
2331
2332
</li>
2333
2334
<li class="md-nav__item">
2335
<a href="#csv-database" class="md-nav__link">
2336
<span class="md-ellipsis">
2337
2338
CSV database
2339
2340
</span>
2341
</a>
2342
2343
</li>
2344
2345
<li class="md-nav__item">
2346
<a href="#overview-page" class="md-nav__link">
2347
<span class="md-ellipsis">
2348
2349
Overview page
2350
2351
</span>
2352
</a>
2353
2354
</li>
2355
2356
</ul>
2357
</nav>
2358
2359
</li>
2360
2361
<li class="md-nav__item">
2362
<a href="#github-wiki-generator" class="md-nav__link">
2363
<span class="md-ellipsis">
2364
2365
GitHub wiki generator
2366
2367
</span>
2368
</a>
2369
2370
<nav class="md-nav" aria-label="GitHub wiki generator">
2371
<ul class="md-nav__list">
2372
2373
<li class="md-nav__item">
2374
<a href="#cli-usage_3" class="md-nav__link">
2375
<span class="md-ellipsis">
2376
2377
CLI usage
2378
2379
</span>
2380
</a>
2381
2382
</li>
2383
2384
<li class="md-nav__item">
2385
<a href="#generated-pages" class="md-nav__link">
2386
<span class="md-ellipsis">
2387
2388
Generated pages
2389
2390
</span>
2391
</a>
2392
2393
</li>
2394
2395
<li class="md-nav__item">
2396
<a href="#entity-pages_1" class="md-nav__link">
2397
<span class="md-ellipsis">
2398
2399
Entity pages
2400
2401
</span>
2402
</a>
2403
2404
</li>
2405
2406
<li class="md-nav__item">
2407
<a href="#push-behavior" class="md-nav__link">
2408
<span class="md-ellipsis">
2409
2410
Push behavior
2411
2412
</span>
2413
</a>
2414
2415
</li>
2416
2417
</ul>
2418
</nav>
2419
2420
</li>
2421
2422
<li class="md-nav__item">
2423
<a href="#planopticonexchange-json-format" class="md-nav__link">
2424
<span class="md-ellipsis">
2425
2426
PlanOpticonExchange JSON format
2427
2428
</span>
2429
</a>
2430
2431
<nav class="md-nav" aria-label="PlanOpticonExchange JSON format">
2432
<ul class="md-nav__list">
2433
2434
<li class="md-nav__item">
2435
<a href="#cli-usage_4" class="md-nav__link">
2436
<span class="md-ellipsis">
2437
2438
CLI usage
2439
2440
</span>
2441
</a>
2442
2443
</li>
2444
2445
<li class="md-nav__item">
2446
<a href="#schema" class="md-nav__link">
2447
<span class="md-ellipsis">
2448
2449
Schema
2450
2451
</span>
2452
</a>
2453
2454
</li>
2455
2456
<li class="md-nav__item">
2457
<a href="#merging-exchange-files" class="md-nav__link">
2458
<span class="md-ellipsis">
2459
2460
Merging exchange files
2461
2462
</span>
2463
</a>
2464
2465
</li>
2466
2467
<li class="md-nav__item">
2468
<a href="#python-api" class="md-nav__link">
2469
<span class="md-ellipsis">
2470
2471
Python API
2472
2473
</span>
2474
</a>
2475
2476
</li>
2477
2478
</ul>
2479
</nav>
2480
2481
</li>
2482
2483
<li class="md-nav__item">
2484
<a href="#python-api-for-all-exporters" class="md-nav__link">
2485
<span class="md-ellipsis">
2486
2487
Python API for all exporters
2488
2489
</span>
2490
</a>
2491
2492
<nav class="md-nav" aria-label="Python API for all exporters">
2493
<ul class="md-nav__list">
2494
2495
<li class="md-nav__item">
2496
<a href="#markdown-document-generation" class="md-nav__link">
2497
<span class="md-ellipsis">
2498
2499
Markdown document generation
2500
2501
</span>
2502
</a>
2503
2504
</li>
2505
2506
<li class="md-nav__item">
2507
<a href="#obsidian-export" class="md-nav__link">
2508
<span class="md-ellipsis">
2509
2510
Obsidian export
2511
2512
</span>
2513
</a>
2514
2515
</li>
2516
2517
<li class="md-nav__item">
2518
<a href="#notion-export" class="md-nav__link">
2519
<span class="md-ellipsis">
2520
2521
Notion export
2522
2523
</span>
2524
</a>
2525
2526
</li>
2527
2528
<li class="md-nav__item">
2529
<a href="#wiki-generation" class="md-nav__link">
2530
<span class="md-ellipsis">
2531
2532
Wiki generation
2533
2534
</span>
2535
</a>
2536
2537
</li>
2538
2539
</ul>
2540
</nav>
2541
2542
</li>
2543
2544
<li class="md-nav__item">
2545
<a href="#companion-repl" class="md-nav__link">
2546
<span class="md-ellipsis">
2547
2548
Companion REPL
2549
2550
</span>
2551
</a>
2552
2553
</li>
2554
2555
<li class="md-nav__item">
2556
<a href="#common-workflows" class="md-nav__link">
2557
<span class="md-ellipsis">
2558
2559
Common workflows
2560
2561
</span>
2562
</a>
2563
2564
<nav class="md-nav" aria-label="Common workflows">
2565
<ul class="md-nav__list">
2566
2567
<li class="md-nav__item">
2568
<a href="#analyze-videos-and-export-to-obsidian" class="md-nav__link">
2569
<span class="md-ellipsis">
2570
2571
Analyze videos and export to Obsidian
2572
2573
</span>
2574
</a>
2575
2576
</li>
2577
2578
<li class="md-nav__item">
2579
<a href="#generate-project-documentation" class="md-nav__link">
2580
<span class="md-ellipsis">
2581
2582
Generate project documentation
2583
2584
</span>
2585
</a>
2586
2587
</li>
2588
2589
<li class="md-nav__item">
2590
<a href="#publish-a-github-wiki" class="md-nav__link">
2591
<span class="md-ellipsis">
2592
2593
Publish a GitHub wiki
2594
2595
</span>
2596
</a>
2597
2598
</li>
2599
2600
<li class="md-nav__item">
2601
<a href="#share-data-between-projects" class="md-nav__link">
2602
<span class="md-ellipsis">
2603
2604
Share data between projects
2605
2606
</span>
2607
</a>
2608
2609
</li>
2610
2611
<li class="md-nav__item">
2612
<a href="#export-for-spreadsheet-analysis" class="md-nav__link">
2613
<span class="md-ellipsis">
2614
2615
Export for spreadsheet analysis
2616
2617
</span>
2618
</a>
2619
2620
</li>
2621
2622
</ul>
2623
</nav>
2624
2625
</li>
2626
2627
</ul>
2628
2629
</nav>
2630
</div>
2631
</div>
2632
</div>
2633
2634
2635
2636
<div class="md-content" data-md-component="content">
2637
2638
<article class="md-content__inner md-typeset">
2639
2640
2641
2642
2643
2644
2645
2646
2647
<h1 id="export">Export<a class="headerlink" href="#export" title="Permanent link">&para;</a></h1>
2648
<p>PlanOpticon provides multiple ways to export knowledge graph data into formats suitable for documentation, note-taking, collaboration, and interchange. All export commands work offline from a <code>knowledge_graph.db</code> file -- no API key is needed for template-based exports.</p>
2649
<h2 id="overview-of-export-options">Overview of export options<a class="headerlink" href="#overview-of-export-options" title="Permanent link">&para;</a></h2>
2650
<table>
2651
<thead>
2652
<tr>
2653
<th>Format</th>
2654
<th>Command</th>
2655
<th>API Key</th>
2656
<th>Description</th>
2657
</tr>
2658
</thead>
2659
<tbody>
2660
<tr>
2661
<td>Markdown documents</td>
2662
<td><code>planopticon export markdown</code></td>
2663
<td>No</td>
2664
<td>7 document types: summary, meeting notes, glossary, and more</td>
2665
</tr>
2666
<tr>
2667
<td>Obsidian vault</td>
2668
<td><code>planopticon export obsidian</code></td>
2669
<td>No</td>
2670
<td>YAML frontmatter, <code>[[wiki-links]]</code>, tag pages, Map of Content</td>
2671
</tr>
2672
<tr>
2673
<td>Notion-compatible</td>
2674
<td><code>planopticon export notion</code></td>
2675
<td>No</td>
2676
<td>Callout blocks, CSV database for bulk import</td>
2677
</tr>
2678
<tr>
2679
<td>PlanOpticonExchange JSON</td>
2680
<td><code>planopticon export exchange</code></td>
2681
<td>No</td>
2682
<td>Canonical interchange format for merging and sharing</td>
2683
</tr>
2684
<tr>
2685
<td>GitHub wiki</td>
2686
<td><code>planopticon wiki generate</code></td>
2687
<td>No</td>
2688
<td>Home, Sidebar, entity pages, type indexes</td>
2689
</tr>
2690
<tr>
2691
<td>GitHub wiki push</td>
2692
<td><code>planopticon wiki push</code></td>
2693
<td>Git auth</td>
2694
<td>Push generated wiki to a GitHub repo</td>
2695
</tr>
2696
</tbody>
2697
</table>
2698
<h2 id="markdown-document-generator">Markdown document generator<a class="headerlink" href="#markdown-document-generator" title="Permanent link">&para;</a></h2>
2699
<p>The markdown exporter produces structured documents from knowledge graph data using pure template-based generation. No LLM calls are made -- the output is deterministic and based entirely on the entities and relationships in the graph.</p>
2700
<h3 id="cli-usage">CLI usage<a class="headerlink" href="#cli-usage" title="Permanent link">&para;</a></h3>
2701
<div class="highlight"><pre><span></span><code><a id="__codelineno-0-1" name="__codelineno-0-1" href="#__codelineno-0-1"></a>planopticon export markdown DB_PATH [OPTIONS]
2702
</code></pre></div>
2703
<p><strong>Arguments:</strong></p>
2704
<table>
2705
<thead>
2706
<tr>
2707
<th>Argument</th>
2708
<th>Description</th>
2709
</tr>
2710
</thead>
2711
<tbody>
2712
<tr>
2713
<td><code>DB_PATH</code></td>
2714
<td>Path to a <code>knowledge_graph.db</code> file</td>
2715
</tr>
2716
</tbody>
2717
</table>
2718
<p><strong>Options:</strong></p>
2719
<table>
2720
<thead>
2721
<tr>
2722
<th>Option</th>
2723
<th>Short</th>
2724
<th>Default</th>
2725
<th>Description</th>
2726
</tr>
2727
</thead>
2728
<tbody>
2729
<tr>
2730
<td><code>--output</code></td>
2731
<td><code>-o</code></td>
2732
<td><code>./export</code></td>
2733
<td>Output directory</td>
2734
</tr>
2735
<tr>
2736
<td><code>--type</code></td>
2737
<td></td>
2738
<td><code>all</code></td>
2739
<td>Document types to generate (repeatable). Choices: <code>summary</code>, <code>meeting-notes</code>, <code>glossary</code>, <code>relationship-map</code>, <code>status-report</code>, <code>entity-index</code>, <code>csv</code>, <code>all</code></td>
2740
</tr>
2741
</tbody>
2742
</table>
2743
<p><strong>Examples:</strong></p>
2744
<div class="highlight"><pre><span></span><code><a id="__codelineno-1-1" name="__codelineno-1-1" href="#__codelineno-1-1"></a><span class="c1"># Generate all document types</span>
2745
<a id="__codelineno-1-2" name="__codelineno-1-2" href="#__codelineno-1-2"></a>planopticon<span class="w"> </span><span class="nb">export</span><span class="w"> </span>markdown<span class="w"> </span>knowledge_graph.db
2746
<a id="__codelineno-1-3" name="__codelineno-1-3" href="#__codelineno-1-3"></a>
2747
<a id="__codelineno-1-4" name="__codelineno-1-4" href="#__codelineno-1-4"></a><span class="c1"># Generate only summary and glossary</span>
2748
<a id="__codelineno-1-5" name="__codelineno-1-5" href="#__codelineno-1-5"></a>planopticon<span class="w"> </span><span class="nb">export</span><span class="w"> </span>markdown<span class="w"> </span>kg.db<span class="w"> </span>-o<span class="w"> </span>./docs<span class="w"> </span>--type<span class="w"> </span>summary<span class="w"> </span>--type<span class="w"> </span>glossary
2749
<a id="__codelineno-1-6" name="__codelineno-1-6" href="#__codelineno-1-6"></a>
2750
<a id="__codelineno-1-7" name="__codelineno-1-7" href="#__codelineno-1-7"></a><span class="c1"># Generate meeting notes and CSV</span>
2751
<a id="__codelineno-1-8" name="__codelineno-1-8" href="#__codelineno-1-8"></a>planopticon<span class="w"> </span><span class="nb">export</span><span class="w"> </span>markdown<span class="w"> </span>kg.db<span class="w"> </span>--type<span class="w"> </span>meeting-notes<span class="w"> </span>--type<span class="w"> </span>csv
2752
</code></pre></div>
2753
<h3 id="document-types">Document types<a class="headerlink" href="#document-types" title="Permanent link">&para;</a></h3>
2754
<h4 id="summary-executive-summary">summary (Executive Summary)<a class="headerlink" href="#summary-executive-summary" title="Permanent link">&para;</a></h4>
2755
<p>A high-level overview of the knowledge graph. Contains:</p>
2756
<ul>
2757
<li>Total entity and relationship counts</li>
2758
<li>Entity breakdown by type (table with counts and example names)</li>
2759
<li>Key entities ranked by number of connections (top 10)</li>
2760
<li>Relationship type breakdown with counts</li>
2761
</ul>
2762
<p>This is useful for getting a quick overview of what a knowledge base contains.</p>
2763
<h4 id="meeting-notes-meeting-notes">meeting-notes (Meeting Notes)<a class="headerlink" href="#meeting-notes-meeting-notes" title="Permanent link">&para;</a></h4>
2764
<p>Formats knowledge graph data as structured meeting notes. Organizes entities into planning-relevant categories:</p>
2765
<ul>
2766
<li><strong>Discussion Topics</strong>: Entities of type <code>concept</code>, <code>technology</code>, or <code>topic</code> with their descriptions</li>
2767
<li><strong>Participants</strong>: Entities of type <code>person</code></li>
2768
<li><strong>Decisions &amp; Constraints</strong>: Entities of type <code>decision</code> or <code>constraint</code></li>
2769
<li><strong>Action Items</strong>: Entities of type <code>goal</code>, <code>feature</code>, or <code>milestone</code>, shown as checkboxes. If an entity has an <code>assigned_to</code> or <code>owned_by</code> relationship, the owner is shown as <code>@name</code></li>
2770
<li><strong>Open Questions / Loose Ends</strong>: Entities with one or fewer relationships (excluding people), indicating topics that may need follow-up</li>
2771
</ul>
2772
<p>Includes a generation timestamp.</p>
2773
<h4 id="glossary-glossary">glossary (Glossary)<a class="headerlink" href="#glossary-glossary" title="Permanent link">&para;</a></h4>
2774
<p>An alphabetically sorted dictionary of all entities in the knowledge graph. Each entry shows:</p>
2775
<ul>
2776
<li>Entity name (bold)</li>
2777
<li>Entity type (italic, in parentheses)</li>
2778
<li>First description</li>
2779
</ul>
2780
<p>Format:</p>
2781
<div class="highlight"><pre><span></span><code><a id="__codelineno-2-1" name="__codelineno-2-1" href="#__codelineno-2-1"></a>**Entity Name** *(type)*
2782
<a id="__codelineno-2-2" name="__codelineno-2-2" href="#__codelineno-2-2"></a>: Description text here.
2783
</code></pre></div>
2784
<h4 id="relationship-map-relationship-map">relationship-map (Relationship Map)<a class="headerlink" href="#relationship-map-relationship-map" title="Permanent link">&para;</a></h4>
2785
<p>A comprehensive view of all relationships in the graph, organized by relationship type. Each type gets its own section with a table of source-target pairs.</p>
2786
<p>Also includes a <strong>Mermaid diagram</strong> of the top 20 most-connected entities, rendered as a <code>graph LR</code> flowchart with labeled edges. This diagram can be rendered natively in GitHub, GitLab, Obsidian, and many other Markdown viewers.</p>
2787
<h4 id="status-report-status-report">status-report (Status Report)<a class="headerlink" href="#status-report-status-report" title="Permanent link">&para;</a></h4>
2788
<p>A project-oriented status report that highlights planning entities:</p>
2789
<ul>
2790
<li><strong>Overview</strong>: Counts of entities, relationships, features, milestones, requirements, and risks/constraints</li>
2791
<li><strong>Milestones</strong>: Entities of type <code>milestone</code> with descriptions</li>
2792
<li><strong>Features</strong>: Table of entities of type <code>feature</code> with descriptions (truncated to 60 characters)</li>
2793
<li><strong>Risks &amp; Constraints</strong>: Entities of type <code>risk</code> or <code>constraint</code></li>
2794
</ul>
2795
<p>Includes a generation timestamp.</p>
2796
<h4 id="entity-index-entity-index">entity-index (Entity Index)<a class="headerlink" href="#entity-index-entity-index" title="Permanent link">&para;</a></h4>
2797
<p>A master index of all entities grouped by type. Each type section lists entities alphabetically with their first description. Shows total entity count and number of types.</p>
2798
<h4 id="csv-csv-export">csv (CSV Export)<a class="headerlink" href="#csv-csv-export" title="Permanent link">&para;</a></h4>
2799
<p>A CSV file suitable for spreadsheet import. Columns:</p>
2800
<table>
2801
<thead>
2802
<tr>
2803
<th>Column</th>
2804
<th>Description</th>
2805
</tr>
2806
</thead>
2807
<tbody>
2808
<tr>
2809
<td>Name</td>
2810
<td>Entity name</td>
2811
</tr>
2812
<tr>
2813
<td>Type</td>
2814
<td>Entity type</td>
2815
</tr>
2816
<tr>
2817
<td>Description</td>
2818
<td>First description</td>
2819
</tr>
2820
<tr>
2821
<td>Related To</td>
2822
<td>Semicolon-separated list of entities this entity has outgoing relationships to</td>
2823
</tr>
2824
<tr>
2825
<td>Source</td>
2826
<td>First occurrence source</td>
2827
</tr>
2828
</tbody>
2829
</table>
2830
<h3 id="entity-briefs">Entity briefs<a class="headerlink" href="#entity-briefs" title="Permanent link">&para;</a></h3>
2831
<p>In addition to the selected document types, the <code>generate_all()</code> function automatically creates individual entity brief pages in an <code>entities/</code> subdirectory. Each brief contains:</p>
2832
<ul>
2833
<li>Entity name and type</li>
2834
<li>Summary (all descriptions)</li>
2835
<li>Outgoing relationships (table of target entities and relationship types)</li>
2836
<li>Incoming relationships (table of source entities and relationship types)</li>
2837
<li>Source occurrences with timestamps and context text</li>
2838
</ul>
2839
<h2 id="obsidian-vault-export">Obsidian vault export<a class="headerlink" href="#obsidian-vault-export" title="Permanent link">&para;</a></h2>
2840
<p>The Obsidian exporter creates a complete vault structure with YAML frontmatter, <code>[[wiki-links]]</code> for entity cross-references, and Obsidian-compatible metadata.</p>
2841
<h3 id="cli-usage_1">CLI usage<a class="headerlink" href="#cli-usage_1" title="Permanent link">&para;</a></h3>
2842
<div class="highlight"><pre><span></span><code><a id="__codelineno-3-1" name="__codelineno-3-1" href="#__codelineno-3-1"></a>planopticon export obsidian DB_PATH [OPTIONS]
2843
</code></pre></div>
2844
<p><strong>Options:</strong></p>
2845
<table>
2846
<thead>
2847
<tr>
2848
<th>Option</th>
2849
<th>Short</th>
2850
<th>Default</th>
2851
<th>Description</th>
2852
</tr>
2853
</thead>
2854
<tbody>
2855
<tr>
2856
<td><code>--output</code></td>
2857
<td><code>-o</code></td>
2858
<td><code>./obsidian-vault</code></td>
2859
<td>Output vault directory</td>
2860
</tr>
2861
</tbody>
2862
</table>
2863
<p><strong>Example:</strong></p>
2864
<div class="highlight"><pre><span></span><code><a id="__codelineno-4-1" name="__codelineno-4-1" href="#__codelineno-4-1"></a>planopticon<span class="w"> </span><span class="nb">export</span><span class="w"> </span>obsidian<span class="w"> </span>knowledge_graph.db<span class="w"> </span>-o<span class="w"> </span>./my-vault
2865
</code></pre></div>
2866
<h3 id="generated-structure">Generated structure<a class="headerlink" href="#generated-structure" title="Permanent link">&para;</a></h3>
2867
<div class="highlight"><pre><span></span><code><a id="__codelineno-5-1" name="__codelineno-5-1" href="#__codelineno-5-1"></a>my-vault/
2868
<a id="__codelineno-5-2" name="__codelineno-5-2" href="#__codelineno-5-2"></a> _Index.md # Map of Content (MOC)
2869
<a id="__codelineno-5-3" name="__codelineno-5-3" href="#__codelineno-5-3"></a> Tag - Person.md # One tag page per entity type
2870
<a id="__codelineno-5-4" name="__codelineno-5-4" href="#__codelineno-5-4"></a> Tag - Technology.md
2871
<a id="__codelineno-5-5" name="__codelineno-5-5" href="#__codelineno-5-5"></a> Tag - Concept.md
2872
<a id="__codelineno-5-6" name="__codelineno-5-6" href="#__codelineno-5-6"></a> Alice.md # Individual entity notes
2873
<a id="__codelineno-5-7" name="__codelineno-5-7" href="#__codelineno-5-7"></a> Python.md
2874
<a id="__codelineno-5-8" name="__codelineno-5-8" href="#__codelineno-5-8"></a> Microservices.md
2875
<a id="__codelineno-5-9" name="__codelineno-5-9" href="#__codelineno-5-9"></a> ...
2876
</code></pre></div>
2877
<h3 id="entity-notes">Entity notes<a class="headerlink" href="#entity-notes" title="Permanent link">&para;</a></h3>
2878
<p>Each entity gets a dedicated note with:</p>
2879
<p><strong>YAML frontmatter:</strong></p>
2880
<div class="highlight"><pre><span></span><code><a id="__codelineno-6-1" name="__codelineno-6-1" href="#__codelineno-6-1"></a><span class="nn">---</span>
2881
<a id="__codelineno-6-2" name="__codelineno-6-2" href="#__codelineno-6-2"></a><span class="nt">type</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">technology</span>
2882
<a id="__codelineno-6-3" name="__codelineno-6-3" href="#__codelineno-6-3"></a><span class="nt">tags</span><span class="p">:</span>
2883
<a id="__codelineno-6-4" name="__codelineno-6-4" href="#__codelineno-6-4"></a><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">technology</span>
2884
<a id="__codelineno-6-5" name="__codelineno-6-5" href="#__codelineno-6-5"></a><span class="nt">aliases</span><span class="p">:</span>
2885
<a id="__codelineno-6-6" name="__codelineno-6-6" href="#__codelineno-6-6"></a><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">Python 3</span>
2886
<a id="__codelineno-6-7" name="__codelineno-6-7" href="#__codelineno-6-7"></a><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">CPython</span>
2887
<a id="__codelineno-6-8" name="__codelineno-6-8" href="#__codelineno-6-8"></a><span class="nt">date</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">2026-03-07</span>
2888
<a id="__codelineno-6-9" name="__codelineno-6-9" href="#__codelineno-6-9"></a><span class="nn">---</span>
2889
</code></pre></div>
2890
<p>The frontmatter includes:</p>
2891
<ul>
2892
<li><code>type</code>: The entity type</li>
2893
<li><code>tags</code>: Entity type as a tag (for Obsidian tag-based filtering)</li>
2894
<li><code>aliases</code>: Any known aliases for the entity (if available)</li>
2895
<li><code>date</code>: The export date</li>
2896
</ul>
2897
<p><strong>Body content:</strong></p>
2898
<ul>
2899
<li><code># Entity Name</code> heading</li>
2900
<li>Description paragraphs</li>
2901
<li><code>## Relationships</code> section with <code>[[wiki-links]]</code> to related entities:
2902
<div class="highlight"><pre><span></span><code><a id="__codelineno-7-1" name="__codelineno-7-1" href="#__codelineno-7-1"></a>- **uses**: [[FastAPI]]
2903
<a id="__codelineno-7-2" name="__codelineno-7-2" href="#__codelineno-7-2"></a>- **depends_on**: [[PostgreSQL]]
2904
</code></pre></div></li>
2905
<li><code>## Referenced by</code> section with incoming relationships:
2906
<div class="highlight"><pre><span></span><code><a id="__codelineno-8-1" name="__codelineno-8-1" href="#__codelineno-8-1"></a>- **implements** from [[Backend Service]]
2907
</code></pre></div></li>
2908
</ul>
2909
<h3 id="index-note-map-of-content">Index note (Map of Content)<a class="headerlink" href="#index-note-map-of-content" title="Permanent link">&para;</a></h3>
2910
<p>The <code>_Index.md</code> file serves as a Map of Content (MOC), listing all entities grouped by type with <code>[[wiki-links]]</code>:</p>
2911
<div class="highlight"><pre><span></span><code><a id="__codelineno-9-1" name="__codelineno-9-1" href="#__codelineno-9-1"></a>---
2912
<a id="__codelineno-9-2" name="__codelineno-9-2" href="#__codelineno-9-2"></a>type: index
2913
<a id="__codelineno-9-3" name="__codelineno-9-3" href="#__codelineno-9-3"></a>tags:
2914
<a id="__codelineno-9-4" name="__codelineno-9-4" href="#__codelineno-9-4"></a><span class="w"> </span><span class="k">-</span><span class="w"> </span>MOC
2915
<a id="__codelineno-9-5" name="__codelineno-9-5" href="#__codelineno-9-5"></a><span class="gu">date: 2026-03-07</span>
2916
<a id="__codelineno-9-6" name="__codelineno-9-6" href="#__codelineno-9-6"></a><span class="gu">---</span>
2917
<a id="__codelineno-9-7" name="__codelineno-9-7" href="#__codelineno-9-7"></a>
2918
<a id="__codelineno-9-8" name="__codelineno-9-8" href="#__codelineno-9-8"></a><span class="gh"># Index</span>
2919
<a id="__codelineno-9-9" name="__codelineno-9-9" href="#__codelineno-9-9"></a>
2920
<a id="__codelineno-9-10" name="__codelineno-9-10" href="#__codelineno-9-10"></a><span class="gs">**47**</span> entities | <span class="gs">**31**</span> relationships
2921
<a id="__codelineno-9-11" name="__codelineno-9-11" href="#__codelineno-9-11"></a>
2922
<a id="__codelineno-9-12" name="__codelineno-9-12" href="#__codelineno-9-12"></a><span class="gu">## Concept</span>
2923
<a id="__codelineno-9-13" name="__codelineno-9-13" href="#__codelineno-9-13"></a>
2924
<a id="__codelineno-9-14" name="__codelineno-9-14" href="#__codelineno-9-14"></a><span class="k">-</span><span class="w"> </span>[[Microservices]]
2925
<a id="__codelineno-9-15" name="__codelineno-9-15" href="#__codelineno-9-15"></a><span class="k">-</span><span class="w"> </span>[[REST API]]
2926
<a id="__codelineno-9-16" name="__codelineno-9-16" href="#__codelineno-9-16"></a>
2927
<a id="__codelineno-9-17" name="__codelineno-9-17" href="#__codelineno-9-17"></a><span class="gu">## Person</span>
2928
<a id="__codelineno-9-18" name="__codelineno-9-18" href="#__codelineno-9-18"></a>
2929
<a id="__codelineno-9-19" name="__codelineno-9-19" href="#__codelineno-9-19"></a><span class="k">-</span><span class="w"> </span>[[Alice]]
2930
<a id="__codelineno-9-20" name="__codelineno-9-20" href="#__codelineno-9-20"></a><span class="k">-</span><span class="w"> </span>[[Bob]]
2931
</code></pre></div>
2932
<h3 id="tag-pages">Tag pages<a class="headerlink" href="#tag-pages" title="Permanent link">&para;</a></h3>
2933
<p>One tag page is created per entity type (e.g., <code>Tag - Person.md</code>, <code>Tag - Technology.md</code>). Each page has frontmatter tagging it with the entity type and lists all entities of that type with descriptions.</p>
2934
<h2 id="notion-compatible-markdown-export">Notion-compatible markdown export<a class="headerlink" href="#notion-compatible-markdown-export" title="Permanent link">&para;</a></h2>
2935
<p>The Notion exporter creates Markdown files with Notion-style callout blocks and a CSV database file for bulk import into Notion.</p>
2936
<h3 id="cli-usage_2">CLI usage<a class="headerlink" href="#cli-usage_2" title="Permanent link">&para;</a></h3>
2937
<div class="highlight"><pre><span></span><code><a id="__codelineno-10-1" name="__codelineno-10-1" href="#__codelineno-10-1"></a>planopticon export notion DB_PATH [OPTIONS]
2938
</code></pre></div>
2939
<p><strong>Options:</strong></p>
2940
<table>
2941
<thead>
2942
<tr>
2943
<th>Option</th>
2944
<th>Short</th>
2945
<th>Default</th>
2946
<th>Description</th>
2947
</tr>
2948
</thead>
2949
<tbody>
2950
<tr>
2951
<td><code>--output</code></td>
2952
<td><code>-o</code></td>
2953
<td><code>./notion-export</code></td>
2954
<td>Output directory</td>
2955
</tr>
2956
</tbody>
2957
</table>
2958
<p><strong>Example:</strong></p>
2959
<div class="highlight"><pre><span></span><code><a id="__codelineno-11-1" name="__codelineno-11-1" href="#__codelineno-11-1"></a>planopticon<span class="w"> </span><span class="nb">export</span><span class="w"> </span>notion<span class="w"> </span>knowledge_graph.db<span class="w"> </span>-o<span class="w"> </span>./notion-export
2960
</code></pre></div>
2961
<h3 id="generated-structure_1">Generated structure<a class="headerlink" href="#generated-structure_1" title="Permanent link">&para;</a></h3>
2962
<div class="highlight"><pre><span></span><code><a id="__codelineno-12-1" name="__codelineno-12-1" href="#__codelineno-12-1"></a>notion-export/
2963
<a id="__codelineno-12-2" name="__codelineno-12-2" href="#__codelineno-12-2"></a> Overview.md # Knowledge graph overview page
2964
<a id="__codelineno-12-3" name="__codelineno-12-3" href="#__codelineno-12-3"></a> entities_database.csv # CSV for Notion database import
2965
<a id="__codelineno-12-4" name="__codelineno-12-4" href="#__codelineno-12-4"></a> Alice.md # Individual entity pages
2966
<a id="__codelineno-12-5" name="__codelineno-12-5" href="#__codelineno-12-5"></a> Python.md
2967
<a id="__codelineno-12-6" name="__codelineno-12-6" href="#__codelineno-12-6"></a> ...
2968
</code></pre></div>
2969
<h3 id="entity-pages">Entity pages<a class="headerlink" href="#entity-pages" title="Permanent link">&para;</a></h3>
2970
<p>Each entity page uses Notion-style callout syntax for metadata:</p>
2971
<div class="highlight"><pre><span></span><code><a id="__codelineno-13-1" name="__codelineno-13-1" href="#__codelineno-13-1"></a><span class="gh"># Python</span>
2972
<a id="__codelineno-13-2" name="__codelineno-13-2" href="#__codelineno-13-2"></a>
2973
<a id="__codelineno-13-3" name="__codelineno-13-3" href="#__codelineno-13-3"></a><span class="k">&gt; </span><span class="ge">:computer: **Type:** technology</span>
2974
<a id="__codelineno-13-4" name="__codelineno-13-4" href="#__codelineno-13-4"></a>
2975
<a id="__codelineno-13-5" name="__codelineno-13-5" href="#__codelineno-13-5"></a><span class="gu">## Description</span>
2976
<a id="__codelineno-13-6" name="__codelineno-13-6" href="#__codelineno-13-6"></a>
2977
<a id="__codelineno-13-7" name="__codelineno-13-7" href="#__codelineno-13-7"></a>A high-level programming language...
2978
<a id="__codelineno-13-8" name="__codelineno-13-8" href="#__codelineno-13-8"></a>
2979
<a id="__codelineno-13-9" name="__codelineno-13-9" href="#__codelineno-13-9"></a><span class="k">&gt; </span><span class="ge">:memo: **Properties**</span>
2980
<a id="__codelineno-13-10" name="__codelineno-13-10" href="#__codelineno-13-10"></a><span class="k">&gt; </span><span class="ge">- **version:** 3.11</span>
2981
<a id="__codelineno-13-11" name="__codelineno-13-11" href="#__codelineno-13-11"></a><span class="k">&gt; </span><span class="ge">- **paradigm:** multi-paradigm</span>
2982
<a id="__codelineno-13-12" name="__codelineno-13-12" href="#__codelineno-13-12"></a>
2983
<a id="__codelineno-13-13" name="__codelineno-13-13" href="#__codelineno-13-13"></a><span class="gu">## Relationships</span>
2984
<a id="__codelineno-13-14" name="__codelineno-13-14" href="#__codelineno-13-14"></a>
2985
<a id="__codelineno-13-15" name="__codelineno-13-15" href="#__codelineno-13-15"></a>| Target | Relationship |
2986
<a id="__codelineno-13-16" name="__codelineno-13-16" href="#__codelineno-13-16"></a>|--------|-------------|
2987
<a id="__codelineno-13-17" name="__codelineno-13-17" href="#__codelineno-13-17"></a>| FastAPI | uses |
2988
<a id="__codelineno-13-18" name="__codelineno-13-18" href="#__codelineno-13-18"></a>| Django | framework_for |
2989
<a id="__codelineno-13-19" name="__codelineno-13-19" href="#__codelineno-13-19"></a>
2990
<a id="__codelineno-13-20" name="__codelineno-13-20" href="#__codelineno-13-20"></a><span class="gu">## Referenced by</span>
2991
<a id="__codelineno-13-21" name="__codelineno-13-21" href="#__codelineno-13-21"></a>
2992
<a id="__codelineno-13-22" name="__codelineno-13-22" href="#__codelineno-13-22"></a>| Source | Relationship |
2993
<a id="__codelineno-13-23" name="__codelineno-13-23" href="#__codelineno-13-23"></a>|--------|-------------|
2994
<a id="__codelineno-13-24" name="__codelineno-13-24" href="#__codelineno-13-24"></a>| Backend Service | implements |
2995
</code></pre></div>
2996
<h3 id="csv-database">CSV database<a class="headerlink" href="#csv-database" title="Permanent link">&para;</a></h3>
2997
<p>The <code>entities_database.csv</code> file contains all entities in a format suitable for Notion's CSV database import:</p>
2998
<table>
2999
<thead>
3000
<tr>
3001
<th>Column</th>
3002
<th>Description</th>
3003
</tr>
3004
</thead>
3005
<tbody>
3006
<tr>
3007
<td>Name</td>
3008
<td>Entity name</td>
3009
</tr>
3010
<tr>
3011
<td>Type</td>
3012
<td>Entity type</td>
3013
</tr>
3014
<tr>
3015
<td>Description</td>
3016
<td>First two descriptions, semicolon-separated</td>
3017
</tr>
3018
<tr>
3019
<td>Related To</td>
3020
<td>Comma-separated list of outgoing relationship targets</td>
3021
</tr>
3022
</tbody>
3023
</table>
3024
<h3 id="overview-page">Overview page<a class="headerlink" href="#overview-page" title="Permanent link">&para;</a></h3>
3025
<p>The <code>Overview.md</code> page provides a summary with entity counts and a grouped listing of all entities by type.</p>
3026
<h2 id="github-wiki-generator">GitHub wiki generator<a class="headerlink" href="#github-wiki-generator" title="Permanent link">&para;</a></h2>
3027
<p>The wiki generator creates a complete set of GitHub wiki pages from a knowledge graph, including navigation (Home page and Sidebar) and cross-linked entity pages.</p>
3028
<h3 id="cli-usage_3">CLI usage<a class="headerlink" href="#cli-usage_3" title="Permanent link">&para;</a></h3>
3029
<p><strong>Generate wiki pages locally:</strong></p>
3030
<div class="highlight"><pre><span></span><code><a id="__codelineno-14-1" name="__codelineno-14-1" href="#__codelineno-14-1"></a>planopticon wiki generate DB_PATH [OPTIONS]
3031
</code></pre></div>
3032
<table>
3033
<thead>
3034
<tr>
3035
<th>Option</th>
3036
<th>Short</th>
3037
<th>Default</th>
3038
<th>Description</th>
3039
</tr>
3040
</thead>
3041
<tbody>
3042
<tr>
3043
<td><code>--output</code></td>
3044
<td><code>-o</code></td>
3045
<td><code>./wiki</code></td>
3046
<td>Output directory for wiki pages</td>
3047
</tr>
3048
<tr>
3049
<td><code>--title</code></td>
3050
<td></td>
3051
<td><code>Knowledge Base</code></td>
3052
<td>Wiki title (shown on Home page)</td>
3053
</tr>
3054
</tbody>
3055
</table>
3056
<p><strong>Push wiki pages to GitHub:</strong></p>
3057
<div class="highlight"><pre><span></span><code><a id="__codelineno-15-1" name="__codelineno-15-1" href="#__codelineno-15-1"></a>planopticon wiki push WIKI_DIR REPO [OPTIONS]
3058
</code></pre></div>
3059
<table>
3060
<thead>
3061
<tr>
3062
<th>Argument</th>
3063
<th>Description</th>
3064
</tr>
3065
</thead>
3066
<tbody>
3067
<tr>
3068
<td><code>WIKI_DIR</code></td>
3069
<td>Path to the directory containing generated wiki <code>.md</code> files</td>
3070
</tr>
3071
<tr>
3072
<td><code>REPO</code></td>
3073
<td>GitHub repository in <code>owner/repo</code> format</td>
3074
</tr>
3075
</tbody>
3076
</table>
3077
<table>
3078
<thead>
3079
<tr>
3080
<th>Option</th>
3081
<th>Short</th>
3082
<th>Default</th>
3083
<th>Description</th>
3084
</tr>
3085
</thead>
3086
<tbody>
3087
<tr>
3088
<td><code>--message</code></td>
3089
<td><code>-m</code></td>
3090
<td><code>Update wiki</code></td>
3091
<td>Git commit message</td>
3092
</tr>
3093
</tbody>
3094
</table>
3095
<p><strong>Examples:</strong></p>
3096
<div class="highlight"><pre><span></span><code><a id="__codelineno-16-1" name="__codelineno-16-1" href="#__codelineno-16-1"></a><span class="c1"># Generate wiki pages</span>
3097
<a id="__codelineno-16-2" name="__codelineno-16-2" href="#__codelineno-16-2"></a>planopticon<span class="w"> </span>wiki<span class="w"> </span>generate<span class="w"> </span>knowledge_graph.db<span class="w"> </span>-o<span class="w"> </span>./wiki
3098
<a id="__codelineno-16-3" name="__codelineno-16-3" href="#__codelineno-16-3"></a>
3099
<a id="__codelineno-16-4" name="__codelineno-16-4" href="#__codelineno-16-4"></a><span class="c1"># Generate with a custom title</span>
3100
<a id="__codelineno-16-5" name="__codelineno-16-5" href="#__codelineno-16-5"></a>planopticon<span class="w"> </span>wiki<span class="w"> </span>generate<span class="w"> </span>kg.db<span class="w"> </span>-o<span class="w"> </span>./wiki<span class="w"> </span>--title<span class="w"> </span><span class="s2">&quot;Project Wiki&quot;</span>
3101
<a id="__codelineno-16-6" name="__codelineno-16-6" href="#__codelineno-16-6"></a>
3102
<a id="__codelineno-16-7" name="__codelineno-16-7" href="#__codelineno-16-7"></a><span class="c1"># Push to GitHub</span>
3103
<a id="__codelineno-16-8" name="__codelineno-16-8" href="#__codelineno-16-8"></a>planopticon<span class="w"> </span>wiki<span class="w"> </span>push<span class="w"> </span>./wiki<span class="w"> </span>ConflictHQ/PlanOpticon
3104
<a id="__codelineno-16-9" name="__codelineno-16-9" href="#__codelineno-16-9"></a>
3105
<a id="__codelineno-16-10" name="__codelineno-16-10" href="#__codelineno-16-10"></a><span class="c1"># Push with a custom commit message</span>
3106
<a id="__codelineno-16-11" name="__codelineno-16-11" href="#__codelineno-16-11"></a>planopticon<span class="w"> </span>wiki<span class="w"> </span>push<span class="w"> </span>./wiki<span class="w"> </span>owner/repo<span class="w"> </span>-m<span class="w"> </span><span class="s2">&quot;Add entity pages&quot;</span>
3107
</code></pre></div>
3108
<h3 id="generated-pages">Generated pages<a class="headerlink" href="#generated-pages" title="Permanent link">&para;</a></h3>
3109
<p>The wiki generator creates the following pages:</p>
3110
<table>
3111
<thead>
3112
<tr>
3113
<th>Page</th>
3114
<th>Description</th>
3115
</tr>
3116
</thead>
3117
<tbody>
3118
<tr>
3119
<td><code>Home.md</code></td>
3120
<td>Main wiki page with entity counts, type links, and artifact links</td>
3121
</tr>
3122
<tr>
3123
<td><code>_Sidebar.md</code></td>
3124
<td>Navigation sidebar with links to Home, entity type indexes, and artifacts</td>
3125
</tr>
3126
<tr>
3127
<td><code>{Type}.md</code></td>
3128
<td>One index page per entity type with a table of entities and descriptions</td>
3129
</tr>
3130
<tr>
3131
<td><code>{Entity}.md</code></td>
3132
<td>Individual entity pages with type, descriptions, relationships, and sources</td>
3133
</tr>
3134
</tbody>
3135
</table>
3136
<h3 id="entity-pages_1">Entity pages<a class="headerlink" href="#entity-pages_1" title="Permanent link">&para;</a></h3>
3137
<p>Each entity page contains:</p>
3138
<ul>
3139
<li>Entity name as the top heading</li>
3140
<li><strong>Type</strong> label</li>
3141
<li><strong>Descriptions</strong> section (bullet list)</li>
3142
<li><strong>Relationships</strong> table with wiki-style links to target entities</li>
3143
<li><strong>Referenced By</strong> table with links to source entities</li>
3144
<li><strong>Sources</strong> section listing occurrences with timestamps and context</li>
3145
</ul>
3146
<p>All entity and type names are cross-linked using GitHub wiki-compatible links (<code>[Name](Sanitized-Name)</code>).</p>
3147
<h3 id="push-behavior">Push behavior<a class="headerlink" href="#push-behavior" title="Permanent link">&para;</a></h3>
3148
<p>The <code>wiki push</code> command:</p>
3149
<ol>
3150
<li>Clones the existing GitHub wiki repository (<code>https://github.com/{repo}.wiki.git</code>).</li>
3151
<li>If the wiki does not exist yet, initializes a new Git repository.</li>
3152
<li>Copies all <code>.md</code> files from the wiki directory into the clone.</li>
3153
<li>Commits the changes.</li>
3154
<li>Pushes to the remote (tries <code>master</code> first, then <code>main</code>).</li>
3155
</ol>
3156
<p>This requires Git authentication with push access to the repository. The wiki must be enabled in the GitHub repository settings.</p>
3157
<h2 id="planopticonexchange-json-format">PlanOpticonExchange JSON format<a class="headerlink" href="#planopticonexchange-json-format" title="Permanent link">&para;</a></h2>
3158
<p>The PlanOpticonExchange is the canonical interchange format for PlanOpticon data. Every command produces it, and every export adapter can consume it. It provides a structured, versioned JSON representation of a complete knowledge graph with project metadata.</p>
3159
<h3 id="cli-usage_4">CLI usage<a class="headerlink" href="#cli-usage_4" title="Permanent link">&para;</a></h3>
3160
<div class="highlight"><pre><span></span><code><a id="__codelineno-17-1" name="__codelineno-17-1" href="#__codelineno-17-1"></a>planopticon export exchange DB_PATH [OPTIONS]
3161
</code></pre></div>
3162
<table>
3163
<thead>
3164
<tr>
3165
<th>Option</th>
3166
<th>Short</th>
3167
<th>Default</th>
3168
<th>Description</th>
3169
</tr>
3170
</thead>
3171
<tbody>
3172
<tr>
3173
<td><code>--output</code></td>
3174
<td><code>-o</code></td>
3175
<td><code>./exchange.json</code></td>
3176
<td>Output JSON file path</td>
3177
</tr>
3178
<tr>
3179
<td><code>--name</code></td>
3180
<td></td>
3181
<td><code>Untitled</code></td>
3182
<td>Project name for the exchange payload</td>
3183
</tr>
3184
<tr>
3185
<td><code>--description</code></td>
3186
<td></td>
3187
<td>(empty)</td>
3188
<td>Project description</td>
3189
</tr>
3190
</tbody>
3191
</table>
3192
<p><strong>Examples:</strong></p>
3193
<div class="highlight"><pre><span></span><code><a id="__codelineno-18-1" name="__codelineno-18-1" href="#__codelineno-18-1"></a><span class="c1"># Basic export</span>
3194
<a id="__codelineno-18-2" name="__codelineno-18-2" href="#__codelineno-18-2"></a>planopticon<span class="w"> </span><span class="nb">export</span><span class="w"> </span>exchange<span class="w"> </span>knowledge_graph.db
3195
<a id="__codelineno-18-3" name="__codelineno-18-3" href="#__codelineno-18-3"></a>
3196
<a id="__codelineno-18-4" name="__codelineno-18-4" href="#__codelineno-18-4"></a><span class="c1"># With project metadata</span>
3197
<a id="__codelineno-18-5" name="__codelineno-18-5" href="#__codelineno-18-5"></a>planopticon<span class="w"> </span><span class="nb">export</span><span class="w"> </span>exchange<span class="w"> </span>kg.db<span class="w"> </span>-o<span class="w"> </span>exchange.json<span class="w"> </span>--name<span class="w"> </span><span class="s2">&quot;My Project&quot;</span><span class="w"> </span>--description<span class="w"> </span><span class="s2">&quot;Sprint 3 analysis&quot;</span>
3198
</code></pre></div>
3199
<h3 id="schema">Schema<a class="headerlink" href="#schema" title="Permanent link">&para;</a></h3>
3200
<p>The exchange format has the following top-level structure:</p>
3201
<div class="highlight"><pre><span></span><code><a id="__codelineno-19-1" name="__codelineno-19-1" href="#__codelineno-19-1"></a><span class="p">{</span>
3202
<a id="__codelineno-19-2" name="__codelineno-19-2" href="#__codelineno-19-2"></a><span class="w"> </span><span class="nt">&quot;version&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;1.0&quot;</span><span class="p">,</span>
3203
<a id="__codelineno-19-3" name="__codelineno-19-3" href="#__codelineno-19-3"></a><span class="w"> </span><span class="nt">&quot;project&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>
3204
<a id="__codelineno-19-4" name="__codelineno-19-4" href="#__codelineno-19-4"></a><span class="w"> </span><span class="nt">&quot;name&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;My Project&quot;</span><span class="p">,</span>
3205
<a id="__codelineno-19-5" name="__codelineno-19-5" href="#__codelineno-19-5"></a><span class="w"> </span><span class="nt">&quot;description&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;Sprint 3 analysis&quot;</span><span class="p">,</span>
3206
<a id="__codelineno-19-6" name="__codelineno-19-6" href="#__codelineno-19-6"></a><span class="w"> </span><span class="nt">&quot;created_at&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;2026-03-07T10:30:00.000000&quot;</span><span class="p">,</span>
3207
<a id="__codelineno-19-7" name="__codelineno-19-7" href="#__codelineno-19-7"></a><span class="w"> </span><span class="nt">&quot;updated_at&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;2026-03-07T10:30:00.000000&quot;</span><span class="p">,</span>
3208
<a id="__codelineno-19-8" name="__codelineno-19-8" href="#__codelineno-19-8"></a><span class="w"> </span><span class="nt">&quot;tags&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="s2">&quot;sprint-3&quot;</span><span class="p">,</span><span class="w"> </span><span class="s2">&quot;backend&quot;</span><span class="p">]</span>
3209
<a id="__codelineno-19-9" name="__codelineno-19-9" href="#__codelineno-19-9"></a><span class="w"> </span><span class="p">},</span>
3210
<a id="__codelineno-19-10" name="__codelineno-19-10" href="#__codelineno-19-10"></a><span class="w"> </span><span class="nt">&quot;entities&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">[</span>
3211
<a id="__codelineno-19-11" name="__codelineno-19-11" href="#__codelineno-19-11"></a><span class="w"> </span><span class="p">{</span>
3212
<a id="__codelineno-19-12" name="__codelineno-19-12" href="#__codelineno-19-12"></a><span class="w"> </span><span class="nt">&quot;name&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;Python&quot;</span><span class="p">,</span>
3213
<a id="__codelineno-19-13" name="__codelineno-19-13" href="#__codelineno-19-13"></a><span class="w"> </span><span class="nt">&quot;type&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;technology&quot;</span><span class="p">,</span>
3214
<a id="__codelineno-19-14" name="__codelineno-19-14" href="#__codelineno-19-14"></a><span class="w"> </span><span class="nt">&quot;descriptions&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="s2">&quot;A high-level programming language&quot;</span><span class="p">],</span>
3215
<a id="__codelineno-19-15" name="__codelineno-19-15" href="#__codelineno-19-15"></a><span class="w"> </span><span class="nt">&quot;source&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;transcript&quot;</span><span class="p">,</span>
3216
<a id="__codelineno-19-16" name="__codelineno-19-16" href="#__codelineno-19-16"></a><span class="w"> </span><span class="nt">&quot;occurrences&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">[</span>
3217
<a id="__codelineno-19-17" name="__codelineno-19-17" href="#__codelineno-19-17"></a><span class="w"> </span><span class="p">{</span>
3218
<a id="__codelineno-19-18" name="__codelineno-19-18" href="#__codelineno-19-18"></a><span class="w"> </span><span class="nt">&quot;source&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;meeting.mp4&quot;</span><span class="p">,</span>
3219
<a id="__codelineno-19-19" name="__codelineno-19-19" href="#__codelineno-19-19"></a><span class="w"> </span><span class="nt">&quot;timestamp&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;00:05:23&quot;</span><span class="p">,</span>
3220
<a id="__codelineno-19-20" name="__codelineno-19-20" href="#__codelineno-19-20"></a><span class="w"> </span><span class="nt">&quot;text&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;We should use Python for the backend&quot;</span>
3221
<a id="__codelineno-19-21" name="__codelineno-19-21" href="#__codelineno-19-21"></a><span class="w"> </span><span class="p">}</span>
3222
<a id="__codelineno-19-22" name="__codelineno-19-22" href="#__codelineno-19-22"></a><span class="w"> </span><span class="p">]</span>
3223
<a id="__codelineno-19-23" name="__codelineno-19-23" href="#__codelineno-19-23"></a><span class="w"> </span><span class="p">}</span>
3224
<a id="__codelineno-19-24" name="__codelineno-19-24" href="#__codelineno-19-24"></a><span class="w"> </span><span class="p">],</span>
3225
<a id="__codelineno-19-25" name="__codelineno-19-25" href="#__codelineno-19-25"></a><span class="w"> </span><span class="nt">&quot;relationships&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">[</span>
3226
<a id="__codelineno-19-26" name="__codelineno-19-26" href="#__codelineno-19-26"></a><span class="w"> </span><span class="p">{</span>
3227
<a id="__codelineno-19-27" name="__codelineno-19-27" href="#__codelineno-19-27"></a><span class="w"> </span><span class="nt">&quot;source&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;Python&quot;</span><span class="p">,</span>
3228
<a id="__codelineno-19-28" name="__codelineno-19-28" href="#__codelineno-19-28"></a><span class="w"> </span><span class="nt">&quot;target&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;Backend Service&quot;</span><span class="p">,</span>
3229
<a id="__codelineno-19-29" name="__codelineno-19-29" href="#__codelineno-19-29"></a><span class="w"> </span><span class="nt">&quot;type&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;used_by&quot;</span><span class="p">,</span>
3230
<a id="__codelineno-19-30" name="__codelineno-19-30" href="#__codelineno-19-30"></a><span class="w"> </span><span class="nt">&quot;content_source&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;transcript:meeting.mp4&quot;</span><span class="p">,</span>
3231
<a id="__codelineno-19-31" name="__codelineno-19-31" href="#__codelineno-19-31"></a><span class="w"> </span><span class="nt">&quot;timestamp&quot;</span><span class="p">:</span><span class="w"> </span><span class="mf">323.0</span>
3232
<a id="__codelineno-19-32" name="__codelineno-19-32" href="#__codelineno-19-32"></a><span class="w"> </span><span class="p">}</span>
3233
<a id="__codelineno-19-33" name="__codelineno-19-33" href="#__codelineno-19-33"></a><span class="w"> </span><span class="p">],</span>
3234
<a id="__codelineno-19-34" name="__codelineno-19-34" href="#__codelineno-19-34"></a><span class="w"> </span><span class="nt">&quot;artifacts&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">[</span>
3235
<a id="__codelineno-19-35" name="__codelineno-19-35" href="#__codelineno-19-35"></a><span class="w"> </span><span class="p">{</span>
3236
<a id="__codelineno-19-36" name="__codelineno-19-36" href="#__codelineno-19-36"></a><span class="w"> </span><span class="nt">&quot;name&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;Project Plan&quot;</span><span class="p">,</span>
3237
<a id="__codelineno-19-37" name="__codelineno-19-37" href="#__codelineno-19-37"></a><span class="w"> </span><span class="nt">&quot;content&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;# Project Plan\n\n...&quot;</span><span class="p">,</span>
3238
<a id="__codelineno-19-38" name="__codelineno-19-38" href="#__codelineno-19-38"></a><span class="w"> </span><span class="nt">&quot;artifact_type&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;project_plan&quot;</span><span class="p">,</span>
3239
<a id="__codelineno-19-39" name="__codelineno-19-39" href="#__codelineno-19-39"></a><span class="w"> </span><span class="nt">&quot;format&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;markdown&quot;</span><span class="p">,</span>
3240
<a id="__codelineno-19-40" name="__codelineno-19-40" href="#__codelineno-19-40"></a><span class="w"> </span><span class="nt">&quot;metadata&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">{}</span>
3241
<a id="__codelineno-19-41" name="__codelineno-19-41" href="#__codelineno-19-41"></a><span class="w"> </span><span class="p">}</span>
3242
<a id="__codelineno-19-42" name="__codelineno-19-42" href="#__codelineno-19-42"></a><span class="w"> </span><span class="p">],</span>
3243
<a id="__codelineno-19-43" name="__codelineno-19-43" href="#__codelineno-19-43"></a><span class="w"> </span><span class="nt">&quot;sources&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">[</span>
3244
<a id="__codelineno-19-44" name="__codelineno-19-44" href="#__codelineno-19-44"></a><span class="w"> </span><span class="p">{</span>
3245
<a id="__codelineno-19-45" name="__codelineno-19-45" href="#__codelineno-19-45"></a><span class="w"> </span><span class="nt">&quot;source_id&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;abc123&quot;</span><span class="p">,</span>
3246
<a id="__codelineno-19-46" name="__codelineno-19-46" href="#__codelineno-19-46"></a><span class="w"> </span><span class="nt">&quot;source_type&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;video&quot;</span><span class="p">,</span>
3247
<a id="__codelineno-19-47" name="__codelineno-19-47" href="#__codelineno-19-47"></a><span class="w"> </span><span class="nt">&quot;title&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;Sprint Planning Meeting&quot;</span><span class="p">,</span>
3248
<a id="__codelineno-19-48" name="__codelineno-19-48" href="#__codelineno-19-48"></a><span class="w"> </span><span class="nt">&quot;path&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;/recordings/meeting.mp4&quot;</span><span class="p">,</span>
3249
<a id="__codelineno-19-49" name="__codelineno-19-49" href="#__codelineno-19-49"></a><span class="w"> </span><span class="nt">&quot;url&quot;</span><span class="p">:</span><span class="w"> </span><span class="kc">null</span><span class="p">,</span>
3250
<a id="__codelineno-19-50" name="__codelineno-19-50" href="#__codelineno-19-50"></a><span class="w"> </span><span class="nt">&quot;mime_type&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;video/mp4&quot;</span><span class="p">,</span>
3251
<a id="__codelineno-19-51" name="__codelineno-19-51" href="#__codelineno-19-51"></a><span class="w"> </span><span class="nt">&quot;ingested_at&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;2026-03-07T10:00:00.000000&quot;</span><span class="p">,</span>
3252
<a id="__codelineno-19-52" name="__codelineno-19-52" href="#__codelineno-19-52"></a><span class="w"> </span><span class="nt">&quot;metadata&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">{}</span>
3253
<a id="__codelineno-19-53" name="__codelineno-19-53" href="#__codelineno-19-53"></a><span class="w"> </span><span class="p">}</span>
3254
<a id="__codelineno-19-54" name="__codelineno-19-54" href="#__codelineno-19-54"></a><span class="w"> </span><span class="p">]</span>
3255
<a id="__codelineno-19-55" name="__codelineno-19-55" href="#__codelineno-19-55"></a><span class="p">}</span>
3256
</code></pre></div>
3257
<p><strong>Top-level fields:</strong></p>
3258
<table>
3259
<thead>
3260
<tr>
3261
<th>Field</th>
3262
<th>Type</th>
3263
<th>Description</th>
3264
</tr>
3265
</thead>
3266
<tbody>
3267
<tr>
3268
<td><code>version</code></td>
3269
<td><code>str</code></td>
3270
<td>Schema version (currently <code>"1.0"</code>)</td>
3271
</tr>
3272
<tr>
3273
<td><code>project</code></td>
3274
<td><code>ProjectMeta</code></td>
3275
<td>Project-level metadata</td>
3276
</tr>
3277
<tr>
3278
<td><code>entities</code></td>
3279
<td><code>List[Entity]</code></td>
3280
<td>Knowledge graph entities</td>
3281
</tr>
3282
<tr>
3283
<td><code>relationships</code></td>
3284
<td><code>List[Relationship]</code></td>
3285
<td>Knowledge graph relationships</td>
3286
</tr>
3287
<tr>
3288
<td><code>artifacts</code></td>
3289
<td><code>List[ArtifactMeta]</code></td>
3290
<td>Generated artifacts (plans, PRDs, etc.)</td>
3291
</tr>
3292
<tr>
3293
<td><code>sources</code></td>
3294
<td><code>List[SourceRecord]</code></td>
3295
<td>Content source provenance records</td>
3296
</tr>
3297
</tbody>
3298
</table>
3299
<h3 id="merging-exchange-files">Merging exchange files<a class="headerlink" href="#merging-exchange-files" title="Permanent link">&para;</a></h3>
3300
<p>The exchange format supports merging, with automatic deduplication:</p>
3301
<ul>
3302
<li>Entities are deduplicated by name</li>
3303
<li>Relationships are deduplicated by the tuple <code>(source, target, type)</code></li>
3304
<li>Artifacts are deduplicated by name</li>
3305
<li>Sources are deduplicated by <code>source_id</code></li>
3306
</ul>
3307
<div class="highlight"><pre><span></span><code><a id="__codelineno-20-1" name="__codelineno-20-1" href="#__codelineno-20-1"></a><span class="kn">from</span><span class="w"> </span><span class="nn">video_processor.exchange</span><span class="w"> </span><span class="kn">import</span> <span class="n">PlanOpticonExchange</span>
3308
<a id="__codelineno-20-2" name="__codelineno-20-2" href="#__codelineno-20-2"></a>
3309
<a id="__codelineno-20-3" name="__codelineno-20-3" href="#__codelineno-20-3"></a><span class="c1"># Load two exchange files</span>
3310
<a id="__codelineno-20-4" name="__codelineno-20-4" href="#__codelineno-20-4"></a><span class="n">ex1</span> <span class="o">=</span> <span class="n">PlanOpticonExchange</span><span class="o">.</span><span class="n">from_file</span><span class="p">(</span><span class="s2">&quot;sprint-1.json&quot;</span><span class="p">)</span>
3311
<a id="__codelineno-20-5" name="__codelineno-20-5" href="#__codelineno-20-5"></a><span class="n">ex2</span> <span class="o">=</span> <span class="n">PlanOpticonExchange</span><span class="o">.</span><span class="n">from_file</span><span class="p">(</span><span class="s2">&quot;sprint-2.json&quot;</span><span class="p">)</span>
3312
<a id="__codelineno-20-6" name="__codelineno-20-6" href="#__codelineno-20-6"></a>
3313
<a id="__codelineno-20-7" name="__codelineno-20-7" href="#__codelineno-20-7"></a><span class="c1"># Merge ex2 into ex1</span>
3314
<a id="__codelineno-20-8" name="__codelineno-20-8" href="#__codelineno-20-8"></a><span class="n">ex1</span><span class="o">.</span><span class="n">merge</span><span class="p">(</span><span class="n">ex2</span><span class="p">)</span>
3315
<a id="__codelineno-20-9" name="__codelineno-20-9" href="#__codelineno-20-9"></a>
3316
<a id="__codelineno-20-10" name="__codelineno-20-10" href="#__codelineno-20-10"></a><span class="c1"># Save the combined result</span>
3317
<a id="__codelineno-20-11" name="__codelineno-20-11" href="#__codelineno-20-11"></a><span class="n">ex1</span><span class="o">.</span><span class="n">to_file</span><span class="p">(</span><span class="s2">&quot;combined.json&quot;</span><span class="p">)</span>
3318
</code></pre></div>
3319
<p>The <code>project.updated_at</code> timestamp is updated automatically on merge.</p>
3320
<h3 id="python-api">Python API<a class="headerlink" href="#python-api" title="Permanent link">&para;</a></h3>
3321
<p><strong>Create from a knowledge graph:</strong></p>
3322
<div class="highlight"><pre><span></span><code><a id="__codelineno-21-1" name="__codelineno-21-1" href="#__codelineno-21-1"></a><span class="kn">from</span><span class="w"> </span><span class="nn">video_processor.exchange</span><span class="w"> </span><span class="kn">import</span> <span class="n">PlanOpticonExchange</span>
3323
<a id="__codelineno-21-2" name="__codelineno-21-2" href="#__codelineno-21-2"></a><span class="kn">from</span><span class="w"> </span><span class="nn">video_processor.integrators.knowledge_graph</span><span class="w"> </span><span class="kn">import</span> <span class="n">KnowledgeGraph</span>
3324
<a id="__codelineno-21-3" name="__codelineno-21-3" href="#__codelineno-21-3"></a>
3325
<a id="__codelineno-21-4" name="__codelineno-21-4" href="#__codelineno-21-4"></a><span class="n">kg</span> <span class="o">=</span> <span class="n">KnowledgeGraph</span><span class="p">(</span><span class="n">db_path</span><span class="o">=</span><span class="s2">&quot;knowledge_graph.db&quot;</span><span class="p">)</span>
3326
<a id="__codelineno-21-5" name="__codelineno-21-5" href="#__codelineno-21-5"></a><span class="n">kg_data</span> <span class="o">=</span> <span class="n">kg</span><span class="o">.</span><span class="n">to_dict</span><span class="p">()</span>
3327
<a id="__codelineno-21-6" name="__codelineno-21-6" href="#__codelineno-21-6"></a>
3328
<a id="__codelineno-21-7" name="__codelineno-21-7" href="#__codelineno-21-7"></a><span class="n">exchange</span> <span class="o">=</span> <span class="n">PlanOpticonExchange</span><span class="o">.</span><span class="n">from_knowledge_graph</span><span class="p">(</span>
3329
<a id="__codelineno-21-8" name="__codelineno-21-8" href="#__codelineno-21-8"></a> <span class="n">kg_data</span><span class="p">,</span>
3330
<a id="__codelineno-21-9" name="__codelineno-21-9" href="#__codelineno-21-9"></a> <span class="n">project_name</span><span class="o">=</span><span class="s2">&quot;My Project&quot;</span><span class="p">,</span>
3331
<a id="__codelineno-21-10" name="__codelineno-21-10" href="#__codelineno-21-10"></a> <span class="n">project_description</span><span class="o">=</span><span class="s2">&quot;Analysis of sprint planning meetings&quot;</span><span class="p">,</span>
3332
<a id="__codelineno-21-11" name="__codelineno-21-11" href="#__codelineno-21-11"></a> <span class="n">tags</span><span class="o">=</span><span class="p">[</span><span class="s2">&quot;planning&quot;</span><span class="p">,</span> <span class="s2">&quot;backend&quot;</span><span class="p">],</span>
3333
<a id="__codelineno-21-12" name="__codelineno-21-12" href="#__codelineno-21-12"></a><span class="p">)</span>
3334
</code></pre></div>
3335
<p><strong>Save and load:</strong></p>
3336
<div class="highlight"><pre><span></span><code><a id="__codelineno-22-1" name="__codelineno-22-1" href="#__codelineno-22-1"></a><span class="c1"># Save to file</span>
3337
<a id="__codelineno-22-2" name="__codelineno-22-2" href="#__codelineno-22-2"></a><span class="n">exchange</span><span class="o">.</span><span class="n">to_file</span><span class="p">(</span><span class="s2">&quot;exchange.json&quot;</span><span class="p">)</span>
3338
<a id="__codelineno-22-3" name="__codelineno-22-3" href="#__codelineno-22-3"></a>
3339
<a id="__codelineno-22-4" name="__codelineno-22-4" href="#__codelineno-22-4"></a><span class="c1"># Load from file</span>
3340
<a id="__codelineno-22-5" name="__codelineno-22-5" href="#__codelineno-22-5"></a><span class="n">loaded</span> <span class="o">=</span> <span class="n">PlanOpticonExchange</span><span class="o">.</span><span class="n">from_file</span><span class="p">(</span><span class="s2">&quot;exchange.json&quot;</span><span class="p">)</span>
3341
</code></pre></div>
3342
<p><strong>Get JSON Schema:</strong></p>
3343
<div class="highlight"><pre><span></span><code><a id="__codelineno-23-1" name="__codelineno-23-1" href="#__codelineno-23-1"></a><span class="n">schema</span> <span class="o">=</span> <span class="n">PlanOpticonExchange</span><span class="o">.</span><span class="n">json_schema</span><span class="p">()</span>
3344
</code></pre></div>
3345
<p>This returns the full JSON Schema for validation and documentation purposes.</p>
3346
<h2 id="python-api-for-all-exporters">Python API for all exporters<a class="headerlink" href="#python-api-for-all-exporters" title="Permanent link">&para;</a></h2>
3347
<h3 id="markdown-document-generation">Markdown document generation<a class="headerlink" href="#markdown-document-generation" title="Permanent link">&para;</a></h3>
3348
<div class="highlight"><pre><span></span><code><a id="__codelineno-24-1" name="__codelineno-24-1" href="#__codelineno-24-1"></a><span class="kn">from</span><span class="w"> </span><span class="nn">pathlib</span><span class="w"> </span><span class="kn">import</span> <span class="n">Path</span>
3349
<a id="__codelineno-24-2" name="__codelineno-24-2" href="#__codelineno-24-2"></a><span class="kn">from</span><span class="w"> </span><span class="nn">video_processor.exporters.markdown</span><span class="w"> </span><span class="kn">import</span> <span class="p">(</span>
3350
<a id="__codelineno-24-3" name="__codelineno-24-3" href="#__codelineno-24-3"></a> <span class="n">generate_all</span><span class="p">,</span>
3351
<a id="__codelineno-24-4" name="__codelineno-24-4" href="#__codelineno-24-4"></a> <span class="n">generate_executive_summary</span><span class="p">,</span>
3352
<a id="__codelineno-24-5" name="__codelineno-24-5" href="#__codelineno-24-5"></a> <span class="n">generate_meeting_notes</span><span class="p">,</span>
3353
<a id="__codelineno-24-6" name="__codelineno-24-6" href="#__codelineno-24-6"></a> <span class="n">generate_glossary</span><span class="p">,</span>
3354
<a id="__codelineno-24-7" name="__codelineno-24-7" href="#__codelineno-24-7"></a> <span class="n">generate_relationship_map</span><span class="p">,</span>
3355
<a id="__codelineno-24-8" name="__codelineno-24-8" href="#__codelineno-24-8"></a> <span class="n">generate_status_report</span><span class="p">,</span>
3356
<a id="__codelineno-24-9" name="__codelineno-24-9" href="#__codelineno-24-9"></a> <span class="n">generate_entity_index</span><span class="p">,</span>
3357
<a id="__codelineno-24-10" name="__codelineno-24-10" href="#__codelineno-24-10"></a> <span class="n">generate_csv_export</span><span class="p">,</span>
3358
<a id="__codelineno-24-11" name="__codelineno-24-11" href="#__codelineno-24-11"></a> <span class="n">generate_entity_brief</span><span class="p">,</span>
3359
<a id="__codelineno-24-12" name="__codelineno-24-12" href="#__codelineno-24-12"></a> <span class="n">DOCUMENT_TYPES</span><span class="p">,</span>
3360
<a id="__codelineno-24-13" name="__codelineno-24-13" href="#__codelineno-24-13"></a><span class="p">)</span>
3361
<a id="__codelineno-24-14" name="__codelineno-24-14" href="#__codelineno-24-14"></a><span class="kn">from</span><span class="w"> </span><span class="nn">video_processor.integrators.knowledge_graph</span><span class="w"> </span><span class="kn">import</span> <span class="n">KnowledgeGraph</span>
3362
<a id="__codelineno-24-15" name="__codelineno-24-15" href="#__codelineno-24-15"></a>
3363
<a id="__codelineno-24-16" name="__codelineno-24-16" href="#__codelineno-24-16"></a><span class="n">kg</span> <span class="o">=</span> <span class="n">KnowledgeGraph</span><span class="p">(</span><span class="n">db_path</span><span class="o">=</span><span class="n">Path</span><span class="p">(</span><span class="s2">&quot;knowledge_graph.db&quot;</span><span class="p">))</span>
3364
<a id="__codelineno-24-17" name="__codelineno-24-17" href="#__codelineno-24-17"></a><span class="n">kg_data</span> <span class="o">=</span> <span class="n">kg</span><span class="o">.</span><span class="n">to_dict</span><span class="p">()</span>
3365
<a id="__codelineno-24-18" name="__codelineno-24-18" href="#__codelineno-24-18"></a>
3366
<a id="__codelineno-24-19" name="__codelineno-24-19" href="#__codelineno-24-19"></a><span class="c1"># Generate all document types at once</span>
3367
<a id="__codelineno-24-20" name="__codelineno-24-20" href="#__codelineno-24-20"></a><span class="n">created_files</span> <span class="o">=</span> <span class="n">generate_all</span><span class="p">(</span><span class="n">kg_data</span><span class="p">,</span> <span class="n">Path</span><span class="p">(</span><span class="s2">&quot;./export&quot;</span><span class="p">))</span>
3368
<a id="__codelineno-24-21" name="__codelineno-24-21" href="#__codelineno-24-21"></a>
3369
<a id="__codelineno-24-22" name="__codelineno-24-22" href="#__codelineno-24-22"></a><span class="c1"># Generate specific document types</span>
3370
<a id="__codelineno-24-23" name="__codelineno-24-23" href="#__codelineno-24-23"></a><span class="n">created_files</span> <span class="o">=</span> <span class="n">generate_all</span><span class="p">(</span>
3371
<a id="__codelineno-24-24" name="__codelineno-24-24" href="#__codelineno-24-24"></a> <span class="n">kg_data</span><span class="p">,</span>
3372
<a id="__codelineno-24-25" name="__codelineno-24-25" href="#__codelineno-24-25"></a> <span class="n">Path</span><span class="p">(</span><span class="s2">&quot;./export&quot;</span><span class="p">),</span>
3373
<a id="__codelineno-24-26" name="__codelineno-24-26" href="#__codelineno-24-26"></a> <span class="n">doc_types</span><span class="o">=</span><span class="p">[</span><span class="s2">&quot;summary&quot;</span><span class="p">,</span> <span class="s2">&quot;glossary&quot;</span><span class="p">,</span> <span class="s2">&quot;csv&quot;</span><span class="p">],</span>
3374
<a id="__codelineno-24-27" name="__codelineno-24-27" href="#__codelineno-24-27"></a><span class="p">)</span>
3375
<a id="__codelineno-24-28" name="__codelineno-24-28" href="#__codelineno-24-28"></a>
3376
<a id="__codelineno-24-29" name="__codelineno-24-29" href="#__codelineno-24-29"></a><span class="c1"># Generate individual documents (returns markdown string)</span>
3377
<a id="__codelineno-24-30" name="__codelineno-24-30" href="#__codelineno-24-30"></a><span class="n">summary</span> <span class="o">=</span> <span class="n">generate_executive_summary</span><span class="p">(</span><span class="n">kg_data</span><span class="p">)</span>
3378
<a id="__codelineno-24-31" name="__codelineno-24-31" href="#__codelineno-24-31"></a><span class="n">notes</span> <span class="o">=</span> <span class="n">generate_meeting_notes</span><span class="p">(</span><span class="n">kg_data</span><span class="p">,</span> <span class="n">title</span><span class="o">=</span><span class="s2">&quot;Sprint Planning&quot;</span><span class="p">)</span>
3379
<a id="__codelineno-24-32" name="__codelineno-24-32" href="#__codelineno-24-32"></a><span class="n">glossary</span> <span class="o">=</span> <span class="n">generate_glossary</span><span class="p">(</span><span class="n">kg_data</span><span class="p">)</span>
3380
<a id="__codelineno-24-33" name="__codelineno-24-33" href="#__codelineno-24-33"></a><span class="n">rel_map</span> <span class="o">=</span> <span class="n">generate_relationship_map</span><span class="p">(</span><span class="n">kg_data</span><span class="p">)</span>
3381
<a id="__codelineno-24-34" name="__codelineno-24-34" href="#__codelineno-24-34"></a><span class="n">status</span> <span class="o">=</span> <span class="n">generate_status_report</span><span class="p">(</span><span class="n">kg_data</span><span class="p">,</span> <span class="n">title</span><span class="o">=</span><span class="s2">&quot;Q1 Status&quot;</span><span class="p">)</span>
3382
<a id="__codelineno-24-35" name="__codelineno-24-35" href="#__codelineno-24-35"></a><span class="n">index</span> <span class="o">=</span> <span class="n">generate_entity_index</span><span class="p">(</span><span class="n">kg_data</span><span class="p">)</span>
3383
<a id="__codelineno-24-36" name="__codelineno-24-36" href="#__codelineno-24-36"></a><span class="n">csv_text</span> <span class="o">=</span> <span class="n">generate_csv_export</span><span class="p">(</span><span class="n">kg_data</span><span class="p">)</span>
3384
<a id="__codelineno-24-37" name="__codelineno-24-37" href="#__codelineno-24-37"></a>
3385
<a id="__codelineno-24-38" name="__codelineno-24-38" href="#__codelineno-24-38"></a><span class="c1"># Generate a brief for a single entity</span>
3386
<a id="__codelineno-24-39" name="__codelineno-24-39" href="#__codelineno-24-39"></a><span class="n">entity</span> <span class="o">=</span> <span class="n">kg_data</span><span class="p">[</span><span class="s2">&quot;nodes&quot;</span><span class="p">][</span><span class="mi">0</span><span class="p">]</span>
3387
<a id="__codelineno-24-40" name="__codelineno-24-40" href="#__codelineno-24-40"></a><span class="n">relationships</span> <span class="o">=</span> <span class="n">kg_data</span><span class="p">[</span><span class="s2">&quot;relationships&quot;</span><span class="p">]</span>
3388
<a id="__codelineno-24-41" name="__codelineno-24-41" href="#__codelineno-24-41"></a><span class="n">brief</span> <span class="o">=</span> <span class="n">generate_entity_brief</span><span class="p">(</span><span class="n">entity</span><span class="p">,</span> <span class="n">relationships</span><span class="p">)</span>
3389
</code></pre></div>
3390
<h3 id="obsidian-export">Obsidian export<a class="headerlink" href="#obsidian-export" title="Permanent link">&para;</a></h3>
3391
<div class="highlight"><pre><span></span><code><a id="__codelineno-25-1" name="__codelineno-25-1" href="#__codelineno-25-1"></a><span class="kn">from</span><span class="w"> </span><span class="nn">pathlib</span><span class="w"> </span><span class="kn">import</span> <span class="n">Path</span>
3392
<a id="__codelineno-25-2" name="__codelineno-25-2" href="#__codelineno-25-2"></a><span class="kn">from</span><span class="w"> </span><span class="nn">video_processor.agent.skills.notes_export</span><span class="w"> </span><span class="kn">import</span> <span class="n">export_to_obsidian</span>
3393
<a id="__codelineno-25-3" name="__codelineno-25-3" href="#__codelineno-25-3"></a><span class="kn">from</span><span class="w"> </span><span class="nn">video_processor.integrators.knowledge_graph</span><span class="w"> </span><span class="kn">import</span> <span class="n">KnowledgeGraph</span>
3394
<a id="__codelineno-25-4" name="__codelineno-25-4" href="#__codelineno-25-4"></a>
3395
<a id="__codelineno-25-5" name="__codelineno-25-5" href="#__codelineno-25-5"></a><span class="n">kg</span> <span class="o">=</span> <span class="n">KnowledgeGraph</span><span class="p">(</span><span class="n">db_path</span><span class="o">=</span><span class="n">Path</span><span class="p">(</span><span class="s2">&quot;knowledge_graph.db&quot;</span><span class="p">))</span>
3396
<a id="__codelineno-25-6" name="__codelineno-25-6" href="#__codelineno-25-6"></a><span class="n">kg_data</span> <span class="o">=</span> <span class="n">kg</span><span class="o">.</span><span class="n">to_dict</span><span class="p">()</span>
3397
<a id="__codelineno-25-7" name="__codelineno-25-7" href="#__codelineno-25-7"></a>
3398
<a id="__codelineno-25-8" name="__codelineno-25-8" href="#__codelineno-25-8"></a><span class="n">created_files</span> <span class="o">=</span> <span class="n">export_to_obsidian</span><span class="p">(</span><span class="n">kg_data</span><span class="p">,</span> <span class="n">Path</span><span class="p">(</span><span class="s2">&quot;./obsidian-vault&quot;</span><span class="p">))</span>
3399
<a id="__codelineno-25-9" name="__codelineno-25-9" href="#__codelineno-25-9"></a><span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Created </span><span class="si">{</span><span class="nb">len</span><span class="p">(</span><span class="n">created_files</span><span class="p">)</span><span class="si">}</span><span class="s2"> files&quot;</span><span class="p">)</span>
3400
</code></pre></div>
3401
<h3 id="notion-export">Notion export<a class="headerlink" href="#notion-export" title="Permanent link">&para;</a></h3>
3402
<div class="highlight"><pre><span></span><code><a id="__codelineno-26-1" name="__codelineno-26-1" href="#__codelineno-26-1"></a><span class="kn">from</span><span class="w"> </span><span class="nn">pathlib</span><span class="w"> </span><span class="kn">import</span> <span class="n">Path</span>
3403
<a id="__codelineno-26-2" name="__codelineno-26-2" href="#__codelineno-26-2"></a><span class="kn">from</span><span class="w"> </span><span class="nn">video_processor.agent.skills.notes_export</span><span class="w"> </span><span class="kn">import</span> <span class="n">export_to_notion_md</span>
3404
<a id="__codelineno-26-3" name="__codelineno-26-3" href="#__codelineno-26-3"></a><span class="kn">from</span><span class="w"> </span><span class="nn">video_processor.integrators.knowledge_graph</span><span class="w"> </span><span class="kn">import</span> <span class="n">KnowledgeGraph</span>
3405
<a id="__codelineno-26-4" name="__codelineno-26-4" href="#__codelineno-26-4"></a>
3406
<a id="__codelineno-26-5" name="__codelineno-26-5" href="#__codelineno-26-5"></a><span class="n">kg</span> <span class="o">=</span> <span class="n">KnowledgeGraph</span><span class="p">(</span><span class="n">db_path</span><span class="o">=</span><span class="n">Path</span><span class="p">(</span><span class="s2">&quot;knowledge_graph.db&quot;</span><span class="p">))</span>
3407
<a id="__codelineno-26-6" name="__codelineno-26-6" href="#__codelineno-26-6"></a><span class="n">kg_data</span> <span class="o">=</span> <span class="n">kg</span><span class="o">.</span><span class="n">to_dict</span><span class="p">()</span>
3408
<a id="__codelineno-26-7" name="__codelineno-26-7" href="#__codelineno-26-7"></a>
3409
<a id="__codelineno-26-8" name="__codelineno-26-8" href="#__codelineno-26-8"></a><span class="n">created_files</span> <span class="o">=</span> <span class="n">export_to_notion_md</span><span class="p">(</span><span class="n">kg_data</span><span class="p">,</span> <span class="n">Path</span><span class="p">(</span><span class="s2">&quot;./notion-export&quot;</span><span class="p">))</span>
3410
</code></pre></div>
3411
<h3 id="wiki-generation">Wiki generation<a class="headerlink" href="#wiki-generation" title="Permanent link">&para;</a></h3>
3412
<div class="highlight"><pre><span></span><code><a id="__codelineno-27-1" name="__codelineno-27-1" href="#__codelineno-27-1"></a><span class="kn">from</span><span class="w"> </span><span class="nn">pathlib</span><span class="w"> </span><span class="kn">import</span> <span class="n">Path</span>
3413
<a id="__codelineno-27-2" name="__codelineno-27-2" href="#__codelineno-27-2"></a><span class="kn">from</span><span class="w"> </span><span class="nn">video_processor.agent.skills.wiki_generator</span><span class="w"> </span><span class="kn">import</span> <span class="p">(</span>
3414
<a id="__codelineno-27-3" name="__codelineno-27-3" href="#__codelineno-27-3"></a> <span class="n">generate_wiki</span><span class="p">,</span>
3415
<a id="__codelineno-27-4" name="__codelineno-27-4" href="#__codelineno-27-4"></a> <span class="n">write_wiki</span><span class="p">,</span>
3416
<a id="__codelineno-27-5" name="__codelineno-27-5" href="#__codelineno-27-5"></a> <span class="n">push_wiki</span><span class="p">,</span>
3417
<a id="__codelineno-27-6" name="__codelineno-27-6" href="#__codelineno-27-6"></a><span class="p">)</span>
3418
<a id="__codelineno-27-7" name="__codelineno-27-7" href="#__codelineno-27-7"></a><span class="kn">from</span><span class="w"> </span><span class="nn">video_processor.integrators.knowledge_graph</span><span class="w"> </span><span class="kn">import</span> <span class="n">KnowledgeGraph</span>
3419
<a id="__codelineno-27-8" name="__codelineno-27-8" href="#__codelineno-27-8"></a>
3420
<a id="__codelineno-27-9" name="__codelineno-27-9" href="#__codelineno-27-9"></a><span class="n">kg</span> <span class="o">=</span> <span class="n">KnowledgeGraph</span><span class="p">(</span><span class="n">db_path</span><span class="o">=</span><span class="n">Path</span><span class="p">(</span><span class="s2">&quot;knowledge_graph.db&quot;</span><span class="p">))</span>
3421
<a id="__codelineno-27-10" name="__codelineno-27-10" href="#__codelineno-27-10"></a><span class="n">kg_data</span> <span class="o">=</span> <span class="n">kg</span><span class="o">.</span><span class="n">to_dict</span><span class="p">()</span>
3422
<a id="__codelineno-27-11" name="__codelineno-27-11" href="#__codelineno-27-11"></a>
3423
<a id="__codelineno-27-12" name="__codelineno-27-12" href="#__codelineno-27-12"></a><span class="c1"># Generate pages as a dict of {filename: content}</span>
3424
<a id="__codelineno-27-13" name="__codelineno-27-13" href="#__codelineno-27-13"></a><span class="n">pages</span> <span class="o">=</span> <span class="n">generate_wiki</span><span class="p">(</span><span class="n">kg_data</span><span class="p">,</span> <span class="n">title</span><span class="o">=</span><span class="s2">&quot;Project Wiki&quot;</span><span class="p">)</span>
3425
<a id="__codelineno-27-14" name="__codelineno-27-14" href="#__codelineno-27-14"></a>
3426
<a id="__codelineno-27-15" name="__codelineno-27-15" href="#__codelineno-27-15"></a><span class="c1"># Write to disk</span>
3427
<a id="__codelineno-27-16" name="__codelineno-27-16" href="#__codelineno-27-16"></a><span class="n">written</span> <span class="o">=</span> <span class="n">write_wiki</span><span class="p">(</span><span class="n">pages</span><span class="p">,</span> <span class="n">Path</span><span class="p">(</span><span class="s2">&quot;./wiki&quot;</span><span class="p">))</span>
3428
<a id="__codelineno-27-17" name="__codelineno-27-17" href="#__codelineno-27-17"></a>
3429
<a id="__codelineno-27-18" name="__codelineno-27-18" href="#__codelineno-27-18"></a><span class="c1"># Push to GitHub (requires git auth)</span>
3430
<a id="__codelineno-27-19" name="__codelineno-27-19" href="#__codelineno-27-19"></a><span class="n">success</span> <span class="o">=</span> <span class="n">push_wiki</span><span class="p">(</span><span class="n">Path</span><span class="p">(</span><span class="s2">&quot;./wiki&quot;</span><span class="p">),</span> <span class="s2">&quot;owner/repo&quot;</span><span class="p">,</span> <span class="n">message</span><span class="o">=</span><span class="s2">&quot;Update wiki&quot;</span><span class="p">)</span>
3431
</code></pre></div>
3432
<h2 id="companion-repl">Companion REPL<a class="headerlink" href="#companion-repl" title="Permanent link">&para;</a></h2>
3433
<p>Inside the interactive companion REPL, use the <code>/export</code> command:</p>
3434
<div class="highlight"><pre><span></span><code><a id="__codelineno-28-1" name="__codelineno-28-1" href="#__codelineno-28-1"></a>&gt; /export markdown
3435
<a id="__codelineno-28-2" name="__codelineno-28-2" href="#__codelineno-28-2"></a>Export &#39;markdown&#39; requested. Use the CLI command:
3436
<a id="__codelineno-28-3" name="__codelineno-28-3" href="#__codelineno-28-3"></a> planopticon export markdown ./knowledge_graph.db
3437
<a id="__codelineno-28-4" name="__codelineno-28-4" href="#__codelineno-28-4"></a>
3438
<a id="__codelineno-28-5" name="__codelineno-28-5" href="#__codelineno-28-5"></a>&gt; /export obsidian
3439
<a id="__codelineno-28-6" name="__codelineno-28-6" href="#__codelineno-28-6"></a>Export &#39;obsidian&#39; requested. Use the CLI command:
3440
<a id="__codelineno-28-7" name="__codelineno-28-7" href="#__codelineno-28-7"></a> planopticon export obsidian ./knowledge_graph.db
3441
</code></pre></div>
3442
<p>The REPL provides guidance on the CLI command to run; actual export is performed via the CLI.</p>
3443
<h2 id="common-workflows">Common workflows<a class="headerlink" href="#common-workflows" title="Permanent link">&para;</a></h2>
3444
<h3 id="analyze-videos-and-export-to-obsidian">Analyze videos and export to Obsidian<a class="headerlink" href="#analyze-videos-and-export-to-obsidian" title="Permanent link">&para;</a></h3>
3445
<div class="highlight"><pre><span></span><code><a id="__codelineno-29-1" name="__codelineno-29-1" href="#__codelineno-29-1"></a><span class="c1"># Analyze meeting recordings</span>
3446
<a id="__codelineno-29-2" name="__codelineno-29-2" href="#__codelineno-29-2"></a>planopticon<span class="w"> </span>analyze<span class="w"> </span>meeting-1.mp4<span class="w"> </span>-o<span class="w"> </span>./results
3447
<a id="__codelineno-29-3" name="__codelineno-29-3" href="#__codelineno-29-3"></a>planopticon<span class="w"> </span>analyze<span class="w"> </span>meeting-2.mp4<span class="w"> </span>--db-path<span class="w"> </span>./results/knowledge_graph.db
3448
<a id="__codelineno-29-4" name="__codelineno-29-4" href="#__codelineno-29-4"></a>
3449
<a id="__codelineno-29-5" name="__codelineno-29-5" href="#__codelineno-29-5"></a><span class="c1"># Ingest supplementary docs</span>
3450
<a id="__codelineno-29-6" name="__codelineno-29-6" href="#__codelineno-29-6"></a>planopticon<span class="w"> </span>ingest<span class="w"> </span>./specs/<span class="w"> </span>--db-path<span class="w"> </span>./results/knowledge_graph.db
3451
<a id="__codelineno-29-7" name="__codelineno-29-7" href="#__codelineno-29-7"></a>
3452
<a id="__codelineno-29-8" name="__codelineno-29-8" href="#__codelineno-29-8"></a><span class="c1"># Export to Obsidian vault</span>
3453
<a id="__codelineno-29-9" name="__codelineno-29-9" href="#__codelineno-29-9"></a>planopticon<span class="w"> </span><span class="nb">export</span><span class="w"> </span>obsidian<span class="w"> </span>./results/knowledge_graph.db<span class="w"> </span>-o<span class="w"> </span>~/Obsidian/ProjectVault
3454
<a id="__codelineno-29-10" name="__codelineno-29-10" href="#__codelineno-29-10"></a>
3455
<a id="__codelineno-29-11" name="__codelineno-29-11" href="#__codelineno-29-11"></a><span class="c1"># Open in Obsidian and explore the graph view</span>
3456
</code></pre></div>
3457
<h3 id="generate-project-documentation">Generate project documentation<a class="headerlink" href="#generate-project-documentation" title="Permanent link">&para;</a></h3>
3458
<div class="highlight"><pre><span></span><code><a id="__codelineno-30-1" name="__codelineno-30-1" href="#__codelineno-30-1"></a><span class="c1"># Generate all markdown documents</span>
3459
<a id="__codelineno-30-2" name="__codelineno-30-2" href="#__codelineno-30-2"></a>planopticon<span class="w"> </span><span class="nb">export</span><span class="w"> </span>markdown<span class="w"> </span>knowledge_graph.db<span class="w"> </span>-o<span class="w"> </span>./docs
3460
<a id="__codelineno-30-3" name="__codelineno-30-3" href="#__codelineno-30-3"></a>
3461
<a id="__codelineno-30-4" name="__codelineno-30-4" href="#__codelineno-30-4"></a><span class="c1"># The output includes:</span>
3462
<a id="__codelineno-30-5" name="__codelineno-30-5" href="#__codelineno-30-5"></a><span class="c1"># docs/summary.md - Executive summary</span>
3463
<a id="__codelineno-30-6" name="__codelineno-30-6" href="#__codelineno-30-6"></a><span class="c1"># docs/meeting-notes.md - Meeting notes format</span>
3464
<a id="__codelineno-30-7" name="__codelineno-30-7" href="#__codelineno-30-7"></a><span class="c1"># docs/glossary.md - Entity glossary</span>
3465
<a id="__codelineno-30-8" name="__codelineno-30-8" href="#__codelineno-30-8"></a><span class="c1"># docs/relationship-map.md - Relationships + Mermaid diagram</span>
3466
<a id="__codelineno-30-9" name="__codelineno-30-9" href="#__codelineno-30-9"></a><span class="c1"># docs/status-report.md - Project status report</span>
3467
<a id="__codelineno-30-10" name="__codelineno-30-10" href="#__codelineno-30-10"></a><span class="c1"># docs/entity-index.md - Master entity index</span>
3468
<a id="__codelineno-30-11" name="__codelineno-30-11" href="#__codelineno-30-11"></a><span class="c1"># docs/csv.csv - Spreadsheet-ready CSV</span>
3469
<a id="__codelineno-30-12" name="__codelineno-30-12" href="#__codelineno-30-12"></a><span class="c1"># docs/entities/ - Individual entity briefs</span>
3470
</code></pre></div>
3471
<h3 id="publish-a-github-wiki">Publish a GitHub wiki<a class="headerlink" href="#publish-a-github-wiki" title="Permanent link">&para;</a></h3>
3472
<div class="highlight"><pre><span></span><code><a id="__codelineno-31-1" name="__codelineno-31-1" href="#__codelineno-31-1"></a><span class="c1"># Generate wiki pages</span>
3473
<a id="__codelineno-31-2" name="__codelineno-31-2" href="#__codelineno-31-2"></a>planopticon<span class="w"> </span>wiki<span class="w"> </span>generate<span class="w"> </span>knowledge_graph.db<span class="w"> </span>-o<span class="w"> </span>./wiki<span class="w"> </span>--title<span class="w"> </span><span class="s2">&quot;Project Knowledge Base&quot;</span>
3474
<a id="__codelineno-31-3" name="__codelineno-31-3" href="#__codelineno-31-3"></a>
3475
<a id="__codelineno-31-4" name="__codelineno-31-4" href="#__codelineno-31-4"></a><span class="c1"># Review locally, then push</span>
3476
<a id="__codelineno-31-5" name="__codelineno-31-5" href="#__codelineno-31-5"></a>planopticon<span class="w"> </span>wiki<span class="w"> </span>push<span class="w"> </span>./wiki<span class="w"> </span>ConflictHQ/my-project<span class="w"> </span>-m<span class="w"> </span><span class="s2">&quot;Initial wiki from meeting analysis&quot;</span>
3477
</code></pre></div>
3478
<h3 id="share-data-between-projects">Share data between projects<a class="headerlink" href="#share-data-between-projects" title="Permanent link">&para;</a></h3>
3479
<div class="highlight"><pre><span></span><code><a id="__codelineno-32-1" name="__codelineno-32-1" href="#__codelineno-32-1"></a><span class="c1"># Export from project A</span>
3480
<a id="__codelineno-32-2" name="__codelineno-32-2" href="#__codelineno-32-2"></a>planopticon<span class="w"> </span><span class="nb">export</span><span class="w"> </span>exchange<span class="w"> </span>./project-a/knowledge_graph.db<span class="w"> </span><span class="se">\</span>
3481
<a id="__codelineno-32-3" name="__codelineno-32-3" href="#__codelineno-32-3"></a><span class="w"> </span>-o<span class="w"> </span>project-a.json<span class="w"> </span>--name<span class="w"> </span><span class="s2">&quot;Project A&quot;</span>
3482
<a id="__codelineno-32-4" name="__codelineno-32-4" href="#__codelineno-32-4"></a>
3483
<a id="__codelineno-32-5" name="__codelineno-32-5" href="#__codelineno-32-5"></a><span class="c1"># Export from project B</span>
3484
<a id="__codelineno-32-6" name="__codelineno-32-6" href="#__codelineno-32-6"></a>planopticon<span class="w"> </span><span class="nb">export</span><span class="w"> </span>exchange<span class="w"> </span>./project-b/knowledge_graph.db<span class="w"> </span><span class="se">\</span>
3485
<a id="__codelineno-32-7" name="__codelineno-32-7" href="#__codelineno-32-7"></a><span class="w"> </span>-o<span class="w"> </span>project-b.json<span class="w"> </span>--name<span class="w"> </span><span class="s2">&quot;Project B&quot;</span>
3486
<a id="__codelineno-32-8" name="__codelineno-32-8" href="#__codelineno-32-8"></a>
3487
<a id="__codelineno-32-9" name="__codelineno-32-9" href="#__codelineno-32-9"></a><span class="c1"># Merge in Python</span>
3488
<a id="__codelineno-32-10" name="__codelineno-32-10" href="#__codelineno-32-10"></a>python<span class="w"> </span>-c<span class="w"> </span><span class="s2">&quot;</span>
3489
<a id="__codelineno-32-11" name="__codelineno-32-11" href="#__codelineno-32-11"></a><span class="s2">from video_processor.exchange import PlanOpticonExchange</span>
3490
<a id="__codelineno-32-12" name="__codelineno-32-12" href="#__codelineno-32-12"></a><span class="s2">a = PlanOpticonExchange.from_file(&#39;project-a.json&#39;)</span>
3491
<a id="__codelineno-32-13" name="__codelineno-32-13" href="#__codelineno-32-13"></a><span class="s2">b = PlanOpticonExchange.from_file(&#39;project-b.json&#39;)</span>
3492
<a id="__codelineno-32-14" name="__codelineno-32-14" href="#__codelineno-32-14"></a><span class="s2">a.merge(b)</span>
3493
<a id="__codelineno-32-15" name="__codelineno-32-15" href="#__codelineno-32-15"></a><span class="s2">a.to_file(&#39;combined.json&#39;)</span>
3494
<a id="__codelineno-32-16" name="__codelineno-32-16" href="#__codelineno-32-16"></a><span class="s2">print(f&#39;Combined: {len(a.entities)} entities, {len(a.relationships)} relationships&#39;)</span>
3495
<a id="__codelineno-32-17" name="__codelineno-32-17" href="#__codelineno-32-17"></a><span class="s2">&quot;</span>
3496
</code></pre></div>
3497
<h3 id="export-for-spreadsheet-analysis">Export for spreadsheet analysis<a class="headerlink" href="#export-for-spreadsheet-analysis" title="Permanent link">&para;</a></h3>
3498
<div class="highlight"><pre><span></span><code><a id="__codelineno-33-1" name="__codelineno-33-1" href="#__codelineno-33-1"></a><span class="c1"># Generate just the CSV</span>
3499
<a id="__codelineno-33-2" name="__codelineno-33-2" href="#__codelineno-33-2"></a>planopticon<span class="w"> </span><span class="nb">export</span><span class="w"> </span>markdown<span class="w"> </span>knowledge_graph.db<span class="w"> </span>--type<span class="w"> </span>csv<span class="w"> </span>-o<span class="w"> </span>./export
3500
<a id="__codelineno-33-3" name="__codelineno-33-3" href="#__codelineno-33-3"></a>
3501
<a id="__codelineno-33-4" name="__codelineno-33-4" href="#__codelineno-33-4"></a><span class="c1"># The file export/csv.csv can be opened in Excel, Google Sheets, etc.</span>
3502
</code></pre></div>
3503
<p>Alternatively, the Notion export includes an <code>entities_database.csv</code> that can be imported into any spreadsheet tool or Notion database.</p>
3504
3505
3506
3507
3508
3509
3510
3511
3512
3513
3514
3515
3516
3517
</article>
3518
</div>
3519
3520
3521
<script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script>
3522
3523
<script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script>
3524
</div>
3525
3526
<button type="button" class="md-top md-icon" data-md-component="top" hidden>
3527
3528
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg>
3529
Back to top
3530
</button>
3531
3532
</main>
3533
3534
<footer class="md-footer">
3535
3536
<div class="md-footer-meta md-typeset">
3537
<div class="md-footer-meta__inner md-grid">
3538
<div class="md-copyright">
3539
3540
<div class="md-copyright__highlight">
3541
Copyright &copy; 2026 CONFLICT LLC
3542
</div>
3543
3544
3545
Made with
3546
<a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener">
3547
Material for MkDocs
3548
</a>
3549
3550
</div>
3551
3552
3553
<div class="md-social">
3554
3555
3556
3557
3558
3559
3560
3561
3562
<a href="https://github.com/ConflictHQ/PlanOpticon" target="_blank" rel="noopener" title="github.com" class="md-social__link">
3563
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg>
3564
</a>
3565
3566
</div>
3567
3568
</div>
3569
</div>
3570
</footer>
3571
3572
</div>
3573
<div class="md-dialog" data-md-component="dialog">
3574
<div class="md-dialog__inner md-typeset"></div>
3575
</div>
3576
3577
3578
3579
3580
3581
<script id="__config" type="application/json">{"annotate": null, "base": "../..", "features": ["navigation.instant", "navigation.tabs", "navigation.sections", "navigation.expand", "navigation.top", "search.suggest", "search.highlight", "content.code.copy", "content.tabs.link", "header.autohide"], "search": "../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script>
3582
3583
3584
<script src="../../assets/javascripts/bundle.79ae519e.min.js"></script>
3585
3586
3587
</body>
3588
</html>

Keyboard Shortcuts

Open search /
Next entry (timeline) j
Previous entry (timeline) k
Open focused entry Enter
Show this help ?
Toggle theme Top nav button