mirror of
https://github.com/JimLiu/baoyu-skills.git
synced 2026-07-16 15:39:47 +08:00
Compare commits
2 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 76ddcf134e | |||
| 5a0feba96e |
@@ -6,7 +6,7 @@
|
|||||||
},
|
},
|
||||||
"metadata": {
|
"metadata": {
|
||||||
"description": "Skills shared by Baoyu for improving daily work efficiency",
|
"description": "Skills shared by Baoyu for improving daily work efficiency",
|
||||||
"version": "1.1.0"
|
"version": "1.2.0"
|
||||||
},
|
},
|
||||||
"plugins": [
|
"plugins": [
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -2,6 +2,17 @@
|
|||||||
|
|
||||||
English | [中文](./CHANGELOG.zh.md)
|
English | [中文](./CHANGELOG.zh.md)
|
||||||
|
|
||||||
|
## 1.2.0 - 2026-01-18
|
||||||
|
|
||||||
|
### Features
|
||||||
|
- Session-independent output directories: each generation session creates a new directory (`<skill-suffix>/<topic-slug>/`), even for the same source file. Conflicts resolved by appending timestamp.
|
||||||
|
- Multi-source file support: source files now saved as `source-{slug}.{ext}`, supporting multiple inputs (text, images, files from conversation).
|
||||||
|
|
||||||
|
### Documentation
|
||||||
|
- `CLAUDE.md`: updates Output Path Convention with new session-independent directory structure and multi-source file naming.
|
||||||
|
- Multiple skills: updates file management sections to reflect new directory and source file conventions.
|
||||||
|
- `baoyu-slide-deck`, `baoyu-article-illustrator`, `baoyu-cover-image`, `baoyu-xhs-images`, `baoyu-comic`
|
||||||
|
|
||||||
## 1.1.0 - 2026-01-18
|
## 1.1.0 - 2026-01-18
|
||||||
|
|
||||||
### Features
|
### Features
|
||||||
|
|||||||
@@ -2,6 +2,17 @@
|
|||||||
|
|
||||||
[English](./CHANGELOG.md) | 中文
|
[English](./CHANGELOG.md) | 中文
|
||||||
|
|
||||||
|
## 1.2.0 - 2026-01-18
|
||||||
|
|
||||||
|
### 新功能
|
||||||
|
- Session 独立输出目录:每次生成创建独立目录(`<skill-suffix>/<topic-slug>/`),即使是同一源文件也会新建目录。目录冲突时追加时间戳。
|
||||||
|
- 多源文件支持:源文件现以 `source-{slug}.{ext}` 命名,支持多个输入(文本、图片、会话中的文件)。
|
||||||
|
|
||||||
|
### 文档
|
||||||
|
- `CLAUDE.md`:更新 Output Path Convention,采用新的 session 独立目录结构和多源文件命名规范。
|
||||||
|
- 多个技能:更新文件管理部分,反映新的目录和源文件规范。
|
||||||
|
- `baoyu-slide-deck`、`baoyu-article-illustrator`、`baoyu-cover-image`、`baoyu-xhs-images`、`baoyu-comic`
|
||||||
|
|
||||||
## 1.1.0 - 2026-01-18
|
## 1.1.0 - 2026-01-18
|
||||||
|
|
||||||
### 新功能
|
### 新功能
|
||||||
|
|||||||
@@ -173,27 +173,33 @@ Use this template when implementing image generation in skills:
|
|||||||
|
|
||||||
### Output Path Convention
|
### Output Path Convention
|
||||||
|
|
||||||
Generated images from the same skill and source file MUST be grouped together:
|
Each session creates an independent directory. Even the same source file generates a new directory per session.
|
||||||
|
|
||||||
**With source file** (e.g., `/path/to/project/content/my-article.md`):
|
**Output Directory**:
|
||||||
```
|
```
|
||||||
/path/to/project/content/my-article/<skill-suffix>/
|
<skill-suffix>/<topic-slug>/
|
||||||
```
|
```
|
||||||
- Remove file extension from source filename
|
- `<skill-suffix>`: Skill name suffix (e.g., `xhs-images`, `cover-image`, `slide-deck`, `comic`)
|
||||||
- Use skill name suffix (e.g., `xhs-images`, `cover-image`, `slide-deck`)
|
- `<topic-slug>`: Generated from content topic (2-4 words, kebab-case)
|
||||||
- Example: source `/tests-data/anthropic-economic-index.md` + skill `baoyu-xhs-images` → `/tests-data/anthropic-economic-index/xhs-images/`
|
- Example: `xhs-images/ai-future-trends/`
|
||||||
|
|
||||||
**Without source file**:
|
**Slug Generation**:
|
||||||
```
|
1. Extract main topic from content (2-4 words, kebab-case)
|
||||||
./<skill-suffix>/<source-slug>/
|
2. Example: "Introduction to Machine Learning" → `intro-machine-learning`
|
||||||
```
|
|
||||||
- Place under current project directory
|
|
||||||
- Use descriptive slug for the content
|
|
||||||
|
|
||||||
**Directory Backup**:
|
**Conflict Resolution**:
|
||||||
- If output directory already exists, rename existing directory with timestamp
|
If `<skill-suffix>/<topic-slug>/` already exists:
|
||||||
- Format: `<dirname>-backup-YYYYMMDD-HHMMSS`
|
- Append timestamp: `<topic-slug>-YYYYMMDD-HHMMSS`
|
||||||
- Example: `xhs-images` → `xhs-images-backup-20260117-143052`
|
- Example: `ai-future` exists → `ai-future-20260118-143052`
|
||||||
|
|
||||||
|
**Source Files**:
|
||||||
|
- Copy all sources to `<skill-suffix>/<topic-slug>/` with naming: `source-{slug}.{ext}`
|
||||||
|
- Multiple sources supported: text, images, files from conversation
|
||||||
|
- Examples:
|
||||||
|
- `source-article.md` (main text content)
|
||||||
|
- `source-reference.png` (image from conversation)
|
||||||
|
- `source-data.csv` (additional file)
|
||||||
|
- Original source files remain unchanged
|
||||||
|
|
||||||
### Image Naming Convention
|
### Image Naming Convention
|
||||||
|
|
||||||
|
|||||||
@@ -31,13 +31,16 @@ Run the following command in Claude Code:
|
|||||||
|
|
||||||
1. Select **Browse and install plugins**
|
1. Select **Browse and install plugins**
|
||||||
2. Select **baoyu-skills**
|
2. Select **baoyu-skills**
|
||||||
3. Select **content-skills**
|
3. Select the plugin(s) you want to install
|
||||||
4. Select **Install now**
|
4. Select **Install now**
|
||||||
|
|
||||||
**Option 2: Direct Install**
|
**Option 2: Direct Install**
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
|
# Install specific plugin
|
||||||
/plugin install content-skills@baoyu-skills
|
/plugin install content-skills@baoyu-skills
|
||||||
|
/plugin install ai-generation-skills@baoyu-skills
|
||||||
|
/plugin install utility-skills@baoyu-skills
|
||||||
```
|
```
|
||||||
|
|
||||||
**Option 3: Ask the Agent**
|
**Option 3: Ask the Agent**
|
||||||
@@ -46,6 +49,14 @@ Simply tell Claude Code:
|
|||||||
|
|
||||||
> Please install Skills from github.com/JimLiu/baoyu-skills
|
> Please install Skills from github.com/JimLiu/baoyu-skills
|
||||||
|
|
||||||
|
### Available Plugins
|
||||||
|
|
||||||
|
| Plugin | Description | Skills |
|
||||||
|
|--------|-------------|--------|
|
||||||
|
| **content-skills** | Content generation and publishing | [xhs-images](#baoyu-xhs-images), [cover-image](#baoyu-cover-image), [slide-deck](#baoyu-slide-deck), [comic](#baoyu-comic), [article-illustrator](#baoyu-article-illustrator), [post-to-x](#baoyu-post-to-x), [post-to-wechat](#baoyu-post-to-wechat) |
|
||||||
|
| **ai-generation-skills** | AI-powered generation backends | [danger-gemini-web](#baoyu-danger-gemini-web) |
|
||||||
|
| **utility-skills** | Utility tools for content processing | [danger-x-to-markdown](#baoyu-danger-x-to-markdown), [compress-image](#baoyu-compress-image) |
|
||||||
|
|
||||||
## Update Skills
|
## Update Skills
|
||||||
|
|
||||||
To update skills to the latest version:
|
To update skills to the latest version:
|
||||||
|
|||||||
+12
-1
@@ -31,13 +31,16 @@ npx add-skill jimliu/baoyu-skills
|
|||||||
|
|
||||||
1. 选择 **Browse and install plugins**
|
1. 选择 **Browse and install plugins**
|
||||||
2. 选择 **baoyu-skills**
|
2. 选择 **baoyu-skills**
|
||||||
3. 选择 **content-skills**
|
3. 选择要安装的插件
|
||||||
4. 选择 **Install now**
|
4. 选择 **Install now**
|
||||||
|
|
||||||
**方式二:直接安装**
|
**方式二:直接安装**
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
|
# 安装指定插件
|
||||||
/plugin install content-skills@baoyu-skills
|
/plugin install content-skills@baoyu-skills
|
||||||
|
/plugin install ai-generation-skills@baoyu-skills
|
||||||
|
/plugin install utility-skills@baoyu-skills
|
||||||
```
|
```
|
||||||
|
|
||||||
**方式三:告诉 Agent**
|
**方式三:告诉 Agent**
|
||||||
@@ -46,6 +49,14 @@ npx add-skill jimliu/baoyu-skills
|
|||||||
|
|
||||||
> 请帮我安装 github.com/JimLiu/baoyu-skills 中的 Skills
|
> 请帮我安装 github.com/JimLiu/baoyu-skills 中的 Skills
|
||||||
|
|
||||||
|
### 可用插件
|
||||||
|
|
||||||
|
| 插件 | 说明 | 包含技能 |
|
||||||
|
|------|------|----------|
|
||||||
|
| **content-skills** | 内容生成和发布 | [xhs-images](#baoyu-xhs-images), [cover-image](#baoyu-cover-image), [slide-deck](#baoyu-slide-deck), [comic](#baoyu-comic), [article-illustrator](#baoyu-article-illustrator), [post-to-x](#baoyu-post-to-x), [post-to-wechat](#baoyu-post-to-wechat) |
|
||||||
|
| **ai-generation-skills** | AI 生成后端 | [danger-gemini-web](#baoyu-danger-gemini-web) |
|
||||||
|
| **utility-skills** | 内容处理工具 | [danger-x-to-markdown](#baoyu-danger-x-to-markdown), [compress-image](#baoyu-compress-image) |
|
||||||
|
|
||||||
## 更新技能
|
## 更新技能
|
||||||
|
|
||||||
更新技能到最新版本:
|
更新技能到最新版本:
|
||||||
|
|||||||
@@ -102,43 +102,42 @@ When no `--style` is specified, analyze content to select the best style:
|
|||||||
|
|
||||||
## File Management
|
## File Management
|
||||||
|
|
||||||
### With Article Path
|
### Output Directory
|
||||||
|
|
||||||
Save illustrations to `[source-name-no-ext]/illustrations/` subdirectory in the same folder as the article:
|
Each session creates an independent directory named by content slug:
|
||||||
|
|
||||||
```
|
```
|
||||||
path/to/
|
illustrations/{topic-slug}/
|
||||||
├── article.md
|
├── source-{slug}.{ext} # Source files (text, images, etc.)
|
||||||
└── article/
|
├── outline.md
|
||||||
└── illustrations/
|
├── outline-{style}.md # Style variant outlines
|
||||||
├── outline.md
|
├── prompts/
|
||||||
├── prompts/
|
│ ├── illustration-concept-a.md
|
||||||
│ ├── illustration-concept-a.md
|
│ ├── illustration-concept-b.md
|
||||||
│ ├── illustration-concept-b.md
|
│ └── ...
|
||||||
│ └── ...
|
├── illustration-concept-a.png
|
||||||
├── illustration-concept-a.png
|
├── illustration-concept-b.png
|
||||||
├── illustration-concept-b.png
|
└── ...
|
||||||
└── ...
|
|
||||||
```
|
```
|
||||||
|
|
||||||
Example: `/posts/ai-future.md` → `/posts/ai-future/illustrations/`
|
**Slug Generation**:
|
||||||
|
1. Extract main topic from content (2-4 words, kebab-case)
|
||||||
|
2. Example: "The Future of AI" → `future-of-ai`
|
||||||
|
|
||||||
### Without Article Path (Pasted Content)
|
### Conflict Resolution
|
||||||
|
|
||||||
Save to `./illustrations/[topic-slug]/`:
|
If `illustrations/{topic-slug}/` already exists:
|
||||||
|
- Append timestamp: `{topic-slug}-YYYYMMDD-HHMMSS`
|
||||||
|
- Example: `ai-future` exists → `ai-future-20260118-143052`
|
||||||
|
|
||||||
```
|
### Source Files
|
||||||
illustrations/
|
|
||||||
└── ai-future/
|
|
||||||
├── source.md
|
|
||||||
├── outline.md
|
|
||||||
├── prompts/
|
|
||||||
└── *.png
|
|
||||||
```
|
|
||||||
|
|
||||||
### Directory Backup
|
Copy all sources with naming `source-{slug}.{ext}`:
|
||||||
|
- `source-article.md` (main text content)
|
||||||
|
- `source-photo.jpg` (image from conversation)
|
||||||
|
- `source-reference.pdf` (additional file)
|
||||||
|
|
||||||
If target directory exists, rename existing to `<dirname>-backup-YYYYMMDD-HHMMSS`
|
Multiple sources supported: text, images, files from conversation.
|
||||||
|
|
||||||
## Workflow
|
## Workflow
|
||||||
|
|
||||||
|
|||||||
@@ -55,9 +55,11 @@ Style × Layout × Aspect can be freely combined. Custom styles can be described
|
|||||||
|
|
||||||
## File Structure
|
## File Structure
|
||||||
|
|
||||||
|
Each session creates an independent directory named by content slug:
|
||||||
|
|
||||||
```
|
```
|
||||||
[target]/
|
comic/{topic-slug}/
|
||||||
├── source.md # Source content (if pasted, not file)
|
├── source-{slug}.{ext} # Source files (text, images, etc.)
|
||||||
├── analysis.md # Deep analysis results (YAML+MD)
|
├── analysis.md # Deep analysis results (YAML+MD)
|
||||||
├── storyboard-chronological.md # Variant A (preserved)
|
├── storyboard-chronological.md # Variant A (preserved)
|
||||||
├── storyboard-thematic.md # Variant B (preserved)
|
├── storyboard-thematic.md # Variant B (preserved)
|
||||||
@@ -83,13 +85,19 @@ Style × Layout × Aspect can be freely combined. Custom styles can be described
|
|||||||
└── {topic-slug}.pdf
|
└── {topic-slug}.pdf
|
||||||
```
|
```
|
||||||
|
|
||||||
**Target directory**:
|
**Slug Generation**:
|
||||||
- With source path: `[source-dir]/[source-name-no-ext]/comic/`
|
1. Extract main topic from content (2-4 words, kebab-case)
|
||||||
- Example: `/posts/turing-story.md` → `/posts/turing-story/comic/`
|
2. Example: "Alan Turing Biography" → `alan-turing-bio`
|
||||||
- Without source: `./comic/[topic-slug]/`
|
|
||||||
|
|
||||||
**Directory backup**:
|
**Conflict Resolution**:
|
||||||
- If target directory exists, rename existing to `<dirname>-backup-YYYYMMDD-HHMMSS`
|
If `comic/{topic-slug}/` already exists:
|
||||||
|
- Append timestamp: `{topic-slug}-YYYYMMDD-HHMMSS`
|
||||||
|
- Example: `turing-story` exists → `turing-story-20260118-143052`
|
||||||
|
|
||||||
|
**Source Files**:
|
||||||
|
Copy all sources with naming `source-{slug}.{ext}`:
|
||||||
|
- `source-biography.md`, `source-portrait.jpg`, `source-timeline.png`, etc.
|
||||||
|
- Multiple sources supported: text, images, files from conversation
|
||||||
|
|
||||||
## Workflow
|
## Workflow
|
||||||
|
|
||||||
|
|||||||
@@ -74,38 +74,35 @@ When no `--style` is specified, the system analyzes content to select the best s
|
|||||||
|
|
||||||
## File Management
|
## File Management
|
||||||
|
|
||||||
### With Article Path
|
### Output Directory
|
||||||
|
|
||||||
Save to `[source-name-no-ext]/cover-image/` subdirectory in the same folder as the article:
|
Each session creates an independent directory named by content slug:
|
||||||
|
|
||||||
```
|
```
|
||||||
path/to/
|
cover-image/{topic-slug}/
|
||||||
├── article.md
|
├── source-{slug}.{ext} # Source files (text, images, etc.)
|
||||||
└── article/
|
├── prompts/
|
||||||
└── cover-image/
|
│ └── cover.md
|
||||||
├── prompts/
|
└── cover.png
|
||||||
│ └── cover.md
|
|
||||||
└── cover.png
|
|
||||||
```
|
```
|
||||||
|
|
||||||
Example: `/posts/ai-future.md` → `/posts/ai-future/cover-image/`
|
**Slug Generation**:
|
||||||
|
1. Extract main topic from content (2-4 words, kebab-case)
|
||||||
|
2. Example: "The Future of AI" → `future-of-ai`
|
||||||
|
|
||||||
### Without Article Path (Pasted Content)
|
### Conflict Resolution
|
||||||
|
|
||||||
Save to `./cover-image/[topic-slug]/`:
|
If `cover-image/{topic-slug}/` already exists:
|
||||||
|
- Append timestamp: `{topic-slug}-YYYYMMDD-HHMMSS`
|
||||||
|
- Example: `ai-future` exists → `ai-future-20260118-143052`
|
||||||
|
|
||||||
```
|
### Source Files
|
||||||
cover-image/
|
|
||||||
└── ai-future/
|
|
||||||
├── source.md # Saved pasted content
|
|
||||||
├── prompts/
|
|
||||||
│ └── cover.md
|
|
||||||
└── cover.png
|
|
||||||
```
|
|
||||||
|
|
||||||
### Directory Backup
|
Copy all sources with naming `source-{slug}.{ext}`:
|
||||||
|
- `source-article.md` (main text content)
|
||||||
|
- `source-logo.png` (image from conversation)
|
||||||
|
|
||||||
If target directory exists, rename existing to `<dirname>-backup-YYYYMMDD-HHMMSS`
|
Multiple sources supported: text, images, files from conversation.
|
||||||
|
|
||||||
## Workflow
|
## Workflow
|
||||||
|
|
||||||
|
|||||||
@@ -95,36 +95,40 @@ This deck is designed for **reading and sharing**, not live presentation:
|
|||||||
|
|
||||||
## File Management
|
## File Management
|
||||||
|
|
||||||
### With Content Path
|
### Output Directory
|
||||||
```
|
|
||||||
content-dir/
|
|
||||||
├── source-content.md
|
|
||||||
└── source-content/
|
|
||||||
└── slide-deck/
|
|
||||||
├── outline.md
|
|
||||||
├── prompts/
|
|
||||||
│ └── 01-slide-cover.md, 02-slide-{slug}.md, ...
|
|
||||||
├── 01-slide-cover.png, 02-slide-{slug}.png, ...
|
|
||||||
├── {topic-slug}.pptx
|
|
||||||
└── {topic-slug}.pdf
|
|
||||||
```
|
|
||||||
|
|
||||||
Example: `/posts/ai-intro.md` → `/posts/ai-intro/slide-deck/`
|
Each session creates an independent directory named by content slug:
|
||||||
|
|
||||||
### Without Content Path (Pasted Content)
|
|
||||||
```
|
```
|
||||||
slide-deck/{topic-slug}/
|
slide-deck/{topic-slug}/
|
||||||
├── source.md
|
├── source-{slug}.{ext} # Source files (text, images, etc.)
|
||||||
├── outline.md
|
├── outline.md
|
||||||
|
├── outline-{style}.md # Style variant outlines
|
||||||
├── prompts/
|
├── prompts/
|
||||||
├── *.png
|
│ └── 01-slide-cover.md, 02-slide-{slug}.md, ...
|
||||||
|
├── 01-slide-cover.png, 02-slide-{slug}.png, ...
|
||||||
├── {topic-slug}.pptx
|
├── {topic-slug}.pptx
|
||||||
└── {topic-slug}.pdf
|
└── {topic-slug}.pdf
|
||||||
```
|
```
|
||||||
|
|
||||||
### Directory Backup
|
**Slug Generation**:
|
||||||
|
1. Extract main topic from content (2-4 words, kebab-case)
|
||||||
|
2. Example: "Introduction to Machine Learning" → `intro-machine-learning`
|
||||||
|
|
||||||
If target directory exists, rename existing to `<dirname>-backup-YYYYMMDD-HHMMSS`
|
### Conflict Resolution
|
||||||
|
|
||||||
|
If `slide-deck/{topic-slug}/` already exists:
|
||||||
|
- Append timestamp: `{topic-slug}-YYYYMMDD-HHMMSS`
|
||||||
|
- Example: `intro-ml` exists → `intro-ml-20260118-143052`
|
||||||
|
|
||||||
|
### Source Files
|
||||||
|
|
||||||
|
Copy all sources with naming `source-{slug}.{ext}`:
|
||||||
|
- `source-article.md` (main text content)
|
||||||
|
- `source-diagram.png` (image from conversation)
|
||||||
|
- `source-data.xlsx` (additional file)
|
||||||
|
|
||||||
|
Multiple sources supported: text, images, files from conversation.
|
||||||
|
|
||||||
## Workflow
|
## Workflow
|
||||||
|
|
||||||
|
|||||||
@@ -92,9 +92,11 @@ Detailed layout definitions: `references/layouts/<layout>.md`
|
|||||||
|
|
||||||
## File Structure
|
## File Structure
|
||||||
|
|
||||||
|
Each session creates an independent directory named by content slug:
|
||||||
|
|
||||||
```
|
```
|
||||||
[target]/
|
xhs-images/{topic-slug}/
|
||||||
├── source.md # Source content (if pasted)
|
├── source-{slug}.{ext} # Source files (text, images, etc.)
|
||||||
├── analysis.md # Deep analysis results
|
├── analysis.md # Deep analysis results
|
||||||
├── outline-style-[slug].md # Variant A (e.g., outline-style-tech.md)
|
├── outline-style-[slug].md # Variant A (e.g., outline-style-tech.md)
|
||||||
├── outline-style-[slug].md # Variant B (e.g., outline-style-notion.md)
|
├── outline-style-[slug].md # Variant B (e.g., outline-style-notion.md)
|
||||||
@@ -109,13 +111,19 @@ Detailed layout definitions: `references/layouts/<layout>.md`
|
|||||||
└── NN-ending-[slug].png
|
└── NN-ending-[slug].png
|
||||||
```
|
```
|
||||||
|
|
||||||
**Target directory**:
|
**Slug Generation**:
|
||||||
- With source path: `[source-dir]/[source-name-no-ext]/xhs-images/`
|
1. Extract main topic from content (2-4 words, kebab-case)
|
||||||
- Example: `/tests-data/article.md` → `/tests-data/article/xhs-images/`
|
2. Example: "AI工具推荐" → `ai-tools-recommend`
|
||||||
- Without source: `./xhs-images/[topic-slug]/`
|
|
||||||
|
|
||||||
**Directory backup**:
|
**Conflict Resolution**:
|
||||||
- If target directory exists, rename existing to `<dirname>-backup-YYYYMMDD-HHMMSS`
|
If `xhs-images/{topic-slug}/` already exists:
|
||||||
|
- Append timestamp: `{topic-slug}-YYYYMMDD-HHMMSS`
|
||||||
|
- Example: `ai-tools` exists → `ai-tools-20260118-143052`
|
||||||
|
|
||||||
|
**Source Files**:
|
||||||
|
Copy all sources with naming `source-{slug}.{ext}`:
|
||||||
|
- `source-article.md`, `source-photo.jpg`, etc.
|
||||||
|
- Multiple sources supported: text, images, files from conversation
|
||||||
|
|
||||||
## Workflow
|
## Workflow
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user