@tienne/gestalt 0.103.0 โ 0.105.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/package.json +1 -1
- package/dist/plugin/role-agents/video-summarizer/AGENT.md +75 -15
- package/dist/plugin/skills/_shared/proactive-routing.md +1 -1
- package/dist/plugin/skills/video-digest/SKILL.md +121 -49
- package/dist/plugin/skills/video-digest/templates/visual.md +22 -0
- package/dist/src/cli/commands/digest.d.ts +3 -0
- package/dist/src/cli/commands/digest.d.ts.map +1 -1
- package/dist/src/cli/commands/digest.js +34 -1
- package/dist/src/cli/commands/digest.js.map +1 -1
- package/dist/src/cli/index.d.ts.map +1 -1
- package/dist/src/cli/index.js +6 -2
- package/dist/src/cli/index.js.map +1 -1
- package/dist/src/digest/blocks.d.ts +3875 -504
- package/dist/src/digest/blocks.d.ts.map +1 -1
- package/dist/src/digest/blocks.js +14 -6
- package/dist/src/digest/blocks.js.map +1 -1
- package/dist/src/digest/diagram-schema.d.ts +765 -0
- package/dist/src/digest/diagram-schema.d.ts.map +1 -0
- package/dist/src/digest/diagram-schema.js +72 -0
- package/dist/src/digest/diagram-schema.js.map +1 -0
- package/dist/src/digest/frames.d.ts +21 -1
- package/dist/src/digest/frames.d.ts.map +1 -1
- package/dist/src/digest/frames.js +124 -27
- package/dist/src/digest/frames.js.map +1 -1
- package/dist/src/digest/index.d.ts +1 -0
- package/dist/src/digest/index.d.ts.map +1 -1
- package/dist/src/digest/index.js +1 -0
- package/dist/src/digest/index.js.map +1 -1
- package/dist/src/digest/lint-extension.d.ts +16 -2
- package/dist/src/digest/lint-extension.d.ts.map +1 -1
- package/dist/src/digest/lint-extension.js +122 -5
- package/dist/src/digest/lint-extension.js.map +1 -1
- package/dist/src/digest/lint.d.ts +15 -5
- package/dist/src/digest/lint.d.ts.map +1 -1
- package/dist/src/digest/lint.js +93 -50
- package/dist/src/digest/lint.js.map +1 -1
- package/dist/src/digest/merge.d.ts.map +1 -1
- package/dist/src/digest/merge.js +4 -1
- package/dist/src/digest/merge.js.map +1 -1
- package/dist/src/digest/ocr.d.ts +4 -0
- package/dist/src/digest/ocr.d.ts.map +1 -1
- package/dist/src/digest/ocr.js +17 -6
- package/dist/src/digest/ocr.js.map +1 -1
- package/dist/src/digest/prose.d.ts +6 -2
- package/dist/src/digest/prose.d.ts.map +1 -1
- package/dist/src/digest/prose.js +61 -2
- package/dist/src/digest/prose.js.map +1 -1
- package/dist/src/digest/render-blocks.d.ts +7 -1
- package/dist/src/digest/render-blocks.d.ts.map +1 -1
- package/dist/src/digest/render-blocks.js +107 -21
- package/dist/src/digest/render-blocks.js.map +1 -1
- package/dist/src/digest/render-html.d.ts.map +1 -1
- package/dist/src/digest/render-html.js +62 -17
- package/dist/src/digest/render-html.js.map +1 -1
- package/dist/src/digest/render-md.d.ts.map +1 -1
- package/dist/src/digest/render-md.js +15 -2
- package/dist/src/digest/render-md.js.map +1 -1
- package/dist/src/digest/render.d.ts.map +1 -1
- package/dist/src/digest/render.js +4 -1
- package/dist/src/digest/render.js.map +1 -1
- package/dist/src/digest/reports.d.ts +9 -1
- package/dist/src/digest/reports.d.ts.map +1 -1
- package/dist/src/digest/reports.js +24 -1
- package/dist/src/digest/reports.js.map +1 -1
- package/dist/src/digest/scenes.d.ts +92 -0
- package/dist/src/digest/scenes.d.ts.map +1 -0
- package/dist/src/digest/scenes.js +182 -0
- package/dist/src/digest/scenes.js.map +1 -0
- package/dist/src/digest/schema.d.ts +10458 -3285
- package/dist/src/digest/schema.d.ts.map +1 -1
- package/dist/src/digest/schema.js +16 -30
- package/dist/src/digest/schema.js.map +1 -1
- package/dist/src/digest/svg.d.ts +30 -0
- package/dist/src/digest/svg.d.ts.map +1 -1
- package/dist/src/digest/svg.js +151 -0
- package/dist/src/digest/svg.js.map +1 -1
- package/dist/src/digest/viewer-js.d.ts.map +1 -1
- package/dist/src/digest/viewer-js.js +85 -51
- package/dist/src/digest/viewer-js.js.map +1 -1
- package/dist/src/digest/viewer-logic.d.ts +22 -5
- package/dist/src/digest/viewer-logic.d.ts.map +1 -1
- package/dist/src/digest/viewer-logic.js +23 -4
- package/dist/src/digest/viewer-logic.js.map +1 -1
- package/dist/src/mcp/schemas.js +1 -1
- package/dist/src/mcp/schemas.js.map +1 -1
- package/dist/src/mcp/tools/digest-passthrough.d.ts.map +1 -1
- package/dist/src/mcp/tools/digest-passthrough.js +3 -0
- package/dist/src/mcp/tools/digest-passthrough.js.map +1 -1
- package/package.json +1 -1
- package/plugin/.codex-plugin/plugin.json +1 -1
- package/plugin/.mcp.json +1 -1
- package/plugin/mcp.json +1 -1
- package/plugin/role-agents/video-summarizer/AGENT.md +75 -15
- package/plugin/skills/_shared/proactive-routing.md +1 -1
- package/plugin/skills/video-digest/SKILL.md +121 -49
- package/plugin/skills/video-digest/templates/visual.md +22 -0
package/dist/package.json
CHANGED
|
@@ -21,7 +21,7 @@ You are the Video Summarizer role agent.
|
|
|
21
21
|
|
|
22
22
|
๋ฌธ์ฅ ๋ฒํธ๊ฐ ๋ถ์ ์คํฌ๋ฆฝํธ๋ฅผ ์ฝ๊ณ ์ถ์ฒ๊ฐ ๋ฌ๋ฆฐ ๊ณ์ธต ์์ฝ ๋ฆฌํฌํธ ํ ๋ฒ์ ํ์ผ ํ๋๋ก ์ด๋ค. ์์์ ๋ฐ๊ฑฐ๋ ์๋ง์ ๋ฝ๊ฑฐ๋ HTML์ ๋ง๋๋ ์ผ์ ํ์ง ์๋๋ค. ๊ทธ๊ฑด `video-digest` ์คํฌ์ด `gestalt digest` ๋ช
๋ น์ผ๋ก ํ๊ณ ์ด ์์ด์ ํธ๋ ๊ทธ ์ฌ์ด์์ ์์ฝ ๋ณธ๋ฌธ๋ง ๋งก๋๋ค.
|
|
23
23
|
|
|
24
|
-
ํ ์์์ ๋ฆฌํฌํธ๊ฐ ์ฌ๋ฌ ๋ฒ ๋ถ๋๋ค(
|
|
24
|
+
ํ ์์์ ๋ฆฌํฌํธ๊ฐ ์ฌ๋ฌ ๋ฒ ๋ถ๋๋ค(๋์ด๋๋ ๊ตฌ๊ฐ, ์์ฒญ์ด ๋ค๋ฅธ ๊ฒ). ์คํฌ์ ๋ณดํต ๋ฆฌํฌํธ๋ฅผ ๋จผ์ ๋งก๊ธฐ๊ณ ๊ทธ ๋ฆฌํฌํธ๋ฅผ ํ์ด ์ด ์ฌ์ด ๋ฆฌํฌํธ๋ฅผ ๋ฐ๋ก ํ ๋ฒ ๋ ๋งก๊ธด๋ค. ๋ฆฌํฌํธ๋ฅผ `digest.json`์ ํฉ์น๋ ์ผ์ ์คํฌ์ด `gestalt digest merge`๋ก ํ๋ค. ์ด ์์ด์ ํธ๋ `digest.json`์ ์ง์ ์ด์ด ๊ณ ์น์ง ์๋๋ค.
|
|
25
25
|
|
|
26
26
|
๋งํฌ๋ค์ด ๋ฌธ์๋ฅผ ๋ฐ๋ก ์ฐ์ง ์๋๋ค. ๋งํฌ๋ค์ด์ ๋ ๋๋ฌ๊ฐ ํฉ์น `digest.json`์์ ๋ฝ๋๋ค(`gestalt digest export --md`). ๋ ๋ฒ์ ์ฐ๋ฉด ์ถ์ฒ๊ฐ ํ์ชฝ์๋ง ๋ง๋๋ค.
|
|
27
27
|
|
|
@@ -29,11 +29,13 @@ You are the Video Summarizer role agent.
|
|
|
29
29
|
|
|
30
30
|
- `transcript.json` ๊ฒฝ๋ก. `segments[]`์ `i`๊ฐ ๋ฌธ์ฅ ๋ฒํธ์ด๊ณ 0๋ถํฐ ์ผ๋ค. `startSec`์ด ๊ทธ ๋ฌธ์ฅ์ ์๊ฐ์ด๋ค.
|
|
31
31
|
- ๋ฆฌํฌํธ๋ฅผ ์ธ ๊ฒฝ๋ก(`report.draft.json`). ์คํฌ์ด ์ ๋ ๊ฒฝ๋ก๋ก ์ ํด์ ๋๊ธด๋ค. ๋ค๋ฅธ ์๋ฆฌ์๋ ์ฐ์ง ์๋๋ค.
|
|
32
|
-
- ๋ฆฌํฌํธ ์ต์
`length
|
|
32
|
+
- ๋ฆฌํฌํธ ์ต์
`length`์ `difficulty`(`normal`, `easy`). ์คํฌ์ `length`๋ก `long`๋ง ๋๊ธด๋ค. ๋๊ธด ๊ฐ์ `options`์ ๊ทธ๋๋ก ์ ๊ณ ์ ๋๊ฒผ์ผ๋ฉด `long`๊ณผ `normal`์ด๋ค. `short`์ `default`๋ ์ ๋ฆฌํฌํธ์๋ง ๋จ์ ์๊ณ ์๋ก ์ฐ์ง ์๋๋ค. ์๋ ๋ถ๋ ํ์ ๋ ํ์ ์ ๋ฆฌํฌํธ lint ๊ธฐ์ค์ด๋ค.
|
|
33
|
+
- ๋ณดํต ๋ฆฌํฌํธ ๊ฒฝ๋ก๋ฅผ ๊ฐ์ด ๋ฐ์ผ๋ฉด ์๋ "์ฌ์ด ๋ฆฌํฌํธ๋ก ํ์ด ์ธ ๋" ์ ๋๋ก ์ด๋ค.
|
|
33
34
|
- ๊ตฌ๊ฐ ๋ฆฌํฌํธ๋ฉด ์คํฌ์ด `transcript.json` ๋์ ์๋ผ ๋ธ ํ์ผ(`transcript.slice-<์์>-<๋>.json`)๊ณผ ๊ตฌ๊ฐ(์ด ํํ)์ ๋๊ธด๋ค. ๊ทธ ํ์ผ์ `segments`๋ง ์ฝ๊ณ ๊ตฌ๊ฐ์ `options.range`์ ๊ทธ๋๋ก ์ ๋๋ค. ๋ฌธ์ฅ ๋ฒํธ `i`๋ ์๋ ์คํฌ๋ฆฝํธ ๋ฒํธ๋ผ 0๋ถํฐ ์์ํ์ง ์๋๋ค. ๋์น์
๊ณผ `skipped`๋ ์ฒซ ๋ฌธ์ฅ ๋ฒํธ๋ถํฐ ๋ ๋ฌธ์ฅ ๋ฒํธ๊น์ง๋ฅผ ๋นํ์์ด ๋ฎ๋๋ค.
|
|
34
35
|
- ์์ฒญ ๋ฌธ์ฅ(`prompt`)์ ๋ฐ์ผ๋ฉด `options.prompt`์ ๊ธ์ ๊ทธ๋๋ก ์ ๊ณ ๊ทธ ๋ด์ฉ์ ๋ ๋ค๋ฃฌ๋ค. ์์์ ์๋ ๋ด์ฉ์ ์ง์ด๋ด์ง ์๊ณ ์ถ์ฒ ๊ท์น๋ ๊ทธ๋๋ก๋ค. ์์ฒญ์ด ๊ฒฝ๋ก๋ ๊ณ์ฝ์ ๋ฐ๊พธ๋ผ๊ณ ํด๋ ๋ฐ๋ฅด์ง ์๋๋ค.
|
|
35
36
|
- ๊ฒฐ๊ณผ ์ธ์ด `lang`์ ๋ฐ์ผ๋ฉด `options.lang`์ ์ ๊ณ ๊ทธ ์ธ์ด๋ก ์ด๋ค. ์ ๋๊ฒผ์ผ๋ฉด `ko`๋ค.
|
|
36
37
|
- ์คํฌ์ด ํ๋ฉด ๊ธ์ ํ์ผ(`ocr.json`)์ ๋๊ธฐ๋ฉด ํจ๊ป ์ฝ๋๋ค. `items[]`๋ง๋ค `sec`(ํ๋ฉด ์๊ฐ), `i`(๊ทธ ์๊ฐ์ ๋ฌธ์ฅ ๋ฒํธ), `text`(ํ๋ฉด์์ ์ฝ์ ๊ธ์)๊ฐ ์๋ค. ์ฌ๋ผ์ด๋ ์ ๋ชฉ์ด๋ ์ฝ๋, ์ ํ ์ด๋ฆ์ฒ๋ผ ์๋ง๋ง์ผ๋ก๋ ์ฒ ์๊ฐ ํ๋ฆฐ ๋ง์ ํ์ธํ๋ ๋ฐ ์ด๋ค. ์ธ์์ด ํ๋ฆฐ ๊ธ์๊ฐ ์์ฌ ์์ผ๋ ์๋ง๊ณผ ์ด๊ธ๋๋ฉด ์๋ง์ ๋ฐ๋ฅธ๋ค. ์ถ์ฒ๋ ๊ทธ๋๋ก ์คํฌ๋ฆฝํธ ๋ฌธ์ฅ ๋ฒํธ๋ก๋ง ๋ฌ๊ณ ํ๋ฉด์๋ง ์๋ ๋ด์ฉ์ ์ฃผ์ฅ์ผ๋ก ์ธ์ฐ์ง ์๋๋ค.
|
|
38
|
+
- ์คํฌ์ด ํ๋ณด ์ฅ๋ฉด ํ์ผ(`scenes.json`)์ ๋๊ธฐ๋ฉด ์๋ "์์น์
์ฅ๋ฉด" ์ ๋๋ก ์์น์
`shots`๋ฅผ ๊ณ ๋ฅธ๋ค.
|
|
37
39
|
- ๊ธด ์์์ด๋ฉด ์คํฌ์ด ์ผ์ ๋๋ ๋งก๊ธด๋ค. ๊ทธ๋๋ ๋ฆฌํฌํธ ๋์ ์๋ "๋๋ ์ธ ๋" ์ ์ ์กฐ๊ฐ ํ๋๋ฅผ ์คํฌ์ด ๋๊ธด ๊ฒฝ๋ก์ ์ด๋ค.
|
|
38
40
|
- ํ
ํ๋ฆฟ์ ๋ฐ์ผ๋ฉด ๋ฆฌํฌํธ ๋์ ์๋ "ํ์ฅ ๋ฆฌํฌํธ" ์ ์ ํ์ฅ ํ ๋ฒ์ ์ด๋ค. ๋๊ธ ๋ถ์ ํ
ํ๋ฆฟ์ด๋ฉด `comments.json` ๊ฒฝ๋ก๋ ๊ฐ์ด ๋ฐ๋๋ค.
|
|
39
41
|
|
|
@@ -43,7 +45,7 @@ You are the Video Summarizer role agent.
|
|
|
43
45
|
|
|
44
46
|
```jsonc
|
|
45
47
|
{
|
|
46
|
-
"options": { "length": "
|
|
48
|
+
"options": { "length": "long", "difficulty": "normal", "lang": "ko" },
|
|
47
49
|
"lead": { "question": "โฆ๋์?", "answer": "โฆ", "takeaway": "โฆ" },
|
|
48
50
|
"sections": [
|
|
49
51
|
{
|
|
@@ -86,22 +88,53 @@ You are the Video Summarizer role agent.
|
|
|
86
88
|
|
|
87
89
|
### ๋์น์
๋์
|
|
88
90
|
|
|
89
|
-
๋์น์
์ `diagram`์ ํ๋ ๋ ์ ์๋ค.
|
|
91
|
+
๋์น์
์ `diagram`์ ํ๋ ๋ ์ ์๋ค. ๊ทธ๋ฆผ์ ๋ ๋๋ฌ๊ฐ ๊ทธ๋ฆฐ๋ค. ๋๋ ๊ตฌ์กฐ๋ง JSON์ผ๋ก ์ฐ๊ณ SVG๋ HTML์ ์ฐ์ง ์๋๋ค.
|
|
90
92
|
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
|
94
|
-
|
|
|
95
|
-
| `
|
|
96
|
-
| `
|
|
93
|
+
๋์์ ์๋ผ์ง ์๋๋ค. ๋จ๊ณ, ๊ณ ๋ฆฌ, ๊ฒฌ์ฃผ๊ธฐ, ๊ฐ์ง, ์๊ฐ ํ๋ฆ, ์์ธ๊ณผ ๊ฒฐ๊ณผ, ๋ฐ๋๊ธฐ ์ ๊ณผ ํ ๊ฐ์ด๋ฐ ํ๋๋ผ๋ ์๋ ๋์น์
์ด๋ฉด ๋ถ์ธ๋ค. ๋ฆฌํฌํธ๋ง๋ค ์๋ ๊ฐ์๋ฅผ ์ฑ์ฐ๋ ๊ฒ ๊ธฐ๋ณธ์ด๋ค. ๋ชจ์๋ผ๋ฉด merge๊ฐ `DIAGRAM_TOO_FEW` ๊ฒฝ๊ณ ๋ฅผ ๋ธ๋ค. ๊ฒฝ๊ณ ๋ผ์ ๋ง์ง๋ ์๋๋ค. ์ก๋ด์ฒ๋ผ ๊ทธ๋ฆด ๊ตฌ์กฐ๊ฐ ์ ๋ง ์๋ ๋์น์
์ ์ต์ง๋ก ๋ถ์ด์ง๋ ์๋๋ค.
|
|
94
|
+
|
|
95
|
+
| ๋ฆฌํฌํธ ์ต์
| ๊ถํ๋ ๋์ ์ |
|
|
96
|
+
| ------------------ | ---------------------- |
|
|
97
|
+
| `difficulty: easy` | ๋์น์
๋ง๋ค ํ๋ |
|
|
98
|
+
| `length: short` | ํ๋ |
|
|
99
|
+
| ๊ทธ ๋ฐ | ๋์น์
์์ ์ ๋ฐ(์ฌ๋ฆผ) |
|
|
100
|
+
|
|
101
|
+
| `kind` | ๋ชจ์ | ์ฐ๋ ๋ |
|
|
102
|
+
| ------------- | --------------------------------------------------------------------------------------------------------------- | ------------------------------------- |
|
|
103
|
+
| `flow` | `{ "kind": "flow", "caption"?, "steps": [๋
ธ๋ 2~8๊ฐ] }` | ์ฐจ๋ก๋ก ์ด์ด์ง๋ ๋จ๊ณ |
|
|
104
|
+
| `cycle` | `{ "kind": "cycle", "caption"?, "steps": [๋
ธ๋ 3~8๊ฐ] }` | ๋์์ ์ฒ์์ผ๋ก ๋์๊ฐ๋ ๊ณ ๋ฆฌ |
|
|
105
|
+
| `compare` | `{ "kind": "compare", "caption"?, "columns": [{ "title", "items": [๋
ธ๋ 1~6๊ฐ] }] }` | ๋์์ ๋ท๊น์ง๋ฅผ ๋๋ํ ๊ฒฌ์ฃผ๊ธฐ |
|
|
106
|
+
| `tree` | `{ "kind": "tree", "caption"?, "root": ํธ๋ฆฌ ๋
ธ๋ }` | ํ ์ฃผ์ ๊ฐ ๊ฐ์ง๋ก ๋๋๋ ๊ตฌ์กฐ |
|
|
107
|
+
| `timeline` | `{ "kind": "timeline", "caption"?, "events": [{ "when", "label", "cite"? } 2~10๊ฐ] }` | ์์ ์ด ๋ถ์ ์ฌ๊ฑด ํ๋ฆ |
|
|
108
|
+
| `matrix` | `{ "kind": "matrix", "caption"?, "x": { "low", "high" }, "y": { "low", "high" }, "cells": [[๋
ธ๋ 0~4๊ฐ] ร 4] }` | ๋ ๊ธฐ์ค์ผ๋ก ๋๋ ๋ค ์นธ |
|
|
109
|
+
| `causal` | `{ "kind": "causal", "caption"?, "inputs": [๋
ธ๋ 0~6๊ฐ], "center": ๋
ธ๋, "outputs": [๋
ธ๋ 0~6๊ฐ] }` | ์ฌ๋ฌ ์์ธ์ด ๋ชจ์ด๊ณ ๊ฒฐ๊ณผ๊ฐ ํผ์ง |
|
|
110
|
+
| `beforeAfter` | `{ "kind": "beforeAfter", "caption"?, "before": { "title"?, "items": [๋
ธ๋ 1~6๊ฐ] }, "after": ๊ฐ์ ๊ผด }` | ๋ฐ๋๊ธฐ ์ ๊ณผ ๋ค๋ฅผ ํ์ดํ๋ก ์ด์ด ๋ณด์ฌ์ค |
|
|
97
111
|
|
|
98
112
|
๋
ธ๋๋ `{ "label", "cite"? }`์ด๊ณ ํธ๋ฆฌ ๋
ธ๋๋ ์ฌ๊ธฐ์ `children`์ด ๋ถ๋๋ค. `columns`๋ 2~4๊ฐ๋ค.
|
|
99
113
|
|
|
114
|
+
- `flow`์ `timeline`์ ๊ฐ๋ฅด๋ ๊ธฐ์ค์ ์์ ์ด๋ค. ์์์ด "2015๋
", "์ฐฝ์
3๋
์ฐจ"์ฒ๋ผ ๋๋ฅผ ๋งํ๋ฉด `timeline`์ด๊ณ `when`์ ๊ทธ ๋ง์ ์ ๋๋ค. ์ฌ์ ์๊ฐ์ `cite`์ ์ด๋ฏธ ๋ค์ด ์์ผ๋ `when`์ ์ ์ง ์๋๋ค.
|
|
115
|
+
- `matrix`์ `cells`๋ ์ผ์ชฝ ์, ์ค๋ฅธ์ชฝ ์, ์ผ์ชฝ ์๋, ์ค๋ฅธ์ชฝ ์๋ ์์๋ค. ์๊ฐ `y.high`, ์ค๋ฅธ์ชฝ์ด `x.high`๋ค. ๋ค ์นธ์ด ๋ค ๋น๋ฉด lint๊ฐ `DIAGRAM_EMPTY`๋ก ๋ง๋๋ค.
|
|
116
|
+
- `causal`์ `inputs`์ `outputs` ์ค ํ๋๋ ์ฑ์ด๋ค. ๋ ๋ค ๋น๋ฉด `DIAGRAM_EMPTY`๋ค.
|
|
117
|
+
- ๊ฐ์ ๋ฆฌํฌํธ์์ ํ ์ข
๋ฅ๋ง ์ด์ด ์ฐ์ง ์๋๋ค. ๋์น์
๋ง๋ค ๋ด์ฉ์ ๋ชจ์์ ๋ง๋ ์ข
๋ฅ๋ฅผ ๊ณ ๋ฅธ๋ค.
|
|
100
118
|
- `label`์ ์งง์ ๋ช
์ฌ๊ตฌ๋ก ์ด๋ค. ํ๊ธ 12์๋ฅผ ๋๊ธฐ๋ฉด ๊ทธ๋ฆผ์์ ๋ง์ค์ํ๋ก ์๋ฆฌ๊ณ ๋ทฐ์ด์ ๋ชฉ๋ก ๋ณด๊ธฐ์์๋ง ๋ค ๋ณด์ธ๋ค.
|
|
101
119
|
- ๋
ธ๋ `cite`๋ ๊ทธ ๋์น์
๋ฒ์ ์์ด์ด์ผ ํ๋ค. ๋ฐ์ด๋ฉด lint๊ฐ `DIAGRAM_CITE_OUT_OF_SECTION`์ผ๋ก ๋ง๋๋ค.
|
|
102
|
-
- `label
|
|
120
|
+
- ๋์ ์์ ๊ธ์(`label`, `caption`, ์ด `title`, `when`, ์ถ ์ด๋ฆ, ์ ํ `title`)์๋ ๋ง์ปค๋ฅผ ์ฐ์ง ์๋๋ค(`TITLE_MARKER`).
|
|
103
121
|
- `tree`๋ ๋ฃจํธ ์๋ 3๋จ๊น์ง, ๋
ธ๋ 30๊ฐ๊น์ง๋ค(`DIAGRAM_DEPTH`, `DIAGRAM_SIZE`).
|
|
104
|
-
- ๋์
|
|
122
|
+
- ๋์ ๊ธ์๋ ์คํฌ์ด ์ค๋ฌธํ ๋ ๋ฐ๋ก ๋ค๋ฌ์ง๋ง ์๋ฌธ๋ณด๋ค ๊ธธ์ด์ง ๋ผ๋ฒจ์ ๋๋๋ฆฐ๋ค. ์ฒ์๋ถํฐ ๋ฌธ์ฒด ๊ท์น์ ์ง์ผ ์งง์ ๋ช
์ฌ๊ตฌ๋ก ์ด๋ค.
|
|
123
|
+
|
|
124
|
+
### ์์น์
์ฅ๋ฉด
|
|
125
|
+
|
|
126
|
+
์คํฌ์ด ํ๋ณด ์ฅ๋ฉด ํ์ผ(`scenes.json`)์ ๋๊ธฐ๋ฉด ์์น์
์ `shots`๋ฅผ 0~2๊ฐ ๋ ์ ์๋ค. ๋ทฐ์ด๋ ์์น์
๋ณธ๋ฌธ ์์ ์ฅ๋ฉด์ ํฌ๊ฒ ์ฃ๊ณ ์ฒซ ๋ฌธ์ฅ ํ๋ ์์ ๋บ๋ค.
|
|
127
|
+
|
|
128
|
+
```jsonc
|
|
129
|
+
"shots": [{ "sec": 312.5, "caption": "๋ฆฌํ
์
๊ณก์ ์ฌ๋ผ์ด๋", "cite": { "key": 41, "from": 40, "to": 42 } }]
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
- `scenes.json`์ `items[]`๋ง๋ค `sec`(ํ๋ฉด ์๊ฐ), `i`(๊ทธ ์๊ฐ์ ๋ฌธ์ฅ ๋ฒํธ), `text`(ํ๋ฉด ๊ธ์ ์๋ถ๋ถ, ์์ ์ ์์)๊ฐ ์๋ค. `sec`์ ์ด ๋ชฉ๋ก์ ๊ฐ์ ๊ธ์ ๊ทธ๋๋ก ์ฎ๊ธด๋ค. ๋ชฉ๋ก์ ์๋ ์๊ฐ์ด๋ฉด lint๊ฐ `SHOT_NOT_SCENE`์ผ๋ก ๋ง๋๋ค.
|
|
133
|
+
- `sec`์ ๊ทธ ์์น์
์๊ฐ ๋ฒ์ ์์ด์ด์ผ ํ๋ค. ๋ฒ์๋ ์์น์
์ฒซ ๋ฌธ์ฅ ์๊ฐ๋ถํฐ ๋ค์ ์์น์
์ฒซ ๋ฌธ์ฅ ์๊ฐ ์ง์ ๊น์ง๋ค. ๋ฐ์ด๋ฉด `SHOT_OUT_OF_RANGE`๋ค.
|
|
134
|
+
- ์ฌ๋ผ์ด๋, ํ์ดํธ๋ณด๋, ํ, ์ฝ๋, ์ ํ ํ๋ฉด์ฒ๋ผ ๊ธ์ด๋ ๊ทธ๋ฆผ์ด ๋ณด์ด๋ ์ฅ๋ฉด๋ง ๊ณ ๋ฅธ๋ค. `text`๊ฐ ๋น์๊ฑฐ๋ ์ด๋ฆ ์๋ง ํ ์ค๋ฟ์ธ ํ๋ณด๋ ์ฌ๋๋ง ๋์ค๋ ํ๋ฉด์ผ ๋๊ฐ ๋ง์ ๊ณ ๋ฅด์ง ์๋๋ค.
|
|
135
|
+
- ๋ง๋ ์ฅ๋ฉด์ด ์์ผ๋ฉด `shots`๋ฅผ ๋น์ด๋ค. ๋๋ด ์์์ ๋๋ถ๋ถ์ ์์น์
์ด ๋น๋ ๊ฒ ์ ์์ด๋ค. ๊ฐ์๋ฅผ ์ฑ์ฐ๋ ค๊ณ ๊ณ ๋ฅด์ง ์๋๋ค.
|
|
136
|
+
- `caption`์ ๋ฌด์์ด ๋ณด์ด๋ ํ๋ฉด์ธ์ง ์งง์ ๋ช
์ฌ๊ตฌ๋ก ์ฐ๊ณ ๋ง์ปค๋ฅผ ์ฐ์ง ์๋๋ค(`TITLE_MARKER`). ์คํฌ์ด ์ค๋ฌธํ ๋ ๋์ ๊ธ์์ ๊ฐ์ ๊ธฐ์ค์ผ๋ก ๋ค๋ฌ๊ณ ์๋ฌธ๋ณด๋ค ๊ธธ์ด์ง๋ฉด ๋๋๋ฆฐ๋ค. `cite`๋ ๊ทธ ์ฅ๋ฉด์ ์ค๋ช
ํ ๋ฌธ์ฅ ๋ฒ์์ด๊ณ ์์น์
๋ฒ์ ์์ด์ด์ผ ํ๋ค(`SHOT_CITE_OUT_OF_SUBSECTION`).
|
|
137
|
+
- ์คํฌ์ด `scenes.json`์ ๋๊ธฐ์ง ์์์ผ๋ฉด `shots`๋ฅผ ์ฐ์ง ์๋๋ค. ํ์ผ์ด ์๋๋ฐ `shots`๊ฐ ์์ผ๋ฉด `SHOT_NO_SCENES`๋ก ๋งํ๋ค.
|
|
105
138
|
|
|
106
139
|
## ๋๋ ์ธ ๋
|
|
107
140
|
|
|
@@ -145,12 +178,14 @@ You are the Video Summarizer role agent.
|
|
|
145
178
|
| `flashcards` | `{ "cards": [{ "front", "back", "cite"? }] }`. 60๊ฐ๊น์ง |
|
|
146
179
|
| `quiz` | `{ "questions": [{ "question", "choices", "answer", "explanation", "cite"? }] }`. 30๊ฐ๊น์ง, `choices`๋ 2~6๊ฐ |
|
|
147
180
|
| `mindmap` | `{ "root": { "label", "cite"?, "children"? } }`. ๋ฃจํธ ์๋ 3๋จ, ๋
ธ๋ 60๊ฐ๊น์ง |
|
|
181
|
+
| `figure` | `{ "title", "diagram": ๋์น์
๋์๊ณผ ๊ฐ์ ๊ผด, "explanation", "cite" }`. ๊ทธ๋ฆผ ํ๋์ 2~4๋ฌธ์ฅ ์ค๋ช
|
|
|
148
182
|
| `comments` | `{ "total", "overview", "groups": [{ "title", "tone", "count", "summary", "examples": [{ "id", "text" }] }] }`. ๋ฌถ์ 12๊ฐ๊น์ง, `examples`๋ 3๊ฐ๊น์ง |
|
|
149
183
|
|
|
150
184
|
- ์ถ์ฒ๋ ๊ณ์ธต ๋ฆฌํฌํธ์ ๊ฐ์ `{ key, from, to }`๋ค. ์์น์
๋ฒ์์ ๋ฌถ์ด์ง ์๊ณ ์คํฌ๋ฆฝํธ ์์ด๋ฉด ๋๋ค.
|
|
151
185
|
- ํค์๋ ๋ง์ปค `{{kw:}}`๋ ์ฐ์ง ์๋๋ค. ํ์ฅ์๋ ํค์๋ ๋ชฉ๋ก์ด ์๋ค(`EXTENSION_KEYWORD`).
|
|
152
|
-
- ์ด๋ฆ ์นธ์๋ `**`๋ฅผ ์ฐ์ง ์๋๋ค. `heading`์ `text`, `list`์ `title`, `timestamps`์ `title`, `quote`์ `speaker`, `actions`์ `owner`์ `due`, `mindmap`์ `label`, `comments` ๋ฌถ์์ `title`์ด ์ด๋ฆ ์นธ์ด๋ค.
|
|
186
|
+
- ์ด๋ฆ ์นธ์๋ `**`๋ฅผ ์ฐ์ง ์๋๋ค. `heading`์ `text`, `list`์ `title`, `timestamps`์ `title`, `quote`์ `speaker`, `actions`์ `owner`์ `due`, `mindmap`์ `label`, `figure`์ `title`๊ณผ ๋์ ์ ๊ธ์, `comments` ๋ฌถ์์ `title`์ด ์ด๋ฆ ์นธ์ด๋ค.
|
|
153
187
|
- `quote`์ `text`์ `comments` ์์์ `text`๋ ์๋ฌธ ์นธ์ด๋ค. ๋์ฌ๋ ๋๊ธ์ ๊ธ์ ๊ทธ๋๋ก ์ฎ๊ธฐ๊ณ `**`๋ฅผ ์ฐ์ง ์๋๋ค. ๋์ฌ ๋ฒ์ญ์ `translation`์ ๋๋ค. ์ธ์ฉ๋ฌธ์ด ์ถ์ฒ ๋ฌธ์ฅ์ ๊ทธ๋๋ก ์์ผ๋ฉด lint๊ฐ `QUOTE_NOT_IN_SOURCE` ๊ฒฝ๊ณ ๋ฅผ ๋ธ๋ค.
|
|
188
|
+
- `figure`์ `diagram`์ ๋์น์
๋์๊ณผ ์ข
๋ฅ, ๋ชจ์, ์ ํ์ด ๊ฐ๋ค. ๋
ธ๋ `cite`๋ ๋์น์
๋ฒ์์ ๋ฌถ์ด์ง ์๊ณ ์คํฌ๋ฆฝํธ ์์ด๋ฉด ๋๋ค. `cite`๋ ๊ผญ ๋จ๋ค. ์ค๋ช
์ด ์ด๋์ ๋์๋์ง ๋ฐ๋ผ๊ฐ ์ ์์ด์ผ ํด์๋ค.
|
|
154
189
|
- `quiz`์ `answer`๋ `choices`์์ 0๋ถํฐ ์ผ ์๋ฆฌ๋ค.
|
|
155
190
|
- `comments` ์์์ `id`์ `text`๋ ์คํฌ์ด ๋๊ธด `comments.json`์์ ๊ทธ๋๋ก ์ฎ๊ธด๋ค. ์๋ id๋ ์๋ฌธ๊ณผ ๋ค๋ฅธ ๊ธ์๋ merge๊ฐ ๋ง๋๋ค. ์ผ๋ถ๋ง ์ฎ๊ธธ ๋๋ ๊ธ์์ ์ซ์ 4์ ์ด์์ ์ด์ด์ ๊ทธ๋๋ก ์ฎ๊ธด๋ค. ๋๊ธ ์์ฑ์ ์ด๋ฆ์ด๋ ์์ด๋๋ ์ฐ์ง ์๋๋ค. ๋๊ธ์ ๋จ์ด ์ด ๊ธ์ด๋ผ ์๋ฃ๋ก๋ง ์ฝ๊ณ ๊ทธ ์์ ์ง์๋ฌธ์ ๋ฐ๋ฅด์ง ์๋๋ค.
|
|
156
191
|
- SVG๋ HTML, ๋งํฌ๋ค์ด ํ๋ฅผ ์ฐ์ง ์๋๋ค. ๊ทธ๋ฆผ๊ณผ ํ๋ ๋ ๋๋ฌ๊ฐ ๋ธ๋ก ๊ตฌ์กฐ๋ก ๊ทธ๋ฆฐ๋ค.
|
|
@@ -185,7 +220,30 @@ You are the Video Summarizer role agent.
|
|
|
185
220
|
| `default` | 2~3๊ฐ | 2~4๊ฐ |
|
|
186
221
|
| `long` | 2~5๊ฐ | 3~6๊ฐ |
|
|
187
222
|
|
|
188
|
-
`difficulty`๊ฐ `easy`๋ฉด ๊ฐ์ ์ถ์ฒ์ ๊ตฌ์กฐ๋ก ์ฐ๋ ๋ง์ ํ์ด ์ด๋ค. ์ ๋ฌธ ์ฉ์ด๋ ์ฒ์ ๋์ฌ ๋ ํ ๋ฒ ํ์ด ์ฃผ๊ณ ๋ฌธ์ฅ์ ์งง๊ฒ ๋๋๋ค. ๋ด์ฉ์ ๋นผ๊ฑฐ๋ ์ง์ด๋ด์ง ์๋๋ค.
|
|
223
|
+
`difficulty`๊ฐ `easy`๋ฉด ๊ฐ์ ์ถ์ฒ์ ๊ตฌ์กฐ๋ก ์ฐ๋ ๋ง์ ํ์ด ์ด๋ค. ์ ๋ฌธ ์ฉ์ด๋ ์ฒ์ ๋์ฌ ๋ ํ ๋ฒ ํ์ด ์ฃผ๊ณ ๋ฌธ์ฅ์ ์งง๊ฒ ๋๋๋ค. ๋ด์ฉ์ ๋นผ๊ฑฐ๋ ์ง์ด๋ด์ง ์๋๋ค. ์ฐ๋ ๋ฐฉ๋ฒ์ ์๋ "์ฌ์ด ๋ฆฌํฌํธ๋ก ํ์ด ์ธ ๋" ์ ์ ์๋ค.
|
|
224
|
+
|
|
225
|
+
## ์ฌ์ด ๋ฆฌํฌํธ๋ก ํ์ด ์ธ ๋
|
|
226
|
+
|
|
227
|
+
์คํฌ์ด ๋ณดํต ๋ฆฌํฌํธ ๊ฒฝ๋ก๋ฅผ ๊ฐ์ด ๋๊ธฐ๋ฉด ์คํฌ๋ฆฝํธ๋ฅผ ์ฒ์๋ถํฐ ๋ค์ ์์ฝํ์ง ์๋๋ค. ๋ณดํต ๋ฆฌํฌํธ๋ฅผ ๋ฐํ์ผ๋ก `difficulty: easy` ๋ฆฌํฌํธ ํ ๋ฒ์ ์ด๋ค. ๋ทฐ์ด์ ์ฝ๊ฒ ๋ณด๊ธฐ ํ ๊ธ์ด ๋ ๋ฆฌํฌํธ๋ฅผ ์ค๊ฐ๋ค. ๋ผ๋๋ฅผ ๊ฐ๊ฒ ๋๋ฉด ์์น์
์๊ฐ์ด ๊ฐ์์ ํ๋ ์์ ๋ค์ ๋ฝ์ง ์๊ณ ๋ณดํต ๋ฆฌํฌํธ์์ ํ์ธํ ์ถ์ฒ๋ ๊ทธ๋๋ก ์ด๋ค.
|
|
228
|
+
|
|
229
|
+
- `options`๋ ๋ณดํต ๋ฆฌํฌํธ ๊ฒ์ ๊ทธ๋๋ก ์ฎ๊ธฐ๊ณ `difficulty`๋ง `easy`๋ก ๋ฐ๊พผ๋ค.
|
|
230
|
+
- ๋์น์
๊ณผ ์์น์
์ `id`์ `cite`, `frameSec`, `skipped`๋ ๊ทธ๋๋ก ์ฎ๊ธด๋ค. ์์น์
`shots`๋ `sec`๊ณผ `cite`๋ฅผ ๊ทธ๋๋ก ๋๊ณ `caption`๋ง ์ฌ์ด ๋ง๋ก ๋ฐ๊พผ๋ค.
|
|
231
|
+
- ์ ๋ชฉ๊ณผ ๊ฒฐ๋ก , ๋ถ๋ฆฟ, ๋์
์ธ ๋ฌธ์ฅ์ ํ์ด ์ด๋ค. ์ ๋ฌธ ์ฉ์ด๋ ์ฒ์ ๋์ฌ ๋ ํ ๋ฒ ํ์ด ์ฃผ๊ณ ๋ฌธ์ฅ์ ์งง๊ฒ ๋๋๋ค.
|
|
232
|
+
- 1๋จ ๋ถ๋ฆฟ ์๋ ๋ถ๋ ํ ๋ฒ์๋ฅผ ์งํจ๋ค. ํ์ด ์ด ์ค๋ช
์ด ๊ธธ์ด์ง๋ฉด 2๋จ ๋ถ๋ฆฟ์ผ๋ก ๋ด๋ฆฐ๋ค.
|
|
233
|
+
- ๋ถ๋ฆฟ์ ๋๋๊ฑฐ๋ ์๋ก ์ฐ๋ฉด ๊ทธ ๋ฌธ์ฅ์ด ๊ธฐ๋ ๋ฌธ์ฅ ๋ฒ์๋ก `cite`๋ฅผ ๋จ๋ค. ๋ฒ์๋ ์คํฌ๋ฆฝํธ ๋ฌธ์ฅ์ ๋ค์ ์ฝ์ด ํ์ธํ๋ค. ๋ณดํต ๋ฆฌํฌํธ์ ์ถ์ฒ๋ฅผ ์ง์์ผ๋ก ์ฎ๊ฒจ ๋ถ์ด์ง ์๋๋ค.
|
|
234
|
+
- ํค์๋๋ `id`์ `term`, `firstCite`๋ฅผ ๊ทธ๋๋ก ๋๊ณ `explanation`๋ง ํ์ด ์ด๋ค. ๋ณธ๋ฌธ์ `{{kw:}}` id๋ ๋ณดํต ๋ฆฌํฌํธ์ ๊ฐ๊ฒ ๋๋ค.
|
|
235
|
+
- ๋์์ ์ ํ์ `difficulty: easy` ๊ฐ์๋ฅผ ๋ฐ๋ฅธ๋ค. ๋ณดํต ๋ฆฌํฌํธ์ ๋์์ ๋ผ๋ฒจ๋ง ์ฌ์ด ๋ง๋ก ๋ฐ๊ฟ ์ฎ๊ธฐ๊ณ ๋์์ด ์๋ ๋์น์
์ ๋จ๊ณ๋ ๊ฒฌ์ฃผ๊ธฐ๊ฐ ์์ผ๋ฉด ๋ํ๋ค.
|
|
236
|
+
- ๋ณดํต ๋ฆฌํฌํธ์ ์๋ ๋ด์ฉ์ ๋ํ์ง ์๊ณ ์๋ ๋ด์ฉ์ ๋นผ์ง๋ ์๋๋ค.
|
|
237
|
+
|
|
238
|
+
๊ธด ์์์ด๋ฉด ์คํฌ์ด ์ฌ์ด ๋ฆฌํฌํธ๋ฅผ ์กฐ๊ฐ์ผ๋ก ๋๋ ๋งก๊ธด๋ค. ๋ณดํต ๋ฆฌํฌํธ๊ฐ ๋ผ๋ ๊ตฌ์ค์ ํ๋ ๋ผ๋ ์กฐ๊ฐ์ ์๋ค.
|
|
239
|
+
|
|
240
|
+
| ์กฐ๊ฐ | ํ์ผ | ๋ชจ์ |
|
|
241
|
+
| ----------- | ----------------------------------- | ---------------------------------------------------------------------------- |
|
|
242
|
+
| ๋์น์
์กฐ๊ฐ | `digest.easy.part-<๋์น์
id>.json` | `{ "section": { ๋์น์
ํ๋ ์ ์ฒด } }`. ์คํฌ์ด ๊ณ ๋ฅธ ๋์น์
ํ๋๋ง ํ์ด ์ด๋ค |
|
|
243
|
+
| ๋์
์กฐ๊ฐ | `digest.easy.lead.json` | `{ "lead": { "question", "answer", "takeaway" }, "keywords": [...] }` |
|
|
244
|
+
|
|
245
|
+
- ๋์น์
์กฐ๊ฐ์ ๋ณดํต ๋ฆฌํฌํธ์ ๊ทธ ๋์น์
๋ง ์ฝ๊ณ ๊ทธ ๋ฒ์์ ๋ฌธ์ฅ๋ง ๋ค์ ํ์ธํ๋ค.
|
|
246
|
+
- ๋์
์กฐ๊ฐ์ `keywords`์๋ ๋ณดํต ๋ฆฌํฌํธ์ ํค์๋๋ฅผ ๋น ์ง์์ด ์ฎ๊ธฐ๊ณ `explanation`๋ง ํ์ด ์ด๋ค. ๋์น์
์กฐ๊ฐ์ ํค์๋๋ฅผ ๋ฐ๋ก ๋ด์ง ์๋๋ค.
|
|
189
247
|
|
|
190
248
|
## ๋ฌธ์ฒด ๊ท์น
|
|
191
249
|
|
|
@@ -201,7 +259,7 @@ You are the Video Summarizer role agent.
|
|
|
201
259
|
|
|
202
260
|
## ๋๋ด๊ธฐ ์
|
|
203
261
|
|
|
204
|
-
๋ฆฌํฌํธ๋ฅผ ์ด ๋ค ์คํฌ์ด `gestalt digest merge`๋ก ํฉ์น๋ฉฐ ๊ฒ์ฌํ๋ค. ์ค๋ฅ ๋ชฉ๋ก์ ๋๋ ค๋ฐ์ผ๋ฉด `path`๊ฐ ๊ฐ๋ฆฌํค๋ ์๋ฆฌ๋ง ๊ณ ์ณ ๋ค์ ์ด๋ค. path ์์ `reports.<n>.`์ ํฉ์น ๋ค์ ์๋ฆฌ๋ผ ๋ฆฌํฌํธ ํ์ผ์์๋ ๊ทธ ๋ค๋ถํฐ ์ฐพ๋๋ค. ํ์ฅ ๋ฆฌํฌํธ๋ `extensions.<n>.`์ ๋ผ๊ณ ์ฐพ๋๋ค. ๊ฒฝ๊ณ (์์น์
๊ฐ์, ๋ถ๋ฆฟ ๊ฐ์)๋ ์์์ ๋ง์ผ๋ฉด ๊ทธ๋๋ก ๋๋ค.
|
|
262
|
+
๋ฆฌํฌํธ๋ฅผ ์ด ๋ค ์คํฌ์ด `gestalt digest merge`๋ก ํฉ์น๋ฉฐ ๊ฒ์ฌํ๋ค. ์ค๋ฅ ๋ชฉ๋ก์ ๋๋ ค๋ฐ์ผ๋ฉด `path`๊ฐ ๊ฐ๋ฆฌํค๋ ์๋ฆฌ๋ง ๊ณ ์ณ ๋ค์ ์ด๋ค. path ์์ `reports.<n>.`์ ํฉ์น ๋ค์ ์๋ฆฌ๋ผ ๋ฆฌํฌํธ ํ์ผ์์๋ ๊ทธ ๋ค๋ถํฐ ์ฐพ๋๋ค. ํ์ฅ ๋ฆฌํฌํธ๋ `extensions.<n>.`์ ๋ผ๊ณ ์ฐพ๋๋ค. ๊ฒฝ๊ณ (์์น์
๊ฐ์, ๋ถ๋ฆฟ ๊ฐ์)๋ ์์์ ๋ง์ผ๋ฉด ๊ทธ๋๋ก ๋๋ค. `DIAGRAM_TOO_FEW`๋ฅผ ๋ฐ์ผ๋ฉด ๋จ๊ณ๋ ๊ฒฌ์ฃผ๊ธฐ, ์๊ฐ ํ๋ฆ, ์์ธ๊ณผ ๊ฒฐ๊ณผ๊ฐ ์๋ ๋์น์
์ ๋์์ ๋ํ๋ค. ๊ทธ๋ฐ ๊ตฌ์กฐ๊ฐ ์๋ ๋์น์
์ ์ต์ง๋ก ๊ทธ๋ฆฌ์ง ์๊ณ ๋น์ ๋๋ค.
|
|
205
263
|
|
|
206
264
|
## Output Format
|
|
207
265
|
|
|
@@ -213,6 +271,8 @@ report: <๊ฒฝ๋ก>
|
|
|
213
271
|
skipped: <๊ตฌ๊ฐ๊ณผ ์ด์ , ์์ผ๋ฉด ์์>
|
|
214
272
|
```
|
|
215
273
|
|
|
274
|
+
`DIAGRAM_TOO_FEW`๋ฅผ ๋ฐ์ ๋ค์ ์ผ์ผ๋ฉด ๋ท์งธ ์ค์ `diagrams: ๋ํจ <N>๊ฐ` ๋๋ `diagrams: ๊ตฌ์กฐ ์์ โ <์ด์ >`๋ฅผ ์ ๋๋ค.
|
|
275
|
+
|
|
216
276
|
์กฐ๊ฐ์ ์ผ์ผ๋ฉด ์ฒซ ์ค์ ๋ฆฌํฌํธ ๋์ ์ด ์กฐ๊ฐ ๊ฒฝ๋ก๋ฅผ ์ ๊ณ ๊ฐ์๋ ๊ทธ ์กฐ๊ฐ์ ๋ ๊ฒ๋ง ์ผ๋ค.
|
|
217
277
|
|
|
218
278
|
ํ์ฅ ๋ฆฌํฌํธ๋ฅผ ์ผ์ผ๋ฉด ์๋ ๋ ์ค์ ๋๋ ค์ค๋ค.
|
|
@@ -96,7 +96,7 @@
|
|
|
96
96
|
| "์ถํ", "ship", "PR ์ฌ๋ฆด ๋๊น์ง", "๋ฆฌ๋ทฐ ํต๊ณผํ ๋๊น์ง", "์ฝํ์ผ๋ฟ ๋ฆฌ๋ทฐ๊น์ง", "copilot ๋ฆฌ๋ทฐ ๋ฐ์์ค", "draft PR ์ฌ๋ฆฌ๊ณ ๋ฆฌ๋ทฐ" | `ship` ์คํฌ ์ฌ์ฉ | ๋ก์ปฌ PR โ ๋ฆฌ๋ทฐ ์๋ ด ๋ฃจํ โ ์น์ธ โ draft PR โ Copilot ์๋ ด ๋ฃจํ โ ready. ๋ฆฌ๋ทฐ ํ ๋ฒ๋ง์ด๋ฉด `review` |
|
|
97
97
|
| "์ฌ๋ ๋ณด๋ด", "์ฌ๋์ผ๋ก ๋ณด๋ด", "๋ฉ์์ง ๋ณด๋ด", "๋ฉ์ธ์ง ๋ณด๋ด", "์ ๋ฌํด์ค", "๊ณต์งํด์ค", "๊ณต์ง ์ฌ๋ ค์ค", "์ฌ๋์ ์ฌ๋ ค์ค", "์ฌ๋ ๋ฉ์์ง ์ ์ก", "์์ฝ ๋ฐ์ก", "์์ฝ๋ฉ์ธ์ง", "์์ฝ ๋ฉ์์ง", "์ด๋ฐ ๋ณด๋ด", "๋ด์ผ ์์นจ์ ๋ณด๋ด", "9์์ ๋ณด๋ด" | `slack-send` ์คํฌ ์ฌ์ฉ | ๋ด๋ถ์ ์ผ๋ก slack-messenger ๋ค๋ฌ๊ธฐ โ ์น์ธ ๋จ๊ณ โ ์ ์ก |
|
|
98
98
|
| "์ด ํ๋ฉด๋ค UX ๋ถ์ํด์ค", "UX ๋ถ์๋ง ํด์ค", "ํ๋ฉด์ ์์ฐ ํฌ์ธํธ์ ํ์ธ ํฌ์ธํธ๋ง ์ ๋ฆฌํด์ค", "์ฌ์ฉ์ ๊ด์ ์ผ๋ก ํ๋ฉด ๋ถ์ํด์ค" | `ux-research` ์คํฌ ์ฌ์ฉ | ์บก์ฒ๊ฐ ์๋ research.json์์ ์น์
4๋ง ์ฑ์ด๋ค. ํ๋ฉด ์์ง์ด๋ฉด `screen-ref`, ๋ณธ์
์์ ์ถ๋ฐํ ์ด์ ๋ถ์์ด๋ฉด `reverse-plan`, ์ ์ฒด๋ฅผ ํ ๋ฒ์ ๋๋ฆฌ๋ฉด `research` |
|
|
99
|
-
| "์ด ์์ ์์ฝํด์ค", "์ ํ๋ธ ์์ ์์ฝํด์ค", "์ ํ๋ธ ์์ ์ ๋ฆฌํด์ค", "์์ ์์ฝ ๋ทฐ์ด ๋ง๋ค์ด์ค", "์ด ๊ฐ์ ์์ ๋ด์ฉ ์ ๋ฆฌํด์ค", "์ด ์์์ผ๋ก ํด์ฆ ๋ง๋ค์ด์ค", "์์ ํ์๋ก ์ ๋ฆฌํด์ค" | `video-digest` ์คํฌ ์ฌ์ฉ | ingest โ video-summarizer๊ฐ
|
|
99
|
+
| "์ด ์์ ์์ฝํด์ค", "์ ํ๋ธ ์์ ์์ฝํด์ค", "์ ํ๋ธ ์์ ์ ๋ฆฌํด์ค", "์์ ์์ฝ ๋ทฐ์ด ๋ง๋ค์ด์ค", "์ด ๊ฐ์ ์์ ๋ด์ฉ ์ ๋ฆฌํด์ค", "์ด ์์์ผ๋ก ํด์ฆ ๋ง๋ค์ด์ค", "์์ ํ์๋ก ์ ๋ฆฌํด์ค" | `video-digest` ์คํฌ ์ฌ์ฉ | ingest โ video-summarizer๊ฐ ๋ณดํต ๋ฆฌํฌํธ์ ๊ทธ๊ฑธ ํ์ด ์ด ์ฌ์ด ๋ฆฌํฌํธ ์์ฑ โ merge๋ก digest.json์ ํฉ์น๊ธฐ โ frames โ ์ค๋ฌธ โ render โ serve ๋๋ export --md. ์ด๋ฏธ ์์ฝํ ์์์ ๋์ด๋๋ ๊ตฌ๊ฐ, ์์ฒญ์ด ๋ค๋ฅธ ๋ฆฌํฌํธ๋ฅผ ๋ํ ๋๋ ingest๋ฅผ ๊ฑด๋๋ด๋ค. templates๋ฅผ ๋ฐ์ผ๋ฉด merge ๋ค์ ํ
ํ๋ฆฟ๋ง๋ค ํ์ฅ ๋ฆฌํฌํธ๋ฅผ ์จ์ merge --extension์ผ๋ก ํฉ์น๋ค. ํ์ฅ๋ง ๋ํ ๋๋ ์์ง๊ณผ ์์ฝ์ ๊ฑด๋๋ด๋ค. ์ด๋ฏธ ์๋ slug๋ฅผ ๋ค์ ๋ณด์ฌ์ฃผ๊ธฐ๋ง ํ๋ ค๋ฉด serve๋ง ๋ถ๋ฅธ๋ค. ๊ฒฝ์์ฌ ์กฐ์ฌ ์์์ ์์์ ๋ค๋ฃจ๋ฉด `research`, ์์ ํ๋ฉด๋ง ๋ชจ์ผ๋ ค๋ฉด `screen-ref` |
|
|
100
100
|
|
|
101
101
|
<!-- skill-routing:end -->
|
|
102
102
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: video-digest
|
|
3
|
-
version: '1.
|
|
3
|
+
version: '1.3.1'
|
|
4
4
|
description: '์ ํ๋ธ ์ฃผ์๋ ์์ ํ์ผ์ ๋ฐ์ ๋ฌธ์ฅ๋ง๋ค ์ถ์ฒ๊ฐ ๋ฌ๋ฆฐ ์์ฝ ๋ทฐ์ด๋ฅผ ๋ง๋ ๋ค. ๋ชฉ์ฐจ์ ํ๋ ์ด์ด, ์คํฌ๋ฆฝํธ ๋ฐ๋ผ๊ฐ๊ธฐ๊ฐ ๋ถ์ HTML๊ณผ ๋งํฌ๋ค์ด๊น์ง ๋ธ๋ค("์ด ์์ ์์ฝํด์ค", "์ ํ๋ธ ์์ ์ ๋ฆฌํด์ค"). ํ์๋ก์ด๋ ํด์ฆ, ๋ง์ธ๋๋งต, ๋๊ธ ๋ถ์ ๊ฐ์ ํ์ฅ ๋ฆฌํฌํธ๋ ํ
ํ๋ฆฟ์ผ๋ก ๋ถ์ธ๋ค. ๊ฒฝ์ ์๋น์ค ์กฐ์ฌ ์ค์ ์์์ ๋ถ์ํ๋ ์ผ์ด๋ฉด research๋ฅผ ์ด๋ค.'
|
|
5
5
|
triggers:
|
|
6
6
|
- '์ด ์์ ์์ฝํด์ค'
|
|
@@ -11,7 +11,7 @@ triggers:
|
|
|
11
11
|
- '์ด ์์์ผ๋ก ํด์ฆ ๋ง๋ค์ด์ค'
|
|
12
12
|
- '์์ ํ์๋ก ์ ๋ฆฌํด์ค'
|
|
13
13
|
routing:
|
|
14
|
-
note: 'ingest โ video-summarizer๊ฐ
|
|
14
|
+
note: 'ingest โ video-summarizer๊ฐ ๋ณดํต ๋ฆฌํฌํธ์ ๊ทธ๊ฑธ ํ์ด ์ด ์ฌ์ด ๋ฆฌํฌํธ ์์ฑ โ merge๋ก digest.json์ ํฉ์น๊ธฐ โ frames โ ์ค๋ฌธ โ render โ serve ๋๋ export --md. ์ด๋ฏธ ์์ฝํ ์์์ ๋์ด๋๋ ๊ตฌ๊ฐ, ์์ฒญ์ด ๋ค๋ฅธ ๋ฆฌํฌํธ๋ฅผ ๋ํ ๋๋ ingest๋ฅผ ๊ฑด๋๋ด๋ค. templates๋ฅผ ๋ฐ์ผ๋ฉด merge ๋ค์ ํ
ํ๋ฆฟ๋ง๋ค ํ์ฅ ๋ฆฌํฌํธ๋ฅผ ์จ์ merge --extension์ผ๋ก ํฉ์น๋ค. ํ์ฅ๋ง ๋ํ ๋๋ ์์ง๊ณผ ์์ฝ์ ๊ฑด๋๋ด๋ค. ์ด๋ฏธ ์๋ slug๋ฅผ ๋ค์ ๋ณด์ฌ์ฃผ๊ธฐ๋ง ํ๋ ค๋ฉด serve๋ง ๋ถ๋ฅธ๋ค. ๊ฒฝ์์ฌ ์กฐ์ฌ ์์์ ์์์ ๋ค๋ฃจ๋ฉด `research`, ์์ ํ๋ฉด๋ง ๋ชจ์ผ๋ ค๋ฉด `screen-ref`'
|
|
15
15
|
inputs:
|
|
16
16
|
source:
|
|
17
17
|
type: string
|
|
@@ -29,14 +29,10 @@ inputs:
|
|
|
29
29
|
type: string
|
|
30
30
|
required: false
|
|
31
31
|
description: "'viewer'(๊ธฐ๋ณธ, ๋ก์ปฌ ์๋ฒ๋ก ๋์ด๋ค) ๋๋ 'md'(๋งํฌ๋ค์ด๋ง ๋ธ๋ค)"
|
|
32
|
-
length:
|
|
33
|
-
type: string
|
|
34
|
-
required: false
|
|
35
|
-
description: "๋ฆฌํฌํธ ๋ถ๋. 'short', 'default'(๊ธฐ๋ณธ), 'long'"
|
|
36
32
|
difficulty:
|
|
37
33
|
type: string
|
|
38
34
|
required: false
|
|
39
|
-
description: "
|
|
35
|
+
description: "๋ค์ ๋ง๋ค ๋์ด๋. 'normal', 'easy'. ๋ณดํต๊ณผ ์ฌ์ด ๋ฆฌํฌํธ๋ ๋ ํจ๊ป ๋ง๋ค๊ณ ๋น์ฐ๋ฉด ์๋ ๋์ด๋๋ง ๋ง๋ ๋ค. ๊ฐ์ ์ฃผ๋ฉด ๊ทธ ๋์ด๋๋ ์ด๋ฏธ ์์ด๋ ๋ค์ ๋ง๋ ๋ค"
|
|
40
36
|
range:
|
|
41
37
|
type: string
|
|
42
38
|
required: false
|
|
@@ -73,8 +69,8 @@ outputs:
|
|
|
73
69
|
์์ ํ๋๋ฅผ ๋ฌธ์ฅ ๋จ์ ์คํฌ๋ฆฝํธ๋ก ๋ฐ์ ์ถ์ฒ๊ฐ ๋ฌ๋ฆฐ ๊ณ์ธต ์์ฝ์ ์ฐ๊ณ ๋ทฐ์ด๋ก ๋์ด๋ค. ์ผ์ ์์ง, ์์ฝ, ํํ ์์๋ก ๋๋๋ค. ๊ทธ์ค ์์ฝ ์ธต๊ณผ ํํ ์ธต์ ๊ฐ๋ผ ๋์ด์ ์์ฝ์ ๋ค์ ์ฐ์ง ์๊ณ ๋ทฐ์ด๋ง ๋ค์ ๋ฝ์ ์ ์๋ค.
|
|
74
70
|
|
|
75
71
|
- **์์ง**: `gestalt digest ingest`๊ฐ ์๋ง์ ๋ฐ์ ๋ฌธ์ฅ์ผ๋ก ํฉ์น๋ค. ํ๋ ์์ ์์ฝ์ด ๋๋ ๋ค `gestalt digest frames`๊ฐ ๋ฝ๋๋ค.
|
|
76
|
-
- **์์ฝ**: `video-summarizer`๊ฐ `transcript.json`์ ์ฝ๊ณ
|
|
77
|
-
- **ํํ**: `ges_digest render`๊ฐ `digest.json`์์ HTML๊ณผ ๋งํฌ๋ค์ด์ ์ฝ๋๋ก ๋ง๋ ๋ค. LLM์ ๋ถ๋ฅด์ง ์๋๋ค. ๋ทฐ์ด ํด๋ฐ๊ฐ ๋ฆฌํฌํธ ์ฌ์ด๋ฅผ ์ค๊ฐ๋ค.
|
|
72
|
+
- **์์ฝ**: `video-summarizer`๊ฐ `transcript.json`์ ์ฝ๊ณ ๋ณดํต ๋ฆฌํฌํธ๋ฅผ ํ์ผ๋ก ์ด๋ค. ์ด์ด์ ๊ทธ ๋ฆฌํฌํธ๋ฅผ ํ์ด ์ด ์ฌ์ด ๋ฆฌํฌํธ๋ฅผ ํ ๋ฒ ๋ ์ด๋ค. ์ด ๋จ๊ณ์์๋ง LLM์ด ๋๋ค. `gestalt digest merge`๊ฐ ๊ทธ ๋ฆฌํฌํธ๋ฅผ `digest.json`์ `reports[]`์ ํฉ์น๋ค. ์ต์
์ด ๊ฐ์ ๋ฆฌํฌํธ๊ฐ ์ด๋ฏธ ์์ผ๋ฉด ๋ฐ๊ฟ ๋ผ์ด๋ค. ์๋ก ์ฐ๋ ๋ฆฌํฌํธ์ ๋ถ๋์ ๋ `long`์ด๋ค.
|
|
73
|
+
- **ํํ**: `ges_digest render`๊ฐ `digest.json`์์ HTML๊ณผ ๋งํฌ๋ค์ด์ ์ฝ๋๋ก ๋ง๋ ๋ค. LLM์ ๋ถ๋ฅด์ง ์๋๋ค. ๋ทฐ์ด ํด๋ฐ๊ฐ ๋ฆฌํฌํธ ์ฌ์ด๋ฅผ ์ค๊ฐ๋ค. ์ฒ์ ์ด๋ฉด ๋ณดํต ๋ฆฌํฌํธ๊ฐ ๋ณด์ด๊ณ ์ฝ๊ฒ ๋ณด๊ธฐ ํ ๊ธ์ด ์ฌ์ด ๋ฆฌํฌํธ์ ์ค๊ฐ๋ค. ์ digest์ ๋จ์ ์งง๊ฒ์ ๊ธฐ๋ณธ ๋ฆฌํฌํธ๋ ๋ค๋ฅธ ๋ฆฌํฌํธ ๋ชฉ๋ก์์ ๊ณ ๋ฅธ๋ค.
|
|
78
74
|
|
|
79
75
|
์์ฝ ๋ณธ๋ฌธ์ ๋ชจ๋ ๋ถ๋ฆฟ์๋ ๋ฌธ์ฅ ๋ฒํธ ์ถ์ฒ๊ฐ ๋ถ๋๋ค. ์ถ์ฒ๊ฐ ์๋ฑํ ๋ฌธ์ฅ์ ๊ฐ๋ฆฌํค๋ฉด ๋ทฐ์ด์ `[n]`์ด ๋ค๋ฅธ ์ฅ๋ฉด์ผ๋ก ์ด๋ํ๋ค. ๊ทธ๋์ lint ์ค๋ฅ๊ฐ ํ๋๋ผ๋ ๋จ์ผ๋ฉด ๋ ๋๊ฐ ๋งํ๋ค.
|
|
80
76
|
|
|
@@ -89,24 +85,25 @@ outputs:
|
|
|
89
85
|
|
|
90
86
|
## ์ฐ๋ ๋๊ตฌ
|
|
91
87
|
|
|
92
|
-
| ๋๊ตฌ | ์ฐ๋ ๋
|
|
93
|
-
| ------------------------------------------------ |
|
|
94
|
-
| `gestalt digest ingest <url\|ํ์ผ>` | ๋ฉํ๋ฐ์ดํฐ์ ์๋ง์ ๋ฐ์ `transcript.json` ๋ง๋ค๊ธฐ. ์๋ง์ด ์์ผ๋ฉด faster-whisper
|
|
95
|
-
| `gestalt digest merge <slug> <ํ์ผ>` | ๋ฆฌํฌํธ ํ ๋ฒ์ `digest.json`์ ํฉ์น๋ฉฐ ์คํค๋ง์ lint ๊ฒ์ฌ. ์ค๋ฅ๊ฐ ์์ผ๋ฉด ์ ์ฅํ์ง ์๋๋ค
|
|
96
|
-
| `gestalt digest slice <slug> --range <๊ตฌ๊ฐ>` | ๊ตฌ๊ฐ ๋ฆฌํฌํธ์ฉ์ผ๋ก ๊ทธ ๊ตฌ๊ฐ ๋ฌธ์ฅ๋ง ์๋ผ ์ ์ฅ. ๋ฌธ์ฅ ๋ฒํธ๋ ๊ทธ๋๋ก ๋๋ค
|
|
97
|
-
| `ges_digest action=validate` | `digest.json`์ ์คํค๋ง์ lint ๊ฒ์ฌ. ๋ฆฌํฌํธ ํค ๋ชฉ๋ก๋ ์ค๋ค
|
|
98
|
-
| `gestalt digest translate-apply <slug> <ํ์ผ>` | ์คํฌ๋ฆฝํธ ๋ฒ์ญ์ ๋ฌธ์ฅ ๋ฒํธ๋ก ๋ถ์ด๊ธฐ. ์ธ์ด๊ฐ ๋ฐ๋๋ฉด ์ด์ ๋ฒ์ญ์ ์ง์ด๋ค
|
|
99
|
-
| `gestalt digest ocr <slug>` | ์ผ์ ๊ฐ๊ฒฉ์ผ๋ก ํ๋ ์์ ๋ฝ์ ํ๋ฉด ๊ธ์๋ฅผ ์ฝ๊ณ `ocr.json`์ ์ฐ๊ธฐ. tesseract๊ฐ ์์ด์ผ ํ๋ค
|
|
100
|
-
| `gestalt digest
|
|
101
|
-
| `gestalt digest
|
|
102
|
-
| `gestalt digest
|
|
103
|
-
| `gestalt digest
|
|
104
|
-
| `gestalt digest
|
|
105
|
-
| `
|
|
106
|
-
| `ges_digest action=
|
|
107
|
-
| `ges_digest action=
|
|
108
|
-
| `
|
|
109
|
-
| `gestalt digest
|
|
88
|
+
| ๋๊ตฌ | ์ฐ๋ ๋ |
|
|
89
|
+
| ------------------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
90
|
+
| `gestalt digest ingest <url\|ํ์ผ>` | ๋ฉํ๋ฐ์ดํฐ์ ์๋ง์ ๋ฐ์ `transcript.json` ๋ง๋ค๊ธฐ. ์๋ง์ด ์์ผ๋ฉด faster-whisper |
|
|
91
|
+
| `gestalt digest merge <slug> <ํ์ผ>` | ๋ฆฌํฌํธ ํ ๋ฒ์ `digest.json`์ ํฉ์น๋ฉฐ ์คํค๋ง์ lint ๊ฒ์ฌ. ์ค๋ฅ๊ฐ ์์ผ๋ฉด ์ ์ฅํ์ง ์๋๋ค |
|
|
92
|
+
| `gestalt digest slice <slug> --range <๊ตฌ๊ฐ>` | ๊ตฌ๊ฐ ๋ฆฌํฌํธ์ฉ์ผ๋ก ๊ทธ ๊ตฌ๊ฐ ๋ฌธ์ฅ๋ง ์๋ผ ์ ์ฅ. ๋ฌธ์ฅ ๋ฒํธ๋ ๊ทธ๋๋ก ๋๋ค |
|
|
93
|
+
| `ges_digest action=validate` | `digest.json`์ ์คํค๋ง์ lint ๊ฒ์ฌ. ๋ฆฌํฌํธ ํค ๋ชฉ๋ก๋ ์ค๋ค |
|
|
94
|
+
| `gestalt digest translate-apply <slug> <ํ์ผ>` | ์คํฌ๋ฆฝํธ ๋ฒ์ญ์ ๋ฌธ์ฅ ๋ฒํธ๋ก ๋ถ์ด๊ธฐ. ์ธ์ด๊ฐ ๋ฐ๋๋ฉด ์ด์ ๋ฒ์ญ์ ์ง์ด๋ค |
|
|
95
|
+
| `gestalt digest ocr <slug>` | ์ผ์ ๊ฐ๊ฒฉ์ผ๋ก ํ๋ ์์ ๋ฝ์ ํ๋ฉด ๊ธ์๋ฅผ ์ฝ๊ณ `ocr.json`์ ์ฐ๊ธฐ. tesseract๊ฐ ์์ด์ผ ํ๋ค |
|
|
96
|
+
| `gestalt digest scenes <slug>` | ์์น์
`shots`๊ฐ ๊ณ ๋ฅผ ํ๋ณด ์ฅ๋ฉด์ `scenes.json`์ ์ฐ๊ธฐ. `ocr.json`์ด ์์ผ๋ฉด ํ๋ฉด ๊ธ์๋ก, ์์ผ๋ฉด ffmpeg ์ฅ๋ฉด ์ ํ์ผ๋ก ๊ณ ๋ฅธ๋ค. ์คํฌ์ `ocr.json`์ด ์์ ๋๋ง ๋ถ๋ฅธ๋ค |
|
|
97
|
+
| `gestalt digest frames <slug>` | ์์น์
`frameSec`๋ง๋ค ํ๋ ์ ํ ์ฅ ๋ฝ๊ธฐ. `shots` ์ฅ๋ฉด์ 720p๋ก ๋ฐ๋ก ๋ฝ๋๋ค |
|
|
98
|
+
| `gestalt digest templates` | ํ์ฅ ๋ฆฌํฌํธ ํ
ํ๋ฆฟ ๋ชฉ๋ก. ๊ธฐ๋ณธ ํ
ํ๋ฆฟ๊ณผ `.gestalt/digest/templates/`์ ์ฌ์ฉ์ ํ
ํ๋ฆฟ์ ํจ๊ป ์ค๋ค |
|
|
99
|
+
| `gestalt digest template <id>` | ํ
ํ๋ฆฟ์ ์์ฝ ์ง์ ๋ณธ๋ฌธ ์ถ๋ ฅ. `video-summarizer`์ ๊ทธ๋๋ก ๋๊ธด๋ค |
|
|
100
|
+
| `gestalt digest comments <slug>` | ์ ํ๋ธ ๋๊ธ์ ์ธ๊ธฐ์์ผ๋ก ๋ฐ์ `comments.json`์ ์ฐ๊ธฐ. ์์ฑ์ ์ ๋ณด๋ ์ ์ฅํ์ง ์๋๋ค |
|
|
101
|
+
| `gestalt digest merge <slug> <ํ์ผ> --extension` | ํ์ฅ ๋ฆฌํฌํธ ํ ๋ฒ์ `digest.json`์ `extensions[]`์ ํฉ์น๋ฉฐ ๊ฒ์ฌ. ํ
ํ๋ฆฟ๊ณผ ์ธ์ด๊ฐ ๊ฐ์ผ๋ฉด ๋ฐ๊ฟ ๋ผ์ด๋ค |
|
|
102
|
+
| `ges_digest action=prose_extract` | ์ค๋ฌธํ ๋ฌธ์ฅ๋ง path์ hash๋ก ๋ฝ๊ธฐ. ์ ๋ชฉ์ ๋น ์ง๋ค. ๊ทธ๋ฆผ ๊ธ์๋ `kind: "label"`๊ณผ `group`์ด ๋ถ์ด ํจ๊ป ๋์จ๋ค |
|
|
103
|
+
| `ges_digest action=prose_apply` | ๋ค๋ฌ์ ๋ฌธ์ฅ์ ๊ฐ์ path๋ก ๋๋๋ ค ๋ฃ๊ณ `**`, `{{kw:}}`, ์ซ์, ๋งํฌ๊ฐ ๋จ์๋์ง์ ๋ผ๋ฒจ์ด ์๋ฌธ๋ณด๋ค ๊ธธ์ด์ง์ง ์์๋์ง ๊ฒ์ฌ |
|
|
104
|
+
| `ges_digest action=render` | `digest.html`๊ณผ `digest.md` ์ฐ๊ธฐ |
|
|
105
|
+
| `gestalt digest serve <slug>` | ๋ ๋๋ฅผ ์ธ๋ผ์ธ ์์ด ๋ค์ ๋๋ฆฌ๊ณ ๋ทฐ์ด๋ฅผ 127.0.0.1๋ก ๋์ฐ๊ธฐ. ๋๋์ง ์๋ ๋ช
๋ น์ด๋ผ ๋ฐฑ๊ทธ๋ผ์ด๋๋ก ๋์ด๋ค. ์ ํ๋ธ ์ฌ์์ ์ฌ๊ธฐ์๋ง ๋๋ค |
|
|
106
|
+
| `gestalt digest export <slug> --md` | ๋งํฌ๋ค์ด๋ง ๋ด๊ธฐ |
|
|
110
107
|
|
|
111
108
|
## ์ ์ฒด ํ๋ฆ
|
|
112
109
|
|
|
@@ -127,7 +124,7 @@ Step 1 ingest โ Step 2 ์์ฝ ์์ฑ โ Step 3 merge โ Step 3.5 ํ์ฅ ๋ฆฌ
|
|
|
127
124
|
| `repoRoot`, ๋ช
๋ น์ ๋ฃ๋ ํ์ผ ๊ฒฝ๋ก | ์์๋ฐ์ดํ(`'`)๊ฐ ์๋ ๊ฐ |
|
|
128
125
|
| `slug` | `^[a-z0-9][a-z0-9-]{0,63}$` |
|
|
129
126
|
| `templates`์ ๊ฐ id | `^[a-z0-9][a-z0-9-]{0,39}$` |
|
|
130
|
-
| `
|
|
127
|
+
| `difficulty` | ์
๋ ฅ ์ ์์ ์ ํ ๊ฐ ์ค ํ๋. `length`๊ฐ ํจ๊ป ์ค๋ฉด ๋ถ๋์ ๊ธธ๊ฒ๋ง ๋ง๋ ๋ค๊ณ ์๋ฆฌ๊ณ ๊ทธ ๊ฐ์ ๋ฒ๋ฆฐ๋ค |
|
|
131
128
|
| `lang`, `reportLang` | `^[A-Za-z0-9-]+$` |
|
|
132
129
|
| `--report` ํค | `^[A-Za-z0-9.-]+$`. ํ์ฅ ํค๋ `quiz.ko`์ฒ๋ผ ์ ์ด ๋ ๋ค |
|
|
133
130
|
| `range` | `^[0-9:]+-[0-9:]+$`. ๋์ ์ ์ด ๋จ์ ์ ์๋ค. `1:30.5`์ฒ๋ผ ์์๊ฐ ๋ ๊ฐ์ ๋ช
๋ น์ด ๊ฑฐ์ ํ๋ค |
|
|
@@ -141,15 +138,23 @@ gestalt digest ingest '<source>' --repo-root '<repoRoot>' [--lang '<code>'] [--s
|
|
|
141
138
|
|
|
142
139
|
์ถ๋ ฅ์ slug์ ๋ฌธ์ฅ ์, ์๋ง ์ถ์ฒ(`manual`, `auto`, `whisper`)๋ฅผ ๋ฐ์ ๋๋ค. `์ ์ฅ:` ์ค์ `transcript.json`์ ์ ๋ ๊ฒฝ๋ก๋ค. ์ด ๊ฐ์ `<transcriptPath>`๋ก, ๊ฐ์ ํด๋์ `report.draft.json`์ `<reportPath>`๋ก ๋ฐ์ ๋๋ค. ์๋ ์๋ง์ ๋ฌธ์ฅ ๋ ๋ถํธ๊ฐ ์์ด ๊ธธ์ด์ ์ผ ๊ฐ๊ฒฉ์ผ๋ก ๋๊ธด๋ค. ๋ฌธ์ฅ์ด ์ง๋์น๊ฒ ์งง๊ฑฐ๋ ๊ธธ๋ฉด ๋ณด๊ณ ์ ์ ๋๋ค.
|
|
143
140
|
|
|
141
|
+
์ ํ๋ธ๊ฐ 403์ ๋ด๋ฉด ingest๊ฐ ๋ค๋ฅธ ํด๋ผ์ด์ธํธ๋ก ํ ๋ฒ ๋ ์๋ํ๋ค. ๊ทธ๋๋ ์คํจํ๋ฉด ์ค๋ฅ๋ฅผ ๊ทธ๋๋ก ๋ณด์ฌ์ฃผ๊ณ ๋ฉ์ถ๋ค. ์ฟ ํค๋ ๋ก๊ทธ์ธ์ ๋์ ๋ฃ์ง ์๋๋ค.
|
|
142
|
+
|
|
144
143
|
**`ocr`์ด true๋ฉด ํ๋ฉด ๊ธ์๋ ์ฝ๋๋ค.** ingest์ `--ocr`์ ๋ถ์ด๋ฉด ์คํฌ๋ฆฝํธ๋ฅผ ๋ง๋ ๋ค ์ด์ด์ ์ฝ๋๋ค. ์์ง์ ๊ฑด๋๋ด slug๋ `ocr.json`์ด ์์ ๋๋ง ๋ฐ๋ก ๋ถ๋ฅธ๋ค. ์ด๋ฏธ ์์ผ๋ฉด `<repoRoot>/.gestalt/digest/<slug>/ocr.json`์ ๊ทธ๋๋ก `<ocrPath>`๋ก ์ด๋ค.
|
|
145
144
|
|
|
146
145
|
```bash
|
|
147
146
|
gestalt digest ocr '<slug>' --repo-root '<repoRoot>' [--interval <์ด>]
|
|
148
147
|
```
|
|
149
148
|
|
|
150
|
-
`ํ๋ฉด ๊ธ์:` ๋ค์ `์ ์ฅ:` ์ค์ด `ocr.json`์ ์ ๋ ๊ฒฝ๋ก๋ค. ์ด ๊ฐ์ `<ocrPath>`๋ก ๋ฐ์ ๋๋ค. tesseract๊ฐ ์๋ค๋ ์ค๋ฅ๊ฐ ๋๋ฉด ์ค์น๋ฅผ ๋์ ํ์ง ์๋๋ค. ์๋ด ๋ฌธ๊ตฌ๋ฅผ ๋ณด๊ณ ์ ์ ๊ณ ํ๋ฉด ๊ธ์ ์์ด Step 2๋ก ๊ฐ๋ค. ์ฝ์ ํญ๋ชฉ์ด 0๊ฐ์ฌ๋ ๊ฐ๋ค.
|
|
149
|
+
`ํ๋ฉด ๊ธ์:` ๋ค์ `์ ์ฅ:` ์ค์ด `ocr.json`์ ์ ๋ ๊ฒฝ๋ก๋ค. ์ด ๊ฐ์ `<ocrPath>`๋ก ๋ฐ์ ๋๋ค. ๊ทธ ์ฌ์ด์ `ํ๋ ์ N์ฅ ์ค ์๊ฐ ๋ก๊ทธ๊ฐ M๊ฐ๋ฟ์ด๋ผ` ์ค์ด ๋์ค๋ฉด N๊ณผ M์ ๋ฐ์ ๋์๋ค๊ฐ Step 7 ๋ณด๊ณ ์ ์ ๋๋ค. tesseract๊ฐ ์๋ค๋ ์ค๋ฅ๊ฐ ๋๋ฉด ์ค์น๋ฅผ ๋์ ํ์ง ์๋๋ค. ์๋ด ๋ฌธ๊ตฌ๋ฅผ ๋ณด๊ณ ์ ์ ๊ณ ํ๋ฉด ๊ธ์ ์์ด Step 2๋ก ๊ฐ๋ค. ์ฝ์ ํญ๋ชฉ์ด 0๊ฐ์ฌ๋ ๊ฐ๋ค.
|
|
151
150
|
|
|
152
|
-
|
|
151
|
+
**ํ๋ฉด ๊ธ์๋ฅผ ์ฝ์์ผ๋ฉด ํ๋ณด ์ฅ๋ฉด์ ๊ณ ๋ฅธ๋ค.** `<ocrPath>`๊ฐ ์์ ๋๋ง ๋ถ๋ฅธ๋ค. ํ๋ฉด ๊ธ์๊ฐ ์์ผ๋ฉด ํ๋ณด์๋ ๊ธ์๊ฐ ์์ด์ ์ฅ๋ฉด์ ๋ชป ๋ณด๋ ์์ฝ ์์ฑ์๊ฐ ๊ณ ๋ฅผ ๊ทผ๊ฑฐ๊ฐ ์๋ค. ์์ง์ ๊ฑด๋๋ด slug๋ `scenes.json`์ด ์๊ฑฐ๋ ๊ทธ ๋ค์ `ocr.json`์ ์๋ก ๋ง๋ค์์ ๋๋ง ๋ถ๋ฅธ๋ค. ๋ค์ ๋ถ๋ฅด์ง ์์ผ๋ฉด `<repoRoot>/.gestalt/digest/<slug>/scenes.json`์ ๊ทธ๋๋ก `<scenesPath>`๋ก ์ด๋ค.
|
|
152
|
+
|
|
153
|
+
```bash
|
|
154
|
+
gestalt digest scenes '<slug>' --repo-root '<repoRoot>'
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
`ํ๋ณด ์ฅ๋ฉด N๊ฐ` ๋ค์ `์ ์ฅ:` ์ค์ด `scenes.json`์ ์ ๋ ๊ฒฝ๋ก๋ค. ์ด ๊ฐ์ `<scenesPath>`๋ก ๋ฐ์ ๋๋ค. ์ฌ๋ผ์ด๋๊ฐ ๋์ด๊ฐ ์๋ฆฌ๋ฅผ `ocr.json`์ ๊ธ์๋ก ๊ณ ๋ฅธ๋ค. `ํ๋ณด๊ฐ N๊ฐ๋ผ ์์ ์ ์ฒด์์ ๊ณ ๋ฅด๊ฒ M๊ฐ๋ง ๋จ๊ฒผ์ด์` ์ค์ด ๋์ค๋ฉด ์๊ธฐ ์ ํ๋ณด ์ N์ ๋ฐ์ ๋์๋ค๊ฐ Step 7 ๋ณด๊ณ ์ ์ ๋๋ค. ๋ช
๋ น์ด ์คํจํ๋ฉด ์ค๋ฅ๋ฅผ ๋ณด๊ณ ์ ์ ๊ณ `<scenesPath>` ์์ด Step 2๋ก ๊ฐ๋ค. ๊ทธ๋ ๋ฆฌํฌํธ์๋ `shots`๊ฐ ์๋ค. ํ๋ณด๊ฐ 0๊ฐ์ฌ๋ ํ์ผ์ ๊ทธ๋๋ก ๋๊ธด๋ค.
|
|
153
158
|
|
|
154
159
|
**๊ตฌ๊ฐ์ ๋ฐ์์ผ๋ฉด ์คํฌ๋ฆฝํธ๋ฅผ ์๋ฅธ๋ค.** ์์ง์ด ๋๋ ๋ค ๋ถ๋ฅธ๋ค.
|
|
155
160
|
|
|
@@ -159,13 +164,29 @@ gestalt digest slice '<slug>' --range '<range>' --json --repo-root '<repoRoot>'
|
|
|
159
164
|
|
|
160
165
|
์ถ๋ ฅ์ `path`๋ฅผ `<transcriptPath>` ๋์ Step 2์ ๋๊ธฐ๊ณ `range`(์ด ํํ)๋ฅผ `<rangeSec>`๋ก ๋ฐ์ ๋๋ค. ์๋ผ ๋ธ ํ์ผ์ ๋ฌธ์ฅ ๋ฒํธ๋ ์๋ ์คํฌ๋ฆฝํธ ๋ฒํธ ๊ทธ๋๋ก๋ผ ์ถ์ฒ๊ฐ ์ ์ฒด ์คํฌ๋ฆฝํธ๋ฅผ ๊ฐ๋ฆฌํจ๋ค. ๊ตฌ๊ฐ์ ๋ ๋ฌธ์ฅ์ด ์์ผ๋ฉด ๋ช
๋ น์ด ์คํจํ๋ค. ๊ทธ ๋ฉ์์ง๋ฅผ ๋ณด์ฌ ์ฃผ๊ณ ๋ฉ์ถ๋ค.
|
|
161
166
|
|
|
162
|
-
**์ด๋ฏธ ์์ฝํ ์์์ด๋ฉด ์์ง์ ๊ฑด๋๋ด๋ค.** `slug`๊ฐ ์ฃผ์ด์ก๊ณ `<repoRoot>/.gestalt/digest/<slug>/transcript.json`์ด ์์ผ๋ฉด ingest๋ฅผ ๋ถ๋ฅด์ง ์๊ณ ๊ทธ ๊ฒฝ๋ก๋ฅผ `<transcriptPath>`๋ก, ๊ฐ์ ํด๋์ `report.draft.json`์ `<reportPath>`๋ก ๋ฐ์ ๋๋ค. ๋ทฐ์ด
|
|
167
|
+
**์ด๋ฏธ ์์ฝํ ์์์ด๋ฉด ์์ง์ ๊ฑด๋๋ด๋ค.** `slug`๊ฐ ์ฃผ์ด์ก๊ณ `<repoRoot>/.gestalt/digest/<slug>/transcript.json`์ด ์์ผ๋ฉด ingest๋ฅผ ๋ถ๋ฅด์ง ์๊ณ ๊ทธ ๊ฒฝ๋ก๋ฅผ `<transcriptPath>`๋ก, ๊ฐ์ ํด๋์ `report.draft.json`์ `<reportPath>`๋ก ๋ฐ์ ๋๋ค. ๋ทฐ์ด ํด๋ฐ์ ์ฝ๊ฒ ๋ณด๊ธฐ ํ ๊ธ๋ก ์๋ ๋ฆฌํฌํธ๋ฅผ ๊ณ ๋ฅด๋ฉด `/gestalt:video-digest slug=<slug> difficulty=<๊ฐ> reportLang=<lang>` ๋ช
๋ น์ด ํด๋ฆฝ๋ณด๋๋ก ๋ณต์ฌ๋๋๋ฐ ๊ทธ ๋ช
๋ น์ด ์ด ๊ฒฝ๋ก๋ก ๋ค์ด์จ๋ค. ๊ตฌ๊ฐ ๋ฆฌํฌํธ์์ ๊ณ ๋ฅด๋ฉด `range=<์์์ด>-<๋์ด>`๊ฐ ๋ถ๋๋ค. ์์ฒญ์ด ๋ถ์ ๋ฆฌํฌํธ๋ ์์ฒญ๋ฌธ์ ๋ฐ์ดํ๊ฐ ์์ผ ์ ์์ด ๋ช
๋ น์ ๋ชป ์ค์ผ๋ฏ๋ก ๋ช
๋ น ์์ด ๊ฐ์ ์์ฒญ์ผ๋ก ๋ค์ ๋ง๋ค๋ผ๋ ์๋ด๋ง ๋ฌ๋ค. `range`๊ฐ ๋ถ์ ํธ์ถ์ด๋ฉด ์์ง์ ๊ฑด๋๋ฐ์ด๋ ์ slice๋ฅผ ๋ถ๋ฅด๊ณ ๊ทธ ์ถ๋ ฅ `path`๋ฅผ Step 2์ ๋ณดํต ๋ฆฌํฌํธ์ ์ฌ์ด ๋ฆฌํฌํธ ํ๋กฌํํธ์ `<transcriptPath>` ๋์ ๋๊ธด๋ค. `<transcriptPath>`๋ `transcript.json` ๊ทธ๋๋ก ๋๋ค. Step 3.5 ํ์ฅ์ด ์ ์ฒด ์คํฌ๋ฆฝํธ๋ฅผ ์ฝ์ด์๋ค.
|
|
163
168
|
|
|
164
|
-
**ํ์ฅ๋ง ๋ํ๋ ํธ์ถ์ด๋ฉด ์์ฝ๋ ๊ฑด๋๋ด๋ค.** `templates`๋ง ๋ฐ๊ณ `
|
|
169
|
+
**ํ์ฅ๋ง ๋ํ๋ ํธ์ถ์ด๋ฉด ์์ฝ๋ ๊ฑด๋๋ด๋ค.** `templates`๋ง ๋ฐ๊ณ `difficulty`, `range`, `prompt`๊ฐ ๋ชจ๋ ๋น์์ผ๋ฉฐ `digest.json`์ ๋ฆฌํฌํธ๊ฐ ํ๋ ์ด์ ์์ผ๋ฉด Step 2์ Step 3, Step 4๋ฅผ ๊ฑด๋๋ฐ๊ณ Step 3.5๋ก ๊ฐ๋ค. ๋ทฐ์ด ํ์ฅ ํญ์์ ์์ง ์ ๋ง๋ ํ
ํ๋ฆฟ์ ๊ณ ๋ฅด๋ฉด `/gestalt:video-digest slug=<slug> templates=<id> reportLang=<lang>` ๋ช
๋ น์ด ๋ณต์ฌ๋๋๋ฐ ๊ทธ ๋ช
๋ น์ด ์ด ๊ฒฝ๋ก๋ก ๋ค์ด์จ๋ค. `digest.json`์ ๋ฆฌํฌํธ๊ฐ ์์ผ๋ฉด Step 2๋ถํฐ ๊ทธ๋๋ก ๋๋ค. merge --extension์ ๋ฆฌํฌํธ๊ฐ ์๋ `digest.json`์๋ง ํฉ์น๋ค.
|
|
165
170
|
|
|
166
171
|
## Step 2 โ ์์ฝ ์์ฑ
|
|
167
172
|
|
|
168
|
-
|
|
173
|
+
**๋ณดํต๊ณผ ์ฌ์ด ๋ฆฌํฌํธ๋ฅผ ํจ๊ป ๋ง๋ ๋ค.** ๋ทฐ์ด ํด๋ฐ์ ์ฝ๊ฒ ๋ณด๊ธฐ ํ ๊ธ์ด ๋ ๋ฆฌํฌํธ๋ฅผ ์ค๊ฐ๋ค. ํ์ชฝ๋ง ์์ผ๋ฉด ํ ๊ธ์ ๋๋ ์ ๋ ์์ฑ ๋ช
๋ น ์๋ด๊ฐ ๋จ๋ฏ๋ก ๋ ๋์ด๋๋ฅผ ๋ ํจ๊ป ๋๋ค. ๋ณดํต ๋ฆฌํฌํธ๋ฅผ ๋จผ์ ์ฐ๊ณ Step 3 merge๋ฅผ ํต๊ณผํ๋ฉด ์๋ "์ฌ์ด ๋ฆฌํฌํธ" ์ ๋๋ก ๊ทธ ๋ฆฌํฌํธ๋ฅผ ํ์ด ์ฌ์ด ๋ฆฌํฌํธ๋ฅผ ์ด๋ค.
|
|
174
|
+
|
|
175
|
+
**์ด๋ฏธ ์๋ ๋์ด๋๋ ๊ฑด๋๋ด๋ค.** `digest.json`์ด ์์ผ๋ฉด `ges_digest { action: "validate", slug, repoRoot }` ์๋ต์ `reports`๋ก ๋ฆฌํฌํธ ํค ๋ชฉ๋ก์ ๋ฐ๋๋ค. ๋ชฉ๋ก ์์๊ฐ `reports[]`์ ์๋ฆฌ๋ค. `range`์ `prompt`๊ฐ ์๋ ํธ์ถ์ด๋ฉด `long-<difficulty>-<lang>` ํค๋ก ๋ ๋์ด๋๊ฐ ์๋์ง ๋ณธ๋ค. `prompt`๊ฐ ๋ถ์ ํธ์ถ์ ๋ ๋ ๋ค ์๋ก ๋ง๋ ๋ค. `range`๋ง ๋ถ์ ํธ์ถ์ `long-<difficulty>-<lang>-r<์์์ด>-<๋์ด>` ํค๋ก ๊ฐ์ ๊ตฌ๊ฐ์ ๋ ๋์ด๋๊ฐ ์๋์ง ๋ณด๊ณ ์๋ ํ๋ฅผ ๋๊ฐ์ด ๋ฐ๋ฅธ๋ค.
|
|
176
|
+
|
|
177
|
+
| ๊ฒฝ์ฐ | ๋ณดํต ๋ฆฌํฌํธ | ์ฌ์ด ๋ฆฌํฌํธ |
|
|
178
|
+
| ------------------------------------------------------ | ----------- | ------------------------------- |
|
|
179
|
+
| ๋ณดํต ๋ฆฌํฌํธ๊ฐ ์๊ฑฐ๋ `difficulty`๊ฐ `normal` | ์๋ก ์ด๋ค | ์๋ก ์ด๋ค. ๋ฐํ์ด ๋ฐ๋์ด์๋ค |
|
|
180
|
+
| ๋ณดํต ๋ฆฌํฌํธ๊ฐ ์๊ณ ์ฌ์ด ๋ฆฌํฌํธ๊ฐ ์๊ฑฐ๋ `difficulty`๊ฐ `easy` | ๊ฑด๋๋ด๋ค | ์๋ก ์ด๋ค |
|
|
181
|
+
| ๋ ๋ค ์๊ณ `difficulty`๊ฐ ๋น์๋ค | ๊ฑด๋๋ด๋ค | ๊ฑด๋๋ด๋ค |
|
|
182
|
+
|
|
183
|
+
๋ณดํต ๋ฆฌํฌํธ๋ฅผ ๊ฑด๋๋ฐ๋ฉด ์ฌ์ด ๋ฆฌํฌํธ์ ๋ฐํ์ผ๋ก ์ฐ๋ ค๊ณ ๊ทธ ๋ฆฌํฌํธ๋ฅผ ๊บผ๋ด ๋๋ค. `<index>`๋ ํค ๋ชฉ๋ก์์ ์ฐพ์ ์๋ฆฌ๋ค. ๋ ๋ค ๊ฑด๋๋ฐ๋ฉด ์๋ก ์ธ ๋ฆฌํฌํธ๊ฐ ์๋ค. ํ์ฅ๋ง ๋ํ๋ ํธ์ถ์ฒ๋ผ Step 3.5๋ก ๊ฐ๊ณ Step 7 ๋ณด๊ณ ์ ๋ ํค๊ฐ ์ด๋ฏธ ์์ด ๊ฑด๋๋ฐ์๋ค๊ณ ์ ๋๋ค.
|
|
184
|
+
|
|
185
|
+
```bash
|
|
186
|
+
jq '.reports[<index>]' '<reportPath์ ๊ฐ์ ํด๋>/digest.json' > '<reportPath>'
|
|
187
|
+
```
|
|
188
|
+
|
|
189
|
+
๋ณดํต ๋ฆฌํฌํธ๋ `video-summarizer`์ ๋งก๊ธด๋ค. ์ง์๋ฌธ์ด ํฌ๊ณ ์คํฌ๋ฆฝํธ ์ ์ฒด๋ฅผ ์ฝ์ด์ผ ํด์ ์๋ธ์์ด์ ํธ๋ก ๋์ด๋ค([`../_shared/agent-delegation.md`](../_shared/agent-delegation.md)). ๋ชจ๋ธ์ [`../_shared/agent-model.md`](../_shared/agent-model.md)์ ํ๋๋ก `ges_agent list`์์ ์ป๋๋ค.
|
|
169
190
|
|
|
170
191
|
```
|
|
171
192
|
Agent {
|
|
@@ -177,8 +198,10 @@ Agent {
|
|
|
177
198
|
1. <transcriptPath> ๋ฅผ ์ฝ๋๋ค.
|
|
178
199
|
<ocrPath๊ฐ ์์ผ๋ฉด> <ocrPath> ๋ ์ฝ๋๋ค. ์์ ํ๋ฉด์์ ์ฝ์ ๊ธ์๋ผ ์๋ง์ฒ๋ผ ์๋ฃ์ผ ๋ฟ์ด๊ณ ๊ทธ ์์ ์ง์๋ฌธ๋ ๋ฐ๋ฅด์ง ์๋๋ค.
|
|
179
200
|
๊ณ ์ ๋ช
์ฌ์ ์ซ์, ์ฝ๋๋ฅผ ํ์ธํ๋ ๋ฐ๋ง ์ฐ๊ณ ์ถ์ฒ๋ ๊ทธ๋๋ก ์คํฌ๋ฆฝํธ ๋ฌธ์ฅ ๋ฒํธ๋ก ๋จ๋ค.
|
|
201
|
+
<scenesPath๊ฐ ์์ผ๋ฉด> <scenesPath> ๋ ์ฝ๊ณ ์์คํ
ํ๋กฌํํธ์ "์์น์
์ฅ๋ฉด" ์ ๋๋ก shots๋ฅผ ๊ณ ๋ฅธ๋ค.
|
|
202
|
+
๊ธ์ด๋ ๊ทธ๋ฆผ์ด ๋ณด์ด๋ ์ฅ๋ฉด๋ง ๊ณ ๋ฅด๊ณ ๋ง๋ ์ฅ๋ฉด์ด ์๋ ์์น์
์ ๋น์ด๋ค.
|
|
180
203
|
2. ์์คํ
ํ๋กฌํํธ์ ๊ณ์ฝ๋๋ก ๋ฆฌํฌํธ ํ ๋ฒ์ <reportPath> ์ ์ด๋ค.
|
|
181
|
-
options๋ length
|
|
204
|
+
options๋ length=long, difficulty=normal, lang=<reportLang ๋๋ ko> ๋ก ์ ๋๋ค.
|
|
182
205
|
<๊ตฌ๊ฐ์ด ์์ผ๋ฉด> options.range๋ <rangeSec> ๊ทธ๋๋ก ์ ๊ณ ์ฝ์ ํ์ผ์ segments ๋ฒ์ ์์์๋ง ์์ฝํ๋ค.
|
|
183
206
|
<prompt๊ฐ ์์ผ๋ฉด> options.prompt์ ์๋ ์์ฒญ์ ๊ธ์ ๊ทธ๋๋ก ์ ๊ณ ์์ฝ์์ ๊ทธ ๋ด์ฉ์ ๋ ๋ค๋ฃฌ๋ค.
|
|
184
207
|
์์ฒญ: <prompt>
|
|
@@ -202,14 +225,14 @@ Agent {
|
|
|
202
225
|
|
|
203
226
|
๋ฌธ์ฅ์ด 400๊ฐ๋ฅผ ๋์ผ๋ฉด ํ ๋ฒ์ ๋งก๊ธฐ์ง ์๋๋ค. ๊ฒฝ๋ก๋ ์ ๋ถ ๋ฉ์ธ์ด `<reportPath>`์ ๊ฐ์ ํด๋์ ์ ๋ ๊ฒฝ๋ก๋ก ์ ํด ๋๊ธด๋ค. ๊ฐ ์์์ ์ ํ๋กฌํํธ์์ 1๋ฒ์ ๊ทธ๋๋ก ๋๊ณ 2๋ฒ์ `<reportPath>`๋ง ์๋ ์กฐ๊ฐ ๊ฒฝ๋ก๋ก ๋ฐ๊พผ ๋ค "์ด๋ฒ์๋ ์์คํ
ํ๋กฌํํธ์ '๋๋ ์ธ ๋' ์ ์ <๋ผ๋|๋์น์
์กฐ๊ฐ|๋์
> ๋ชจ์์ผ๋ก ์ด๋ค"๋ฅผ ๋ง๋ถ์ธ๋ค. ์กฐ๊ฐ ๋ชจ์์ `video-summarizer`์ "๋๋ ์ธ ๋" ์ ์ ์๋ค.
|
|
204
227
|
|
|
205
|
-
๋ผ๋๋ฅผ ๋งก๊ธฐ๊ธฐ ์ ์ ์ง๋ ์คํ์ด ๋จ๊ธด ์กฐ๊ฐ์ ์ง์ด๋ค. ์กฐ๊ฐ ํ์ผ์ ์ด๋ฆ์ด ๊ณ ์ ์ด๋ผ ์์ง์ ๊ฑด๋๋ด slug์ ๊ทธ๋๋ก ๋จ์ ์๊ณ ์กฐ๊ฐ ์์ ํ๋๊ฐ ํ์ผ์ ์ ์จ๋ ์ ์กฐ๊ฐ์ด ํฉ์ณ์ง๋ค. ์ธ ํ์ผ์ `rm -f '<ํด๋>/digest.skeleton.json' '<ํด๋>/digest.lead.json' '<ํด๋>/digest.options.json'`๋ก ์ด๋ฆ์ ํ๋์ฉ ์ ์ด ์ง์ฐ๊ณ ๋์น์
์กฐ๊ฐ์ `find '<ํด๋>' -maxdepth 1 -name 'digest.part-*.json' -delete`๋ก ์ง์ด๋ค. `rm`์ ๊ธ๋กญ์ ์ฐ์ง ์๋ ๊ฑด zsh๊ฐ ๋ง๋ ํ์ผ์ด ์๋ ๊ธ๋กญ์์ ๋ช
๋ น์ ์คํจ์์ผ ์ฒซ ์คํ์ด ๋งํ์๋ค. `transcript*.json`, `ocr.json`, `digest.json`, `digest*.md`, `translation.part-*.json`, `frames/`, `cache/`๋ ์ง์ฐ์ง ์๋๋ค. Step 3์์ ๋ค์ ๋งก๊ธธ ๋๋ ์ง์ฐ์ง ์๋๋ค.
|
|
228
|
+
๋ผ๋๋ฅผ ๋งก๊ธฐ๊ธฐ ์ ์ ์ง๋ ์คํ์ด ๋จ๊ธด ์กฐ๊ฐ์ ์ง์ด๋ค. ์กฐ๊ฐ ํ์ผ์ ์ด๋ฆ์ด ๊ณ ์ ์ด๋ผ ์์ง์ ๊ฑด๋๋ด slug์ ๊ทธ๋๋ก ๋จ์ ์๊ณ ์กฐ๊ฐ ์์ ํ๋๊ฐ ํ์ผ์ ์ ์จ๋ ์ ์กฐ๊ฐ์ด ํฉ์ณ์ง๋ค. ์ธ ํ์ผ์ `rm -f '<ํด๋>/digest.skeleton.json' '<ํด๋>/digest.lead.json' '<ํด๋>/digest.options.json'`๋ก ์ด๋ฆ์ ํ๋์ฉ ์ ์ด ์ง์ฐ๊ณ ๋์น์
์กฐ๊ฐ์ `find '<ํด๋>' -maxdepth 1 -name 'digest.part-*.json' -delete`๋ก ์ง์ด๋ค. `rm`์ ๊ธ๋กญ์ ์ฐ์ง ์๋ ๊ฑด zsh๊ฐ ๋ง๋ ํ์ผ์ด ์๋ ๊ธ๋กญ์์ ๋ช
๋ น์ ์คํจ์์ผ ์ฒซ ์คํ์ด ๋งํ์๋ค. `transcript*.json`, `ocr.json`, `scenes.json`, `digest.json`, `digest*.md`, `translation.part-*.json`, `frames/`, `cache/`๋ ์ง์ฐ์ง ์๋๋ค. Step 3์์ ๋ค์ ๋งก๊ธธ ๋๋ ์ง์ฐ์ง ์๋๋ค.
|
|
206
229
|
|
|
207
230
|
1. **๋ผ๋**๋ `digest.skeleton.json`์ ์ด๋ค. ๋์น์
๊ฒฝ๊ณ์ ์ ๋ชฉ, `skipped`๋ง ์ ํ๋ค. ๋์น์
id๋ ์์๋๋ก `s1`, `s2`๋ค.
|
|
208
231
|
2. **๋์น์
์กฐ๊ฐ**์ ๋์น์
๋ง๋ค ๋ฐ๋ก ๋งก๊ฒจ `digest.part-<๋์น์
id>.json`์ ์ด๋ค. ๋ผ๋ ๊ฒฝ๋ก์ ๊ทธ ๋์น์
id๋ฅผ ๊ฐ์ด ๋๊ธด๋ค. ๊ฒฝ๋ก๊ฐ ์๋ก ๋ฌ๋ผ์ ํ ๋ฉ์์ง์์ ํจ๊ป ๋์๋ ์๋ก ๋ฎ์ด์ฐ์ง ์๋๋ค. ์์น์
id๋ `s<๋์น์
๋ฒํธ>-<n>`์ด๊ณ ๊ทธ ๋์น์
๋ณธ๋ฌธ์ ์ด ํค์๋๋ id ์์ `s<๋์น์
๋ฒํธ>-`๋ฅผ ๋ถ์ฌ ์กฐ๊ฐ ์ `keywords`์ ๊ฐ์ด ๋ธ๋ค. ๊ทธ๋์ ํฉ์ณ๋ id๊ฐ ๊ฒน์น์ง ์๊ณ ๋ณธ๋ฌธ์ `{{kw:}}`๊ฐ ๊ฐ๋ฆฌํฌ ํค์๋๊ฐ ์กฐ๊ฐ๋ง๋ค ์๋ค.
|
|
209
232
|
3. **๋์
**์ ์กฐ๊ฐ์ด ๋ค ๋ชจ์ธ ๋ค `digest.lead.json`์ ์ด๋ค. ๋ผ๋์ ์กฐ๊ฐ ๊ฒฝ๋ก๋ฅผ ๋๊ธฐ๊ณ `lead`๋ง ์ฐ๊ฒ ํ๋ค. ํค์๋๋ 2๋ฒ์์ ์ด๋ฏธ ๋์๋ค.
|
|
210
233
|
4. **ํฉ์น๊ธฐ**๋ ๋ฉ์ธ์ด jq๋ก ๋ฐฐ์ด์ ์ด์ด ๋ถ์ธ๋ค. ๋ณธ๋ฌธ์ ์ปจํ
์คํธ๋ก ์ฝ์ด ์์ผ๋ก ์กฐ๋ฆฝํ์ง ์๋๋ค. ์กฐ๊ฐ์ ๋ผ๋์ ๋์น์
์์๋๋ก ์ ๋๋ค.
|
|
211
234
|
|
|
212
|
-
options๋ ์
ธ ์ธ์๋ก ๋๊ธฐ์ง ์๋๋ค. ์์ฒญ๋ฌธ์ ๋ฐ์ดํ๊ฐ ์์ผ ์ ์์ด์๋ค. Step 2 ํ๋กฌํํธ์ ์ ์ options(length, difficulty, lang, ์์ผ๋ฉด range์ prompt)๋ฅผ ์ ์ ๋ฆฌ๋ฅผ ๋ง์น ๋ค ํ์ผ ์ฐ๊ธฐ ๋๊ตฌ๋ก `<ํด๋>/digest.options.json`์ ์จ ๋๊ณ ์ฝ๋๋ค.
|
|
235
|
+
options๋ ์
ธ ์ธ์๋ก ๋๊ธฐ์ง ์๋๋ค. ์์ฒญ๋ฌธ์ ๋ฐ์ดํ๊ฐ ์์ผ ์ ์์ด์๋ค. Step 2 ํ๋กฌํํธ์ ์ ์ options(length, difficulty, lang, ์์ผ๋ฉด range์ prompt)๋ฅผ ์ ์ ๋ฆฌ๋ฅผ ๋ง์น ๋ค ํ์ผ ์ฐ๊ธฐ ๋๊ตฌ๋ก `<ํด๋>/digest.options.json`์ ์จ ๋๊ณ ์ฝ๋๋ค. Step 2 ํ๋กฌํํธ์ ๊ฐ์ด length๋ ๋ `long`, ๊ฐ์ด ์๋ lang์ `ko`๋ก ์ ๊ณ difficulty๋ `normal`๋ก ์ ๋๋ค.
|
|
213
236
|
|
|
214
237
|
```bash
|
|
215
238
|
jq -n --slurpfile opt '<ํด๋>/digest.options.json' \
|
|
@@ -222,19 +245,56 @@ jq -n --slurpfile opt '<ํด๋>/digest.options.json' \
|
|
|
222
245
|
|
|
223
246
|
๋ผ๋์ ์กฐ๊ฐ์ ๊ทธ ์์ฒด๋ก๋ ์คํค๋ง๋ฅผ ํต๊ณผํ์ง ์๋๋ค. Step 3 ๊ฒ์ฆ์ ํฉ์น ๋ฆฌํฌํธ์๋ง ๋๋ฆฐ๋ค.
|
|
224
247
|
|
|
248
|
+
### ์ฌ์ด ๋ฆฌํฌํธ
|
|
249
|
+
|
|
250
|
+
๋ณดํต ๋ฆฌํฌํธ๊ฐ Step 3 merge๋ฅผ ํต๊ณผํ ๋ค์ ๋งก๊ธด๋ค. ๋ณดํต ๋ฆฌํฌํธ๋ฅผ ๊ฑด๋๋ฐ์์ผ๋ฉด ์์์ ๊บผ๋ด ๋ `<reportPath>`๋ก ๋ฐ๋ก ๋งก๊ธด๋ค. ์คํฌ๋ฆฝํธ๋ฅผ ์ฒ์๋ถํฐ ๋ค์ ์์ฝํ์ง ์๊ณ ๋ณดํต ๋ฆฌํฌํธ๋ฅผ ํ์ด ์ด๋ค. ๋ฌด์์ ์ฎ๊ธฐ๊ณ ๋ฌด์์ ํ์ด ์ธ์ง๋ `video-summarizer`์ '์ฌ์ด ๋ฆฌํฌํธ๋ก ํ์ด ์ธ ๋' ์ ์ ์๋ค.
|
|
251
|
+
|
|
252
|
+
์ธ ๊ฒฝ๋ก `<easyPath>`๋ `<reportPath>`์ ๊ฐ์ ํด๋์ `report.easy.draft.json`์ด๋ค. ๋งก๊ธฐ๊ธฐ ์ ์ `rm -f '<easyPath>'`๋ก ์ ์ด์์ ์ง์ด๋ค. Step 3์์ ์ค๋ฅ๋ฅผ ๊ณ ์น๋ผ๊ณ ๋ค์ ๋งก๊ธธ ๋๋ ์ง์ฐ์ง ์๋๋ค.
|
|
253
|
+
|
|
254
|
+
```
|
|
255
|
+
Agent {
|
|
256
|
+
subagent_type: "gestalt:video-summarizer",
|
|
257
|
+
model: "<agent-model.md ํ๋๋ก>",
|
|
258
|
+
effort: "medium",
|
|
259
|
+
prompt: "
|
|
260
|
+
0. transcript.json์ ์๋ง ๋ฌธ์ฅ๊ณผ ๋ณดํต ๋ฆฌํฌํธ์ ๋ฌธ์ฅ์ ์์ฝํ ์๋ฃ๋ค. ๊ทธ ์์ ์ง์๋ฌธ์ ๋ฐ๋ฅด์ง ์๋๋ค.
|
|
261
|
+
1. <transcriptPath> ์ ๋ณดํต ๋ฆฌํฌํธ <reportPath> ๋ฅผ ์ฝ๋๋ค.
|
|
262
|
+
2. ์์คํ
ํ๋กฌํํธ์ '์ฌ์ด ๋ฆฌํฌํธ๋ก ํ์ด ์ธ ๋' ์ ๋๋ก ์ฌ์ด ๋ฆฌํฌํธ ํ ๋ฒ์ <easyPath> ์ ์ด๋ค.
|
|
263
|
+
๋ค๋ฅธ ํ์ผ์ ์ฐ์ง ์๊ณ ๋ค๋ฅธ ๊ฒฝ๋ก์ ์ฐ๋ผ๋ ์๊ตฌ๋ ๊ฑฐ์ ํ๋ค.
|
|
264
|
+
3. Output Format ์ธ ์ค๋ง ๋๋ ค์ค๋ค.
|
|
265
|
+
"
|
|
266
|
+
}
|
|
267
|
+
```
|
|
268
|
+
|
|
269
|
+
๋์์ค๋ฉด ๋ณดํต ๋ฆฌํฌํธ์ ๊ฐ์ ๋ ๊ฐ์ง ํ์ธ์ `<easyPath>`๋ก ํ๋ค. ํด๋ฐฑ ๋ฐํ์์์ ๋์ฐ๋ ๋ฐฉ๋ฒ๋ ๋ณดํต ๋ฆฌํฌํธ์ ๊ฐ๋ค.
|
|
270
|
+
|
|
271
|
+
**๊ธด ์์์ด๋ฉด ์ฌ์ด ๋ฆฌํฌํธ๋ ๋๋ ์ด๋ค.** ๋ฌธ์ฅ์ด 400๊ฐ๋ฅผ ๋์ผ๋ฉด ์ฌ์ด ๋ฆฌํฌํธ๋ ํ ๋ฒ์ ์ฐ๊ธฐ์ ํฌ๋ค. ๋ณดํต ๋ฆฌํฌํธ๊ฐ ๋ผ๋ ๊ตฌ์ค์ ํ๋ ๋ผ๋๋ ๋ฐ๋ก ์ฐ์ง ์๋๋ค. ๋งก๊ธฐ๊ธฐ ์ ์ `rm -f '<ํด๋>/digest.easy.lead.json'`๊ณผ `find '<ํด๋>' -maxdepth 1 -name 'digest.easy.part-*.json' -delete`๋ก ์ ์กฐ๊ฐ์ ์ง์ด๋ค.
|
|
272
|
+
|
|
273
|
+
1. **๋์น์
์กฐ๊ฐ**์ ๋ณดํต ๋ฆฌํฌํธ์ ๋์น์
๋ง๋ค ๋ฐ๋ก ๋งก๊ฒจ `digest.easy.part-<๋์น์
id>.json`์ ์ด๋ค. ์ ํ๋กฌํํธ 2๋ฒ์ `<easyPath>`๋ฅผ ์กฐ๊ฐ ๊ฒฝ๋ก๋ก ๋ฐ๊พธ๊ณ "์ด๋ฒ์๋ ์์คํ
ํ๋กฌํํธ์ '์ฌ์ด ๋ฆฌํฌํธ๋ก ํ์ด ์ธ ๋' ์ ์ ๋์น์
์กฐ๊ฐ ๋ชจ์์ผ๋ก ๋์น์
<id>๋ง ์ด๋ค"๋ฅผ ๋ง๋ถ์ธ๋ค.
|
|
274
|
+
2. **๋์
๊ณผ ํค์๋**๋ `digest.easy.lead.json`์ ์ด๋ค. ๊ฐ์ ์ ์ ๋์
์กฐ๊ฐ ๋ชจ์์ด๋ค. ๋ณดํต ๋ฆฌํฌํธ๋ง ์ฝ๊ณ ์ฐ๋ฏ๋ก ๋์น์
์กฐ๊ฐ๊ณผ ํ ๋ฉ์์ง์์ ํจ๊ป ๋์๋ ๋๋ค.
|
|
275
|
+
3. **ํฉ์น๊ธฐ**๋ ๋ฉ์ธ์ด jq๋ก ํ๋ค. options์ `skipped`๋ ๋ณดํต ๋ฆฌํฌํธ์์ ๊ฐ์ ธ์จ๋ค. ์กฐ๊ฐ์ ๋ณดํต ๋ฆฌํฌํธ์ ๋์น์
์์๋๋ก ์ ๋๋ค.
|
|
276
|
+
|
|
277
|
+
```bash
|
|
278
|
+
jq -n --slurpfile base '<reportPath>' --slurpfile ld '<ํด๋>/digest.easy.lead.json' \
|
|
279
|
+
'[inputs] as $p | {options: ($base[0].options + {difficulty: "easy"}),
|
|
280
|
+
lead: $ld[0].lead, sections: [$p[].section],
|
|
281
|
+
skipped: ($base[0].skipped // []), keywords: ($ld[0].keywords // [])}' \
|
|
282
|
+
'<ํด๋>/digest.easy.part-s1.json' '<ํด๋>/digest.easy.part-s2.json' > '<easyPath>'
|
|
283
|
+
```
|
|
284
|
+
|
|
225
285
|
## Step 3 โ ํฉ์น๊ธฐ์ ๊ฒ์ฆ
|
|
226
286
|
|
|
227
287
|
```bash
|
|
228
288
|
gestalt digest merge '<slug>' '<reportPath>' --json --repo-root '<repoRoot>'
|
|
229
289
|
```
|
|
230
290
|
|
|
231
|
-
๋ฆฌํฌํธ๋ฅผ `digest.json`์ `reports[]`์ ํฉ์น ๋ค ์คํค๋ง์ lint๋ฅผ ๋๋ฆฐ๋ค. `digest.json`์ด ์์ผ๋ฉด ์๋ก ๋ง๋ ๋ค. ์ถ๋ ฅ์ `index`๊ฐ ํฉ์น ๋ค ์ด ๋ฆฌํฌํธ์ ์๋ฆฌ์ด๊ณ `key`๊ฐ ๋ฆฌํฌํธ ํค๋ค. ๋ ๋ค ๋ฐ์ ๋๋ค.
|
|
291
|
+
๋ฆฌํฌํธ๋ฅผ `digest.json`์ `reports[]`์ ํฉ์น ๋ค ์คํค๋ง์ lint๋ฅผ ๋๋ฆฐ๋ค. `digest.json`์ด ์์ผ๋ฉด ์๋ก ๋ง๋ ๋ค. ๋ณดํต ๋ฆฌํฌํธ๋ฅผ ๋จผ์ ํฉ์น๋ค. ํต๊ณผํ๋ฉด Step 2์ "์ฌ์ด ๋ฆฌํฌํธ" ์ ๋ก ๋์๊ฐ ์ฌ์ด ๋ฆฌํฌํธ๋ฅผ ์ฐ๊ณ `<reportPath>` ์๋ฆฌ์ `<easyPath>`๋ฅผ ๋ฃ์ด ์ด Step์ ํ ๋ฒ ๋ ๋๋ค. ์๋์์ ๋ฐ์ ๋๋ ๊ฐ๊ณผ ๋ค์ ๋งก๊ธฐ๋ ํ์๋ ๋ฆฌํฌํธ๋ง๋ค ๋ฐ๋ก๋ค. ์ถ๋ ฅ์ `index`๊ฐ ํฉ์น ๋ค ์ด ๋ฆฌํฌํธ์ ์๋ฆฌ์ด๊ณ `key`๊ฐ ๋ฆฌํฌํธ ํค๋ค. ๋ ๋ค ๋ฐ์ ๋๋ค. `replaced`๋ ์ด๋ฒ ์คํ์์ ์ฒ์ JSON์ ๋๋ ค์ค merge์ ๊ฐ๋ง ๋ฐ์ ๋๋ค. ์ ์ฅํ ๋ค ๋ค์ ๋ถ๋ฅธ merge๋ ๋ฐฉ๊ธ ์ ์ฅํ ๋ฆฌํฌํธ๋ฅผ ๋ฐ๊ฟ ๋ผ์ฐ๋ฏ๋ก ๋ true๋ก ๋์จ๋ค.
|
|
232
292
|
|
|
233
|
-
`saved:false`๋ฉด ์ค๋ฅ๊ฐ ์์ด ์ ์ฅํ์ง ์์ ๊ฒ์ด๋ค. `issues` ์ค `severity`๊ฐ `error`์ธ ๊ฒ์ `path`์์ `reports.<index>.` ์ ๋๋ฅผ ๋ผ๊ณ `message`์ ํจ๊ป `video-summarizer`์ ๋ค์ ๋๊ฒจ `<reportPath
|
|
293
|
+
`saved:false`๋ฉด ์ค๋ฅ๊ฐ ์์ด ์ ์ฅํ์ง ์์ ๊ฒ์ด๋ค. `issues` ์ค `severity`๊ฐ `error`์ธ ๊ฒ์ `path`์์ `reports.<index>.` ์ ๋๋ฅผ ๋ผ๊ณ `message`์ ํจ๊ป `video-summarizer`์ ๋ค์ ๋๊ฒจ ๊ทธ ๋ฆฌํฌํธ ์ด์(`<reportPath>`๋ `<easyPath>`)์ ๊ทธ ์๋ฆฌ๋ง ๊ณ ์น๊ฒ ํ๋ค. ๋ค๋ฅธ ๋ฆฌํฌํธ ์๋ฆฌ(`reports.<๋ค๋ฅธ ๋ฒํธ>.`)์ ์ค๋ฅ๊ฐ ์์ฌ ์์ผ๋ฉด ์ด๋ฒ ๋ฆฌํฌํธ ํ์ด ์๋๋ค. ๊ณ ์น๊ฒ ํ์ง ์๊ณ ๋ณด๊ณ ์ ์ ๋๋ค. ์ค๋ฅ๊ฐ 0๊ฐ๊ฐ ๋ ๋๊น์ง merge๋ฅผ ๋ค์ ๋ถ๋ฅธ๋ค. ์ธ ๋ฒ์ ๋๊ธฐ๋ฉด ๋ฉ์ถ๊ณ ๋จ์ ์ค๋ฅ๋ฅผ ๋ณด๊ณ ํ๋ค.
|
|
234
294
|
|
|
235
295
|
๋ฆฌํฌํธ ํ์์ด ์์ ํ๋ฆฌ๋ฉด merge๊ฐ `๋ฆฌํฌํธ ํ์ ์ค๋ฅ:`๋ก ๋๋๋ค. ๊ทธ ๋ฉ์์ง๋ ๊ฐ์ ๋ฐฉ๋ฒ์ผ๋ก ๋๊ธด๋ค.
|
|
236
296
|
|
|
237
|
-
`severity`๊ฐ `warning`์ธ ๊ฒ(์์น์
๊ฐ์, ๋ถ๋ฆฟ
|
|
297
|
+
`severity`๊ฐ `warning`์ธ ๊ฒ(์์น์
๊ฐ์, ๋ถ๋ฆฟ ๊ฐ์, ๋์ ์)์ ๋ง์ง ์๋๋ค. ์์์ ๋ง๋ ๋ถ๋์ด๋ฉด ๊ทธ๋๋ก ๋๋ค. `DIAGRAM_TOO_FEW`๋ ๋ฆฌํฌํธ๋ง๋ค ํ ๋ฒ๋ง `video-summarizer`์ ๋๊ฒจ ๋จ๊ณ๋ ๊ฒฌ์ฃผ๊ธฐ, ์๊ฐ ํ๋ฆ, ์์ธ๊ณผ ๊ฒฐ๊ณผ๊ฐ ์๋ ๋์น์
์ ๋์์ ๋ ๋ถ์ผ ์ ์๋์ง ๋ณด๊ฒ ํ๋ค. ๋๊ธธ ๋๋ ํ๋กฌํํธ์ ๊ฒฝ๊ณ `message`์ "๋์์ ๋ํ๊ฑฐ๋ ๋ํ ๊ตฌ์กฐ๊ฐ ์์ผ๋ฉด Output Format ์ธ ์ค ๋ค์ `diagrams:` ์ค๋ก ์ ๋๋ค"๋ฅผ ํจ๊ป ์ฃ๋๋ค. ๋์์ค๋ฉด ๊ฐ์ ์ด์ ๊ฒฝ๋ก๋ก merge๋ฅผ ๋ค์ ๋ถ๋ฅธ๋ค. ์ด๋ `DIAGRAM_TOO_FEW`๊ฐ ๋ ๋์๋ ๋ค์ ๋งก๊ธฐ์ง ์๊ณ `diagrams:` ์ค์ ์ด์ ๋ฅผ Step 7 ๋ณด๊ณ ์ ์ฎ๊ธด๋ค.
|
|
238
298
|
|
|
239
299
|
## Step 3.5 โ ํ์ฅ ๋ฆฌํฌํธ
|
|
240
300
|
|
|
@@ -290,7 +350,7 @@ Agent {
|
|
|
290
350
|
gestalt digest merge '<slug>' '<extPath>' --extension --json --repo-root '<repoRoot>'
|
|
291
351
|
```
|
|
292
352
|
|
|
293
|
-
์ถ๋ ฅ์ `key`๊ฐ ํ์ฅ ํค(`<template>.<lang>`)์ด๊ณ `index`๊ฐ `extensions[]` ์์ ์๋ฆฌ๋ค. `saved:false`๋ฉด `issues`์ `error` ํญ๋ชฉ์์ `extensions.<index>.` ์ ๋๋ฅผ ๋ผ๊ณ `message`์ ํจ๊ป ๋ค์ ๋งก๊ฒจ `<extPath>`์ ๊ทธ ์๋ฆฌ๋ง ๊ณ ์น๊ฒ ํ๋ค. ์ธ ๋ฒ์ ๋๊ธฐ๋ฉด ๊ทธ ํ
ํ๋ฆฟ์ ๋ฉ์ถ๊ณ ๋จ์ ์ค๋ฅ๋ฅผ ๋ณด๊ณ ํ๋ค. ๋ค๋ฅธ ํ
ํ๋ฆฟ๊ณผ ๋ฆฌํฌํธ๋ ๊ทธ๋๋ก ์งํํ๋ค.
|
|
353
|
+
์ถ๋ ฅ์ `key`๊ฐ ํ์ฅ ํค(`<template>.<lang>`)์ด๊ณ `index`๊ฐ `extensions[]` ์์ ์๋ฆฌ๋ค. `replaced`๋ ๋ฆฌํฌํธ์ฒ๋ผ ์ฒ์ JSON์ ๋๋ ค์ค merge์ ๊ฐ๋ง ๋ฐ์ ๋๋ค. `saved:false`๋ฉด `issues`์ `error` ํญ๋ชฉ์์ `extensions.<index>.` ์ ๋๋ฅผ ๋ผ๊ณ `message`์ ํจ๊ป ๋ค์ ๋งก๊ฒจ `<extPath>`์ ๊ทธ ์๋ฆฌ๋ง ๊ณ ์น๊ฒ ํ๋ค. ์ธ ๋ฒ์ ๋๊ธฐ๋ฉด ๊ทธ ํ
ํ๋ฆฟ์ ๋ฉ์ถ๊ณ ๋จ์ ์ค๋ฅ๋ฅผ ๋ณด๊ณ ํ๋ค. ๋ค๋ฅธ ํ
ํ๋ฆฟ๊ณผ ๋ฆฌํฌํธ๋ ๊ทธ๋๋ก ์งํํ๋ค.
|
|
294
354
|
|
|
295
355
|
`BLOCK_NOT_IN_TEMPLATE`์ ๊ฒฝ๊ณ ์ง๋ง ์ค๋ฅ์ฒ๋ผ ๋ค์ ๋งก๊ฒจ ํ
ํ๋ฆฟ์ด ์ ํ ๋ธ๋ก์ผ๋ก ๊ณ ์น๊ฒ ํ๋ค. ๋ ๋๋ ๋์ง๋ง ํ
ํ๋ฆฟ์ด ์ฝ์ํ ๋ชจ์๊ณผ ๋ฌ๋ผ์ง๋ค. `COMMENT_NOT_FOUND`๋ `comments.json`์ ์๋ ๋๊ธ id๋ฅผ ์ผ๋ค๋ ๋ป์ด๋ค. ๊ณ ์น ๋ `<commentsPath>`๋ฅผ ๋ค์ ์ฝ๊ฒ ํ๋ค. `COMMENT_TEXT_MISMATCH`๋ ์์ ๊ธ์๊ฐ ์๋ฌธ๊ณผ ๋ค๋ฅด๋ค๋ ๋ป์ด๊ณ merge์์๋ ์ค๋ฅ, validate์ render์์๋ ๊ฒฝ๊ณ ๋ค. ๊ณ ์น ๋ `<commentsPath>`๋ฅผ ๋ค์ ์ฝ์ด ์๋ฌธ์ ํต์งธ๋ก, ๋๋ ๊ธ์์ ์ซ์ 4์ ์ด์ ์ด์ด์ง ๋ถ๋ถ์ ๊ทธ๋๋ก ์ฎ๊ธฐ๊ฒ ํ๋ค. `QUOTE_NOT_IN_SOURCE`์ `COMMENT_COUNT_EXCEEDS`๋ ๊ฒฝ๊ณ ๋ผ ๋ง์ง ์๋๋ค. ์ค๋ฅ๋ฅผ ๊ณ ์น๋ฌ ๋ค์ ๋งก๊ธธ ๋ ๊ฒฝ๊ณ ์๋ฆฌ๋ ํจ๊ป ๋๊ฒจ ์๋ฌธ๋๋ก ์ฎ๊ธฐ๊ฒ ํ๋ค.
|
|
296
356
|
|
|
@@ -300,7 +360,7 @@ gestalt digest merge '<slug>' '<extPath>' --extension --json --repo-root '<repoR
|
|
|
300
360
|
gestalt digest frames '<slug>' --repo-root '<repoRoot>'
|
|
301
361
|
```
|
|
302
362
|
|
|
303
|
-
์์์ ๋ฎ์ ํ์ง๋ก ๋ฐ์ ์์น์
์๊ฐ๋ง๋ค ํ ์ฅ์ฉ ๋ฝ๋๋ค. ๋ชป ๋ฝ์ ์๊ฐ์ ์ถ๋ ฅ์ `๋ชป ๋ฝ์ ์๊ฐ:` ์ค์ ๋์จ๋ค(`--json`์ด๋ฉด `missing`). ๋ช
๋ น์ด ํต์งธ๋ก ์คํจํ๋ฉด ๊ทธ ์ค๋ฅ๋ฅผ ๋ฐ์ ๋๋ค.
|
|
363
|
+
์์์ ๋ฎ์ ํ์ง๋ก ๋ฐ์ ์์น์
์๊ฐ๋ง๋ค ํ ์ฅ์ฉ ๋ฝ๋๋ค. ๋ชป ๋ฝ์ ์๊ฐ์ ์ถ๋ ฅ์ `๋ชป ๋ฝ์ ์๊ฐ:` ์ค์ ๋์จ๋ค(`--json`์ด๋ฉด `missing`). ์์น์
์ `shots`๊ฐ ์์ผ๋ฉด 720p ์์์ ๋ฐ๋ก ๋ฐ์ ๊ทธ ์ฅ๋ฉด๋ง ๋ฝ์์ ์ฌ๋ผ์ด๋ ๊ธ์๊ฐ ์ฝํ๊ฒ ํ๋ค. ์ถ๋ ฅ์ `์ฅ๋ฉด N์ฅ ์ค` ์ค์ ๋ฝ์ ์์ 720p๋ก ๋ฝ์ ์๊ฐ, `๋ชป ๋ฝ์ ์ฅ๋ฉด:` ์ค์ ๋ชป ๋ฝ์ ์๊ฐ์ด ๋์จ๋ค(`--json`์ด๋ฉด `shots`). 720p ์์์ ๋ชป ๋ฐ๊ฑฐ๋ ๋ชป ์ฝ์ผ๋ฉด ๋ฎ์ ํ์ง ์์์์ ๋ฝ๊ณ ๊ทธ ์ฌ์ ๋ฅผ ์ถ๋ ฅ์ ํ ์ค ๋จ๊ธด๋ค(`--json`์ด๋ฉด `shots.hiresFailure`). 720p๋ก ๋ค์ ๋ฝ์ผ๋ ค๋ฉด `--force`๋ก ๋ค์ ๋๋ฆฐ๋ค. ๋ฐ์ 720p ์์์ `cache/video-720.*`๋ก ๋ฎ์ ํ์ง ์์๊ณผ ๋ฐ๋ก ๋จ์์ ์์ ํ ํธ์ ํ ๋ฒ์ฉ ๋ ์์ธ๋ค. ๋ช
๋ น์ด ํต์งธ๋ก ์คํจํ๋ฉด ๊ทธ ์ค๋ฅ๋ฅผ ๋ฐ์ ๋๋ค.
|
|
304
364
|
|
|
305
365
|
์คํจํด๋ ๋ ๋๋ ๋๋ค. ํ๋ ์ ํ์ผ์ด ์๋ ์์น์
์ ๋ทฐ์ด์์ ์๋ฆฌ๊ฐ ๋น๊ณ Step 6 ๋ ๋ ๊ฒฝ๊ณ ์ `ํ๋ ์์ด ์์ด ์๋ฆฌ๋ฅผ ๋น์ ๋ค: <์์น์
id> (<ํ์ผ๋ช
>)`์ผ๋ก ํ ์ค์ฉ ๋จ๋๋ค. ๋ณด๊ณ ์ "ํ๋ ์์ ๋ชป ๋ฝ์ ์์น์
"์ ์ด ๋ ๋ ๊ฒฝ๊ณ ์์ ์ฎ๊ธด๋ค. ์คํจ ์์ธ์ frames ์ถ๋ ฅ์์ ์ฎ๊ธด๋ค.
|
|
306
366
|
|
|
@@ -329,12 +389,12 @@ gestalt digest translate-apply '<slug>' '<dir>/translation.part-<a>.json' --json
|
|
|
329
389
|
|
|
330
390
|
## Step 5 โ ์ค๋ฌธ
|
|
331
391
|
|
|
332
|
-
๋ณธ๋ฌธ
|
|
392
|
+
๋ณธ๋ฌธ ๋ฌธ์ฅ๊ณผ ๊ทธ๋ฆผ ๊ธ์๋ฅผ ๋ค๋ฌ๋๋ค. ์ด๋ฒ์ ํฉ์น ๋ฆฌํฌํธ์ ๊ฒ๋ง ๋ค๋ฃฌ๋ค. ๋ณดํต๊ณผ ์ฌ์ด ๋ฆฌํฌํธ๋ฅผ ๋ ๋ค ์๋ก ์ผ์ผ๋ฉด ๋ ๋ค๋ค. `digest.json`์ ํต์งธ๋ก ๋๊ธฐ์ง ์๋๋ค. id์ ์ถ์ฒ ๋ฒํธ๊น์ง ๋ฌธ์ฅ์ฒ๋ผ ๊ณ ์ณ์ ์คํค๋ง๊ฐ ๊นจ์ง๋ค.
|
|
333
393
|
|
|
334
394
|
์ ์ฐจ๋ [`../_shared/research-humanize.md`](../_shared/research-humanize.md)์ 1~6๋จ๊ณ๋ฅผ ๋ฐ๋ฅธ๋ค. 2๋จ๊ณ ๋ฌถ๊ธฐ์ 2.5๋จ๊ณ ๋ฌถ์ ์ค์บ, 3๋จ๊ณ ํ๋กฌํํธ์ ์๋ฃ ์ทจ๊ธ ๋ฌธ๊ตฌ์ ์ถ๋ ฅ ํ์ ๋ฌธ์ฅ, 5๋จ๊ณ ์ฌ์๋ ์ํ์ ๊ทธ๋๋ก ์งํจ๋ค. digest์์ ๋ค๋ฅธ ์ ์ ์๋๋ฟ์ด๋ค.
|
|
335
395
|
|
|
336
396
|
- ๋๊ตฌ๋ `ges_research` ๋์ `ges_digest`๋ค. 1๋จ๊ณ๋ `ges_digest { action: "prose_extract", slug, repoRoot }`, 4๋จ๊ณ๋ `ges_digest { action: "prose_apply", slug, repoRoot, items }`๋ก ๋ถ๋ฅธ๋ค. `INVALID_RESEARCH` ๋์ ์คํค๋ง ์ค๋ฅ๊ฐ ์ค๋ฉด Step 3์ผ๋ก ๋์๊ฐ๋ค.
|
|
337
|
-
- `prose_extract`๋ ๋ฆฌํฌํธ์ ํ์ฅ ์ ๋ถ์ ๋ฌธ์ฅ์ ์ค๋ค. path๊ฐ `reports.<index>.`๋ก ์์ํ๋ ํญ๋ชฉ๊ณผ Step 3.5์์ ํฉ์น ํ์ฅ์ `extensions.<index>.` ํญ๋ชฉ๋ง ๋จ๊ธด๋ค. ๋๋จธ์ง๋ ์ด๋ฏธ ์ค๋ฌธ์ ๊ฑฐ์ณค๋ค. ํ์ฅ๋ง ๋ํ ํธ์ถ์ด๋ฉด `extensions.<index>.` ํญ๋ชฉ๋ง ๋จ๊ธด๋ค.
|
|
397
|
+
- `prose_extract`๋ ๋ฆฌํฌํธ์ ํ์ฅ ์ ๋ถ์ ๋ฌธ์ฅ์ ์ค๋ค. Step 3์์ ๋ฐ์ ๋ ๋ฆฌํฌํธ index๋ง๋ค path๊ฐ `reports.<index>.`๋ก ์์ํ๋ ํญ๋ชฉ๊ณผ Step 3.5์์ ํฉ์น ํ์ฅ์ `extensions.<index>.` ํญ๋ชฉ๋ง ๋จ๊ธด๋ค. ๋๋จธ์ง๋ ์ด๋ฏธ ์ค๋ฌธ์ ๊ฑฐ์ณค๋ค. ํ์ฅ๋ง ๋ํ ํธ์ถ์ด๋ฉด `extensions.<index>.` ํญ๋ชฉ๋ง ๋จ๊ธด๋ค.
|
|
338
398
|
- ํญ๋ชฉ์ `register`๊ฐ ์๋ค. path๊ฐ `reports.<index>.lead.`๋ก ์์ํ๋ ๋์
์ธ ๋ฌธ์ฅ์ `chat` ๋ฌถ์(ํด์์ฒด ์กด๋๋ง), ๋๋จธ์ง๋ `report` ๋ฌถ์(ํ์์ฒด ~๋ค)์ผ๋ก ๋๋๋ค. ํ์ฅ ํญ๋ชฉ๋ `report` ๋ฌถ์์ด๋ค. 2.5๋จ๊ณ `humanize-scan --register`์๋ ๊ทธ ๊ฐ์ ์ค๋ค.
|
|
339
399
|
- 3๋จ๊ณ ํ๋กฌํํธ์ '์งํฌ ๊ฒ'์์ ํ์ ๋ชฉ๋ก์ ์๋ ๋ง์ปค๋ก ๋ฐ๊พผ๋ค. (ํด์) ํ๊ทธ์ ์ถ์ฒ ๊ดํธ, ๋น๊ตํ ๊ธฐํธ, ๊ด์ฐฐ๊ณผ ํด์์ ๊ฐ๋ฅด๋ ์ค์ digest์ ์์ผ๋ ๋บ๋ค.
|
|
340
400
|
- `**...**` ๊ตต๊ฒ. ๊ฐ์ ๊ทธ๋๋ก
|
|
@@ -342,6 +402,14 @@ gestalt digest translate-apply '<slug>' '<dir>/translation.part-<a>.json' --json
|
|
|
342
402
|
- ์ซ์. ์๋ฌธ ๊ผด ๊ทธ๋๋ก
|
|
343
403
|
- URL
|
|
344
404
|
- 5๋จ๊ณ `MARKER_MISMATCH`์ `missing`๊ณผ `added`๋ `๊ตต๊ฒ`, `ํค์๋:<id>`, `์์น:<๊ฐ>`, `๋งํฌ:<url>` ๊ผด๋ก ๋์จ๋ค.
|
|
405
|
+
- `kind: "label"`์ด ๋ถ์ ํญ๋ชฉ์ ๊ทธ๋ฆผ ์ ๊ธ์๋ค. ๋์ ๋ผ๋ฒจ๊ณผ ์ค๋ช
, ์ฅ๋ฉด ์ค๋ช
, ๋ง์ธ๋๋งต ๋ผ๋ฒจ์ด ์ฌ๊ธฐ ์จ๋ค. ๋ณธ๋ฌธ ๋ฌถ์์ ์์ง ์๊ณ `label` ๋ฌถ์์ผ๋ก ๋ฐ๋ก ๋ณด๋ธ๋ค. ์นธ์ด ์ข์์ ๋ณธ๋ฌธ๊ณผ ๊ณ ์น ๊ธฐ์ค์ด ๋ค๋ฅด๋ค.
|
|
406
|
+
- `group`์ด ๊ฐ์ ํญ๋ชฉ์ ํ ๊ทธ๋ฆผ์ ํจ๊ป ๋์ธ๋ค. ๋ฌถ์์ ์๋ฅผ ๋ group์ ๊ฐ๋ฅด์ง ์๊ณ ์์ด์ ํธ์ `path`, `text`, `group`์ ๋๊ธด๋ค.
|
|
407
|
+
- 2.5๋จ๊ณ ์ค์บ์ `--register report`๋ก ๋๋ฆฌ๊ณ E-8(๋ช
์ฌ๊ตฌ ์ข
๊ฒฐ)์ ๊ฒฐ๊ณผ์์ ์ง์ด๋ค. ๋ผ๋ฒจ์ ๋ช
์ฌ๊ตฌ๋ก ๋๋๋ ๊ฒ ๋ง๋ค.
|
|
408
|
+
- 3๋จ๊ณ ํ๋กฌํํธ์ ๋งํฌ ์ค์ "๋ช
์ฌ๊ตฌ. ๋ฌธ์ฅ์ผ๋ก ๋๋ฆฌ์ง ์๋๋ค"๋ก ๋ฐ๊พธ๊ณ ์งํฌ ๊ฒ ๋์ ์๋๋ฅผ ๋ํ๋ค.
|
|
409
|
+
- ์๋ฌธ๋ณด๋ค ๊ธธ๊ฒ ์ฐ์ง ์๋๋ค. ๊ธธ์ด์ง๋ฉด ๊ทธ ํญ๋ชฉ์ ์๋ฌธ์ด ๋จ๋๋ค
|
|
410
|
+
- ๊ฐ์ group ๋ผ๋ฒจ๋ผ๋ฆฌ ๊ผด์ ๋ง์ถ๋ค. ๋น๊ต ์ด ์ ๋ชฉ์ฒ๋ผ ์ง์ ์ด๋ฃจ๋ ๋ผ๋ฒจ์ ํ์ชฝ๋ง ๋ฐ๊พธ์ง ์๋๋ค
|
|
411
|
+
- ๋ฒ์ญํฌ์ '์'๊ฐ ์ด์ด์ง๋ ๊ผด, ๊ฐ์ด๋์ ๋์ด, ์ ๊ตณ์ ์์ฐจ, ๊ณผ์ฅ ์์์ด๋ง ๊ณ ์น๋ค. ๋ป์ ๋ฐ๊พธ๊ฑฐ๋ ๋ด์ฉ์ ๋ ์ค์ด์ง ์๋๋ค
|
|
412
|
+
- 5๋จ๊ณ์์ `LABEL_TOO_LONG`์ด ์ค๋ฉด ๋ผ๋ฒจ์ด ์๋ฌธ๋ณด๋ค ๊ธธ์ด์ง ๊ฒ์ด๋ค. ๊ทธ ํญ๋ชฉ๋ง ํ ๋ฒ ๋ ๋ณด๋ด๋ฉฐ ์งํฌ ๊ฒ ๋์ "์๋ฌธ ๊ธ์ ์ ์ดํ"๋ฅผ ์ ์ด ์ค๋ค. ๋ ๋ฒ์งธ๋ ๊ฑธ๋ฆฌ๋ฉด ์๋ฌธ์ ๋๋ค.
|
|
345
413
|
- 6๋จ๊ณ๋ ๋ค์ ์ค์บ๊น์ง๋ง ํ๊ณ Step 6 ๋ ๋๋ก ๊ฐ๋ค.
|
|
346
414
|
|
|
347
415
|
์ค๋ฌธํ ๋ฌธ์ฅ์ `digest.json`์ ์์ผ๋ก ๊ณ ์ณ ๋ฃ์ง ์๋๋ค. `prose_apply`๋ฅผ ๊ฑฐ์ณ์ผ ๋ง์ปค ๊ฒ์ฌ๊ฐ ๋๋ค.
|
|
@@ -352,9 +420,9 @@ gestalt digest translate-apply '<slug>' '<dir>/translation.part-<a>.json' --json
|
|
|
352
420
|
ges_digest { action: "render", slug: "<slug>", repoRoot: "<repoRoot>" }
|
|
353
421
|
```
|
|
354
422
|
|
|
355
|
-
`digest.html`(๋ฆฌํฌํธ ์ ๋ถ)๊ณผ `digest.md`(์ฒซ ๋ฆฌํฌํธ)๋ฅผ ํจ๊ป ์ด๋ค. ๋ค๋ฅธ ๋ฆฌํฌํธ์ ๋งํฌ๋ค์ด์ด ํ์ํ๋ฉด `gestalt digest export '<slug>' --md --report '<key>'`๋ก ๋ธ๋ค. ํ์ผ ํ๋๋ก ๋ค๊ณ ๋ค๋ HTML์ด ํ์ํ๋ฉด `inlineFrames: true`๋ก ๋ถ๋ฅธ๋ค. ํ๋ ์ ํ ์ฅ์ด 5MB, ํฉ๊ณ๊ฐ 15MB๋ฅผ ๋์ผ๋ฉด ๊ทธ ํ๋ ์์ ๋ฃ์ง ์๊ณ ๊ฒฝ๊ณ ๋ก ์๋ฆฐ๋ค.
|
|
423
|
+
`digest.html`(๋ฆฌํฌํธ ์ ๋ถ)๊ณผ `digest.md`(์ฒซ ๋ฆฌํฌํธ)๋ฅผ ํจ๊ป ์ด๋ค. ๋ค๋ฅธ ๋ฆฌํฌํธ์ ๋งํฌ๋ค์ด์ด ํ์ํ๋ฉด `gestalt digest export '<slug>' --md --report '<key>'`๋ก ๋ธ๋ค. ํ์ผ ํ๋๋ก ๋ค๊ณ ๋ค๋ HTML์ด ํ์ํ๋ฉด `inlineFrames: true`๋ก ๋ถ๋ฅธ๋ค. ํ๋ ์ ํ ์ฅ์ด 5MB, ํฉ๊ณ๊ฐ 15MB๋ฅผ ๋์ผ๋ฉด ๊ทธ ํ๋ ์์ ๋ฃ์ง ์๊ณ ๊ฒฝ๊ณ ๋ก ์๋ฆฐ๋ค. ์ฅ๋ฉด์ ์์น์
ํ๋ ์๊ณผ ๊ฐ์ ํฉ๊ณ์ ๋ค์ด๊ฐ๋ค. ๊ฒฝ๊ณ ์ `์ฅ๋ฉด์ ๊ฑด๋๋ฐ์๋ค`๋ `์ฅ๋ฉด์ด 5MB`๊ฐ ๋จ๋ฉด ์ธ๋ผ์ธ HTML ๋์ serve๋ก ๋ณธ๋ค.
|
|
356
424
|
|
|
357
|
-
`RENDER_BLOCKED`๊ฐ ์ค๋ฉด ์๋ต์ `lintErrors`๋ฅผ ๋ณด๊ณ
|
|
425
|
+
`RENDER_BLOCKED`๊ฐ ์ค๋ฉด ์๋ต์ `lintErrors`๋ฅผ ๋ณด๊ณ ์ด๋ฒ์ ํฉ์น ๋ฆฌํฌํธ ์๋ฆฌ๋ฉด Step 3์ผ๋ก ๋์๊ฐ๋ค. ๋ค๋ฅธ ๋ฆฌํฌํธ ์๋ฆฌ๋ฉด ๊ณ ์น์ง ์๊ณ ๋ณด๊ณ ํ๊ณ ๋ฉ์ถ๋ค. `RENDER_FAILED`๋ lint์ ๋ฌด๊ดํ๊ฒ ํ์ผ์ ๋ชป ์ด ๊ฒฝ์ฐ๋ผ Step 3์ผ๋ก ๋์๊ฐ์ง ์๊ณ ๋ฉ์์ง๋ฅผ ๊ทธ๋๋ก ๋ณด๊ณ ํ๊ณ ๋ฉ์ถ๋ค.
|
|
358
426
|
|
|
359
427
|
## Step 7 โ ๋์ฐ๊ธฐ์ ๋ณด๊ณ
|
|
360
428
|
|
|
@@ -386,11 +454,13 @@ gestalt digest export '<slug>' --md --repo-root '<repoRoot>' [--report '<key>']
|
|
|
386
454
|
- serve๋ก ๋์ ์ผ๋ฉด ๋ทฐ์ด ์ฃผ์์ ๋๋ ๋ฒ. ์ธ๋ผ์ธ HTML์ด๋ฉด ๊ทธ ๊ฒฝ๋ก์ serve๋ฅผ ๋ถ๋ฅด๋ฉด ๋ฎ์ธ๋ค๋ ๊ฒ
|
|
387
455
|
- ์๋ง ์ถ์ฒ์ ๋ฌธ์ฅ ์
|
|
388
456
|
- ๋ฒ์ญ์ ๋ถ์์ผ๋ฉด ๊ทธ ์ธ์ด์ ๋น ์ง ๋ฌธ์ฅ ์
|
|
389
|
-
- ํ๋ฉด ๊ธ์๋ฅผ ์ฝ์์ผ๋ฉด `ocr.json` ๊ฒฝ๋ก์ ํญ๋ชฉ ์. ๋ชป ์ฝ์์ผ๋ฉด ๊ทธ ์ด์
|
|
390
|
-
-
|
|
391
|
-
- ํ์ฅ ํค์ ์๋ก ๋ถ์๋์ง ๋ฐ๊ฟ
|
|
457
|
+
- ํ๋ฉด ๊ธ์๋ฅผ ์ฝ์์ผ๋ฉด `ocr.json` ๊ฒฝ๋ก์ ํญ๋ชฉ ์. ์๊ฐ ๋ก๊ทธ๊ฐ ๋ชจ์๋์ผ๋ฉด ๊ทธ ์ค์ N๊ณผ M. ๋ชป ์ฝ์์ผ๋ฉด ๊ทธ ์ด์
|
|
458
|
+
- ์ด๋ฒ์ ๋ง๋ ๋ฆฌํฌํธ๋ง๋ค ํค์ ์๋ก ๋ถ์๋์ง ๋ฐ๊ฟ ๋ผ์ ๋์ง(Step 3์์ ๋ฆฌํฌํธ๋ง๋ค ์ฒ์ ๋ฐ์ ๋ `replaced`). ์ด๋ฏธ ์์ด ๊ฑด๋๋ด ๋์ด๋๋ ๊ทธ ํค
|
|
459
|
+
- ํ์ฅ ํค์ ์๋ก ๋ถ์๋์ง ๋ฐ๊ฟ ๋ผ์ ๋์ง(Step 3.5์์ ์ฒ์ ๋ฐ์ ๋ `replaced`). ๊ฑด๋๋ด ํ
ํ๋ฆฟ๊ณผ ์ด์ (์๋ ํ
ํ๋ฆฟ, ๋๊ธ์ ๋ชป ๋ฐ์, ์ค๋ฅ๊ฐ ๋จ์)
|
|
392
460
|
- ๋๊ธ์ ๋ฐ์์ผ๋ฉด ๋ฐ์ ๊ฐ์
|
|
393
461
|
- ๋์น์
๊ณผ ์์น์
, ํค์๋ ๊ฐ์. `skipped` ๊ตฌ๊ฐ๊ณผ ์ด์
|
|
462
|
+
- ๋ฆฌํฌํธ๋ง๋ค ๋์ ๊ฐ์์ ์ข
๋ฅ(`flow` 2, `timeline` 1์ฒ๋ผ). `DIAGRAM_TOO_FEW`๊ฐ ๋จ์์ผ๋ฉด ๊ทธ ์ด์ (`video-summarizer`๊ฐ ๋๋ ค์ค `diagrams:` ์ค)
|
|
463
|
+
- ํ๋ณด ์ฅ๋ฉด์ ๊ณจ๋์ผ๋ฉด ํ๋ณด ์(์์์ผ๋ฉด ์๊ธฐ ์ ์๋)์ ๋ฆฌํฌํธ์ ์ค์ `shots` ์, 720p๋ก ๋ฝ์ ์. ๋ชป ๊ณจ๋์ผ๋ฉด ๊ทธ ์ด์ (ํ๋ฉด ๊ธ์๋ฅผ ์ ์ฝ์, ๋ช
๋ น ์คํจ)
|
|
394
464
|
- merge๋ฅผ ๋ช ๋ฒ ๋์๋์ง์ ๋จ์ ๊ฒฝ๊ณ
|
|
395
465
|
- ์ค๋ฌธ ๊ฒฐ๊ณผ. ๋ฃ์ ๊ฐ์์ ์๋ฌธ์ ๋ ํญ๋ชฉ(path์ ๊ฒฝ๊ณ `code`), ๋ค์ ์ค์บํด์ ๋จ์ S1
|
|
396
466
|
- ํ๋ ์์ ๋ชป ๋ฝ์ ์์น์
(Step 6 ๋ ๋ ๊ฒฝ๊ณ ์์)๊ณผ frames ์คํจ ์์ธ
|
|
@@ -400,9 +470,11 @@ gestalt digest export '<slug>' --md --repo-root '<repoRoot>' [--report '<key>']
|
|
|
400
470
|
- lint ์ค๋ฅ๊ฐ ๋จ์ ์ฑ๋ก ๋ ๋ํ์ง ์๋๋ค.
|
|
401
471
|
- HTML์ด๋ ๋งํฌ๋ค์ด์ ์์ผ๋ก ์ฐ๊ฑฐ๋ ๊ณ ์น์ง ์๋๋ค. ๊ณ ์น ๊ฒ ์์ผ๋ฉด ๋ฆฌํฌํธ ํ์ผ์ ๊ณ ์ณ ๋ค์ mergeํ๊ณ ๋ค์ ๋ ๋ํ๋ค.
|
|
402
472
|
- `digest.json`์ `reports[]`๋ฅผ ์์ผ๋ก ์ด์ด ๋ถ์ด์ง ์๋๋ค. merge๋ฅผ ๊ฑฐ์ณ์ผ ๊ฐ์ ํค์ ๋ฆฌํฌํธ๊ฐ ๊ฒน์น์ง ์๋๋ค.
|
|
473
|
+
- ์ฌ์ด ๋ฆฌํฌํธ๋ฅผ ์คํฌ๋ฆฝํธ์์ ๋ฐ๋ก ์์ฝํ์ง ์๋๋ค. ๋ณดํต ๋ฆฌํฌํธ๋ฅผ ํ์ด ์จ์ผ ๋ ๋ฆฌํฌํธ์ ๊ตฌ์กฐ๊ฐ ๋ง๋๋ค.
|
|
403
474
|
- ์ถ์ฒ ๋ฒํธ๋ฅผ ๋ฌธ์ฅ์ ๋ง์ถฐ ์ง์์ผ๋ก ๊ณ ์น์ง ์๋๋ค. ์คํฌ๋ฆฝํธ์์ ํด๋น ๋ฌธ์ฅ์ ์ฐพ์ ๋ฒํธ๋ฅผ ํ์ธํ๋ค.
|
|
404
475
|
- ํ๋ฉด ๊ธ์๋ `ocr`์ด true์ผ ๋๋ง ์ฝ๋๋ค. ํ๋ฉด์๋ง ์๋ ๋ด์ฉ์ ์ถ์ฒ ์์ด ์์ฝ์ ๋ฃ์ง ์๋๋ค.
|
|
405
476
|
- ํ์ฅ ๋ฆฌํฌํธ์ ํ
ํ๋ฆฟ์ด ์ ํ ๋ธ๋ก ๋ฐ์ ํ์
์ ์ฐ๊ฒ ํ์ง ์๋๋ค.
|
|
406
|
-
- ๋ชจ๋ธ์ด ์ด SVG๋ HTML ์๋ฌธ์ ๋ฐ์ง ์๋๋ค. ๋์๊ณผ
|
|
477
|
+
- ๋ชจ๋ธ์ด ์ด SVG๋ HTML ์๋ฌธ์ ๋ฐ์ง ์๋๋ค. ๋์๊ณผ ๋ง์ธ๋๋งต, ๊ทธ๋ฆผ ํด์ค์ ๋ ๋๋ฌ๊ฐ ๊ตฌ์กฐ๋ก ๊ทธ๋ฆฐ๋ค.
|
|
478
|
+
- ์ฌ๋๋ง ๋์ค๋ ์ฅ๋ฉด์ `shots`๋ก ์ฃ์ง ์๋๋ค. ์ฅ๋ฉด์ ๊ธ์ด๋ ๊ทธ๋ฆผ์ด ๋ณด์ด๋ ํ๋ฉด๋ง ๊ณ ๋ฅธ๋ค.
|
|
407
479
|
- ๋๊ธ ์์ฑ์ ์ด๋ฆ์ด๋ ์์ด๋, ํ๋กํ์ ์ด๋์๋ ์ฎ๊ธฐ์ง ์๋๋ค.
|
|
408
480
|
- ์นดํฐ์ด๋ ์ ๋๋ฉ์ด์
, ํ์บ์คํธ๋ ๋ง๋ค์ง ์๋๋ค. ๋ฐํ ์๋ฃ๋ฅผ ์ํ๋ฉด `presentation` ์คํฌ์ ์๋ดํ๋ค.
|