Docx Generator

jwynia/agent-skills/skills/general/document-processing/word/docx-generator

作者 jwyniae02ec7e226a6MIT168 個星標收錄於 2026年10月8日更新於 2026年10月8日儲存庫7 個月前更新

Create and manipulate Word DOCX files programmatically. Use when the user needs to generate documents, modify DOCX templates, extract document content, or automate Word document workflows. Supports both template-based generation (for branding compliance) and from-scratch creation. Keywords: Word, DOCX, document, report, template, contract, letter, corporate, branding.

包含腳本Documents & Office
AI 產生的概覽

使用 Deno 指令碼,透過範本或 JSON 規格建立與編輯 Word DOCX 檔案。

功能
此技能以程式化方式產生與操作 Word DOCX 文件。它能分析現有的 DOCX 範本,清點其中的文字、表格與預留位置,再以提供的值取代預留位置標籤,同時保留原有格式。它也能依 JSON 規格從零建立文件,涵蓋標題、帶格式的文字片段、表格、頁首、頁尾、清單與超連結。技能附帶三個 Deno 指令碼,分別用於分析、依範本產生以及從零產生。
適用情境
當使用者需要自動產生或修改 Word 文件(例如報告、合約或信函)時使用。它適合填寫品牌範本、取代預留位置,以及從現有 DOCX 檔案擷取文字、表格與結構。不適用於檢視文件、舊版 .doc 格式、複雜合併列印或輸出 PDF。
執行需求
需要安裝 Deno,並具備 --allow-read 與 --allow-write 權限。範本模式需要輸入 DOCX 檔案與取代內容 JSON 檔案;從零產生模式需要 JSON 規格檔案。規格中引用的圖片必須存在且為支援的格式(PNG、JPEG、GIF)。附帶三個可執行的 TypeScript 指令碼。

DOCX Generator

When to Use This Skill

Use this skill when:

  • Creating Word documents programmatically from data or specifications
  • Populating branded templates with dynamic content while preserving corporate styling
  • Extracting text, tables, and structure from existing DOCX files for analysis
  • Finding and replacing placeholder text like {{TITLE}} or ${author}
  • Automating document generation workflows (reports, contracts, letters)

Do NOT use this skill when:

  • User wants to open/view documents (use native Word or viewer)
  • Complex mail merge with data sources (use native Word mail merge)
  • Working with older .doc format (DOCX only)
  • PDF output is needed (use pdf-generator skill instead)

Prerequisites

  • Deno installed (https://deno.land/)
  • Input DOCX files for template-based operations
  • JSON specification for scratch generation

Quick Start

Two Modes of Operation

  1. Template Mode: Modify existing branded templates

    • Analyze template to find placeholders
    • Replace {{PLACEHOLDERS}} with actual content
  2. Scratch Mode: Create documents from nothing using JSON specifications

Instructions

Mode 1: Template-Based Generation

Step 1a: Analyze the Template

Extract text inventory to understand what can be replaced:

bash
deno run --allow-read scripts/analyze-template.ts corporate-template.docx > inventory.json

Output (inventory.json):

json
{  "filename": "corporate-template.docx",  "paragraphCount": 25,  "tableCount": 2,  "imageCount": 1,  "paragraphs": [    {      "index": 0,      "style": "Title",      "fullText": "{{DOCUMENT_TITLE}}",      "runs": [        { "text": "{{DOCUMENT_TITLE}}", "bold": true, "fontSize": 28 }      ]    }  ],  "placeholders": [    { "tag": "{{DOCUMENT_TITLE}}", "location": "paragraph", "paragraphIndex": 0 },    { "tag": "{{AUTHOR}}", "location": "footer-default", "paragraphIndex": 0 },    { "tag": "${date}", "location": "table", "tableIndex": 0, "cellLocation": "R1C2" }  ]}
Step 1b: Create Replacement Specification

Create replacements.json:

json
{  "textReplacements": [    { "tag": "{{DOCUMENT_TITLE}}", "value": "Q4 2024 Financial Report" },    { "tag": "{{AUTHOR}}", "value": "Finance Department" },    { "tag": "${date}", "value": "December 15, 2024" },    { "tag": "{{COMPANY}}", "value": "Acme Corporation" }  ],  "includeHeaders": true,  "includeFooters": true}
Step 1c: Generate Output
bash
deno run --allow-read --allow-write scripts/generate-from-template.ts \  corporate-template.docx replacements.json output.docx

Mode 2: From-Scratch Generation

Step 2a: Create Specification

Create spec.json:

json
{  "title": "Quarterly Report",  "creator": "Finance Team",  "styles": {    "defaultFont": "Calibri",    "defaultFontSize": 11  },  "sections": [    {      "header": {        "paragraphs": [          { "text": "Acme Corporation", "alignment": "right" }        ]      },      "footer": {        "paragraphs": [          { "text": "Confidential", "alignment": "center" }        ]      },      "content": [        {          "text": "Q4 2024 Financial Report",          "heading": 1,          "alignment": "center"        },        {          "runs": [            { "text": "Executive Summary: ", "bold": true },            { "text": "This report provides an overview of our financial performance for Q4 2024." }          ]        },        { "pageBreak": true },        {          "text": "Revenue Breakdown",          "heading": 2        },        {          "rows": [            {              "cells": [                { "content": [{ "text": "Category" }], "shading": "DDDDDD" },                { "content": [{ "text": "Amount" }], "shading": "DDDDDD" },                { "content": [{ "text": "Change" }], "shading": "DDDDDD" }              ],              "isHeader": true            },            {              "cells": [                { "content": [{ "text": "Product Sales" }] },                { "content": [{ "text": "$1,250,000" }] },                { "content": [{ "text": "+15%" }] }              ]            },            {              "cells": [                { "content": [{ "text": "Services" }] },                { "content": [{ "text": "$750,000" }] },                { "content": [{ "text": "+8%" }] }              ]            }          ],          "width": 100,          "borders": true        }      ]    }  ]}
Step 2b: Generate Document
bash
deno run --allow-read --allow-write scripts/generate-scratch.ts spec.json output.docx

Examples

Example 1: Contract Generation

Scenario: Generate contracts from a branded template.

Steps:

bash
# 1. Analyze template for replaceable contentdeno run --allow-read scripts/analyze-template.ts contract-template.docx --pretty
# 2. Create replacements.json with client data# 3. Generate contractdeno run --allow-read --allow-write scripts/generate-from-template.ts \  contract-template.docx replacements.json acme-contract.docx

Example 2: Report with Tables

Scenario: Generate a data report with tables and formatting.

spec.json:

json
{  "title": "Sales Report",  "sections": [{    "content": [      { "text": "Monthly Sales Report", "heading": 1 },      { "text": "January 2025", "heading": 2 },      {        "runs": [          { "text": "Total Sales: ", "bold": true },          { "text": "$125,000", "color": "2E7D32" }        ]      }    ]  }]}

Example 3: Letter with Headers/Footers

Scenario: Create a formal letter with letterhead.

spec.json:

json
{  "sections": [{    "header": {      "paragraphs": [        { "text": "ACME CORPORATION", "alignment": "center", "runs": [{"text": "ACME CORPORATION", "bold": true, "fontSize": 16}] },        { "text": "123 Business Ave, City, ST 12345", "alignment": "center" }      ]    },    "content": [      { "text": "December 15, 2024", "alignment": "right" },      { "text": "" },      { "text": "Dear Valued Customer," },      { "text": "" },      { "text": "Thank you for your continued business..." },      { "text": "" },      { "text": "Sincerely," },      { "text": "John Smith" },      { "runs": [{ "text": "CEO", "italic": true }] }    ],    "footer": {      "paragraphs": [        { "text": "www.acme.com | [email protected]", "alignment": "center" }      ]    }  }]}

Script Reference

ScriptPurposePermissions
analyze-template.tsExtract text, tables, placeholders from DOCX--allow-read
generate-from-template.tsReplace placeholders in templates--allow-read --allow-write
generate-scratch.tsCreate DOCX from JSON specification--allow-read --allow-write

Specification Reference

Paragraph Options

PropertyTypeDescription
textstringSimple text content
runsarrayFormatted text runs (for mixed formatting)
heading1-6Heading level
alignmentstringleft, center, right, justify
bulletbooleanBulleted list item
numberingbooleanNumbered list item
spacingobjectbefore, after, line spacing
indentobjectleft, right, firstLine indentation
pageBreakBeforebooleanInsert page break before paragraph

Text Run Options

PropertyTypeDescription
textstringText content
boldbooleanBold formatting
italicbooleanItalic formatting
underlinebooleanUnderline formatting
strikebooleanStrikethrough
fontSizenumberFont size in points
fontstringFont family name
colorstringText color (hex, no #)
highlightstringHighlight color
superScriptbooleanSuperscript
subScriptbooleanSubscript

Table Options

PropertyTypeDescription
rowsarrayArray of row specifications
widthnumberTable width as percentage
bordersbooleanShow table borders

Hyperlink Options

PropertyTypeDescription
textstringLink text
urlstringTarget URL
boldbooleanBold formatting
italicbooleanItalic formatting

Common Issues and Solutions

Issue: Placeholders not being replaced

Symptoms: Output DOCX still contains {{PLACEHOLDER}} tags.

Solution:

  1. Run analyze-template.ts to verify exact tag text
  2. Tags may be split across XML runs - the script consolidates these automatically
  3. Ensure includeHeaders and includeFooters are true if placeholders are there

Issue: Formatting lost after replacement

Symptoms: Replaced text doesn't match original formatting.

Solution:

  • Text replacement preserves the formatting of the original placeholder
  • Ensure placeholder is formatted the way you want the final text to appear

Issue: Images not appearing

Symptoms: Image elements are blank in output.

Solution:

  1. Use paths relative to the spec.json file location
  2. Verify image file exists and is readable
  3. Check supported formats: PNG, JPEG, GIF

Issue: Table cell content incorrect

Symptoms: Table cells have wrong content or formatting.

Solution:

  • Each cell's content must be an array of paragraph specifications
  • Use shading for background color, verticalAlign for alignment

Limitations

  • DOCX only: Does not support legacy .doc format
  • No track changes: Cannot add or process track changes
  • No comments: Cannot add document comments
  • No macros: Cannot include VBA macros
  • Basic numbering: Limited support for complex numbering schemes
  • Text run splitting: Word may split text across XML elements; script handles common cases

Related Skills

  • pptx-generator: For creating PowerPoint presentations
  • xlsx-generator: For creating Excel spreadsheets
  • pdf-generator: For creating PDF documents

來源與署名

來源:jwynia/agent-skills位於skills/general/document-processing/word/docx-generator提交e02ec7e

授權條款: MIT

內容歸原作者所有。SourceWeft 從公開儲存庫中收錄這些內容。

檢舉或申請下架