araboja-shorts 0.2.0__tar.gz

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.
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Kim hyosung
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,216 @@
1
+ Metadata-Version: 2.4
2
+ Name: araboja-shorts
3
+ Version: 0.2.0
4
+ Summary: Automated Korean short-form history videos: topic selection, Korean narration, TTS, and 1080x1920 ffmpeg rendering.
5
+ Author-email: Kim hyosung <drchamchi2@gmail.com>
6
+ License: MIT License
7
+
8
+ Copyright (c) 2026 Kim hyosung
9
+
10
+ Permission is hereby granted, free of charge, to any person obtaining a copy
11
+ of this software and associated documentation files (the "Software"), to deal
12
+ in the Software without restriction, including without limitation the rights
13
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
14
+ copies of the Software, and to permit persons to whom the Software is
15
+ furnished to do so, subject to the following conditions:
16
+
17
+ The above copyright notice and this permission notice shall be included in all
18
+ copies or substantial portions of the Software.
19
+
20
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
21
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
22
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
23
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
24
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
25
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
26
+ SOFTWARE.
27
+
28
+ Project-URL: Homepage, https://github.com/drchamchi2-oss/araboja-shorts
29
+ Project-URL: Issues, https://github.com/drchamchi2-oss/araboja-shorts/issues
30
+ Project-URL: Changelog, https://github.com/drchamchi2-oss/araboja-shorts/blob/main/CHANGELOG.md
31
+ Keywords: shorts,video,tts,ffmpeg,korean,youtube,automation
32
+ Classifier: Development Status :: 3 - Alpha
33
+ Classifier: License :: OSI Approved :: MIT License
34
+ Classifier: Programming Language :: Python :: 3
35
+ Classifier: Topic :: Multimedia :: Video
36
+ Requires-Python: >=3.10
37
+ Description-Content-Type: text/markdown
38
+ License-File: LICENSE
39
+ Requires-Dist: openai>=1.0.0
40
+ Requires-Dist: Pillow>=12.2.0
41
+ Requires-Dist: python-dotenv>=1.2.2
42
+ Requires-Dist: requests>=2.31.0
43
+ Dynamic: license-file
44
+
45
+ # araboja-shorts (아라보자 쇼츠)
46
+
47
+ [![Python CI](https://github.com/drchamchi2-oss/araboja-shorts/actions/workflows/python-ci.yml/badge.svg)](https://github.com/drchamchi2-oss/araboja-shorts/actions/workflows/python-ci.yml)
48
+ [![CodeQL](https://github.com/drchamchi2-oss/araboja-shorts/actions/workflows/codeql.yml/badge.svg)](https://github.com/drchamchi2-oss/araboja-shorts/actions/workflows/codeql.yml)
49
+ [![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE)
50
+ [![Release downloads](https://img.shields.io/github/downloads/drchamchi2-oss/araboja-shorts/total)](https://github.com/drchamchi2-oss/araboja-shorts/releases)
51
+
52
+ `araboja-shorts` is a Python pipeline for generating Korean short-form videos about ancient artifacts, archaeological sites, and ancient-civilization mysteries — from topic selection to a finished, subtitled 1080x1920 video.
53
+
54
+ > Formerly published as `shorts_test`. Renamed after the original araboja shorts project it grew out of; old links redirect here.
55
+
56
+ The script builds a roughly 60-second vertical video by selecting a topic from public web sources, drafting a Korean narration with OpenAI, collecting public-source imagery, generating TTS audio, rendering scenes with ffmpeg, burning subtitles, and cleaning intermediate files.
57
+
58
+ ```mermaid
59
+ flowchart LR
60
+ A[Topic selection<br/>Wikipedia / trends] --> B[Korean script<br/>OpenAI]
61
+ B --> C[Images<br/>Wikimedia Commons]
62
+ B --> D[TTS narration<br/>OpenAI]
63
+ C --> E[ffmpeg render<br/>1080x1920 + subtitles + BGM]
64
+ D --> E
65
+ E --> F[final.mp4<br/>+ attribution metadata]
66
+ ```
67
+
68
+ ## Demo
69
+
70
+ A sample araboja shorts video, in the format this pipeline produces:
71
+
72
+ [![Sample araboja shorts video](https://img.youtube.com/vi/irgscHEXidA/maxresdefault.jpg)](https://youtube.com/shorts/irgscHEXidA)
73
+
74
+ ## What It Does
75
+
76
+ - Selects archaeology and ancient-mystery topics from Wikipedia and trend sources.
77
+ - Generates a Korean short-form script with scene-level narration.
78
+ - Collects images from Wikimedia Commons, with optional Pexels and Pixabay fallback.
79
+ - Creates OpenAI TTS narration.
80
+ - Renders 1080x1920 video scenes with title overlays, zoom/pan motion, subtitles, and BGM.
81
+ - Keeps the final output, generated script, and source images while cleaning temporary media files.
82
+
83
+ ## Requirements
84
+
85
+ - Python 3.10+
86
+ - ffmpeg and ffprobe available on `PATH`, or pass `--ffmpeg_path`
87
+ - An OpenAI API key
88
+ - A local BGM file at `bgm_no_attrib/mystery.mp3`
89
+ - Optional API keys for Pexels and Pixabay image fallback
90
+
91
+ Install as a package (provides the `araboja-shorts` command):
92
+
93
+ ```bash
94
+ python -m pip install git+https://github.com/drchamchi2-oss/araboja-shorts
95
+ ```
96
+
97
+ Or from a local checkout:
98
+
99
+ ```bash
100
+ python -m pip install .
101
+ ```
102
+
103
+ Or install only the runtime dependencies:
104
+
105
+ ```bash
106
+ python -m pip install -r requirements.txt
107
+ ```
108
+
109
+ For development and CI-equivalent checks:
110
+
111
+ ```bash
112
+ python -m pip install -r requirements-dev.txt
113
+ ```
114
+
115
+ Create a local `.env` file from the example:
116
+
117
+ ```bash
118
+ copy .env.example .env
119
+ ```
120
+
121
+ Then edit `.env` and add your own keys. Do not commit `.env`.
122
+
123
+ ## Usage
124
+
125
+ ```bash
126
+ araboja-shorts run --verbose
127
+ ```
128
+
129
+ Or run the module directly from a source checkout:
130
+
131
+ ```bash
132
+ python main_gpt.py run --verbose
133
+ ```
134
+
135
+ To check topic and script generation without rendering video, audio, or images:
136
+
137
+ ```bash
138
+ python main_gpt.py run --dry_run --verbose
139
+ ```
140
+
141
+ If ffmpeg is not on `PATH`:
142
+
143
+ ```bash
144
+ python main_gpt.py run --ffmpeg_path C:\ffmpeg\bin\ffmpeg.exe --verbose
145
+ ```
146
+
147
+ Generated files are written under `out_araboza/`. Full runs write `final.mp4`, `script.json`, `media_attribution.json`, and selected source images. Dry runs write `script.json` and `media_attribution.json`.
148
+
149
+ ## Development Checks
150
+
151
+ Run the local checks before opening a pull request:
152
+
153
+ ```bash
154
+ python -m py_compile main_gpt.py shorts_media.py shorts_rendering.py scripts/doctor.py
155
+ python -m pytest
156
+ python -m bandit -r main_gpt.py shorts_media.py shorts_rendering.py scripts -x tests -ll
157
+ python -m pip_audit -r requirements.txt
158
+ ```
159
+
160
+ The GitHub Actions workflow runs the same syntax, test, static security, and dependency-audit checks on pull requests and pushes to `main`.
161
+
162
+ To check local runtime prerequisites before generating a video:
163
+
164
+ ```bash
165
+ python scripts/doctor.py
166
+ ```
167
+
168
+ ## Configuration
169
+
170
+ Required environment variable:
171
+
172
+ ```text
173
+ OPENAI_API_KEY=your_openai_api_key
174
+ ```
175
+
176
+ Optional environment variables:
177
+
178
+ ```text
179
+ PEXELS_API_KEY=your_pexels_api_key
180
+ PIXABAY_API_KEY=your_pixabay_api_key
181
+ ```
182
+
183
+ The repository intentionally does not include private keys, generated videos, local cache files, or BGM assets. Use only media that you are allowed to use and redistribute.
184
+
185
+ ## Media And Licensing
186
+
187
+ Review `docs/media-and-licensing.md` before publishing generated videos or adding new media providers.
188
+
189
+ ## Releases
190
+
191
+ Use `docs/release-checklist.md` before tagging a public release.
192
+
193
+ ## Project Status
194
+
195
+ This project is early-stage OSS. The current goal is to make the single-file workflow reproducible, inspectable, and easier to maintain.
196
+
197
+ See `ROADMAP.md` for the current maintenance plan and near-term issues.
198
+
199
+ Known limitations:
200
+
201
+ - The script depends on live web APIs and external media sources.
202
+ - Output quality depends on available images, API responses, and local ffmpeg setup.
203
+ - BGM licensing is the user's responsibility.
204
+ - The generated script should be reviewed before publishing videos publicly.
205
+
206
+ ## Security
207
+
208
+ Never commit API keys, `.env`, generated credentials, private logs, private datasets, or paid/proprietary media assets. See `SECURITY.md` for reporting guidance.
209
+
210
+ ## Contributing
211
+
212
+ Focused issues and pull requests are welcome. See `CONTRIBUTING.md` before opening a PR.
213
+
214
+ ## License
215
+
216
+ MIT. See `LICENSE`.
@@ -0,0 +1,172 @@
1
+ # araboja-shorts (아라보자 쇼츠)
2
+
3
+ [![Python CI](https://github.com/drchamchi2-oss/araboja-shorts/actions/workflows/python-ci.yml/badge.svg)](https://github.com/drchamchi2-oss/araboja-shorts/actions/workflows/python-ci.yml)
4
+ [![CodeQL](https://github.com/drchamchi2-oss/araboja-shorts/actions/workflows/codeql.yml/badge.svg)](https://github.com/drchamchi2-oss/araboja-shorts/actions/workflows/codeql.yml)
5
+ [![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE)
6
+ [![Release downloads](https://img.shields.io/github/downloads/drchamchi2-oss/araboja-shorts/total)](https://github.com/drchamchi2-oss/araboja-shorts/releases)
7
+
8
+ `araboja-shorts` is a Python pipeline for generating Korean short-form videos about ancient artifacts, archaeological sites, and ancient-civilization mysteries — from topic selection to a finished, subtitled 1080x1920 video.
9
+
10
+ > Formerly published as `shorts_test`. Renamed after the original araboja shorts project it grew out of; old links redirect here.
11
+
12
+ The script builds a roughly 60-second vertical video by selecting a topic from public web sources, drafting a Korean narration with OpenAI, collecting public-source imagery, generating TTS audio, rendering scenes with ffmpeg, burning subtitles, and cleaning intermediate files.
13
+
14
+ ```mermaid
15
+ flowchart LR
16
+ A[Topic selection<br/>Wikipedia / trends] --> B[Korean script<br/>OpenAI]
17
+ B --> C[Images<br/>Wikimedia Commons]
18
+ B --> D[TTS narration<br/>OpenAI]
19
+ C --> E[ffmpeg render<br/>1080x1920 + subtitles + BGM]
20
+ D --> E
21
+ E --> F[final.mp4<br/>+ attribution metadata]
22
+ ```
23
+
24
+ ## Demo
25
+
26
+ A sample araboja shorts video, in the format this pipeline produces:
27
+
28
+ [![Sample araboja shorts video](https://img.youtube.com/vi/irgscHEXidA/maxresdefault.jpg)](https://youtube.com/shorts/irgscHEXidA)
29
+
30
+ ## What It Does
31
+
32
+ - Selects archaeology and ancient-mystery topics from Wikipedia and trend sources.
33
+ - Generates a Korean short-form script with scene-level narration.
34
+ - Collects images from Wikimedia Commons, with optional Pexels and Pixabay fallback.
35
+ - Creates OpenAI TTS narration.
36
+ - Renders 1080x1920 video scenes with title overlays, zoom/pan motion, subtitles, and BGM.
37
+ - Keeps the final output, generated script, and source images while cleaning temporary media files.
38
+
39
+ ## Requirements
40
+
41
+ - Python 3.10+
42
+ - ffmpeg and ffprobe available on `PATH`, or pass `--ffmpeg_path`
43
+ - An OpenAI API key
44
+ - A local BGM file at `bgm_no_attrib/mystery.mp3`
45
+ - Optional API keys for Pexels and Pixabay image fallback
46
+
47
+ Install as a package (provides the `araboja-shorts` command):
48
+
49
+ ```bash
50
+ python -m pip install git+https://github.com/drchamchi2-oss/araboja-shorts
51
+ ```
52
+
53
+ Or from a local checkout:
54
+
55
+ ```bash
56
+ python -m pip install .
57
+ ```
58
+
59
+ Or install only the runtime dependencies:
60
+
61
+ ```bash
62
+ python -m pip install -r requirements.txt
63
+ ```
64
+
65
+ For development and CI-equivalent checks:
66
+
67
+ ```bash
68
+ python -m pip install -r requirements-dev.txt
69
+ ```
70
+
71
+ Create a local `.env` file from the example:
72
+
73
+ ```bash
74
+ copy .env.example .env
75
+ ```
76
+
77
+ Then edit `.env` and add your own keys. Do not commit `.env`.
78
+
79
+ ## Usage
80
+
81
+ ```bash
82
+ araboja-shorts run --verbose
83
+ ```
84
+
85
+ Or run the module directly from a source checkout:
86
+
87
+ ```bash
88
+ python main_gpt.py run --verbose
89
+ ```
90
+
91
+ To check topic and script generation without rendering video, audio, or images:
92
+
93
+ ```bash
94
+ python main_gpt.py run --dry_run --verbose
95
+ ```
96
+
97
+ If ffmpeg is not on `PATH`:
98
+
99
+ ```bash
100
+ python main_gpt.py run --ffmpeg_path C:\ffmpeg\bin\ffmpeg.exe --verbose
101
+ ```
102
+
103
+ Generated files are written under `out_araboza/`. Full runs write `final.mp4`, `script.json`, `media_attribution.json`, and selected source images. Dry runs write `script.json` and `media_attribution.json`.
104
+
105
+ ## Development Checks
106
+
107
+ Run the local checks before opening a pull request:
108
+
109
+ ```bash
110
+ python -m py_compile main_gpt.py shorts_media.py shorts_rendering.py scripts/doctor.py
111
+ python -m pytest
112
+ python -m bandit -r main_gpt.py shorts_media.py shorts_rendering.py scripts -x tests -ll
113
+ python -m pip_audit -r requirements.txt
114
+ ```
115
+
116
+ The GitHub Actions workflow runs the same syntax, test, static security, and dependency-audit checks on pull requests and pushes to `main`.
117
+
118
+ To check local runtime prerequisites before generating a video:
119
+
120
+ ```bash
121
+ python scripts/doctor.py
122
+ ```
123
+
124
+ ## Configuration
125
+
126
+ Required environment variable:
127
+
128
+ ```text
129
+ OPENAI_API_KEY=your_openai_api_key
130
+ ```
131
+
132
+ Optional environment variables:
133
+
134
+ ```text
135
+ PEXELS_API_KEY=your_pexels_api_key
136
+ PIXABAY_API_KEY=your_pixabay_api_key
137
+ ```
138
+
139
+ The repository intentionally does not include private keys, generated videos, local cache files, or BGM assets. Use only media that you are allowed to use and redistribute.
140
+
141
+ ## Media And Licensing
142
+
143
+ Review `docs/media-and-licensing.md` before publishing generated videos or adding new media providers.
144
+
145
+ ## Releases
146
+
147
+ Use `docs/release-checklist.md` before tagging a public release.
148
+
149
+ ## Project Status
150
+
151
+ This project is early-stage OSS. The current goal is to make the single-file workflow reproducible, inspectable, and easier to maintain.
152
+
153
+ See `ROADMAP.md` for the current maintenance plan and near-term issues.
154
+
155
+ Known limitations:
156
+
157
+ - The script depends on live web APIs and external media sources.
158
+ - Output quality depends on available images, API responses, and local ffmpeg setup.
159
+ - BGM licensing is the user's responsibility.
160
+ - The generated script should be reviewed before publishing videos publicly.
161
+
162
+ ## Security
163
+
164
+ Never commit API keys, `.env`, generated credentials, private logs, private datasets, or paid/proprietary media assets. See `SECURITY.md` for reporting guidance.
165
+
166
+ ## Contributing
167
+
168
+ Focused issues and pull requests are welcome. See `CONTRIBUTING.md` before opening a PR.
169
+
170
+ ## License
171
+
172
+ MIT. See `LICENSE`.
@@ -0,0 +1,216 @@
1
+ Metadata-Version: 2.4
2
+ Name: araboja-shorts
3
+ Version: 0.2.0
4
+ Summary: Automated Korean short-form history videos: topic selection, Korean narration, TTS, and 1080x1920 ffmpeg rendering.
5
+ Author-email: Kim hyosung <drchamchi2@gmail.com>
6
+ License: MIT License
7
+
8
+ Copyright (c) 2026 Kim hyosung
9
+
10
+ Permission is hereby granted, free of charge, to any person obtaining a copy
11
+ of this software and associated documentation files (the "Software"), to deal
12
+ in the Software without restriction, including without limitation the rights
13
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
14
+ copies of the Software, and to permit persons to whom the Software is
15
+ furnished to do so, subject to the following conditions:
16
+
17
+ The above copyright notice and this permission notice shall be included in all
18
+ copies or substantial portions of the Software.
19
+
20
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
21
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
22
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
23
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
24
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
25
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
26
+ SOFTWARE.
27
+
28
+ Project-URL: Homepage, https://github.com/drchamchi2-oss/araboja-shorts
29
+ Project-URL: Issues, https://github.com/drchamchi2-oss/araboja-shorts/issues
30
+ Project-URL: Changelog, https://github.com/drchamchi2-oss/araboja-shorts/blob/main/CHANGELOG.md
31
+ Keywords: shorts,video,tts,ffmpeg,korean,youtube,automation
32
+ Classifier: Development Status :: 3 - Alpha
33
+ Classifier: License :: OSI Approved :: MIT License
34
+ Classifier: Programming Language :: Python :: 3
35
+ Classifier: Topic :: Multimedia :: Video
36
+ Requires-Python: >=3.10
37
+ Description-Content-Type: text/markdown
38
+ License-File: LICENSE
39
+ Requires-Dist: openai>=1.0.0
40
+ Requires-Dist: Pillow>=12.2.0
41
+ Requires-Dist: python-dotenv>=1.2.2
42
+ Requires-Dist: requests>=2.31.0
43
+ Dynamic: license-file
44
+
45
+ # araboja-shorts (아라보자 쇼츠)
46
+
47
+ [![Python CI](https://github.com/drchamchi2-oss/araboja-shorts/actions/workflows/python-ci.yml/badge.svg)](https://github.com/drchamchi2-oss/araboja-shorts/actions/workflows/python-ci.yml)
48
+ [![CodeQL](https://github.com/drchamchi2-oss/araboja-shorts/actions/workflows/codeql.yml/badge.svg)](https://github.com/drchamchi2-oss/araboja-shorts/actions/workflows/codeql.yml)
49
+ [![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE)
50
+ [![Release downloads](https://img.shields.io/github/downloads/drchamchi2-oss/araboja-shorts/total)](https://github.com/drchamchi2-oss/araboja-shorts/releases)
51
+
52
+ `araboja-shorts` is a Python pipeline for generating Korean short-form videos about ancient artifacts, archaeological sites, and ancient-civilization mysteries — from topic selection to a finished, subtitled 1080x1920 video.
53
+
54
+ > Formerly published as `shorts_test`. Renamed after the original araboja shorts project it grew out of; old links redirect here.
55
+
56
+ The script builds a roughly 60-second vertical video by selecting a topic from public web sources, drafting a Korean narration with OpenAI, collecting public-source imagery, generating TTS audio, rendering scenes with ffmpeg, burning subtitles, and cleaning intermediate files.
57
+
58
+ ```mermaid
59
+ flowchart LR
60
+ A[Topic selection<br/>Wikipedia / trends] --> B[Korean script<br/>OpenAI]
61
+ B --> C[Images<br/>Wikimedia Commons]
62
+ B --> D[TTS narration<br/>OpenAI]
63
+ C --> E[ffmpeg render<br/>1080x1920 + subtitles + BGM]
64
+ D --> E
65
+ E --> F[final.mp4<br/>+ attribution metadata]
66
+ ```
67
+
68
+ ## Demo
69
+
70
+ A sample araboja shorts video, in the format this pipeline produces:
71
+
72
+ [![Sample araboja shorts video](https://img.youtube.com/vi/irgscHEXidA/maxresdefault.jpg)](https://youtube.com/shorts/irgscHEXidA)
73
+
74
+ ## What It Does
75
+
76
+ - Selects archaeology and ancient-mystery topics from Wikipedia and trend sources.
77
+ - Generates a Korean short-form script with scene-level narration.
78
+ - Collects images from Wikimedia Commons, with optional Pexels and Pixabay fallback.
79
+ - Creates OpenAI TTS narration.
80
+ - Renders 1080x1920 video scenes with title overlays, zoom/pan motion, subtitles, and BGM.
81
+ - Keeps the final output, generated script, and source images while cleaning temporary media files.
82
+
83
+ ## Requirements
84
+
85
+ - Python 3.10+
86
+ - ffmpeg and ffprobe available on `PATH`, or pass `--ffmpeg_path`
87
+ - An OpenAI API key
88
+ - A local BGM file at `bgm_no_attrib/mystery.mp3`
89
+ - Optional API keys for Pexels and Pixabay image fallback
90
+
91
+ Install as a package (provides the `araboja-shorts` command):
92
+
93
+ ```bash
94
+ python -m pip install git+https://github.com/drchamchi2-oss/araboja-shorts
95
+ ```
96
+
97
+ Or from a local checkout:
98
+
99
+ ```bash
100
+ python -m pip install .
101
+ ```
102
+
103
+ Or install only the runtime dependencies:
104
+
105
+ ```bash
106
+ python -m pip install -r requirements.txt
107
+ ```
108
+
109
+ For development and CI-equivalent checks:
110
+
111
+ ```bash
112
+ python -m pip install -r requirements-dev.txt
113
+ ```
114
+
115
+ Create a local `.env` file from the example:
116
+
117
+ ```bash
118
+ copy .env.example .env
119
+ ```
120
+
121
+ Then edit `.env` and add your own keys. Do not commit `.env`.
122
+
123
+ ## Usage
124
+
125
+ ```bash
126
+ araboja-shorts run --verbose
127
+ ```
128
+
129
+ Or run the module directly from a source checkout:
130
+
131
+ ```bash
132
+ python main_gpt.py run --verbose
133
+ ```
134
+
135
+ To check topic and script generation without rendering video, audio, or images:
136
+
137
+ ```bash
138
+ python main_gpt.py run --dry_run --verbose
139
+ ```
140
+
141
+ If ffmpeg is not on `PATH`:
142
+
143
+ ```bash
144
+ python main_gpt.py run --ffmpeg_path C:\ffmpeg\bin\ffmpeg.exe --verbose
145
+ ```
146
+
147
+ Generated files are written under `out_araboza/`. Full runs write `final.mp4`, `script.json`, `media_attribution.json`, and selected source images. Dry runs write `script.json` and `media_attribution.json`.
148
+
149
+ ## Development Checks
150
+
151
+ Run the local checks before opening a pull request:
152
+
153
+ ```bash
154
+ python -m py_compile main_gpt.py shorts_media.py shorts_rendering.py scripts/doctor.py
155
+ python -m pytest
156
+ python -m bandit -r main_gpt.py shorts_media.py shorts_rendering.py scripts -x tests -ll
157
+ python -m pip_audit -r requirements.txt
158
+ ```
159
+
160
+ The GitHub Actions workflow runs the same syntax, test, static security, and dependency-audit checks on pull requests and pushes to `main`.
161
+
162
+ To check local runtime prerequisites before generating a video:
163
+
164
+ ```bash
165
+ python scripts/doctor.py
166
+ ```
167
+
168
+ ## Configuration
169
+
170
+ Required environment variable:
171
+
172
+ ```text
173
+ OPENAI_API_KEY=your_openai_api_key
174
+ ```
175
+
176
+ Optional environment variables:
177
+
178
+ ```text
179
+ PEXELS_API_KEY=your_pexels_api_key
180
+ PIXABAY_API_KEY=your_pixabay_api_key
181
+ ```
182
+
183
+ The repository intentionally does not include private keys, generated videos, local cache files, or BGM assets. Use only media that you are allowed to use and redistribute.
184
+
185
+ ## Media And Licensing
186
+
187
+ Review `docs/media-and-licensing.md` before publishing generated videos or adding new media providers.
188
+
189
+ ## Releases
190
+
191
+ Use `docs/release-checklist.md` before tagging a public release.
192
+
193
+ ## Project Status
194
+
195
+ This project is early-stage OSS. The current goal is to make the single-file workflow reproducible, inspectable, and easier to maintain.
196
+
197
+ See `ROADMAP.md` for the current maintenance plan and near-term issues.
198
+
199
+ Known limitations:
200
+
201
+ - The script depends on live web APIs and external media sources.
202
+ - Output quality depends on available images, API responses, and local ffmpeg setup.
203
+ - BGM licensing is the user's responsibility.
204
+ - The generated script should be reviewed before publishing videos publicly.
205
+
206
+ ## Security
207
+
208
+ Never commit API keys, `.env`, generated credentials, private logs, private datasets, or paid/proprietary media assets. See `SECURITY.md` for reporting guidance.
209
+
210
+ ## Contributing
211
+
212
+ Focused issues and pull requests are welcome. See `CONTRIBUTING.md` before opening a PR.
213
+
214
+ ## License
215
+
216
+ MIT. See `LICENSE`.
@@ -0,0 +1,17 @@
1
+ LICENSE
2
+ README.md
3
+ main_gpt.py
4
+ pyproject.toml
5
+ shorts_media.py
6
+ shorts_rendering.py
7
+ araboja_shorts.egg-info/PKG-INFO
8
+ araboja_shorts.egg-info/SOURCES.txt
9
+ araboja_shorts.egg-info/dependency_links.txt
10
+ araboja_shorts.egg-info/entry_points.txt
11
+ araboja_shorts.egg-info/requires.txt
12
+ araboja_shorts.egg-info/top_level.txt
13
+ tests/test_doctor.py
14
+ tests/test_helpers.py
15
+ tests/test_media_metadata.py
16
+ tests/test_module_boundaries.py
17
+ tests/test_subtitles.py
@@ -0,0 +1,2 @@
1
+ [console_scripts]
2
+ araboja-shorts = main_gpt:main
@@ -0,0 +1,4 @@
1
+ openai>=1.0.0
2
+ Pillow>=12.2.0
3
+ python-dotenv>=1.2.2
4
+ requests>=2.31.0
@@ -0,0 +1,3 @@
1
+ main_gpt
2
+ shorts_media
3
+ shorts_rendering