screenkit 0.0.1 → 0.0.2
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.
- checksums.yaml +4 -4
- data/.github/workflows/docker.yml +44 -0
- data/.github/workflows/ruby-tests.yml +21 -1
- data/Brewfile +5 -0
- data/CHANGELOG.md +7 -0
- data/CONTRIBUTING.md +25 -0
- data/DOCUMENTATION.md +125 -41
- data/Dockerfile +107 -0
- data/lib/screen_kit.rb +15 -16
- data/lib/screenkit/animation_filters.rb +16 -0
- data/lib/screenkit/callout/styles/base.rb +12 -0
- data/lib/screenkit/callout/styles/file_copy.rb +26 -0
- data/lib/screenkit/callout/styles/inline_block.rb +6 -9
- data/lib/screenkit/callout/styles/{default.rb → shadow_block.rb} +9 -11
- data/lib/screenkit/callout.rb +1 -1
- data/lib/screenkit/cli/episode.rb +1 -1
- data/lib/screenkit/config/episode.rb +6 -0
- data/lib/screenkit/config/project.rb +5 -2
- data/lib/screenkit/exporter/demotape.rb +8 -0
- data/lib/screenkit/exporter/episode.rb +37 -17
- data/lib/screenkit/exporter/segment.rb +262 -71
- data/lib/screenkit/generators/episode/callouts/001.yml +12 -0
- data/lib/screenkit/generators/episode/config.yml.erb +8 -8
- data/lib/screenkit/generators/project/screenkit.yml +46 -15
- data/lib/screenkit/schema_validator.rb +1 -1
- data/lib/screenkit/schemas/callout_styles/file_copy.json +8 -0
- data/lib/screenkit/schemas/callout_styles/inline_block.json +20 -0
- data/lib/screenkit/schemas/{callouts/default.json → callout_styles/shadow_block.json} +2 -2
- data/lib/screenkit/schemas/callouts/inline_block.json +20 -11
- data/lib/screenkit/schemas/callouts/shadow_block.json +39 -0
- data/lib/screenkit/schemas/episode.json +6 -43
- data/lib/screenkit/schemas/project.json +4 -5
- data/lib/screenkit/schemas/refs/anchor.json +1 -1
- data/lib/screenkit/schemas/refs/animation.json +1 -1
- data/lib/screenkit/schemas/refs/background.json +1 -1
- data/lib/screenkit/schemas/refs/{callout.json → callout_style.json} +6 -8
- data/lib/screenkit/schemas/refs/color.json +1 -1
- data/lib/screenkit/schemas/refs/demotape.json +1 -1
- data/lib/screenkit/schemas/refs/demotape_themes.json +1 -1
- data/lib/screenkit/schemas/refs/directory.json +1 -1
- data/lib/screenkit/schemas/refs/duration.json +1 -1
- data/lib/screenkit/schemas/refs/intro.json +1 -1
- data/lib/screenkit/schemas/refs/logo.json +1 -1
- data/lib/screenkit/schemas/refs/outro.json +1 -1
- data/lib/screenkit/schemas/refs/position.json +1 -1
- data/lib/screenkit/schemas/refs/scenes.json +1 -1
- data/lib/screenkit/schemas/refs/size.json +1 -1
- data/lib/screenkit/schemas/refs/sound.json +1 -1
- data/lib/screenkit/schemas/refs/spacing.json +1 -1
- data/lib/screenkit/schemas/refs/text_style.json +1 -1
- data/lib/screenkit/schemas/refs/transition.json +1 -1
- data/lib/screenkit/schemas/refs/tts.json +4 -41
- data/lib/screenkit/schemas/refs/tts_builtin.json +23 -0
- data/lib/screenkit/schemas/refs/watermark.json +1 -1
- data/lib/screenkit/schemas/tts/elevenlabs.json +11 -2
- data/lib/screenkit/schemas/tts/espeak.json +26 -0
- data/lib/screenkit/schemas/tts/say.json +11 -1
- data/lib/screenkit/shell.rb +6 -0
- data/lib/screenkit/time_formatter.rb +14 -0
- data/lib/screenkit/tts/base.rb +21 -0
- data/lib/screenkit/tts/eleven_labs.rb +8 -9
- data/lib/screenkit/tts/espeak.rb +30 -0
- data/lib/screenkit/tts/say.rb +5 -6
- data/lib/screenkit/utils.rb +6 -0
- data/lib/screenkit/version.rb +1 -1
- metadata +21 -42
- data/lib/screenkit/generators/project/resources/fonts/open-sans/OpenSans-Bold.ttf +0 -0
- data/lib/screenkit/generators/project/resources/fonts/open-sans/OpenSans-BoldItalic.ttf +0 -0
- data/lib/screenkit/generators/project/resources/fonts/open-sans/OpenSans-ExtraBoldItalic.ttf +0 -0
- data/lib/screenkit/generators/project/resources/fonts/open-sans/OpenSans-Italic.ttf +0 -0
- data/lib/screenkit/generators/project/resources/fonts/open-sans/OpenSans-Light.ttf +0 -0
- data/lib/screenkit/generators/project/resources/fonts/open-sans/OpenSans-LightItalic.ttf +0 -0
- data/lib/screenkit/generators/project/resources/fonts/open-sans/OpenSans-Medium.ttf +0 -0
- data/lib/screenkit/generators/project/resources/fonts/open-sans/OpenSans-MediumItalic.ttf +0 -0
- data/lib/screenkit/generators/project/resources/fonts/open-sans/OpenSans-Regular.ttf +0 -0
- data/lib/screenkit/generators/project/resources/fonts/open-sans/OpenSans-SemiBoldItalic.ttf +0 -0
- data/lib/screenkit/generators/project/resources/fonts/open-sans/OpenSans_Condensed-Bold.ttf +0 -0
- data/lib/screenkit/generators/project/resources/fonts/open-sans/OpenSans_Condensed-BoldItalic.ttf +0 -0
- data/lib/screenkit/generators/project/resources/fonts/open-sans/OpenSans_Condensed-ExtraBold.ttf +0 -0
- data/lib/screenkit/generators/project/resources/fonts/open-sans/OpenSans_Condensed-ExtraBoldItalic.ttf +0 -0
- data/lib/screenkit/generators/project/resources/fonts/open-sans/OpenSans_Condensed-Italic.ttf +0 -0
- data/lib/screenkit/generators/project/resources/fonts/open-sans/OpenSans_Condensed-Light.ttf +0 -0
- data/lib/screenkit/generators/project/resources/fonts/open-sans/OpenSans_Condensed-LightItalic.ttf +0 -0
- data/lib/screenkit/generators/project/resources/fonts/open-sans/OpenSans_Condensed-Medium.ttf +0 -0
- data/lib/screenkit/generators/project/resources/fonts/open-sans/OpenSans_Condensed-MediumItalic.ttf +0 -0
- data/lib/screenkit/generators/project/resources/fonts/open-sans/OpenSans_Condensed-Regular.ttf +0 -0
- data/lib/screenkit/generators/project/resources/fonts/open-sans/OpenSans_Condensed-SemiBold.ttf +0 -0
- data/lib/screenkit/generators/project/resources/fonts/open-sans/OpenSans_Condensed-SemiBoldItalic.ttf +0 -0
- data/lib/screenkit/generators/project/resources/fonts/open-sans/OpenSans_SemiCondensed-Bold.ttf +0 -0
- data/lib/screenkit/generators/project/resources/fonts/open-sans/OpenSans_SemiCondensed-BoldItalic.ttf +0 -0
- data/lib/screenkit/generators/project/resources/fonts/open-sans/OpenSans_SemiCondensed-ExtraBold.ttf +0 -0
- data/lib/screenkit/generators/project/resources/fonts/open-sans/OpenSans_SemiCondensed-ExtraBoldItalic.ttf +0 -0
- data/lib/screenkit/generators/project/resources/fonts/open-sans/OpenSans_SemiCondensed-Italic.ttf +0 -0
- data/lib/screenkit/generators/project/resources/fonts/open-sans/OpenSans_SemiCondensed-Light.ttf +0 -0
- data/lib/screenkit/generators/project/resources/fonts/open-sans/OpenSans_SemiCondensed-LightItalic.ttf +0 -0
- data/lib/screenkit/generators/project/resources/fonts/open-sans/OpenSans_SemiCondensed-Medium.ttf +0 -0
- data/lib/screenkit/generators/project/resources/fonts/open-sans/OpenSans_SemiCondensed-MediumItalic.ttf +0 -0
- data/lib/screenkit/generators/project/resources/fonts/open-sans/OpenSans_SemiCondensed-Regular.ttf +0 -0
- data/lib/screenkit/generators/project/resources/fonts/open-sans/OpenSans_SemiCondensed-SemiBold.ttf +0 -0
- data/lib/screenkit/generators/project/resources/fonts/open-sans/OpenSans_SemiCondensed-SemiBoldItalic.ttf +0 -0
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
---
|
|
2
|
-
# yaml-language-server: $schema
|
|
2
|
+
# yaml-language-server: $schema=https://screenkit.dev/schemas/episode.json
|
|
3
3
|
|
|
4
4
|
# The episode title. When there are no linebreaks, they will be inferred based
|
|
5
5
|
# on the approximate text width.
|
|
@@ -10,7 +10,7 @@ title: "CREATING SCREENCASTS WITH SCREENKIT"
|
|
|
10
10
|
#
|
|
11
11
|
# The project's configuration can define the callout structure, while the
|
|
12
12
|
# episode configuration can define the content and timing.
|
|
13
|
-
|
|
13
|
+
callouts_styles:
|
|
14
14
|
- type: info
|
|
15
15
|
title: "ScreenKit"
|
|
16
16
|
body: "Visit https://github.com/fnando/screenkit to learn more."
|
|
@@ -45,7 +45,7 @@ callouts:
|
|
|
45
45
|
# title:
|
|
46
46
|
# x: 100
|
|
47
47
|
# y: 300
|
|
48
|
-
# font_path:
|
|
48
|
+
# font_path: open-sans/OpenSans-ExtraBold.ttf
|
|
49
49
|
# size: 144
|
|
50
50
|
# color: "#ffffff"
|
|
51
51
|
#
|
|
@@ -53,7 +53,7 @@ callouts:
|
|
|
53
53
|
# # Works best with a transparent PNG file in high resolution (at least 2x the
|
|
54
54
|
# # size it'll be displayed).
|
|
55
55
|
# logo:
|
|
56
|
-
# path:
|
|
56
|
+
# path: images/logo.png
|
|
57
57
|
# x: 100
|
|
58
58
|
# y: 200
|
|
59
59
|
# width: 200
|
|
@@ -62,7 +62,7 @@ callouts:
|
|
|
62
62
|
# # The sound to be played along with the logo in the intro.
|
|
63
63
|
# # This must correspond to a sound file in the sounds directory, with any
|
|
64
64
|
# # audio extension (e.g. mp3, m4a, wav).
|
|
65
|
-
# sound:
|
|
65
|
+
# sound: sounds/chime.mp3
|
|
66
66
|
#
|
|
67
67
|
# outro:
|
|
68
68
|
# # The duration of the outro scene in seconds.
|
|
@@ -78,11 +78,11 @@ callouts:
|
|
|
78
78
|
# background: "#100f50"
|
|
79
79
|
#
|
|
80
80
|
# # The sound to be played along with the logo in the outro.
|
|
81
|
-
# sound:
|
|
81
|
+
# sound: sounds/chime.mp3
|
|
82
82
|
#
|
|
83
83
|
# # The logo to be displayed in the video outro.
|
|
84
84
|
# logo:
|
|
85
|
-
# path:
|
|
85
|
+
# path: images/logo.png
|
|
86
86
|
# x: center
|
|
87
87
|
# y: center
|
|
88
88
|
# width: 500
|
|
@@ -95,7 +95,7 @@ callouts:
|
|
|
95
95
|
# When present, this will have higher precedence over the project's
|
|
96
96
|
# configuration, so you can have different intro/outro segments for each
|
|
97
97
|
# episode.
|
|
98
|
-
#
|
|
98
|
+
# tts:
|
|
99
99
|
# engine: elevenlabs
|
|
100
100
|
# voice_id: 56AoDkrOh6qfVPDXZ7Pt
|
|
101
101
|
# language_code: en
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
# yaml-language-server: $schema=../../schemas/project.json
|
|
3
|
+
## yaml-language-server: $schema=https://screenkit.dev/schemas/project.json
|
|
3
4
|
|
|
4
5
|
# ScreenKit project configuration file.
|
|
5
6
|
schema: 1
|
|
@@ -76,19 +77,35 @@ watermark:
|
|
|
76
77
|
margin: 100
|
|
77
78
|
|
|
78
79
|
# TTS configuration.
|
|
79
|
-
# To disable voiceover entirely, set `tts: false
|
|
80
|
-
#
|
|
81
|
-
#
|
|
82
|
-
#
|
|
83
|
-
#
|
|
84
|
-
#
|
|
85
|
-
#
|
|
86
|
-
# stability: 0.5
|
|
87
|
-
# similarity: 0.75
|
|
88
|
-
# style: 0.0
|
|
80
|
+
# To disable voiceover entirely, set `tts: false` or disable all engines
|
|
81
|
+
# individually.
|
|
82
|
+
#
|
|
83
|
+
# You can set up multiple TTS engines to be used as fallbacks in case one fails.
|
|
84
|
+
# Each TTS engine has its own detection mechanism. For instance, say and espeak
|
|
85
|
+
# checks for a binary with the same name. ElevenLabs checks for the presence of
|
|
86
|
+
# `--tts-api-key`.
|
|
89
87
|
tts:
|
|
90
|
-
engine
|
|
91
|
-
|
|
88
|
+
# Apple Say TTS engine configuration.
|
|
89
|
+
- engine: say
|
|
90
|
+
rate: 150
|
|
91
|
+
enabled: true
|
|
92
|
+
|
|
93
|
+
# eSpeak TTS engine configuration.
|
|
94
|
+
- engine: espeak
|
|
95
|
+
rate: 150
|
|
96
|
+
voice: en-us
|
|
97
|
+
enabled: true
|
|
98
|
+
|
|
99
|
+
# Eleven Labs TTS engine configuration.
|
|
100
|
+
- engine: eleven_labs
|
|
101
|
+
enabled: true
|
|
102
|
+
voice_id: 56AoDkrOh6qfVPDXZ7Pt
|
|
103
|
+
language_code: en
|
|
104
|
+
voice_settings:
|
|
105
|
+
speed: 0.9
|
|
106
|
+
stability: 0.5
|
|
107
|
+
similarity: 0.75
|
|
108
|
+
style: 0.0
|
|
92
109
|
|
|
93
110
|
# Scene configurations define how different scenes in the video are rendered.
|
|
94
111
|
# There are three types of scenes: intro, outro, and segment.
|
|
@@ -227,9 +244,10 @@ demotape:
|
|
|
227
244
|
# in the video. Callouts are visual elements that highlight important
|
|
228
245
|
# information. Each callout type can have its own settings for icon, background,
|
|
229
246
|
# text styles, animations, and sounds.
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
# yaml-language-server: $schema
|
|
247
|
+
callout_styles:
|
|
248
|
+
shadow_block:
|
|
249
|
+
# yaml-language-server: $schema=https://screenkit.dev/schemas/callout_styles/default.json
|
|
250
|
+
style: shadow_block
|
|
233
251
|
background_color: "#ffff00"
|
|
234
252
|
shadow: "#2242d3"
|
|
235
253
|
title_style:
|
|
@@ -252,3 +270,16 @@ callouts:
|
|
|
252
270
|
sound:
|
|
253
271
|
path: pop.mp3
|
|
254
272
|
volume: 0.7
|
|
273
|
+
|
|
274
|
+
inline_block:
|
|
275
|
+
# yaml-language-server: $schema=https://screenkit.dev/schemas/callout_styles/inline_block.json
|
|
276
|
+
style: inline_block
|
|
277
|
+
anchor: [left, bottom]
|
|
278
|
+
margin: 100
|
|
279
|
+
animation: fade
|
|
280
|
+
in_transition:
|
|
281
|
+
duration: 0.4s
|
|
282
|
+
sound: pop.mp3
|
|
283
|
+
out_transition:
|
|
284
|
+
duration: 0.4s
|
|
285
|
+
sound: pop.mp3
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "http://json-schema.org/draft-04/schema#",
|
|
3
|
+
"$id": "https://screenkit.dev/schemas/callout_styles/file_copy.json",
|
|
4
|
+
"title": "File Copy Callout",
|
|
5
|
+
"type": "object",
|
|
6
|
+
"required": ["file_path"],
|
|
7
|
+
"properties": { "file_path": { "type": "string", "format": "uri" } }
|
|
8
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "http://json-schema.org/draft-04/schema#",
|
|
3
|
+
"$id": "https://screenkit.dev/schemas/callout_styles/inline_block.json",
|
|
4
|
+
"title": "Inline Block Callout",
|
|
5
|
+
"type": "object",
|
|
6
|
+
"required": ["background_color", "text_style"],
|
|
7
|
+
"properties": {
|
|
8
|
+
"background_color": { "$ref": "../refs/color.json" },
|
|
9
|
+
"width": {
|
|
10
|
+
"type": "number",
|
|
11
|
+
"description": "The callout width"
|
|
12
|
+
},
|
|
13
|
+
"text_style": {
|
|
14
|
+
"$ref": "../refs/text_style.json"
|
|
15
|
+
},
|
|
16
|
+
"padding": {
|
|
17
|
+
"$ref": "../refs/spacing.json"
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "http://json-schema.org/draft-04/schema#",
|
|
3
|
-
"$id": "https://
|
|
4
|
-
"title": "
|
|
3
|
+
"$id": "https://screenkit.dev/schemas/callout_styles/shadow_block.json",
|
|
4
|
+
"title": "Shadow Block Callout",
|
|
5
5
|
"type": "object",
|
|
6
6
|
"required": [
|
|
7
7
|
"background_color",
|
|
@@ -1,20 +1,29 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "http://json-schema.org/draft-04/schema#",
|
|
3
|
-
"$id": "https://
|
|
4
|
-
"title": "Inline Block
|
|
3
|
+
"$id": "https://screenkit.dev/schemas/callouts/inline_block.json",
|
|
4
|
+
"title": "Callout — Inline Block",
|
|
5
5
|
"type": "object",
|
|
6
|
-
"required": ["
|
|
6
|
+
"required": ["type", "text", "duration", "starts_at"],
|
|
7
7
|
"properties": {
|
|
8
|
-
"
|
|
9
|
-
|
|
10
|
-
"
|
|
11
|
-
"description": "The callout
|
|
8
|
+
"type": {
|
|
9
|
+
"type": "string",
|
|
10
|
+
"enum": ["inline_block"],
|
|
11
|
+
"description": "The callout type"
|
|
12
12
|
},
|
|
13
|
-
"
|
|
14
|
-
"
|
|
13
|
+
"text": {
|
|
14
|
+
"type": "string",
|
|
15
|
+
"description": "The callout text"
|
|
15
16
|
},
|
|
16
|
-
"
|
|
17
|
-
|
|
17
|
+
"duration": { "$ref": "../refs/duration.json" },
|
|
18
|
+
"starts_at": {
|
|
19
|
+
"oneOf": [
|
|
20
|
+
{
|
|
21
|
+
"type": "string",
|
|
22
|
+
"pattern": "^(\\d{1,2}:)?(\\d{1,2}):(\\d{1,2})$",
|
|
23
|
+
"description": "A pattern like 00:00:00"
|
|
24
|
+
},
|
|
25
|
+
{ "type": "integer", "description": "The position in seconds" }
|
|
26
|
+
]
|
|
18
27
|
}
|
|
19
28
|
}
|
|
20
29
|
}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "http://json-schema.org/draft-04/schema#",
|
|
3
|
+
"$id": "https://screenkit.dev/schemas/callouts/shadow_block.json",
|
|
4
|
+
"title": "Callout — Shadow Block",
|
|
5
|
+
"type": "object",
|
|
6
|
+
"required": ["type", "duration", "starts_at"],
|
|
7
|
+
"anyOf": [{ "required": ["title"] }, { "required": ["body"] }],
|
|
8
|
+
"properties": {
|
|
9
|
+
"type": {
|
|
10
|
+
"type": "string",
|
|
11
|
+
"enum": ["shadow_block"],
|
|
12
|
+
"description": "The callout type"
|
|
13
|
+
},
|
|
14
|
+
"title": {
|
|
15
|
+
"type": "string",
|
|
16
|
+
"description": "The callout text"
|
|
17
|
+
},
|
|
18
|
+
"body": {
|
|
19
|
+
"type": "string",
|
|
20
|
+
"description": "The callout body text"
|
|
21
|
+
},
|
|
22
|
+
"width": {
|
|
23
|
+
"type": "number",
|
|
24
|
+
"description": "The callout width",
|
|
25
|
+
"minimum": 0
|
|
26
|
+
},
|
|
27
|
+
"duration": { "$ref": "../refs/duration.json" },
|
|
28
|
+
"starts_at": {
|
|
29
|
+
"oneOf": [
|
|
30
|
+
{
|
|
31
|
+
"type": "string",
|
|
32
|
+
"pattern": "^\\d{2}:\\d{2}:\\d{2}$",
|
|
33
|
+
"description": "A pattern like 00:00:00"
|
|
34
|
+
},
|
|
35
|
+
{ "type": "integer", "description": "The position in seconds" }
|
|
36
|
+
]
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
}
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "http://json-schema.org/draft-04/schema#",
|
|
3
|
-
"$id": "https://
|
|
4
|
-
"title": "ScreenKit Episode Configuration",
|
|
5
|
-
"description": "Schema for ScreenKit episode configuration file (config.yml)",
|
|
3
|
+
"$id": "https://screenkit.dev/schemas/episode.json",
|
|
4
|
+
"title": "ScreenKit Episode Configuration (config.yml)",
|
|
6
5
|
"type": "object",
|
|
7
6
|
"required": ["title"],
|
|
8
7
|
"properties": {
|
|
@@ -17,46 +16,10 @@
|
|
|
17
16
|
"pattern": "\\S"
|
|
18
17
|
},
|
|
19
18
|
"demotape": { "$ref": "refs/demotape.json" },
|
|
20
|
-
"
|
|
21
|
-
"type": "
|
|
22
|
-
"
|
|
23
|
-
|
|
24
|
-
"type": "object",
|
|
25
|
-
"required": ["type", "starts_at", "duration"],
|
|
26
|
-
"additionalProperties": true,
|
|
27
|
-
"properties": {
|
|
28
|
-
"type": {
|
|
29
|
-
"type": "string",
|
|
30
|
-
"description": "Callout type identifier",
|
|
31
|
-
"minLength": 1,
|
|
32
|
-
"pattern": "\\S"
|
|
33
|
-
},
|
|
34
|
-
"starts_at": {
|
|
35
|
-
"oneOf": [
|
|
36
|
-
{
|
|
37
|
-
"type": "string",
|
|
38
|
-
"description": "Callout start time in HH:MM:SS format (e.g. 00:01:30)"
|
|
39
|
-
},
|
|
40
|
-
{
|
|
41
|
-
"type": "number",
|
|
42
|
-
"description": "Callout start time in seconds (e.g. 90)"
|
|
43
|
-
}
|
|
44
|
-
]
|
|
45
|
-
},
|
|
46
|
-
"duration": { "$ref": "refs/duration.json" },
|
|
47
|
-
"width": {
|
|
48
|
-
"oneOf": [
|
|
49
|
-
{
|
|
50
|
-
"type": "string",
|
|
51
|
-
"description": "Callout width in percentage (e.g. 50%)"
|
|
52
|
-
},
|
|
53
|
-
{
|
|
54
|
-
"type": "number",
|
|
55
|
-
"description": "Callout width in pixels (e.g. 300)"
|
|
56
|
-
}
|
|
57
|
-
]
|
|
58
|
-
}
|
|
59
|
-
}
|
|
19
|
+
"callout_styles": {
|
|
20
|
+
"type": "object",
|
|
21
|
+
"additionalProperties": {
|
|
22
|
+
"$ref": "refs/callout_style.json"
|
|
60
23
|
}
|
|
61
24
|
}
|
|
62
25
|
}
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "http://json-schema.org/draft-04/schema#",
|
|
3
|
-
"$id": "https://
|
|
4
|
-
"title": "ScreenKit Project Configuration",
|
|
5
|
-
"description": "Schema for ScreenKit project configuration file (screenkit.yml)",
|
|
3
|
+
"$id": "https://screenkit.dev/schemas/project.json",
|
|
4
|
+
"title": "ScreenKit Project Configuration (screenkit.yml)",
|
|
6
5
|
"type": "object",
|
|
7
6
|
"required": ["schema", "resources_dir", "episode_dir", "output_dir"],
|
|
8
7
|
"properties": {
|
|
@@ -26,10 +25,10 @@
|
|
|
26
25
|
"description": "Directory where generated video files will be saved. Supports placeholders like %{episode_number}, %{episode_slug} and %{date}.",
|
|
27
26
|
"format": "uri"
|
|
28
27
|
},
|
|
29
|
-
"
|
|
28
|
+
"callout_styles": {
|
|
30
29
|
"type": "object",
|
|
31
30
|
"additionalProperties": {
|
|
32
|
-
"$ref": "refs/
|
|
31
|
+
"$ref": "refs/callout_style.json"
|
|
33
32
|
}
|
|
34
33
|
},
|
|
35
34
|
"demotape": { "$ref": "refs/demotape.json" }
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "http://json-schema.org/draft-04/schema#",
|
|
3
|
-
"$id": "https://
|
|
3
|
+
"$id": "https://screenkit.dev/schemas/refs/anchor.json",
|
|
4
4
|
"title": "Anchor",
|
|
5
5
|
"type": "array",
|
|
6
6
|
"description": "Anchor position [horizontal, vertical]",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "http://json-schema.org/draft-04/schema#",
|
|
3
|
-
"$id": "https://
|
|
3
|
+
"$id": "https://screenkit.dev/schemas/refs/animation.json",
|
|
4
4
|
"title": "Animation Type",
|
|
5
5
|
"type": "string",
|
|
6
6
|
"enum": ["slide", "fade"]
|
|
@@ -1,14 +1,15 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "http://json-schema.org/draft-04/schema#",
|
|
3
|
-
"$id": "https://
|
|
4
|
-
"title": "Callout",
|
|
3
|
+
"$id": "https://screenkit.dev/schemas/refs/callout_style.json",
|
|
4
|
+
"title": "Callout Style",
|
|
5
5
|
"type": "object",
|
|
6
6
|
"required": [
|
|
7
7
|
"in_transition",
|
|
8
8
|
"out_transition",
|
|
9
9
|
"anchor",
|
|
10
10
|
"margin",
|
|
11
|
-
"animation"
|
|
11
|
+
"animation",
|
|
12
|
+
"style"
|
|
12
13
|
],
|
|
13
14
|
"properties": {
|
|
14
15
|
"in_transition": { "$ref": "transition.json" },
|
|
@@ -17,11 +18,8 @@
|
|
|
17
18
|
"margin": { "$ref": "spacing.json" },
|
|
18
19
|
"style": {
|
|
19
20
|
"type": "string",
|
|
20
|
-
"description": "Callout style name
|
|
21
|
-
"default": "default"
|
|
21
|
+
"description": "Callout style name"
|
|
22
22
|
},
|
|
23
|
-
"anchor": {
|
|
24
|
-
"$ref": "anchor.json"
|
|
25
|
-
}
|
|
23
|
+
"anchor": { "$ref": "anchor.json" }
|
|
26
24
|
}
|
|
27
25
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "http://json-schema.org/draft-04/schema#",
|
|
3
|
-
"$id": "https://
|
|
3
|
+
"$id": "https://screenkit.dev/schemas/refs/color.json",
|
|
4
4
|
"title": "Color type with optional alpha channel",
|
|
5
5
|
"type": "string",
|
|
6
6
|
"pattern": "^#[0-9a-fA-F]{6}([0-9a-fA-F]{2})?$"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "http://json-schema.org/draft-04/schema#",
|
|
3
|
-
"$id": "https://
|
|
3
|
+
"$id": "https://screenkit.dev/schemas/refs/demotape.json",
|
|
4
4
|
"title": "Demo Tape settings (https://github.com/fnando/demotape)",
|
|
5
5
|
"type": "object",
|
|
6
6
|
"properties": {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "http://json-schema.org/draft-04/schema#",
|
|
3
|
-
"$id": "https://
|
|
3
|
+
"$id": "https://screenkit.dev/schemas/refs/demotape_themes.json",
|
|
4
4
|
"title": "Demo Tape themes",
|
|
5
5
|
"type": "string",
|
|
6
6
|
"enum": [
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "http://json-schema.org/draft-04/schema#",
|
|
3
|
-
"$id": "https://
|
|
3
|
+
"$id": "https://screenkit.dev/schemas/refs/duration.json",
|
|
4
4
|
"title": "Duration",
|
|
5
5
|
"oneOf": [
|
|
6
6
|
{ "type": "string", "pattern": "^\\d+(\\.\\d+)?(ms|s|m|h)?$" },
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "http://json-schema.org/draft-04/schema#",
|
|
3
|
-
"$id": "https://
|
|
3
|
+
"$id": "https://screenkit.dev/schemas/refs/intro.json",
|
|
4
4
|
"title": "Intro",
|
|
5
5
|
"properties": {
|
|
6
6
|
"duration": { "$ref": "duration.json" },
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "http://json-schema.org/draft-04/schema#",
|
|
3
|
-
"$id": "https://
|
|
3
|
+
"$id": "https://screenkit.dev/schemas/refs/scenes.json",
|
|
4
4
|
"title": "Scenes",
|
|
5
5
|
"type": "object",
|
|
6
6
|
"required": ["intro", "outro", "segment"],
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "http://json-schema.org/draft-04/schema#",
|
|
3
|
-
"$id": "https://
|
|
3
|
+
"$id": "https://screenkit.dev/schemas/refs/transition.json",
|
|
4
4
|
"type": "object",
|
|
5
5
|
"title": "Transition",
|
|
6
6
|
"required": ["duration", "sound"],
|
|
@@ -1,47 +1,10 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "http://json-schema.org/draft-04/schema#",
|
|
3
|
-
"$id": "https://
|
|
3
|
+
"$id": "https://screenkit.dev/schemas/refs/tts.json",
|
|
4
4
|
"title": "The TTS engine used for voiceover",
|
|
5
5
|
"oneOf": [
|
|
6
|
-
{
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
},
|
|
10
|
-
{
|
|
11
|
-
"type": "object",
|
|
12
|
-
"$ref": "../tts/say.json",
|
|
13
|
-
"properties": {
|
|
14
|
-
"engine": {
|
|
15
|
-
"type": "string",
|
|
16
|
-
"enum": ["say"],
|
|
17
|
-
"description": "The TTS engine to use"
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
},
|
|
21
|
-
{
|
|
22
|
-
"type": "object",
|
|
23
|
-
"$ref": "../tts/elevenlabs.json",
|
|
24
|
-
"properties": {
|
|
25
|
-
"engine": {
|
|
26
|
-
"type": "string",
|
|
27
|
-
"enum": ["elevenlabs"],
|
|
28
|
-
"description": "The TTS engine to use"
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
},
|
|
32
|
-
{
|
|
33
|
-
"type": "object",
|
|
34
|
-
"required": ["engine"],
|
|
35
|
-
"additionalProperties": true,
|
|
36
|
-
"properties": {
|
|
37
|
-
"engine": {
|
|
38
|
-
"type": "string",
|
|
39
|
-
"description": "The TTS engine to use",
|
|
40
|
-
"not": {
|
|
41
|
-
"enum": ["say", "elevenlabs"]
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
}
|
|
6
|
+
{ "type": "boolean", "enum": [false] },
|
|
7
|
+
{ "$ref": "tts_builtin.json" },
|
|
8
|
+
{ "type": "array", "items": { "$ref": "tts_builtin.json" } }
|
|
46
9
|
]
|
|
47
10
|
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "http://json-schema.org/draft-04/schema#",
|
|
3
|
+
"$id": "https://screenkit.dev/schemas/refs/tts_builtin.json",
|
|
4
|
+
"oneOf": [
|
|
5
|
+
{ "$ref": "../tts/say.json" },
|
|
6
|
+
{ "$ref": "../tts/espeak.json" },
|
|
7
|
+
{ "$ref": "../tts/elevenlabs.json" },
|
|
8
|
+
{
|
|
9
|
+
"type": "object",
|
|
10
|
+
"required": ["engine"],
|
|
11
|
+
"additionalProperties": true,
|
|
12
|
+
"properties": {
|
|
13
|
+
"engine": {
|
|
14
|
+
"type": "string",
|
|
15
|
+
"description": "The TTS engine to use",
|
|
16
|
+
"not": {
|
|
17
|
+
"enum": ["say", "eleven_labs", "espeak"]
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
]
|
|
23
|
+
}
|