blog-cli 0.2.4__tar.gz → 0.4.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.
- {blog_cli-0.2.4 → blog_cli-0.4.0}/PKG-INFO +55 -3
- {blog_cli-0.2.4 → blog_cli-0.4.0}/README.md +51 -0
- {blog_cli-0.2.4 → blog_cli-0.4.0}/pyproject.toml +8 -3
- {blog_cli-0.2.4 → blog_cli-0.4.0}/src/blog_cli.egg-info/PKG-INFO +55 -3
- {blog_cli-0.2.4 → blog_cli-0.4.0}/src/blog_cli.egg-info/SOURCES.txt +10 -1
- {blog_cli-0.2.4 → blog_cli-0.4.0}/src/blog_cli.egg-info/requires.txt +1 -0
- blog_cli-0.4.0/src/personal_cli/cli.py +869 -0
- {blog_cli-0.2.4 → blog_cli-0.4.0}/src/personal_cli/client.py +50 -36
- blog_cli-0.4.0/src/personal_cli/credentials.py +100 -0
- blog_cli-0.4.0/src/personal_cli/setup_server.py +228 -0
- blog_cli-0.4.0/src/personal_cli/skill.py +34 -0
- blog_cli-0.4.0/src/personal_cli/skill_data/SKILL.md +30 -0
- blog_cli-0.4.0/src/personal_cli/skill_data/agents/openai.yaml +7 -0
- blog_cli-0.4.0/src/personal_cli/skill_data/references/articles.md +46 -0
- blog_cli-0.4.0/src/personal_cli/skill_data/references/pages.md +132 -0
- blog_cli-0.4.0/src/personal_cli/skill_data/references/projects.md +50 -0
- blog_cli-0.4.0/tests/test_cli.py +455 -0
- blog_cli-0.4.0/tests/test_pages_categories.py +254 -0
- blog_cli-0.2.4/src/personal_cli/cli.py +0 -394
- blog_cli-0.2.4/tests/test_cli.py +0 -206
- {blog_cli-0.2.4 → blog_cli-0.4.0}/setup.cfg +0 -0
- {blog_cli-0.2.4 → blog_cli-0.4.0}/src/blog_cli.egg-info/dependency_links.txt +0 -0
- {blog_cli-0.2.4 → blog_cli-0.4.0}/src/blog_cli.egg-info/entry_points.txt +0 -0
- {blog_cli-0.2.4 → blog_cli-0.4.0}/src/blog_cli.egg-info/top_level.txt +0 -0
- {blog_cli-0.2.4 → blog_cli-0.4.0}/src/personal_cli/__init__.py +0 -0
- {blog_cli-0.2.4 → blog_cli-0.4.0}/src/personal_cli/__main__.py +0 -0
- {blog_cli-0.2.4 → blog_cli-0.4.0}/src/personal_cli/formatting.py +0 -0
- {blog_cli-0.2.4 → blog_cli-0.4.0}/tests/test_client.py +0 -0
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: blog-cli
|
|
3
|
-
Version: 0.
|
|
4
|
-
Summary: Agent-friendly CLI for managing a
|
|
3
|
+
Version: 0.4.0
|
|
4
|
+
Summary: Agent-friendly CLI for managing a personal site. Articles, projects, categories, private pages, media, and a bundled ChatGPT/Codex skill.
|
|
5
5
|
Author: tanaka-mambinge
|
|
6
6
|
License: MIT
|
|
7
7
|
Project-URL: Repository, https://github.com/tanaka-mambinge/personal-cli
|
|
8
8
|
Project-URL: Issues, https://github.com/tanaka-mambinge/personal-cli/issues
|
|
9
|
-
Keywords: blog,cli,agent,markdown,writing
|
|
9
|
+
Keywords: blog,cli,agent,markdown,writing,mdx,cms,dashboard
|
|
10
10
|
Classifier: License :: OSI Approved :: MIT License
|
|
11
11
|
Classifier: Operating System :: OS Independent
|
|
12
12
|
Classifier: Programming Language :: Python :: 3
|
|
@@ -14,6 +14,7 @@ Classifier: Topic :: Internet :: WWW/HTTP
|
|
|
14
14
|
Requires-Python: >=3.13
|
|
15
15
|
Description-Content-Type: text/markdown
|
|
16
16
|
Requires-Dist: httpx>=0.28
|
|
17
|
+
Requires-Dist: keyring>=25
|
|
17
18
|
Requires-Dist: typer>=0.16
|
|
18
19
|
Provides-Extra: dev
|
|
19
20
|
Requires-Dist: asgi-lifespan>=2.1; extra == "dev"
|
|
@@ -193,6 +194,57 @@ blog-cli article tag-add my-project --tag python --tag agents
|
|
|
193
194
|
blog-cli article tag-remove my-project --tag agents
|
|
194
195
|
```
|
|
195
196
|
|
|
197
|
+
## Categories
|
|
198
|
+
|
|
199
|
+
Categories are first-class models that group private content pages. The slug is auto-derived from the name. A category cannot be deleted while pages still belong to it.
|
|
200
|
+
|
|
201
|
+
```bash
|
|
202
|
+
# Create (slug auto from name, e.g. "YouTube Notes" -> "youtube-notes")
|
|
203
|
+
blog-cli category create --name "Ideas" --icon bulb --description "Captured ideas"
|
|
204
|
+
|
|
205
|
+
# List / show / update / delete
|
|
206
|
+
blog-cli category list
|
|
207
|
+
blog-cli category show ideas
|
|
208
|
+
blog-cli category update ideas --name "Idea Box" --icon lightbulb
|
|
209
|
+
blog-cli category delete ideas
|
|
210
|
+
```
|
|
211
|
+
|
|
212
|
+
## Pages
|
|
213
|
+
|
|
214
|
+
Pages are private content shown only on the dashboard at `/d/<slug>`. They are for your eyes only. Each page belongs to a category and supports MDX with prebuilt components (`<Callout>`, `<Steps>`, `<ImageGrid>`, `<Video>`, `<Figure>`).
|
|
215
|
+
|
|
216
|
+
```bash
|
|
217
|
+
# Create a page
|
|
218
|
+
blog-cli page create \
|
|
219
|
+
--title "An idea" \
|
|
220
|
+
--description "Short summary" \
|
|
221
|
+
--category ideas \
|
|
222
|
+
--tag web --tag ai \
|
|
223
|
+
--markdown-file idea.mdx
|
|
224
|
+
|
|
225
|
+
# List (optionally filter by category)
|
|
226
|
+
blog-cli page list
|
|
227
|
+
blog-cli page list --category ideas
|
|
228
|
+
|
|
229
|
+
# Show / update / delete
|
|
230
|
+
blog-cli page show an-idea
|
|
231
|
+
blog-cli page update an-idea --title "A better title"
|
|
232
|
+
blog-cli page update an-idea --markdown-file updated.mdx
|
|
233
|
+
blog-cli page delete an-idea
|
|
234
|
+
```
|
|
235
|
+
|
|
236
|
+
Page bodies are MDX. Referenced media uses names uploaded via `blog-cli media upload --name <name> <file>`; the site resolves names to media URLs at render time.
|
|
237
|
+
|
|
238
|
+
## ChatGPT / Codex skill
|
|
239
|
+
|
|
240
|
+
The CLI ships a bundled `content-pipeline` skill that routes blog, project, and page tasks to the right reference doc. Install it into the user-level skills directory:
|
|
241
|
+
|
|
242
|
+
```bash
|
|
243
|
+
blog-cli skill install
|
|
244
|
+
blog-cli skill uninstall
|
|
245
|
+
blog-cli skill path
|
|
246
|
+
```
|
|
247
|
+
|
|
196
248
|
## Media
|
|
197
249
|
|
|
198
250
|
Upload media using a stable name, then reference that name from article Markdown:
|
|
@@ -164,6 +164,57 @@ blog-cli article tag-add my-project --tag python --tag agents
|
|
|
164
164
|
blog-cli article tag-remove my-project --tag agents
|
|
165
165
|
```
|
|
166
166
|
|
|
167
|
+
## Categories
|
|
168
|
+
|
|
169
|
+
Categories are first-class models that group private content pages. The slug is auto-derived from the name. A category cannot be deleted while pages still belong to it.
|
|
170
|
+
|
|
171
|
+
```bash
|
|
172
|
+
# Create (slug auto from name, e.g. "YouTube Notes" -> "youtube-notes")
|
|
173
|
+
blog-cli category create --name "Ideas" --icon bulb --description "Captured ideas"
|
|
174
|
+
|
|
175
|
+
# List / show / update / delete
|
|
176
|
+
blog-cli category list
|
|
177
|
+
blog-cli category show ideas
|
|
178
|
+
blog-cli category update ideas --name "Idea Box" --icon lightbulb
|
|
179
|
+
blog-cli category delete ideas
|
|
180
|
+
```
|
|
181
|
+
|
|
182
|
+
## Pages
|
|
183
|
+
|
|
184
|
+
Pages are private content shown only on the dashboard at `/d/<slug>`. They are for your eyes only. Each page belongs to a category and supports MDX with prebuilt components (`<Callout>`, `<Steps>`, `<ImageGrid>`, `<Video>`, `<Figure>`).
|
|
185
|
+
|
|
186
|
+
```bash
|
|
187
|
+
# Create a page
|
|
188
|
+
blog-cli page create \
|
|
189
|
+
--title "An idea" \
|
|
190
|
+
--description "Short summary" \
|
|
191
|
+
--category ideas \
|
|
192
|
+
--tag web --tag ai \
|
|
193
|
+
--markdown-file idea.mdx
|
|
194
|
+
|
|
195
|
+
# List (optionally filter by category)
|
|
196
|
+
blog-cli page list
|
|
197
|
+
blog-cli page list --category ideas
|
|
198
|
+
|
|
199
|
+
# Show / update / delete
|
|
200
|
+
blog-cli page show an-idea
|
|
201
|
+
blog-cli page update an-idea --title "A better title"
|
|
202
|
+
blog-cli page update an-idea --markdown-file updated.mdx
|
|
203
|
+
blog-cli page delete an-idea
|
|
204
|
+
```
|
|
205
|
+
|
|
206
|
+
Page bodies are MDX. Referenced media uses names uploaded via `blog-cli media upload --name <name> <file>`; the site resolves names to media URLs at render time.
|
|
207
|
+
|
|
208
|
+
## ChatGPT / Codex skill
|
|
209
|
+
|
|
210
|
+
The CLI ships a bundled `content-pipeline` skill that routes blog, project, and page tasks to the right reference doc. Install it into the user-level skills directory:
|
|
211
|
+
|
|
212
|
+
```bash
|
|
213
|
+
blog-cli skill install
|
|
214
|
+
blog-cli skill uninstall
|
|
215
|
+
blog-cli skill path
|
|
216
|
+
```
|
|
217
|
+
|
|
167
218
|
## Media
|
|
168
219
|
|
|
169
220
|
Upload media using a stable name, then reference that name from article Markdown:
|
|
@@ -4,13 +4,13 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "blog-cli"
|
|
7
|
-
version = "0.
|
|
8
|
-
description = "Agent-friendly CLI for managing a
|
|
7
|
+
version = "0.4.0"
|
|
8
|
+
description = "Agent-friendly CLI for managing a personal site. Articles, projects, categories, private pages, media, and a bundled ChatGPT/Codex skill."
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
requires-python = ">=3.13"
|
|
11
11
|
license = {text = "MIT"}
|
|
12
12
|
authors = [{name = "tanaka-mambinge"}]
|
|
13
|
-
keywords = ["blog", "cli", "agent", "markdown", "writing"]
|
|
13
|
+
keywords = ["blog", "cli", "agent", "markdown", "writing", "mdx", "cms", "dashboard"]
|
|
14
14
|
classifiers = [
|
|
15
15
|
"License :: OSI Approved :: MIT License",
|
|
16
16
|
"Operating System :: OS Independent",
|
|
@@ -19,6 +19,7 @@ classifiers = [
|
|
|
19
19
|
]
|
|
20
20
|
dependencies = [
|
|
21
21
|
"httpx>=0.28",
|
|
22
|
+
"keyring>=25",
|
|
22
23
|
"typer>=0.16",
|
|
23
24
|
]
|
|
24
25
|
|
|
@@ -53,6 +54,10 @@ package = true
|
|
|
53
54
|
|
|
54
55
|
[tool.setuptools]
|
|
55
56
|
package-dir = {"" = "src"}
|
|
57
|
+
include-package-data = true
|
|
56
58
|
|
|
57
59
|
[tool.setuptools.packages.find]
|
|
58
60
|
where = ["src"]
|
|
61
|
+
|
|
62
|
+
[tool.setuptools.package-data]
|
|
63
|
+
personal_cli = ["skill_data/**/*"]
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: blog-cli
|
|
3
|
-
Version: 0.
|
|
4
|
-
Summary: Agent-friendly CLI for managing a
|
|
3
|
+
Version: 0.4.0
|
|
4
|
+
Summary: Agent-friendly CLI for managing a personal site. Articles, projects, categories, private pages, media, and a bundled ChatGPT/Codex skill.
|
|
5
5
|
Author: tanaka-mambinge
|
|
6
6
|
License: MIT
|
|
7
7
|
Project-URL: Repository, https://github.com/tanaka-mambinge/personal-cli
|
|
8
8
|
Project-URL: Issues, https://github.com/tanaka-mambinge/personal-cli/issues
|
|
9
|
-
Keywords: blog,cli,agent,markdown,writing
|
|
9
|
+
Keywords: blog,cli,agent,markdown,writing,mdx,cms,dashboard
|
|
10
10
|
Classifier: License :: OSI Approved :: MIT License
|
|
11
11
|
Classifier: Operating System :: OS Independent
|
|
12
12
|
Classifier: Programming Language :: Python :: 3
|
|
@@ -14,6 +14,7 @@ Classifier: Topic :: Internet :: WWW/HTTP
|
|
|
14
14
|
Requires-Python: >=3.13
|
|
15
15
|
Description-Content-Type: text/markdown
|
|
16
16
|
Requires-Dist: httpx>=0.28
|
|
17
|
+
Requires-Dist: keyring>=25
|
|
17
18
|
Requires-Dist: typer>=0.16
|
|
18
19
|
Provides-Extra: dev
|
|
19
20
|
Requires-Dist: asgi-lifespan>=2.1; extra == "dev"
|
|
@@ -193,6 +194,57 @@ blog-cli article tag-add my-project --tag python --tag agents
|
|
|
193
194
|
blog-cli article tag-remove my-project --tag agents
|
|
194
195
|
```
|
|
195
196
|
|
|
197
|
+
## Categories
|
|
198
|
+
|
|
199
|
+
Categories are first-class models that group private content pages. The slug is auto-derived from the name. A category cannot be deleted while pages still belong to it.
|
|
200
|
+
|
|
201
|
+
```bash
|
|
202
|
+
# Create (slug auto from name, e.g. "YouTube Notes" -> "youtube-notes")
|
|
203
|
+
blog-cli category create --name "Ideas" --icon bulb --description "Captured ideas"
|
|
204
|
+
|
|
205
|
+
# List / show / update / delete
|
|
206
|
+
blog-cli category list
|
|
207
|
+
blog-cli category show ideas
|
|
208
|
+
blog-cli category update ideas --name "Idea Box" --icon lightbulb
|
|
209
|
+
blog-cli category delete ideas
|
|
210
|
+
```
|
|
211
|
+
|
|
212
|
+
## Pages
|
|
213
|
+
|
|
214
|
+
Pages are private content shown only on the dashboard at `/d/<slug>`. They are for your eyes only. Each page belongs to a category and supports MDX with prebuilt components (`<Callout>`, `<Steps>`, `<ImageGrid>`, `<Video>`, `<Figure>`).
|
|
215
|
+
|
|
216
|
+
```bash
|
|
217
|
+
# Create a page
|
|
218
|
+
blog-cli page create \
|
|
219
|
+
--title "An idea" \
|
|
220
|
+
--description "Short summary" \
|
|
221
|
+
--category ideas \
|
|
222
|
+
--tag web --tag ai \
|
|
223
|
+
--markdown-file idea.mdx
|
|
224
|
+
|
|
225
|
+
# List (optionally filter by category)
|
|
226
|
+
blog-cli page list
|
|
227
|
+
blog-cli page list --category ideas
|
|
228
|
+
|
|
229
|
+
# Show / update / delete
|
|
230
|
+
blog-cli page show an-idea
|
|
231
|
+
blog-cli page update an-idea --title "A better title"
|
|
232
|
+
blog-cli page update an-idea --markdown-file updated.mdx
|
|
233
|
+
blog-cli page delete an-idea
|
|
234
|
+
```
|
|
235
|
+
|
|
236
|
+
Page bodies are MDX. Referenced media uses names uploaded via `blog-cli media upload --name <name> <file>`; the site resolves names to media URLs at render time.
|
|
237
|
+
|
|
238
|
+
## ChatGPT / Codex skill
|
|
239
|
+
|
|
240
|
+
The CLI ships a bundled `content-pipeline` skill that routes blog, project, and page tasks to the right reference doc. Install it into the user-level skills directory:
|
|
241
|
+
|
|
242
|
+
```bash
|
|
243
|
+
blog-cli skill install
|
|
244
|
+
blog-cli skill uninstall
|
|
245
|
+
blog-cli skill path
|
|
246
|
+
```
|
|
247
|
+
|
|
196
248
|
## Media
|
|
197
249
|
|
|
198
250
|
Upload media using a stable name, then reference that name from article Markdown:
|
|
@@ -10,6 +10,15 @@ src/personal_cli/__init__.py
|
|
|
10
10
|
src/personal_cli/__main__.py
|
|
11
11
|
src/personal_cli/cli.py
|
|
12
12
|
src/personal_cli/client.py
|
|
13
|
+
src/personal_cli/credentials.py
|
|
13
14
|
src/personal_cli/formatting.py
|
|
15
|
+
src/personal_cli/setup_server.py
|
|
16
|
+
src/personal_cli/skill.py
|
|
17
|
+
src/personal_cli/skill_data/SKILL.md
|
|
18
|
+
src/personal_cli/skill_data/agents/openai.yaml
|
|
19
|
+
src/personal_cli/skill_data/references/articles.md
|
|
20
|
+
src/personal_cli/skill_data/references/pages.md
|
|
21
|
+
src/personal_cli/skill_data/references/projects.md
|
|
14
22
|
tests/test_cli.py
|
|
15
|
-
tests/test_client.py
|
|
23
|
+
tests/test_client.py
|
|
24
|
+
tests/test_pages_categories.py
|