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.
Files changed (28) hide show
  1. {blog_cli-0.2.4 → blog_cli-0.4.0}/PKG-INFO +55 -3
  2. {blog_cli-0.2.4 → blog_cli-0.4.0}/README.md +51 -0
  3. {blog_cli-0.2.4 → blog_cli-0.4.0}/pyproject.toml +8 -3
  4. {blog_cli-0.2.4 → blog_cli-0.4.0}/src/blog_cli.egg-info/PKG-INFO +55 -3
  5. {blog_cli-0.2.4 → blog_cli-0.4.0}/src/blog_cli.egg-info/SOURCES.txt +10 -1
  6. {blog_cli-0.2.4 → blog_cli-0.4.0}/src/blog_cli.egg-info/requires.txt +1 -0
  7. blog_cli-0.4.0/src/personal_cli/cli.py +869 -0
  8. {blog_cli-0.2.4 → blog_cli-0.4.0}/src/personal_cli/client.py +50 -36
  9. blog_cli-0.4.0/src/personal_cli/credentials.py +100 -0
  10. blog_cli-0.4.0/src/personal_cli/setup_server.py +228 -0
  11. blog_cli-0.4.0/src/personal_cli/skill.py +34 -0
  12. blog_cli-0.4.0/src/personal_cli/skill_data/SKILL.md +30 -0
  13. blog_cli-0.4.0/src/personal_cli/skill_data/agents/openai.yaml +7 -0
  14. blog_cli-0.4.0/src/personal_cli/skill_data/references/articles.md +46 -0
  15. blog_cli-0.4.0/src/personal_cli/skill_data/references/pages.md +132 -0
  16. blog_cli-0.4.0/src/personal_cli/skill_data/references/projects.md +50 -0
  17. blog_cli-0.4.0/tests/test_cli.py +455 -0
  18. blog_cli-0.4.0/tests/test_pages_categories.py +254 -0
  19. blog_cli-0.2.4/src/personal_cli/cli.py +0 -394
  20. blog_cli-0.2.4/tests/test_cli.py +0 -206
  21. {blog_cli-0.2.4 → blog_cli-0.4.0}/setup.cfg +0 -0
  22. {blog_cli-0.2.4 → blog_cli-0.4.0}/src/blog_cli.egg-info/dependency_links.txt +0 -0
  23. {blog_cli-0.2.4 → blog_cli-0.4.0}/src/blog_cli.egg-info/entry_points.txt +0 -0
  24. {blog_cli-0.2.4 → blog_cli-0.4.0}/src/blog_cli.egg-info/top_level.txt +0 -0
  25. {blog_cli-0.2.4 → blog_cli-0.4.0}/src/personal_cli/__init__.py +0 -0
  26. {blog_cli-0.2.4 → blog_cli-0.4.0}/src/personal_cli/__main__.py +0 -0
  27. {blog_cli-0.2.4 → blog_cli-0.4.0}/src/personal_cli/formatting.py +0 -0
  28. {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.2.4
4
- Summary: Agent-friendly CLI for managing a blog. Create drafts, upload media, generate time-limited preview links.
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.2.4"
8
- description = "Agent-friendly CLI for managing a blog. Create drafts, upload media, generate time-limited preview links."
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.2.4
4
- Summary: Agent-friendly CLI for managing a blog. Create drafts, upload media, generate time-limited preview links.
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
@@ -1,4 +1,5 @@
1
1
  httpx>=0.28
2
+ keyring>=25
2
3
  typer>=0.16
3
4
 
4
5
  [dev]