Markitdown
ImCa0/just-laws
Convert files and office documents to Markdown. An agent skill from ImCa0/just-laws.
Professional Word document generator. An agent skill from LeoYeAI/openclaw-master-skills.
$ npx skills add LeoYeAI/openclaw-master-skills --skill word-studio -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install LeoYeAI/openclaw-master-skills word-studio --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/LeoYeAI/openclaw-master-skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/word-studio .claude/skills/word-studio && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "word-studio" agent skill from https://github.com/LeoYeAI/openclaw-master-skills/tree/main/skills/word-studio into .claude/skills/word-studio/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "word-studio", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/LeoYeAI/openclaw-master-skills/tree/main/skills/word-studioType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add LeoYeAI/openclaw-master-skills --skill word-studio -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install LeoYeAI/openclaw-master-skills word-studio --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/LeoYeAI/openclaw-master-skills.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/word-studio .agents/skills/word-studio && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "word-studio" agent skill from https://github.com/LeoYeAI/openclaw-master-skills/tree/main/skills/word-studio into .agents/skills/word-studio/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "word-studio", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add LeoYeAI/openclaw-master-skills --skill word-studio -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install LeoYeAI/openclaw-master-skills word-studio --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/LeoYeAI/openclaw-master-skills.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/word-studio .cursor/skills/word-studio && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "word-studio" agent skill from https://github.com/LeoYeAI/openclaw-master-skills/tree/main/skills/word-studio into .cursor/skills/word-studio/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "word-studio", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/LeoYeAI/openclaw-master-skills.git --path skills/word-studio--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add LeoYeAI/openclaw-master-skills --skill word-studio -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install LeoYeAI/openclaw-master-skills word-studio --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/LeoYeAI/openclaw-master-skills.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/word-studio .gemini/skills/word-studio && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "word-studio" agent skill from https://github.com/LeoYeAI/openclaw-master-skills/tree/main/skills/word-studio into .gemini/skills/word-studio/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "word-studio", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install LeoYeAI/openclaw-master-skills word-studioInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add LeoYeAI/openclaw-master-skills --skill word-studio -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/LeoYeAI/openclaw-master-skills.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/word-studio .github/skills/word-studio && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "word-studio" agent skill from https://github.com/LeoYeAI/openclaw-master-skills/tree/main/skills/word-studio into .github/skills/word-studio/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "word-studio", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add LeoYeAI/openclaw-master-skills --skill word-studio -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install LeoYeAI/openclaw-master-skills word-studio --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/LeoYeAI/openclaw-master-skills.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/word-studio .opencode/skills/word-studio && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "word-studio" agent skill from https://github.com/LeoYeAI/openclaw-master-skills/tree/main/skills/word-studio into .opencode/skills/word-studio/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "word-studio", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
word-studioProfessional Word document generator. An agent skill from LeoYeAI/openclaw-master-skills.
Word Studio is an agent skill from LeoYeAI/openclaw-master-skills. Professional Word document generator. Use when user needs to create reports, papers, contracts, resumes, or any professional document. Supports docx/doc formats, charts, images, tables, TOC, and multi-language. Generates publication-ready documents. Word文档生成、专业报告、论文模板、合同制作。
Its SKILL.md is about 4.7k tokens, which your agent loads only when the skill is triggered. The skill folder holds 5 other files, including reference files (for example `_meta.json`, `references/formatting-standards.md` and `references/templates.md`).
It sits in Documents & Office, covering Word documents. It works with Microsoft Word. The repository describes itself as: 🧠 Curated collection of 1209+ best OpenClaw skills — weekly updated by MyClaw.ai. The licence is MIT-0.
2 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit e5199b5. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
No scripts in the folder and no shell commands in SKILL.md (its code samples are python).
From the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Word Studio loads about 4.7k tokens when it runs, and up to ~5.7k if it reads all its reference files. Until then it costs about 72 tokens; SKILL.md has 297 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from LeoYeAI/openclaw-master-skills at commit e5199b5, republished under its MIT-0 licence (© LeoYeAI). 297 words, ~4,685 tokens.
.claude/skills/word-studio/SKILL.md (or your agent's skills folder). This skill also uses 4 other files; get the full folder from GitHub.Professional Word document generator that creates publication-ready documents in docx/doc formats.
请提供以下信息:
文档类型:(报告/论文/简历/合同/其他)
文档标题:
主要内容:
格式要求:(docx/doc)
语言:(中文/英文)
特殊要求:(图表/目录/页眉页脚等)python3 << 'PYEOF'
from docx import Document
from docx.shared import Inches, Pt, Cm, RGBColor, Emu
from docx.enum.text import WD_ALIGN_PARAGRAPH
from docx.enum.table import WD_TABLE_ALIGNMENT
from docx.enum.section import WD_ORIENT
import os
def create_cover_page(doc, config):
"""Create professional cover page with vertical centering"""
section = doc.sections[0]
page_height = section.page_height
page_width = section.page_width
# 创建单列表格用于垂直居中
table = doc.add_table(rows=1, cols=1)
table.alignment = WD_TABLE_ALIGNMENT.CENTER
# 设置表格高度为页面高度(减去边距)
table_row = table.rows[0]
table_row.height = page_height - section.top_margin - section.bottom_margin
# 获取单元格
cell = table.cell(0, 0)
# 添加标题
title_para = cell.paragraphs[0]
title_para.alignment = WD_ALIGN_PARAGRAPH.CENTER
title_run = title_para.add_run(config['title'])
title_run.font.size = Pt(26)
title_run.font.bold = True
title_run.font.name = '黑体'
# 添加空行
cell.add_paragraph()
# 添加副标题
if 'subtitle' in config:
subtitle_para = cell.add_paragraph()
subtitle_para.alignment = WD_ALIGN_PARAGRAPH.CENTER
subtitle_run = subtitle_para.add_run(config['subtitle'])
subtitle_run.font.size = Pt(16)
subtitle_run.font.color.rgb = RGBColor(100, 100, 100)
subtitle_run.font.name = '宋体'
# 添加空行
cell.add_paragraph()
cell.add_paragraph()
# 添加作者信息
if 'author' in config:
author_para = cell.add_paragraph()
author_para.alignment = WD_ALIGN_PARAGRAPH.CENTER
author_run = author_para.add_run(config['author'])
author_run.font.size = Pt(14)
author_run.font.name = '宋体'
# 添加空行
cell.add_paragraph()
# 添加日期
from datetime import datetime
date_para = cell.add_paragraph()
date_para.alignment = WD_ALIGN_PARAGRAPH.CENTER
date_run = date_para.add_run(datetime.now().strftime("%Y年%m月%d日"))
date_run.font.size = Pt(14)
date_run.font.name = '宋体'
# 隐藏表格边框
from docx.oxml.ns import qn
from docx.oxml import OxmlElement
tbl = table._tbl
tblPr = tbl.tblPr if tbl.tblPr is not None else OxmlElement('w:tblPr')
borders = OxmlElement('w:tblBorders')
for border_name in ['top', 'left', 'bottom', 'right', 'insideH', 'insideV']:
border = OxmlElement(f'w:{border_name}')
border.set(qn('w:val'), 'none')
border.set(qn('w:sz'), '0')
border.set(qn('w:space'), '0')
border.set(qn('w:color'), 'auto')
borders.append(border)
tblPr.append(borders)
return doc
# 添加目录占位符
if config.get('toc', False):
toc_heading = doc.add_heading('目录', level=1)
toc_para = doc.add_paragraph('(请在Word中右键此处,选择"更新域"生成目录)')
doc.add_page_break()
# 添加正文内容
for section_data in config.get('sections', []):
# 添加章节标题
doc.add_heading(section_data['title'], level=1)
# 添加段落内容
for para in section_data.get('paragraphs', []):
p = doc.add_paragraph(para)
p.paragraph_format.first_line_indent = Cm(0.74) # 首行缩进2字符
p.paragraph_format.line_spacing = 1.5 # 1.5倍行距
# 添加表格(如有)
if 'table' in section_data:
table_data = section_data['table']
table = doc.add_table(rows=len(table_data), cols=len(table_data[0]))
table.style = 'Table Grid'
table.alignment = WD_TABLE_ALIGNMENT.CENTER
for i, row_data in enumerate(table_data):
for j, cell_text in enumerate(row_data):
table.cell(i, j).text = str(cell_text)
# 添加图片(如有)
if 'image' in section_data:
img_path = section_data['image']
if os.path.exists(img_path):
doc.add_picture(img_path, width=Inches(5))
last_paragraph = doc.paragraphs[-1]
last_paragraph.alignment = WD_ALIGN_PARAGRAPH.CENTER
# 添加图表(如有)
if 'chart' in section_data:
chart_info = section_data['chart']
doc.add_paragraph(f"【图表:{chart_info['title']}】")
# 添加页眉页脚
if config.get('header', False):
header = section.header
header_para = header.paragraphs[0]
header_para.text = config.get('header_text', '')
header_para.alignment = WD_ALIGN_PARAGRAPH.CENTER
if config.get('footer', False):
footer = section.footer
footer_para = footer.paragraphs[0]
footer_para.text = config.get('footer_text', '')
footer_para.alignment = WD_ALIGN_PARAGRAPH.CENTER
return doc
def save_document(doc, output_path, format='docx'):
"""Save document in specified format"""
if format == 'doc':
# docx转doc需要LibreOffice
docx_path = output_path.replace('.doc', '.docx')
doc.save(docx_path)
# 尝试使用LibreOffice转换
import subprocess
try:
subprocess.run([
'soffice', '--headless', '--convert-to', 'doc',
'--outdir', os.path.dirname(output_path),
docx_path
], check=True, timeout=30)
os.remove(docx_path) # 删除临时docx
return output_path
except:
# 如果LibreOffice不可用,返回docx
final_path = output_path.replace('.doc', '.docx')
os.rename(docx_path, final_path)
return final_path
else:
doc.save(output_path)
return output_path
# 示例配置
config = {
'title': '示例文档标题',
'subtitle': '副标题',
'author': '作者姓名',
'toc': True,
'header': True,
'header_text': '公司名称',
'footer': True,
'footer_text': '第 {PAGE} 页',
'sections': [
{
'title': '第一章 引言',
'paragraphs': [
'这是第一段内容,需要首行缩进两个字符。',
'这是第二段内容,继续阐述相关内容。'
]
},
{
'title': '第二章 数据分析',
'paragraphs': ['本章展示相关数据。'],
'table': [
['项目', 'Q1', 'Q2', 'Q3', 'Q4'],
['销售额', '100', '150', '200', '250'],
['增长率', '10%', '50%', '33%', '25%']
]
}
]
}
# 生成文档
output_dir = os.environ.get('OPENCLAW_WORKSPACE', os.getcwd())
output_path = os.path.join(output_dir, 'document.docx')
doc = create_document(config)
final_path = save_document(doc, output_path, 'docx')
print(f"✅ 文档已生成:{final_path}")
PYEOFWORK_REPORT = {
'title': '2026年度工作总结报告',
'toc': True,
'header': True,
'header_text': 'XX公司',
'sections': [
{'title': '一、工作概述', 'paragraphs': [...]},
{'title': '二、主要工作内容', 'paragraphs': [...]},
{'title': '三、工作成果', 'paragraphs': [...]},
{'title': '四、存在问题', 'paragraphs': [...]},
{'title': '五、下一步计划', 'paragraphs': [...]},
]
}ACADEMIC_PAPER = {
'title': '论文标题',
'author': '作者姓名',
'toc': True,
'sections': [
{'title': '摘要', 'paragraphs': [...]},
{'title': '关键词', 'paragraphs': [...]},
{'title': '1 引言', 'paragraphs': [...]},
{'title': '2 文献综述', 'paragraphs': [...]},
{'title': '3 研究方法', 'paragraphs': [...]},
{'title': '4 结果与分析', 'paragraphs': [...]},
{'title': '5 结论', 'paragraphs': [...]},
{'title': '参考文献', 'paragraphs': [...]},
]
}CONTRACT = {
'title': '商务合同',
'sections': [
{'title': '第一条 合同双方', 'paragraphs': [...]},
{'title': '第二条 合同标的', 'paragraphs': [...]},
{'title': '第三条 价格与支付', 'paragraphs': [...]},
{'title': '第四条 交付与验收', 'paragraphs': [...]},
{'title': '第五条 违约责任', 'paragraphs': [...]},
{'title': '第六条 争议解决', 'paragraphs': [...]},
]
}RESUME = {
'title': '个人简历',
'sections': [
{'title': '基本信息', 'paragraphs': [...]},
{'title': '教育背景', 'paragraphs': [...]},
{'title': '工作经历', 'paragraphs': [...]},
{'title': '项目经验', 'paragraphs': [...]},
{'title': '技能证书', 'paragraphs': [...]},
{'title': '自我评价', 'paragraphs': [...]},
]
}优先使用开源免费字体,确保跨平台一致性:
| 字体名称 | 类型 | 语言 | 许可证 |
|---|---|---|---|
| Noto Sans | 无衬线 | 全语言 | OFL (免费) |
| Noto Serif | 衬线 | 全语言 | OFL (免费) |
| Noto Sans SC | 无衬线 | 简体中文 | OFL (免费) |
| Noto Serif SC | 衬线 | 简体中文 | OFL (免费) |
| Source Han Sans | 无衬线 | 中日韩 | OFL (免费) |
| Source Han Serif | 衬线 | 中日韩 | OFL (免费) |
| Liberation Sans | 无衬线 | 拉丁 | OFL (免费) |
| Liberation Serif | 衬线 | 拉丁 | OFL (免费) |
def get_platform_fonts(platform, language):
"""Get fonts based on platform and language"""
# 开源字体(首选,跨平台一致)
OPEN_SOURCE_FONTS = {
'body': {
'zh': 'Noto Serif SC',
'en': 'Liberation Serif',
'ja': 'Noto Serif JP',
'ko': 'Noto Serif KR',
'default': 'Noto Serif'
},
'heading': {
'zh': 'Noto Sans SC',
'en': 'Liberation Sans',
'ja': 'Noto Sans JP',
'ko': 'Noto Sans KR',
'default': 'Noto Sans'
}
}
# 系统字体(回退方案)
SYSTEM_FONTS = {
'windows': {
'body': {'zh': '宋体', 'en': 'Times New Roman'},
'heading': {'zh': '黑体', 'en': 'Arial'}
},
'macos': {
'body': {'zh': 'STSong', 'en': 'Times New Roman'},
'heading': {'zh': 'STHeiti', 'en': 'Helvetica'}
},
'linux': {
'body': {'zh': 'Noto Serif CJK SC', 'en': 'Liberation Serif'},
'heading': {'zh': 'Noto Sans CJK SC', 'en': 'Liberation Sans'}
}
}
# 优先使用开源字体
body_font = OPEN_SOURCE_FONTS['body'].get(language,
OPEN_SOURCE_FONTS['body']['default'])
heading_font = OPEN_SOURCE_FONTS['heading'].get(language,
OPEN_SOURCE_FONTS['heading']['default'])
return {
'body': body_font,
'heading': heading_font,
'fallback': SYSTEM_FONTS.get(platform, SYSTEM_FONTS['linux'])
}def check_font_availability(font_name):
"""Check if font is available on system"""
import subprocess
import sys
platform = sys.platform
if platform == 'darwin': # macOS
result = subprocess.run(['fc-list', font_name],
capture_output=True, text=True)
return result.returncode == 0
elif platform == 'win32': # Windows
import winreg
try:
key = winreg.OpenKey(winreg.HKEY_LOCAL_MACHINE,
r"SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts")
return True
except:
return False
else: # Linux
result = subprocess.run(['fc-list', f':family={font_name}'],
capture_output=True, text=True)
return font_name in result.stdout
def get_available_font(preferred, fallbacks):
"""Get first available font from list"""
for font in [preferred] + fallbacks:
if check_font_availability(font):
return font
return 'serif' # Ultimate fallback✅ 使用标准OOXML格式
✅ 避免使用Office特有功能
✅ 图片嵌入而非链接
✅ 字体嵌入或回退机制
✅ 表格使用标准样式| 格式 | 支持 | 说明 |
|---|---|---|
| .docx | ✅ | 主要格式 |
| .doc | ⚠️ | 需要LibreOffice转换 |
| ⚠️ | 需要额外转换 | |
| .odt | ⚠️ | 需要额外转换 |
字体缺失 → 使用系统默认字体
图片不存在 → 跳过图片,添加占位符
格式转换失败 → 保留docx格式
内容为空 → 添加占位文本| 模式 | 说明 | 适用场景 |
|---|---|---|
| 居中 | 图片水平居中 | 单独展示的图片 |
| 左对齐 | 图片靠左,文字环绕 | 图文混排 |
| 右对齐 | 图片靠右,文字环绕 | 图文混排 |
| 全宽 | 图片占满页面宽度 | 大图展示 |
| 并排 | 多张图片并排 | 对比展示 |
IMAGE_SIZES = {
'full_width': Inches(6.0), # 全宽(A4减边距)
'half_width': Inches(3.0), # 半宽
'third_width': Inches(2.0), # 三分之一宽
'quarter_width': Inches(1.5), # 四分之一宽
'thumbnail': Inches(1.0), # 缩略图
}from docx.shared import Inches, Cm, Pt, RGBColor
from docx.enum.text import WD_ALIGN_PARAGRAPH
from docx.enum.table import WD_TABLE_ALIGNMENT
def add_image_centered(doc, image_path, width=None, caption=None):
"""Add centered image with optional caption"""
# 添加图片
if width:
pic = doc.add_picture(image_path, width=width)
else:
pic = doc.add_picture(image_path)
# 居中对齐
last_paragraph = doc.paragraphs[-1]
last_paragraph.alignment = WD_ALIGN_PARAGRAPH.CENTER
# 添加图注
if caption:
caption_para = doc.add_paragraph()
caption_para.alignment = WD_ALIGN_PARAGRAPH.CENTER
caption_run = caption_para.add_run(caption)
caption_run.font.size = Pt(10)
caption_run.font.color.rgb = RGBColor(128, 128, 128)
return pic
def add_image_with_text_wrap(doc, image_path, position='left', width=Inches(2.5)):
"""Add image with text wrapping"""
# 使用表格实现文字环绕效果
table = doc.add_table(rows=1, cols=2)
table.alignment = WD_TABLE_ALIGNMENT.CENTER
if position == 'left':
img_cell = table.cell(0, 0)
text_cell = table.cell(0, 1)
else:
img_cell = table.cell(0, 1)
text_cell = table.cell(0, 0)
# 添加图片到单元格
img_cell.paragraphs[0].add_run().add_picture(image_path, width=width)
img_cell.paragraphs[0].alignment = WD_ALIGN_PARAGRAPH.CENTER
# 隐藏表格边框
from docx.oxml.ns import qn
from docx.oxml import OxmlElement
tbl = table._tbl
tblPr = tbl.tblPr if tbl.tblPr is not None else OxmlElement('w:tblPr')
borders = OxmlElement('w:tblBorders')
for border_name in ['top', 'left', 'bottom', 'right', 'insideH', 'insideV']:
border = OxmlElement(f'w:{border_name}')
border.set(qn('w:val'), 'none')
border.set(qn('w:sz'), '0')
border.set(qn('w:space'), '0')
border.set(qn('w:color'), 'auto')
borders.append(border)
tblPr.append(borders)
return table, text_cell
def add_images_side_by_side(doc, image_paths, width=Inches(2.8)):
"""Add multiple images side by side"""
# 创建表格并排显示图片
table = doc.add_table(rows=1, cols=len(image_paths))
table.alignment = WD_TABLE_ALIGNMENT.CENTER
for i, img_path in enumerate(image_paths):
cell = table.cell(0, i)
cell.paragraphs[0].add_run().add_picture(img_path, width=width)
cell.paragraphs[0].alignment = WD_ALIGN_PARAGRAPH.CENTER
# 隐藏表格边框
from docx.oxml.ns import qn
from docx.oxml import OxmlElement
tbl = table._tbl
tblPr = tbl.tblPr if tbl.tblPr is not None else OxmlElement('w:tblPr')
borders = OxmlElement('w:tblBorders')
for border_name in ['top', 'left', 'bottom', 'right', 'insideH', 'insideV']:
border = OxmlElement(f'w:{border_name}')
border.set(qn('w:val'), 'none')
border.set(qn('w:sz'), '0')
border.set(qn('w:space'), '0')
border.set(qn('w:color'), 'auto')
borders.append(border)
tblPr.append(borders)
return table
def add_image_full_width(doc, image_path):
"""Add image that spans full page width"""
# 获取页面宽度
section = doc.sections[0]
page_width = section.page_width
left_margin = section.left_margin
right_margin = section.right_margin
# 计算可用宽度
available_width = page_width - left_margin - right_margin
# 添加图片
pic = doc.add_picture(image_path, width=available_width)
# 居中对齐
last_paragraph = doc.paragraphs[-1]
last_paragraph.alignment = WD_ALIGN_PARAGRAPH.CENTER
return picdef add_figure_caption(doc, figure_number, caption_text, position='below'):
"""Add formatted figure caption"""
caption = f"图 {figure_number} {caption_text}"
para = doc.add_paragraph()
para.alignment = WD_ALIGN_PARAGRAPH.CENTER
run = para.add_run(caption)
run.font.size = Pt(10)
run.font.name = '宋体'
return paraUser: "帮我写一份2026年第一季度工作总结"
Agent:
1. 收集用户工作内容
2. 搜索相关数据
3. 使用工作模板生成结构
4. 调用word-studio生成文档
5. 输出专业Word文件User: "帮我写一篇关于AI发展趋势的论文"
Agent:
1. 搜索最新研究数据
2. 整理论文结构
3. 生成符合学术规范的格式
4. 插入图表和参考文献
5. 输出可提交的论文© LeoYeAI, MIT-0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 4 other files (references) in skills/word-studio of LeoYeAI/openclaw-master-skills.
Open the folder on GitHubat commit e5199b5
Word Studio next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Word Studio this skillLeoYeAI/openclaw-master-skills | 2.2k | — | ~4.7k | Automated safety check: Pass | MIT-0 | |
| MarkitdownImCa0/just-laws | 782 | 14 repos | ~3.2k | Automated safety check: Notes | MIT | |
| DOCXrvdbreemen/OTGW-firmware | 207 | 33 repos | ~4.3k | Automated safety check: Pass | Proprietary | |
| Gzh Designisjiamu/gzh-design-skill | 3.9k | 1 repos | ~2.2k | Automated safety check: Pass | AGPL-3.0 | |
| Word Document Reader and WriterHKUDS/DeepTutor | 41k | — | ~2.5k | Automated safety check: Pass | Apache-2.0 | |
| GenOffice Document CLIgenspark-ai/genoffice | 9k | — | ~19k | Automated safety check: Pass | Apache-2.0 |
ImCa0/just-laws
Convert files and office documents to Markdown. An agent skill from ImCa0/just-laws.
rvdbreemen/OTGW-firmware
A skill your agent uses whenever the user wants to create, read, edit, or manipulate Word documents (.docx files).
isjiamu/gzh-design-skill
微信公众号文章排版引擎,将 Markdown 转换为可直接粘贴到公众号编辑器的 HTML。主题风格从 references/theme-index.md 注册的自定义主题库中选取,自动章节编号、关键词下划线标记、引言卡片、目录导航、代码块、图片/GIF、作者签名。支持 Markdown / Word(.docx) / PDF / 纯文本输入(非 Markdown…
HKUDS/DeepTutor
Reads, creates and edits Word .docx files with python-docx, and drops to raw OOXML for tracked changes, comments and byte-exact edits.
genspark-ai/genoffice
Creates, converts, reads and edits real pptx, xlsx, docx and PDF files locally through the genoffice command line.
dataelement/bisheng
Builds or edits Word .docx documents inside BiSheng's code executor with python-docx, handling Chinese fonts, tables of contents, page numbers and official-document layout.
LeoYeAI/openclaw-master-skills
Manages pipelines on a DevOps quality and efficiency platform through its OpenAPI: list workspaces and templates, create, update, run and cancel pipelines, and read run records.
LeoYeAI/openclaw-master-skills
Patches OpenClaw's Feishu extension so an edited document triggers an isolated agent session that reads the doc and replies inline, turning it into a live chat space.
LeoYeAI/openclaw-master-skills
Multi-context memory management system for OpenClaw agents with group-isolated storage, global shared memory, workspace organization, and group-specific skills isolation.
LeoYeAI/openclaw-master-skills
Runs a brand's AI-search visibility work end to end: diagnosing how AI platforms represent it, repositioning it, producing AI-optimized content and monitoring ongoing mentions.
LeoYeAI/openclaw-master-skills
Installs and authenticates the gws CLI, then automates Gmail, Drive, Sheets, Calendar, Docs, Chat and Tasks with ready-made recipes, persona bundles and security audits.
LeoYeAI/openclaw-master-skills
Runs four advisor roles, a fitness coach, nutritionist, data analyst and TCM practitioner, to build a health profile and track workouts, diet and wellness over time.
Works with
Categories
Professional Word document generator. An agent skill from LeoYeAI/openclaw-master-skills. Word Studio is an agent skill from LeoYeAI/openclaw-master-skills. Professional Word document generator.
Word Studio fits situations like: user needs to create reports; any professional document.
Run `npx skills add LeoYeAI/openclaw-master-skills --skill word-studio -a claude-code`. Or copy the skill folder (skills/word-studio in LeoYeAI/openclaw-master-skills) into .claude/skills/word-studio in your project. Claude Code loads it when a task matches its description.
Run `npx skills add LeoYeAI/openclaw-master-skills --skill word-studio -a codex`. Or copy the skill folder (skills/word-studio in LeoYeAI/openclaw-master-skills) into .agents/skills/word-studio in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add LeoYeAI/openclaw-master-skills --skill word-studio -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/word-studio, .gemini/skills/word-studio, .github/skills/word-studio and .opencode/skills/word-studio in your project.
SKILL.md names no scripts, command-line tools or credentials: Word Studio is instructions for the agent only. Our summary lists: Python 3.
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Word Studio is published under the MIT-0 licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.
About 4.7k tokens (SKILL.md is roughly 19k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 1k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Word Studio: Markitdown (ImCa0/just-laws, 782 stars), DOCX (rvdbreemen/OTGW-firmware, 207 stars), Gzh Design (isjiamu/gzh-design-skill, 3.9k stars) and Word Document Reader and Writer (HKUDS/DeepTutor, 41k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
LeoYeAI (a GitHub user) maintains it in LeoYeAI/openclaw-master-skills, which has 2,160 GitHub stars. The repository holds 1,235 skills in this directory. The repository was last updated on July 20, 2026.
Source: LeoYeAI/openclaw-master-skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.