mirror of
https://github.com/JimLiu/baoyu-skills.git
synced 2026-07-16 23:49:47 +08:00
Compare commits
10 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 964cf1e045 | |||
| eded9a98bb | |||
| a64fdbd23f | |||
| 7b2c02a007 | |||
| 98f49eae96 | |||
| 1bdf44df9e | |||
| d59ecf22c1 | |||
| 22fa1a62fc | |||
| 3d48eed33a | |||
| 49403b6fab |
@@ -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.33.1"
|
"version": "1.34.2"
|
||||||
},
|
},
|
||||||
"plugins": [
|
"plugins": [
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -2,6 +2,25 @@
|
|||||||
|
|
||||||
English | [中文](./CHANGELOG.zh.md)
|
English | [中文](./CHANGELOG.zh.md)
|
||||||
|
|
||||||
|
## 1.34.2 - 2026-02-25
|
||||||
|
|
||||||
|
### Documentation
|
||||||
|
- `baoyu-markdown-to-html`: clarify theme resolution order with local and cross-skill EXTEND.md fallbacks before prompting user.
|
||||||
|
- `baoyu-post-to-wechat`: align markdown conversion theme handling with deterministic fallback (`CLI --theme` -> EXTEND.md `default_theme` -> `default`) and require explicit `--theme` parameter.
|
||||||
|
|
||||||
|
## 1.34.1 - 2026-02-20
|
||||||
|
|
||||||
|
### Fixes
|
||||||
|
- `baoyu-post-to-wechat`: fix upload progress check crashing on second iteration (by @LyInfi)
|
||||||
|
|
||||||
|
## 1.34.0 - 2026-02-17
|
||||||
|
|
||||||
|
### Features
|
||||||
|
- `baoyu-xhs-images`: add reference image chain for visual consistency across multi-image series (by @jeffrey94)
|
||||||
|
|
||||||
|
### Refactor
|
||||||
|
- `baoyu-article-illustrator`: enforce prompt file creation as blocking step before image generation, add structured prompt quality requirements (ZONES / LABELS / COLORS / STYLE / ASPECT) and verification checklist.
|
||||||
|
|
||||||
## 1.33.1 - 2026-02-14
|
## 1.33.1 - 2026-02-14
|
||||||
|
|
||||||
### Refactor
|
### Refactor
|
||||||
|
|||||||
@@ -2,6 +2,25 @@
|
|||||||
|
|
||||||
[English](./CHANGELOG.md) | 中文
|
[English](./CHANGELOG.md) | 中文
|
||||||
|
|
||||||
|
## 1.34.2 - 2026-02-25
|
||||||
|
|
||||||
|
### 文档
|
||||||
|
- `baoyu-markdown-to-html`:明确主题解析优先级,先读取本技能与跨技能 EXTEND.md 的 `default_theme`,仅在未命中时询问用户。
|
||||||
|
- `baoyu-post-to-wechat`:统一 markdown 转 HTML 的主题解析回退链(CLI `--theme` -> EXTEND.md `default_theme` -> `default`),并强制始终显式传入 `--theme` 参数。
|
||||||
|
|
||||||
|
## 1.34.1 - 2026-02-20
|
||||||
|
|
||||||
|
### 修复
|
||||||
|
- `baoyu-post-to-wechat`:修复上传进度检查在第二次迭代时崩溃的问题 (by @LyInfi)
|
||||||
|
|
||||||
|
## 1.34.0 - 2026-02-17
|
||||||
|
|
||||||
|
### 新功能
|
||||||
|
- `baoyu-xhs-images`:新增参考图片链功能,确保多图系列的视觉一致性 (by @jeffrey94)
|
||||||
|
|
||||||
|
### 重构
|
||||||
|
- `baoyu-article-illustrator`:将提示词文件创建设为生成图片前的阻断步骤,新增结构化提示词质量要求(ZONES / LABELS / COLORS / STYLE / ASPECT)和验证清单。
|
||||||
|
|
||||||
## 1.33.1 - 2026-02-14
|
## 1.33.1 - 2026-02-14
|
||||||
|
|
||||||
### 重构
|
### 重构
|
||||||
|
|||||||
@@ -100,11 +100,16 @@ Full template: [references/workflow.md](references/workflow.md#step-4-generate-o
|
|||||||
|
|
||||||
### Step 5: Generate Images
|
### Step 5: Generate Images
|
||||||
|
|
||||||
1. Create prompts per [references/prompt-construction.md](references/prompt-construction.md)
|
⛔ **BLOCKING: Prompt files MUST be saved before ANY image generation.**
|
||||||
2. Select generation skill from available skills
|
|
||||||
3. Process references (`direct`/`style`/`palette`)
|
1. For each illustration, create a prompt file per [references/prompt-construction.md](references/prompt-construction.md)
|
||||||
4. Apply watermark if EXTEND.md enabled
|
2. Save to `prompts/NN-{type}-{slug}.md` with YAML frontmatter
|
||||||
5. Generate sequentially, retry once on failure
|
3. Prompts **MUST** use type-specific templates with structured sections (ZONES / LABELS / COLORS / STYLE / ASPECT)
|
||||||
|
4. LABELS **MUST** include article-specific data: actual numbers, terms, metrics, quotes
|
||||||
|
5. **DO NOT** pass ad-hoc inline prompts to `--prompt` without saving prompt files first
|
||||||
|
6. Select generation skill, process references (`direct`/`style`/`palette`)
|
||||||
|
7. Apply watermark if EXTEND.md enabled
|
||||||
|
8. Generate from saved prompt files; retry once on failure
|
||||||
|
|
||||||
Full procedures: [references/workflow.md](references/workflow.md#step-5-generate-images)
|
Full procedures: [references/workflow.md](references/workflow.md#step-5-generate-images)
|
||||||
|
|
||||||
|
|||||||
@@ -261,10 +261,41 @@ references: # Only if references provided
|
|||||||
|
|
||||||
## Step 5: Generate Images
|
## Step 5: Generate Images
|
||||||
|
|
||||||
### 5.1 Create Prompts
|
### 5.1 Create Prompts ⛔ BLOCKING
|
||||||
|
|
||||||
Follow [prompt-construction.md](prompt-construction.md). Save to `prompts/illustration-{slug}.md`.
|
**Every illustration MUST have a saved prompt file before generation begins. DO NOT skip this step.**
|
||||||
- **Backup rule**: If prompt file exists, rename to `prompts/illustration-{slug}-backup-YYYYMMDD-HHMMSS.md`
|
|
||||||
|
For each illustration in the outline:
|
||||||
|
|
||||||
|
1. **Create prompt file**: `prompts/NN-{type}-{slug}.md`
|
||||||
|
2. **Include YAML frontmatter**:
|
||||||
|
```yaml
|
||||||
|
---
|
||||||
|
illustration_id: 01
|
||||||
|
type: infographic
|
||||||
|
style: custom-flat-vector
|
||||||
|
---
|
||||||
|
```
|
||||||
|
3. **Follow type-specific template** from [prompt-construction.md](prompt-construction.md)
|
||||||
|
4. **Prompt quality requirements** (all REQUIRED):
|
||||||
|
- `Layout`: Describe overall composition (grid / radial / hierarchical / left-right / top-down)
|
||||||
|
- `ZONES`: Describe each visual area with specific content, not vague descriptions
|
||||||
|
- `LABELS`: Use **actual numbers, terms, metrics, quotes from the article** — NOT generic placeholders
|
||||||
|
- `COLORS`: Specify hex codes with semantic meaning (e.g., `Coral (#E07A5F) for emphasis`)
|
||||||
|
- `STYLE`: Describe line treatment, texture, mood, character rendering
|
||||||
|
- `ASPECT`: Specify ratio (e.g., `16:9`)
|
||||||
|
5. **Apply defaults**: composition requirements, character rendering, text guidelines, watermark
|
||||||
|
6. **Backup rule**: If prompt file exists, rename to `prompts/NN-{type}-{slug}-backup-YYYYMMDD-HHMMSS.md`
|
||||||
|
|
||||||
|
**Verification** ⛔: Before proceeding to 5.2, confirm ALL prompt files exist:
|
||||||
|
```
|
||||||
|
Prompt Files:
|
||||||
|
- prompts/01-infographic-overview.md ✓
|
||||||
|
- prompts/02-infographic-distillation.md ✓
|
||||||
|
...
|
||||||
|
```
|
||||||
|
|
||||||
|
**DO NOT** pass ad-hoc inline text to `--prompt` without first saving prompt files. The generation command should either use `--promptfiles prompts/NN-{type}-{slug}.md` or read the saved file content for `--prompt`.
|
||||||
|
|
||||||
**CRITICAL - References in Frontmatter**:
|
**CRITICAL - References in Frontmatter**:
|
||||||
- Only add `references` field if files ACTUALLY EXIST in `references/` directory
|
- Only add `references` field if files ACTUALLY EXIST in `references/` directory
|
||||||
|
|||||||
@@ -68,9 +68,24 @@ Use `AskUserQuestion` to ask whether to format first. Formatting can fix:
|
|||||||
|
|
||||||
**If user declines**: Continue with original file.
|
**If user declines**: Continue with original file.
|
||||||
|
|
||||||
### Step 1: Confirm Theme
|
### Step 1: Determine Theme
|
||||||
|
|
||||||
Before converting, use AskUserQuestion to confirm the theme (unless user already specified):
|
**Theme resolution order** (first match wins):
|
||||||
|
1. User explicitly specified theme (CLI `--theme` or conversation)
|
||||||
|
2. EXTEND.md `default_theme` (this skill's own EXTEND.md, checked in Step 0)
|
||||||
|
3. `baoyu-post-to-wechat` EXTEND.md `default_theme` (cross-skill fallback)
|
||||||
|
4. If none found → use AskUserQuestion to confirm
|
||||||
|
|
||||||
|
**Cross-skill EXTEND.md check** (only if this skill's EXTEND.md has no `default_theme`):
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Check baoyu-post-to-wechat EXTEND.md for default_theme
|
||||||
|
test -f "$HOME/.baoyu-skills/baoyu-post-to-wechat/EXTEND.md" && grep -o 'default_theme:.*' "$HOME/.baoyu-skills/baoyu-post-to-wechat/EXTEND.md"
|
||||||
|
```
|
||||||
|
|
||||||
|
**If theme is resolved from EXTEND.md**: Use it directly, do NOT ask the user.
|
||||||
|
|
||||||
|
**If no default found**: Use AskUserQuestion to confirm:
|
||||||
|
|
||||||
| Theme | Description |
|
| Theme | Description |
|
||||||
|-------|-------------|
|
|-------|-------------|
|
||||||
|
|||||||
@@ -196,20 +196,19 @@ B) Continue - provide HTML file manually
|
|||||||
|
|
||||||
**Skip if**: Input is `.html` file
|
**Skip if**: Input is `.html` file
|
||||||
|
|
||||||
1. **Ask theme preference** (unless specified in EXTEND.md or CLI):
|
1. **Resolve theme** (first match wins, do NOT ask user if resolved):
|
||||||
|
- CLI `--theme` argument
|
||||||
|
- EXTEND.md `default_theme` (loaded in Step 0)
|
||||||
|
- Fallback: `default`
|
||||||
|
|
||||||
| Theme | Description |
|
2. **Execute conversion** (using the discovered skill), **always pass `--theme`**:
|
||||||
|-------|-------------|
|
|
||||||
| `default` | 经典主题 - 传统排版,标题居中带底边,二级标题白字彩底 |
|
|
||||||
| `grace` | 优雅主题 - 文字阴影,圆角卡片,精致引用块 |
|
|
||||||
| `simple` | 简洁主题 - 现代极简风,不对称圆角,清爽留白 |
|
|
||||||
|
|
||||||
2. **Execute conversion** (using the discovered skill):
|
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
npx -y bun ${MD_TO_HTML_SKILL_DIR}/scripts/main.ts <markdown_file> --theme <theme>
|
npx -y bun ${MD_TO_HTML_SKILL_DIR}/scripts/main.ts <markdown_file> --theme <theme>
|
||||||
```
|
```
|
||||||
|
|
||||||
|
**CRITICAL**: Always include `--theme` parameter. Never omit it, even if using `default`.
|
||||||
|
|
||||||
3. **Parse JSON output** to get: `htmlPath`, `title`, `author`, `summary`, `contentImages`
|
3. **Parse JSON output** to get: `htmlPath`, `title`, `author`, `summary`, `contentImages`
|
||||||
|
|
||||||
### Step 4: Validate Metadata
|
### Step 4: Validate Metadata
|
||||||
|
|||||||
@@ -570,10 +570,7 @@ export async function postToWeChat(options: WeChatBrowserOptions): Promise<void>
|
|||||||
for (let i = 0; i < 30; i++) {
|
for (let i = 0; i < 30; i++) {
|
||||||
await sleep(2000);
|
await sleep(2000);
|
||||||
const uploadCheck = await cdp.send<{ result: { value: string } }>('Runtime.evaluate', {
|
const uploadCheck = await cdp.send<{ result: { value: string } }>('Runtime.evaluate', {
|
||||||
expression: `
|
expression: `JSON.stringify({ uploaded: document.querySelectorAll('.weui-desktop-upload__thumb, .pic_item, [class*=upload_thumb]').length })`,
|
||||||
const thumbs = document.querySelectorAll('.weui-desktop-upload__thumb, .pic_item, [class*=upload_thumb]');
|
|
||||||
JSON.stringify({ uploaded: thumbs.length });
|
|
||||||
`,
|
|
||||||
returnByValue: true,
|
returnByValue: true,
|
||||||
}, { sessionId });
|
}, { sessionId });
|
||||||
const status = JSON.parse(uploadCheck.result.value);
|
const status = JSON.parse(uploadCheck.result.value);
|
||||||
|
|||||||
@@ -368,10 +368,21 @@ Display the selected style's default elements from preset, then ask:
|
|||||||
|
|
||||||
With confirmed outline + style + layout:
|
With confirmed outline + style + layout:
|
||||||
|
|
||||||
|
**Visual Consistency — Reference Image Chain**:
|
||||||
|
To ensure character/style consistency across all images in a series:
|
||||||
|
1. **Generate image 1 (cover) FIRST** — without `--ref`
|
||||||
|
2. **Use image 1 as `--ref` for ALL remaining images** (2, 3, ..., N)
|
||||||
|
- This anchors the character design, color rendering, and illustration style
|
||||||
|
- Command pattern: `--ref <path-to-image-01.png>` added to every subsequent generation
|
||||||
|
|
||||||
|
This is critical for styles that use recurring characters, mascots, or illustration elements. Image 1 becomes the visual anchor for the entire series.
|
||||||
|
|
||||||
**For each image (cover + content + ending)**:
|
**For each image (cover + content + ending)**:
|
||||||
1. Save prompt to `prompts/NN-{type}-[slug].md` (in user's preferred language)
|
1. Save prompt to `prompts/NN-{type}-[slug].md` (in user's preferred language)
|
||||||
- **Backup rule**: If prompt file exists, rename to `prompts/NN-{type}-[slug]-backup-YYYYMMDD-HHMMSS.md`
|
- **Backup rule**: If prompt file exists, rename to `prompts/NN-{type}-[slug]-backup-YYYYMMDD-HHMMSS.md`
|
||||||
2. Generate image using confirmed style and layout
|
2. Generate image:
|
||||||
|
- **Image 1**: Generate without `--ref` (this establishes the visual anchor)
|
||||||
|
- **Images 2+**: Generate with `--ref <image-01-path>` for consistency
|
||||||
- **Backup rule**: If image file exists, rename to `NN-{type}-[slug]-backup-YYYYMMDD-HHMMSS.png`
|
- **Backup rule**: If image file exists, rename to `NN-{type}-[slug]-backup-YYYYMMDD-HHMMSS.png`
|
||||||
3. Report progress after each generation
|
3. Report progress after each generation
|
||||||
|
|
||||||
@@ -391,7 +402,7 @@ Reference: `references/config/watermark-guide.md`
|
|||||||
If image generation skill supports `--sessionId`:
|
If image generation skill supports `--sessionId`:
|
||||||
1. Generate unique session ID: `xhs-{topic-slug}-{timestamp}`
|
1. Generate unique session ID: `xhs-{topic-slug}-{timestamp}`
|
||||||
2. Use same session ID for all images
|
2. Use same session ID for all images
|
||||||
3. Ensures visual consistency across generated images
|
3. Combined with reference image chain, ensures maximum visual consistency
|
||||||
|
|
||||||
### Step 6: Completion Report
|
### Step 6: Completion Report
|
||||||
|
|
||||||
|
|||||||
@@ -160,7 +160,21 @@ From outline entry, format:
|
|||||||
If preferences include watermark:
|
If preferences include watermark:
|
||||||
- Add watermark section with content, position, opacity
|
- Add watermark section with content, position, opacity
|
||||||
|
|
||||||
### Step 5: Combine
|
### Step 5: Visual Consistency — Reference Image Chain
|
||||||
|
|
||||||
|
When generating multiple images in a series:
|
||||||
|
|
||||||
|
1. **Image 1 (cover)**: Generate without `--ref` — this establishes the visual anchor
|
||||||
|
2. **Images 2+**: Always pass image 1 as `--ref` to the image generation skill:
|
||||||
|
```bash
|
||||||
|
npx -y bun ${SKILL_DIR}/scripts/main.ts \
|
||||||
|
--promptfiles prompts/02-content-xxx.md \
|
||||||
|
--ref path/to/01-cover-xxx.png \
|
||||||
|
--image 02-content-xxx.png --ar 3:4 --quality 2k
|
||||||
|
```
|
||||||
|
This ensures the AI maintains the same character design, illustration style, and color rendering across the series.
|
||||||
|
|
||||||
|
### Step 6: Combine
|
||||||
|
|
||||||
Assemble all sections into final prompt following base structure.
|
Assemble all sections into final prompt following base structure.
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user