---
name: office-document-editor-d165dcd28bb1
description: Professional DOCX/PPTX document editing with tracked changes, formatting preservation, highlights, strikethrough, and Git version control.
license: MIT
metadata:
  openclaw:
    requires:
      bins:
        - uv
        - curl
    install:
      - id: uv-env
        kind: uv
        path: .
        bins: [docx_editor.py, pptx_editor.py, generate_diff.py]
---
# Universal Office Document Editor

Professional document editing for **any** DOCX/PPTX file from **any source**.

## Quick Reference

| Task | Approach |
|------|----------|
| Fetch file from upload | `bash scripts/fetch_file.sh upload` |
| Fetch file from URL | `bash scripts/fetch_file.sh https://example.com/file.docx` |
| Fetch file from SFTP | `bash scripts/fetch_file.sh sftp://user@host:/path/file.docx` |
| Edit DOCX | `uv run python scripts/docx_editor.py input.docx output.docx edits.json` |
| Edit PPTX | `uv run python scripts/pptx_editor.py input.pptx output.pptx edits.json` |
| Generate diff | `uv run python scripts/generate_diff.py old.docx new.docx diff.md` |
| Interactive mode | `bash scripts/interactive_edit.sh` |

---

## File Sources

### Uploaded Files (Chat Attachments)

```bash
# Get latest uploaded DOCX
bash scripts/fetch_file.sh upload output.docx

# Get latest uploaded PPTX
bash scripts/fetch_file.sh upload output.pptx
```

Location: `~/.openclaw/workspace/media/inbound/file_*.docx`

### Local Filesystem Paths

```bash
# Copy from local path
bash scripts/fetch_file.sh ~/Documents/report.docx output.docx

# Or direct path
bash scripts/fetch_file.sh /absolute/path/file.pptx output.pptx
```

### Public URLs

```bash
# Download from URL
bash scripts/fetch_file.sh https://example.com/document.docx output.docx
```

### SFTP/SSH Remote Files

```bash
# Fetch via SFTP
bash scripts/fetch_file.sh sftp://user@host:/path/file.docx output.docx
```

---

## Creating Edit Rules

Create `edits.json` with your editing instructions:

```json
{
  "description": "Edit description",
  "replacements": [
    {
      "search": "old text",
      "replace": "new text",
      "style": "highlight"
    }
  ],
  "additions": [
    {
      "after": "after this text",
      "text": "add this text",
      "style": "highlight"
    }
  ],
  "slides": [
    {
      "action": "rearrange",
      "order": [0, 2, 1, 3]
    }
  ]
}
```

### Supported Styles

- `replace` - Direct replacement
- `highlight` - Yellow highlight
- `delete` - Strikethrough
- `bold` - Bold text
- `underline` - Underline

### Slide Actions (PPTX only)

- `rearrange` - Change slide order
- `add` - Add new slide
- `remove` - Delete slide

---

## Editing Documents

### Edit DOCX

```bash
uv run python scripts/docx_editor.py input.docx output.docx edits.json
```

Features:
- Paragraph text editing
- Table cell editing
- Format preservation
- Multiple replacements
- Text additions

### Edit PPTX

```bash
uv run python scripts/pptx_editor.py input.pptx output.pptx edits.json
```

Features:
- Slide text replacement
- Slide rearrangement
- Add/remove slides
- Format preservation

### Generate Diff Report

```bash
uv run python scripts/generate_diff.py input.docx output.docx diff-report.md
```

Output: Standard Unified Diff format in Markdown.

---

## Complete Workflow

### Step 1: Fetch File

```bash
# From upload
bash scripts/fetch_file.sh upload input.docx

# From URL
bash scripts/fetch_file.sh https://example.com/file.docx input.docx

# From local path
bash scripts/fetch_file.sh ~/Documents/file.docx input.docx
```

### Step 2: Create Edit Rules

```json
{
  "description": "IRB Review Response",
  "replacements": [
    {
      "search": "2026 年 2 月 28 日",
      "replace": "2026 年 8 月 31 日",
      "style": "highlight"
    }
  ]
}
```

### Step 3: Execute Edit

```bash
uv run python scripts/docx_editor.py input.docx output.docx edits.json
```

### Step 4: Generate Reports

```bash
# Unified Diff
uv run python scripts/generate_diff.py input.docx output.docx diff.md

# Convert to Markdown
uv run markitdown output.docx > output.md
```

### Step 5: Version Control

```bash
git add *.docx *.md diff.md
git commit -m "Edit: Description of changes"
```

---

## Interactive Mode

For guided editing:

```bash
bash scripts/interactive_edit.sh
```

This will prompt you through:
1. File source selection
2. Edit type selection
3. Details collection
4. Output location

---

## Examples

### Example 1: Text Replacement with Highlight

```json
{
  "replacements": [
    {
      "search": "February 28, 2026",
      "replace": "August 31, 2026",
      "style": "highlight"
    }
  ]
}
```

### Example 2: Add Text After Question

```json
{
  "additions": [
    {
      "after": "What is the research topic?",
      "text": "[ANSWER] Data Structures and Algorithms",
      "style": "highlight"
    }
  ]
}
```

### Example 3: Rearrange Slides

```json
{
  "slides": [
    {
      "action": "rearrange",
      "order": [0, 2, 1, 3, 4]
    }
  ]
}
```

---

## Notes

### Format Preservation

- ✅ Text, paragraphs, tables: Fully preserved
- ✅ Highlights, strikethrough, bold: Supported
- ⚠️ Complex styles (custom themes): May be lost
- ❌ Images, charts: Manual handling required

### Table Text Replacement

python-docx requires **exact match** (including spaces, punctuation, newlines) for table text.

**Solutions:**
1. Use shorter search strings
2. Use `markitdown` to preview table content first
3. Use exact match in JSON

### Git Best Practices

- Use local Git repo (do not upload to GitHub)
- Add sensitive files to `.gitignore`
- Backup to secure location regularly

---

## Dependencies

- **uv**: Package management and virtual environment
- **python-docx**: DOCX editing
- **python-pptx**: PPTX editing
- **mammoth**: DOCX to Markdown conversion
- **markitdown**: Universal document conversion
- **curl**: URL downloads
- **sftp**: SFTP file transfers (optional)

### Installation

```bash
cd ~/.openclaw/workspace/skills/office-document-editor
uv sync
```

---

## Troubleshooting

### "No replacements made"

**Cause:** Text doesn't match exactly

**Solution:**
```bash
# Preview content
uv run markitdown input.docx

# Use exact text from preview
```

### "Virtual environment not found"

**Solution:**
```bash
cd ~/.openclaw/workspace/skills/office-document-editor
uv sync
```

### "File not found"

**Solutions:**
- Check file path is correct
- Try uploading the file again
- Verify URL is accessible
- Check SFTP credentials

---

## Scripts Reference

### fetch_file.sh

Universal file fetcher for all source types.

```bash
bash scripts/fetch_file.sh <source> [output_filename]
```

Sources:
- `upload` - Latest uploaded file
- `/path/to/file` - Local path
- `https://...` - Public URL
- `sftp://...` - SFTP remote

### docx_editor.py

Edit Word documents with formatting.

```bash
uv run python scripts/docx_editor.py input.docx output.docx edits.json
```

### pptx_editor.py

Edit PowerPoint presentations.

```bash
uv run python scripts/pptx_editor.py input.pptx output.pptx edits.json
```

### generate_diff.py

Generate Unified Diff reports.

```bash
uv run python scripts/generate_diff.py old.docx new.docx diff.md
```

### interactive_edit.sh

Interactive guided editing.

```bash
bash scripts/interactive_edit.sh
```

### workflow_complete.sh

Complete automated workflow.

```bash
bash scripts/workflow_complete.sh input.docx edits.json
```


---
Source attribution: modbender
Original project: https://github.com/modbender/skill-library-mcp/blob/d9c8fe903b5b4e82237dbe8d0df8567783022e18/data/office-document-editor/SKILL.md
License: MIT
License information: https://opensource.org/license/mit
Original upstream instructions; downloaded from Mega AI Hub.

## Upstream license notice

MIT License

Copyright (c) 2025 skill-library-mcp contributors

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.



# Mega AI Hub resource metadata

Creator / publisher: modbender
Original project: https://github.com/modbender/skill-library-mcp/blob/d9c8fe903b5b4e82237dbe8d0df8567783022e18/data/office-document-editor/SKILL.md
Attribution basis: Source repository record

Fields of work: Content & Media, Development & Engineering, Product Management, Project & Program Management
Roles: Backend Developer, Frontend Developer, Product Manager, Project Manager, Technical Writer
Specialties: API, Word Documents
Tools: Curl, Uv
Country applicability: Country not specified
Classification basis: Source catalog labels
Instruction SHA-256: 10802fabacbd23751775da29b1817485f2bdf2d0210e6b30a2168b1b15d0beb7
