Word Studio
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文档生成、专业报告、论文模板、合同制作。
安装 / 下载方式
TotalClaw CLI推荐
totalclaw install skilldb:tobewin~word-studiocURL直接下载,无需登录
curl -fsSL https://skills.taituai.com/api/skills/skilldb%3Atobewin~word-studio/file -o word-studio.mdGit 仓库获取源码
git clone https://github.com/openclaw/skills/commit/5b0d08d08b941075365813adfcb20df8f2f716ea# Word Studio
Professional Word document generator that creates publication-ready documents in docx/doc formats.
## Features
- 📄 **Multi-Format**: Output as .docx or .doc
- 🎨 **Professional Templates**: 20+ document types
- 📊 **Charts & Tables**: Embedded Excel-style data
- 🖼️ **Image Support**: Insert images with professional layout
- 📑 **Auto TOC**: Generate table of contents
- 🌍 **Multi-Language**: Chinese, English, Japanese, Korean, etc.
- ✅ **WPS/Office Compatible**: Works everywhere
- 📐 **Smart Layout**: Auto-adjust for different content types
## Trigger Conditions
- "帮我写一份报告" / "Write a report for me"
- "生成Word文档" / "Generate Word document"
- "制作一份简历" / "Create a resume"
- "写论文" / "Write a paper"
- "制作标书" / "Create a bid document"
- "写工作总结" / "Write work summary"
- "生成会议纪要" / "Generate meeting minutes"
- "word-studio"
## Document Types
### Business (商务)
- 工作报告(周报/月报/年报)
- 项目计划书
- 商业计划书
- 投标书/标书
- 商务合同
- 会议纪要
### Academic (学术)
- 学术论文
- 开题报告
- 毕业论文
- 实验报告
- 文献综述
- 研究计划
### Government (公文)
- 通知公告
- 请示报告
- 函件
- 会议纪要
- 工作总结
- 调研报告
### Personal (个人)
- 中文简历
- 英文简历
- 求职信
- 自我介绍
- 个人陈述
### Legal (法律)
- 合同协议
- 授权委托书
- 法律意见书
- 起诉状
- 公证书
### Financial (财务)
- 财务报告
- 审计报告
- 预算方案
- 投资分析
- 尽职调查报告
---
## Step 1: Understand User Requirements
```
请提供以下信息:
文档类型:(报告/论文/简历/合同/其他)
文档标题:
主要内容:
格式要求:(docx/doc)
语言:(中文/英文)
特殊要求:(图表/目录/页眉页脚等)
```
---
## Step 2: Generate Document
### Python Script Template
```python
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}")
PYEOF
```
---
## Template Library
### 1.