@ww_nero/skills 3.5.0 → 3.6.1

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.
package/README.md CHANGED
@@ -1,45 +1,40 @@
1
- # @ww_nero/snippet
1
+ # @ww_nero/skills
2
2
 
3
- MCP 服务器,不直接执行转换,而是根据 `type` 返回可直接运行的 Python 参考脚本和要点说明。支持四类示例:
3
+ MCP 服务器,提供 Python 参考脚本和技能指导。
4
+
5
+ ## 工具列表
6
+
7
+ ### snippet
8
+
9
+ 根据 `title` 返回可直接运行的 Python 参考脚本,保存到工作目录下。支持以下类型:
4
10
 
5
11
  - `html_to_png`:Playwright 渲染 HTML 后截图
6
12
  - `pdf_to_png`:pdf2image 分页导出位图
7
- - `pptx_to_pdf`:LibreOffice 无头模式转 PDF
8
- - `svg_to_pptx`:附带 `ppt_slide.html` 与对应的构建脚本,演示渐变背景、发光文本和贝塞尔曲线
13
+ - `pptx_to_png`:LibreOffice 无头模式转 PDF 再转 PNG
14
+ - `svg_to_pptx`:将 SVG 转化为 PPTX 中的可操作元素
15
+ - `step_to_stl`:将 STEP/STP 文件转换为 STL 网格文件
16
+ - `combine_stls`:合并多个 STL 文件
17
+
18
+ ### ppt
19
+
20
+ 返回制作 PPT 的全流程指导说明和注意事项。
9
21
 
10
22
  ## MCP 配置示例
11
23
 
12
24
  ```json
13
- "snippet": {
25
+ "skills": {
14
26
  "command": "npx",
15
- "args": ["-y", "@ww_nero/snippet@latest"],
27
+ "args": ["-y", "@ww_nero/skills@latest"],
16
28
  "env": {},
17
29
  "type": "stdio"
18
30
  }
19
31
  ```
20
32
 
21
- 工具列表中仅包含 `convert`,调用时传入:
22
-
23
- ```json
24
- {
25
- "type": "html_to_png" // 可选: html_to_png | pdf_to_png | pptx_to_pdf | svg_to_pptx
26
- }
27
- ```
28
-
29
- 参数说明:
30
- - `type`:示例类型,取值仅限 `html_to_png` / `pdf_to_png` / `pptx_to_pdf` / `svg_to_pptx`。
31
-
32
- 返回内容包括:
33
-
34
- 1. 关键要点(参数、注意事项、风格处理建议等)。
35
- 2. 完整的 Python 示例脚本(位于 `assets/` 下)。
36
- 3. 如需额外资源(例如 SVG),会同时内联展示并标注路径。
37
-
38
- ## 运行脚本所需依赖(如需执行)
33
+ ## 运行脚本所需依赖
39
34
 
40
35
  ```bash
41
- pip install playwright pdf2image pillow python-pptx
36
+ pip install playwright pdf2image pillow python-pptx pythonocc-core gmsh
42
37
  playwright install
43
38
  ```
44
39
 
45
- 示例脚本默认使用简体中文注释,可直接复制到本地运行或按需修改。
40
+ 示例脚本默认使用简体中文注释,可直接复制到本地运行或按需修改。
@@ -1,17 +1,18 @@
1
1
  制作PPT的完整步骤如下(可根据当前实际状态,跳过部分已经完成的环节):
2
2
 
3
3
  1. **规划PPT内容**,存储到markdown文件中:
4
- - 每页Slide的规划需要包含:内容、布局方式、插图(只有用户明确提出要求时才添加插图)
4
+ - 每页Slide的规划需要包含:内容、布局方式、插图(**注意:只有用户明确提出要求时才添加插图。默认不需要插图,即无需图片占位**)
5
5
  - 不同页面应尽可能使用不同的布局方式,避免过于单调,可适当使用图表来呈现信息,例如折线图、柱状图、饼状图等;各正文页面标题样式、背景和文字色调**必须保持一致**。
6
6
  - 如果用户未明确提出要求,则页面默认比例为宽1280px、高720px,默认背景为弱渐变的浅灰蓝(#F2F4F7 → #FCFCFC),现代科技感、扁平化风格。
7
7
  - 如果需要插入图片,则按照以下方式:
8
- - 收集图片素材,优先使用用户提供的图片;如未提供,则使用图像生成工具生成合适的图片
9
- - 将图片素材保存到`images`文件夹中,使用内容和宽高比例作为图片名称,例如`main_background_16_9.png`表示该图片是主背景图,宽高比为16:9;对于用户提供的图片素材,可调用工具解读图片内容
8
+ - 整理图片素材,只能使用用户提供的图片;如未提供,则提示用户准备图片素材。
9
+ - **必须在用户明确要求的情况下,才可以使用网络工具或图片生成工具获取图片素材,并且每获取一张图片后,都需要等待用户确认后再继续下一步。**
10
+ - 将图片素材保存到`images`文件夹中,使用内容和宽高比例作为图片名称,例如`main_background_16_9.png`表示该图片是主背景图,宽高比为16:9。
10
11
 
11
12
  2. **通过SVG代码实现Slides的排版**:
12
- - 如需Image,统一使用`rect`或`circle`元素进行占位(必须符合图片宽高比例),占位元素应设置合适的位置,可添加浅色填充或边框以便预览时识别
13
- - 如需Icon,优先使用Emoji,其次使用纯SVG代码的方式绘制
14
- - 如需Chart,如折线图、柱状图等,应使用纯SVG代码的方式绘制,而不是使用图片占位元素
13
+ - 如需插入Image,应使用`rect`或`circle`元素进行占位(必须符合图片宽高比例),占位元素应设置合适的位置,可添加浅色填充或边框以便预览时识别
14
+ - 如需插入Icon,应使用纯SVG代码的方式绘制
15
+ - 如需插入Chart,如折线图、柱状图等,应使用纯SVG代码的方式绘制,而不是使用图片占位元素
15
16
  - 每页Slide的保存在一个独立HTML文件中,例如`slide_01.html`、`slide_02.html`等。
16
17
 
17
18
  3. **把SVG转成PPTX文件**:
package/index.js CHANGED
@@ -89,7 +89,6 @@ const loadText = (filename) => {
89
89
  };
90
90
 
91
91
  const PPT_PROMPT = loadText('ppt_prompt.txt');
92
- const VIDEO_PROMPT = loadText('video_prompt.txt');
93
92
 
94
93
  const buildSnippet = (title, workingDirectory) => {
95
94
  const entry = SNIPPETS[title];
@@ -146,20 +145,11 @@ const listTools = () => ({
146
145
  properties: {},
147
146
  required: []
148
147
  }
149
- },
150
- {
151
- name: 'video',
152
- description: '制作视频的全流程指导说明和注意事项',
153
- inputSchema: {
154
- type: 'object',
155
- properties: {},
156
- required: []
157
- }
158
148
  }
159
149
  ]
160
150
  });
161
151
 
162
- const server = new Server({ name: 'skills', version: '3.5.0' }, { capabilities: { tools: {} } });
152
+ const server = new Server({ name: 'skills', version: '3.6.1' }, { capabilities: { tools: {} } });
163
153
 
164
154
  server.setRequestHandler(ListToolsRequestSchema, async () => listTools());
165
155
 
@@ -180,10 +170,6 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
180
170
  return { content: [{ type: 'text', text: PPT_PROMPT }] };
181
171
  }
182
172
 
183
- if (name === 'video') {
184
- return { content: [{ type: 'text', text: VIDEO_PROMPT }] };
185
- }
186
-
187
173
  return { content: [{ type: 'text', text: `未知工具: ${name}` }], isError: true };
188
174
  } catch (error) {
189
175
  const message = error?.message || '未知错误';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ww_nero/skills",
3
- "version": "3.5.0",
3
+ "version": "3.6.1",
4
4
  "description": "MCP server that returns Python reference snippets and skill guides",
5
5
  "main": "index.js",
6
6
  "bin": {
@@ -1,141 +0,0 @@
1
- 制作视频的完整步骤如下(可根据当前实际状态,跳过部分已经完成的环节):
2
-
3
- **重要说明**:本指南仅适用于**定格动画风格**的视频制作,即通过若干静态图片按顺序拼接成视频。如需制作**连续变化、流畅过渡**的视频(如人物动作、场景变换等),建议使用以下专业工具:
4
- - AI视频生成工具:Sora、Kling、Runway、Pika等
5
- - 专业视频剪辑软件:Adobe Premiere Pro、Final Cut Pro、DaVinci Resolve等
6
-
7
- ---
8
-
9
- ## 一、规划视频内容
10
-
11
- **确定视频结构**,存储到markdown文件中:
12
- - 视频主题和整体风格
13
- - 分镜脚本:每个画面的内容描述、旁白/字幕文本
14
- - 背景音乐需求(如有)
15
-
16
- ## 二、生成配音并获取时间戳
17
-
18
- 由于语音的时长难以精确控制,应**先生成配音,再根据音频时长编排画面**。
19
-
20
- 1. **准备旁白文本**:根据分镜脚本整理完整的旁白内容
21
- 2. **使用语音合成工具生成语音**:将文本转为音频文件
22
- 3. **使用语音识别工具获取时间戳**:对生成的音频进行识别,获取带时间戳的SRT字幕文件
23
- 4. **根据时间戳规划画面**:根据SRT文件中每段文字的起止时间,确定每张图片的显示时长
24
-
25
- ## 三、准备图片素材
26
-
27
- 根据语音识别工具返回的时间戳信息准备图片:
28
-
29
- 1. **收集或生成图片**:
30
- - 优先使用用户提供的图片素材
31
- - 如需生成图片,使用图像生成工具创建
32
- 2. **图片规格要求**:
33
- - 所有图片保存到`images`文件夹
34
- - 建议使用统一的分辨率(如1920x1080或1280x720)
35
- - 图片命名规则:`frame_01.png`、`frame_02.png`等,按播放顺序编号
36
-
37
- ## 四、使用ffmpeg合成视频
38
-
39
- ### 基础图片序列转视频
40
-
41
- ```bash
42
- # 将图片序列转为视频(每张图片显示2秒)
43
- ffmpeg -framerate 0.5 -i images/frame_%02d.png -c:v libx264 -pix_fmt yuv420p -r 30 output.mp4
44
- ```
45
-
46
- 参数说明:
47
- - `-framerate 0.5`:输入帧率,0.5表示每张图片持续2秒(1/0.5=2秒)
48
- - `-i images/frame_%02d.png`:输入图片序列,%02d表示两位数编号
49
- - `-c:v libx264`:使用H.264编码
50
- - `-pix_fmt yuv420p`:像素格式,确保兼容性
51
- - `-r 30`:输出帧率30fps
52
-
53
- ### 添加背景音乐
54
-
55
- ```bash
56
- # 合成视频和背景音乐
57
- ffmpeg -i video.mp4 -i bgm.mp3 -c:v copy -c:a aac -shortest output_with_bgm.mp4
58
- ```
59
-
60
- ### 添加配音
61
-
62
- ```bash
63
- # 合成视频和配音
64
- ffmpeg -i video.mp4 -i narration.mp3 -c:v copy -c:a aac -map 0:v -map 1:a output_with_voice.mp4
65
- ```
66
-
67
- ### 添加字幕
68
-
69
- 1. **准备字幕文件**(SRT格式),例如`subtitles.srt`:
70
- ```
71
- 1
72
- 00:00:00,000 --> 00:00:03,000
73
- 这是第一段字幕
74
-
75
- 2
76
- 00:00:03,000 --> 00:00:06,000
77
- 这是第二段字幕
78
- ```
79
-
80
- 2. **烧录字幕到视频**:
81
- ```bash
82
- # 硬字幕(字幕嵌入视频画面)
83
- ffmpeg -i video.mp4 -vf "subtitles=subtitles.srt:force_style='FontName=Microsoft YaHei,FontSize=24,PrimaryColour=&HFFFFFF&'" -c:a copy output_with_sub.mp4
84
- ```
85
-
86
- ### 完整合成示例
87
-
88
- ```bash
89
- # 一次性合成:图片序列 + 配音 + 字幕
90
- ffmpeg -framerate 0.5 -i images/frame_%02d.png -i narration.mp3 \
91
- -c:v libx264 -pix_fmt yuv420p -r 30 \
92
- -vf "subtitles=subtitles.srt:force_style='FontName=Microsoft YaHei,FontSize=24'" \
93
- -c:a aac -shortest output_final.mp4
94
- ```
95
-
96
- ## 五、注意事项
97
-
98
- 1. **图片尺寸一致性**:所有图片必须使用相同的分辨率,否则ffmpeg可能报错
99
- 2. **图片编号连续**:图片序列编号必须连续,不能有间断(如01、02、04会导致03之后的图片被忽略)
100
- 3. **中文字幕字体**:使用中文字幕时需指定支持中文的字体(如Microsoft YaHei、SimHei等)
101
- 4. **音视频同步**:使用`-shortest`参数可让视频在音频或视频任一结束时停止
102
- 5. **文件格式**:输出建议使用MP4格式(H.264+AAC),兼容性最好
103
-
104
- ## 六、进阶技巧
105
-
106
- ### 不同图片不同持续时间
107
-
108
- 如需每张图片显示不同时长,可使用concat方式:
109
-
110
- 1. 创建`input.txt`文件:
111
- ```
112
- file 'images/frame_01.png'
113
- duration 3
114
- file 'images/frame_02.png'
115
- duration 2
116
- file 'images/frame_03.png'
117
- duration 4
118
- file 'images/frame_03.png'
119
- ```
120
- 注意:最后一个文件需要重复一次(ffmpeg的concat demuxer要求)
121
-
122
- 2. 执行合成:
123
- ```bash
124
- ffmpeg -f concat -i input.txt -c:v libx264 -pix_fmt yuv420p -r 30 output.mp4
125
- ```
126
-
127
- ### 添加转场效果
128
-
129
- ffmpeg支持简单的转场效果(如淡入淡出):
130
-
131
- ```bash
132
- # 添加淡入效果(前2秒)
133
- ffmpeg -i video.mp4 -vf "fade=t=in:st=0:d=2" -c:a copy output_fade.mp4
134
-
135
- # 添加淡出效果(最后2秒,假设视频10秒)
136
- ffmpeg -i video.mp4 -vf "fade=t=out:st=8:d=2" -c:a copy output_fade.mp4
137
- ```
138
-
139
- ---
140
-
141
- **完成后建议保留**:规划文档、图片素材、字幕文件和音频文件,方便后续修改调整。