huo15-doc-template
【版权:青岛火一五信息科技有限公司 账号:huo15】火一五文档技能(别名)。文档模板生成工具。用于生成公司正式文档(合同、报价单、功能说明书、发货单、PDA 单据、会议纪要等),包含公司信息、字体规范、页面设置等模板规则/PDF 文档时。**生成 Word 默认使用此技能**。触发场景:(1) 生成合同或报价单 (2) 创建 Word 文档模板 (3) 按公司规范排版文档 (4) 使用公文格式生成文档 (5) 用户说"写个文档"、"生成文档"、"创建文档"、"生成会议纪要"等
DeepseekModel
Curated skill
Quality Excellent · 90
v1.0.0
Get
https://deepseekmodel.com/api/download.php?id=leoyeai-openclaw-master-skills-skills-huo15-doc-template-skill-md&format=skill
Download .skill
Standard format with system_prompt and model_config, ready for any agent framework
The actual content of the system_prompt field in the .skill file.
name huo15-doc-template / 火一五文档模板 description 【版权:青岛火一五信息科技有限公司 账号:huo15】火一五文档技能(别名)。文档模板生成工具。用于生成公司正式文档(合同、报价单、功能说明书、发货单、PDA 单据、会议纪要等),包含公司信息、字体规范、页面设置等模板规则/PDF 文档时。**生成 Word 默认使用此技能**。触发场景:(1) 生成合同或报价单 (2) 创建 Word 文档模板 (3) 按公司规范排版文档 (4) 使用公文格式生成文档 (5) 用户说"写个文档"、"生成文档"、"创建文档"、"生成会议纪要"等 ⚠️ 强制检查清单(生成文档前必须完成) 新用户必读!每次生成文档前对照检查,否则文档不合格! LOGO 是否添加? —— 页眉必须有 LOGO + 公司名称 + 底线 页码是否添加? —— 页脚必须有"第 X 页 共 Y 页" 字体是否正确? —— 正文仿宋,标题黑体/楷体 页面边距是否正确? —— 上下 3.7/3.5cm,左右 2.8/2.6cm 命名是否规范? —— 文档类型_客户名称_日期.docx 如果没有完成以上检查,文档不允许交付! 🚀 简化版:一条命令完成所有格式 重要 :不需要 pip install huo15_doc!代码模板直接写在 SKILL.md 中,复制使用即可! # 直接从 SKILL.md 中复制以下代码到你的Python脚本: # (函数定义参考 SKILL.md 中的 "简化函数" 部分) # LOGO 会自动从公司系统下载,无需手动配置! doc = create_formatted_doc( title= "合同标题" , company_name= "青岛火一五信息科技有限公司" ) # 然后直接添加内容... doc.add_paragraph( "合同正文内容" ) doc.save( "CONTRACT_客户名_20250319.docx" ) 强烈建议 :使用简化函数,告别手动配置! 重要 :LOGO 会自动从公司系统下载,无需手动配置! 技能分工规则(格式引用 vs 文档操作) 格式引用 → huo15-doc-template 字体规范(仿宋、黑体、楷体字号) 页面边距(GB/T 9704-2012 公文格式) 页眉页脚(LOGO、公司名称、页码) 公文格式排版 文档操作 → office-document-specialist-suite 创建/编辑 Word 文档 内容填充、排版调整 表格操作、段落设置 组合使用流程 用 office-document-specialist-suite 处理文档内容 用 huo15-doc-template 处理格式规范 最终生成符合公司规范的正式文档 文档模板技能 快速开始 字体设置 :默认使用仿宋,小四(12pt) 页面边距 :上下 3.7/3.5cm,左右 2.8/2.6cm 页眉 :LOGO + 公司名称 + 底线 页脚 :页码居中,格式"第 X 页 共 Y 页",仿宋小四 配置规则 字体规范 默认正文 :仿宋,小四(12pt) 一级标题 :黑体,小三(15pt),加粗 二级标题 :楷体,小四(12pt),加粗 三级标题 :仿宋,小四(12pt),加粗 WPS 字体兼容 : 汉字字体:使用 仿宋 每个 run 都要设置字体域 w:eastAsia ⚠️ 重要:Markdown 语法转换规则 禁止直接在 Word 中使用 Markdown 语法 严禁将 Markdown 语法直接写入 Word 文档 ,例如: ❌ 错误: **加粗文本** → Word 中会显示星号 ❌ 错误: | 列1 | 列2 | → Word 中会显示管道符 ❌ 错误: # 一级标题 → Word 中会显示井号 正确转换方法 1. 加粗转换 Markdown: **这是加粗** Word:设置 run.bold = True # 错误示例(不要这样写!) p = doc.add_paragraph( "**这是加粗**" ) # ❌ 会显示星号 # 正确示例 p = doc.add_paragraph( "这是加粗" ) p.runs[ 0 ].bold = True # ✅ 真正加粗 2. 表格转换 Markdown: | 列1 | 列2 | 列3 | |------|------|------| | 内容 | 内容 | 内容 | Word:使用 doc.add_table() 创建表格 # 正确示例 table = doc.add_table(rows= 2 , cols= 3 ) table.style = 'Table Grid' # 设置表头 header_cells = table.rows[ 0 ].cells header_cells[ 0 ].text = "列1" header_cells[ 1 ].text = "列2" header_cells[ 2 ].text = "列3" # 设置表头样式 for cell in header_cells: for paragraph in cell.paragraphs: paragraph.alignment = WD_ALIGN_PARAGRAPH.CENTER for run in paragraph.runs: run.bold = True run.font.name = '黑体' run.font.size = Pt( 12 ) 3. 标题转换 Markdown: # 一级标题 Word:添加段落并设置样式 # 正确示例 p = doc.add_paragraph( "一级标题" ) p.runs[ 0 ].bold = True p.runs[ 0 ].font.name = '黑体' p.runs[ 0 ].font.size = Pt( 15 ) 自检清单(生成文档前必查) 生成文档后,检查以下内容: 文档中是否有 ** 、 __ 、 # 等 Markdown 符号? 表格是否使用了 | 管道符? 链接是否显示了 [文字](URL) 格式? 列表是否显示了 - 或 * 前缀? 如果有任何一项为"是",则文档不合格,需要重新生成 ⚠️ 字体问题根本原因 问题 :WPS 和 Word 对字体的渲染方式不同,WPS 需要显式设置字体域才能正确识别中文字体。 解决方案 :每个 run 都必须设置以下三个属性: run.font.name = font_name - 设置字体名称 run._element.rPr.rFonts.set(qn('w:eastAsia'), font_name) - 设置字体域(WPS兼容) run.font.size = Pt(font_size) - 设置字号 字体设置正确示范 from docx.oxml.ns import qn def set_chinese_font ( run, font_name= '仿宋' , font_size= 12 , bold= False ): """ 设置中文字体,确保WPS和Word兼容 必须对每个run都调用此函数! """ # 1. 设置西文字体名称 run.font.name = font_name # 2. 设置字体域(WPS兼容关键) run._element.rPr.rFonts. set (qn( 'w:eastAsia' ), font_name) # 3. 设置字号 run.font.size = Pt(font_size) # 4. 设置加粗 run.bold = bold return run ❌ 常见错误 错误做法 后果 只设置 run.font.name Word显示正确,WPS显示为宋体 不设置 w:eastAsia 字体域 WPS无法识别中文字体 只在第一个run设置字体 后续文字字体丢失 使用 set_font() 但没有设置字体域 WPS显示不正确 ✅ 正确做法 # 正确:每个run都设置字体 p = doc.add_paragraph() run = p.add_run( '这是正文' ) set_chinese_font(run, '仿宋' , 12 ) # ✅ 每个run都调用 # 错误:只设置一次 p = doc.add_paragraph() run = p.add_run( '这是正文' ) run.font.name = '仿宋' # ❌ 缺少字体域 完整函数模板(必须复制使用) from docx import Document from docx.shared import Pt, Cm from docx.enum.text import WD_ALIGN_PARAGRAPH from docx.oxml.ns import qn from docx.oxml import OxmlElement import os def set_chinese_font ( run, font_name= '仿宋' , font_size= 12 , bold= False ): """ 设置中文字体,确保WPS和Word兼容 必须对每个run都调用此函数! """ run.font.name = font_name run._element.rPr.rFonts. set (qn( 'w:eastAsia' ), font_name) run.font.size = Pt(font_size) run.bold = bold return run 页面设置(GB/T 9704-2012 公文格式) 上边距:3.7cm 下边距:3.5cm 左边距:2.8cm 右边距:2.6cm 纸张:A4 页眉(必须包含 LOGO) LOGO 路径: /Users/jobzhao/.openclaw/workspace/assets/logo.png 内容:LOGO 图片 + 公司名称(紧挨着) 字体:仿宋,小四(12pt) 必须添加页眉底线 (细线) ⚠️ 公司信息获取规则(重要) 获取顺序 : 首先从 辉火云企业套件系统 获取公司名称和 LOGO 如果获取失败,使用 本地配置文件 中的备选信息 如果配置文件也没有,使用 默认信息 默认公司信息 : 公司名称: 青岛火一五信息科技有限公司 默认 LOGO: /Users/jobzhao/.openclaw/workspace/assets/logo.png (从 https://tools.huo15.com/uploads/images/system/logo-colours.png 下载) 公司信息配置位置 : /Users/jobzhao/.openclaw/workspace/config/company_info.json { "company_name" : "青岛火一五信息科技有限公司" , "logo_path" : "/Users/jobzhao/.openclaw/workspace/assets/logo.png" , "logo_url" : "https://huihuoyun.huo15.com/web/image/website/1/logo" , "fallback_logo_url" : "https://tools.huo15.com/uploads/images/system/logo-colours.png" } 页眉代码示例(动态获取公司信息) : from docx.shared import Pt, Cm from docx.enum.text import WD_ALIGN_PARAGRAPH from docx.oxml.ns import qn from docx.oxml import OxmlElement import os import json import urllib.request # 公司信息配置 COMPANY_CONFIG_PATH = '/Users/jobzhao/.openclaw/workspace/config/company_info.json' DEFAULT_LOGO_PATH = '/Users/jobzhao/.openclaw/workspace/assets/logo.png' # 默认公司信息(当无法获取时使用) DEFAULT_COMPANY_NAME = '青岛火一五信息科技有限公司' FALLBACK_LOGO_URL = 'https://tools.huo15.com/uploads/images/system/logo-colours.png' COMPANY_LOGO_URL = 'https://huihuoyun.huo15.com/web/image/website/1/logo' def get_company_info (): """ 获取公司信息,自动确保LOGO存在 返回: (company_name, logo_path) 注意:LOGO会自动下载到用户目录 ~/.huo15/assets/logo.png """ company_name = COMPANY_NAME logo_path = ensure_logo_exists() # 确保LOGO存在 return company_name, logo_path def add_header_with_logo ( doc, logo_path= None , company_name= None ): """添加页眉,包含 LOGO 图片 + 公司名称 + 底线""" # 获取公司信息 if logo_path is None or company_name is None : company_name, logo_path = get_company_info() section = doc.sections[ 0 ] header = section.header header.paragraphs.clear() # 设置页眉高度 section.header_distance = Cm( 1.5 ) # 添加段落(左对齐) paragraph = header.add_paragraph() paragraph.alignment = WD_ALIGN_PARAGRAPH.LEFT # 1. 添加 LOGO 图片(如果存在) if os.path.exists(logo_path): try : # 添加图片,高度 1cm,宽度自动 run = paragraph.add_run() run.add_picture(logo_path, height=Cm( 1.0 )) except Exception as e: # 如果图片加载失败,继续添加文字 pass # 2. 添加公司名称(紧挨着 LOGO) run = paragraph.add_run( f' {company_name} ' ) set_font(run, '黑体' , 10 ) # 3. 添加页眉底线 pPr = OxmlElement( 'w:pPr' ) pBdr = OxmlElement( 'w:pBdr' ) bottom = OxmlElement( 'w:bottom' ) bottom. set (qn( 'w:val' ), 'single' ) bottom. set (qn( 'w:sz' ), '6' ) bottom. set (qn( 'w:space' ), '1' ) bottom. set (qn( 'w:color' ), '000000' ) pBdr.append(bottom) pPr.append(pBdr) paragraph._element.insert( 0 , pPr) return header 重要提醒(强制执行) : 生成文档时 必须调用 add_header_with_logo(doc) 函数 LOGO 图片路径: /Users/jobzhao/.openclaw/workspace/assets/logo.png 如果图片不存在, 自动从公司系统下载 ,或使用备用 LOGO 公司名称与 LOGO 之间保留一个空格,紧挨着显示 公司信息会自动从辉火云企业套件系统获取 ,无需手动配置 LOGO 添加检查清单(每次生成文档前必须自检) : LOGO 图片文件是否存在于 /Users/jobzhao/.openclaw/workspace/assets/logo.png 代码中是否调用了 add_picture() 方法添加 LOGO 页眉中是否包含 LOGO + 公司名称 + 底线 三个元素 是否设置了页眉底线( w:bottom 边框) 常见错误及解决方案 : 错误 原因 解决方案 文档没有 LOGO 代码中缺少 add_picture() 调用 必须调用 run.add_picture(logo_path, height=Cm(1.0)) LOGO 路径错误 图片路径写错或文件不存在 使用绝对路径,生成前检查 os.path.exists(logo_path) LOGO 太大/太小 高度设置不合理 使用 height=Cm(1.0) 标准高度 LOGO 和文字分开 没有在同一 paragraph 中添加 LOGO 和公司名称必须在同一个 paragraph 中 完整调用示例 : from docx import Document from docx.shared import Cm import os # 创建文档 doc = Document() # 1. 设置页面格式 for section in doc.sections: section.top_margin = Cm( 3.7 ) section.bottom_margin = Cm( 3.5 ) section.left_margin = Cm( 2.8 ) section.right_margin = Cm( 2.6 ) # 2. 添加页眉(必须包含 LOGO) logo_path = '/Users/jobzhao/.openclaw/workspace/assets/logo.png' # 检查 LOGO 是否存在 if not os.path.exists(logo_path): raise FileNotFoundError( f"LOGO 图片不存在: {logo_path} " ) section = doc.sections[ 0 ] header = section.header header.paragraphs.clear() section.header_distance = Cm( 1.5 ) paragraph = header.add_paragraph() paragraph.alignment = WD_ALIGN_PARAGRAPH.LEFT # 添加 LOGO run = paragraph.add_run() run.add_picture(logo_path, height=Cm( 1.0 )) # 添加公司名称 run = paragraph.add_run( ' 青岛火一五信息科技有限公司' ) set_font(run, '黑体' , 10 ) # 添加底线 # ...(参考上方完整代码) # 3. 继续添加文档内容 # ...
Keywords that activate this skill. Click one to copy it.
This skill does not provide trigger words.
The downloaded .skill package contains the following fields.
| Field | Description |
|---|---|
| format | Format tag (skill/v1) |
| skill_id | Unique skill ID |
| name | Skill name |
| version | Version |
| description | Description |
| category | Categories (array) |
| trigger_words | Trigger words |
| tags | Tags |
| source | Source |
| source_url | Source URL (this page) |
| exported_at | Exported at (set per download) |
| system_prompt | System prompt body |
| model_config | Model config: provider / model / temperature / max_tokens / top_p |
| examples | Examples |
| install_guide | Import guide for Coze / Dify / Claude / custom frameworks |
The same skill can be exported in different platform formats.