Ваш постачальник був придбаний, і «ACME Corp» тепер «Globex Ltd» у кожному контракті, графіку, бюджеті та презентації, які його згадують. За допомогою локально запущеного сервера GroupDocs.Editor MCP, Claude Desktop, Cursor або Copilot виконують це пакетно: для кожного файлу в папці викликається replace_text, зберігається форматування, повідомляється, скільки входжень змінено, і нічого не записується для файлів, у яких старе ім’я не згадувалося. Нічого не завантажується і жоден оригінал не перезаписується:

Перейменувати ACME Corp у Globex Ltd у всіх документах у папці contracts, зберегти форматування та надати підрахунок для кожного файлу.

Крок‑за‑кроком версія описана в документації: Як знайти та замінити текст у всій папці документів, не порушуючи форматування.

Чому це завдання для інструменту, а не для моделі?

Тому що результат має бути перевіряним. Сорок документів — занадто багато, щоб порівнювати їх візуально, а модель, яка «оновила всі контракти», не дає нічого, проти чого можна перевіряти. Інструмент пошуку‑заміни дає число для кожного файлу. Ці числа — аудиторський слід: ви знаєте, які файли змінилися, на скільки, і які не потребували змін.

Також це має бути «нудно» у правильному сенсі. Назва компанії, виділена жирним, залишається жирною, таблиця тарифів зберігає свою сітку, заголовки зберігають свої стилі. Модель ніколи не переписує документ: движок відкриває його, замінює слова і записує копію. Одна особливість сервера 26.10.0: ця копія записується з HTML‑моделі редагування, і нижній колонтитул Word не проходить через неї. Контракт, у якому постачальник згадується у нижньому колонтитулі, потребує HTML‑циклу з пагінацією; FAQ перераховує, що зберігає Word‑документ.

Що бачить агент

Знято з GroupDocs.Editor.Mcp 26.10.0 на невеликому синтетичному наборі: угода про надання послуг, NDA, лист‑вітання, тристорінковий бюджет і трислайдна презентація.

-> replace_text {"file":{"filePath":"contracts/msa-northwind.docx"},
     "find":"ACME Corp","replace":"Globex Ltd","wholeWord":true}
<- Replaced 6 occurrence(s) of 'ACME Corp' in 'msa-northwind.docx'
   Saved to: …/msa-northwind_edited.docx

-> replace_text {"file":{"filePath":"contracts/nda-northwind.docx"}, ...}
<- Replaced 1 occurrence(s) of 'ACME Corp' in 'nda-northwind.docx'

-> replace_text {"file":{"filePath":"contracts/welcome-letter.docx"}, ...}
<- Text replacement found no matches for 'ACME Corp' in
   'welcome-letter.docx'. No file was written.

-> replace_text {"file":{"filePath":"budget.xlsx"}, ..., "worksheet":1}
<- Replaced 1 occurrence(s) of 'ACME Corp' in worksheet 1 of 3 of
   'budget.xlsx'

-> replace_text {"file":{"filePath":"review.pptx"}, ..., "slide":1}
<- Replaced 1 occurrence(s) of 'ACME Corp' in slide 1 of 3 of
   'review.pptx'

Звіт агента пишеться сам: шість у угоді, одне у NDA, жодного у листі‑вітанні, одне у підсумковому бюджеті, одне у першому слайді.

Цикл

contracts/ + budget.xlsx + review.pptx
   |
   +-- for each file:
   |      replace_text {"find":"ACME Corp","replace":"Globex Ltd",
   |                    "wholeWord":true}   (+ "worksheet"/"slide")
   |         -> "Replaced N occurrence(s) ..."  -> <name>_edited.<ext>
   |         -> "found no matches ... No file was written."
   |
   '-- report: file -> count; files with 0 listed separately

Дві звички роблять цикл надійним. Використовуйте wholeWord: true для імен, щоб «ACME Corp» не збігалося всередині «ACME Corporation Holdings». І попросіть агента перелічити файли з нульовими збігами, бо нуль у файлі, який ви очікували змінити, — це саме те, що варто перевірити вдруге.

Перевірка пакету перед заміною

Відредаговані копії розташовуються поруч з оригіналами, доки ви не вирішите інакше, і саме в цей момент їх слід перевірити. Три недорогі перевірки ловлять майже всі проблеми. Порівняйте підрахунок для кожного файлу з очікуваним: угода, у якій постачальник згадується на кожній сторінці, не повинна повідомляти лише один випадок. Не покладайтеся на повторний запуск тієї ж заміни: фраза, розбита між різними форматуваннями, пропуститься і під час другого запуску, і «found no matches» виглядатиме як «все чисто». Попросіть агента виконати extract_html для кожної відредагованої копії; її попередній перегляд у вигляді простого тексту об’єднує фрагменти форматування, тому залишок «ACME Corp» з’явиться там. Варіанти написання («Acme Corp.» з крапкою, «ACME Corporation») вимагають окремого проходу з matchCase: false або регулярним виразом. І відкрийте по одній відредагованій копії кожного типу — контракт, електронну таблицю та презентацію — щоб підтвердити, що форматування і нижній колонтитул збереглися. Лише після цього перемістіть файли _edited на місце оригіналів або дозвольте вашій системі документів їх версіонувати.

Шаблони, регістр і формат в одному виклику

Перейменування — найпоширеніший випадок, але той самий інструмент охоплює інші завдання сімейства «зробити формулювання послідовним». У тому ж тестовому запуску:

-> replace_text {"file":{"filePath":"contracts/nda-northwind.docx"},
     "find":"v2\\.3\\b","replace":"v2.4","regex":true,
     "outputName":"nda-northwind-v2.4.docx"}
<- Replaced 1 occurrence(s) of 'v2\.3\b' in 'nda-northwind.docx'

-> replace_text {"file":{"filePath":"contracts/nda-northwind.docx"},
     "find":"acme corp","replace":"Globex Ltd","matchCase":false,
     "format":"pdf"}
<- Replaced 1 occurrence(s) of 'acme corp' in 'nda-northwind.docx'
   Saved to: …/nda-northwind_edited.pdf

regex: true приймає .NET‑регулярний вираз, що дозволяє підняти версію або змінити формат дати у всій папці. matchCase: false ловить невідповідний регістр. format: "pdf" редагує і конвертує в один крок, створюючи копію, яка йде на інший бік.

Відступ для агентів‑програмістів

Той самий шаблон працює в репозиторії. Примітки до випуску у DOCX та специфікації у XLSX невидимі для sed; Claude Code з цим сервером може підняти рядок версії в обох як частину завдання випуску. Додайте правило до інструкцій проєкту, щоб агент використовував інструмент, а не намагався розпаковувати Office‑файли вручну:

To change wording in .docx/.xlsx/.pptx/.pdf files in this repo, use the
groupdocs-editor MCP server's replace_text (wholeWord for names, regex for
versions). Report the count per file. Never rewrite an Office file by hand.

Чесні обмеження

  • Збіги відбуваються лише в межах одного фрагмента форматування. У нашій угоді сьоме «ACME Corp», де «ACME» було курсивом, не було замінено, і це показало підрахунок у шість. Фрази, розбиті між стилями, потребують HTML‑циклу.
  • Кожен результат зберігається в корені вихідної папки як <name>_edited.<ext>, навіть якщо оригінал був у підпапці. Жоден файл не перезаписується: якщо ім’я вже зайняте, додається номер (msa-northwind_edited (1).docx), тому вказуйте outputName, коли можливі колізії.
  • На сервері 26.10.0 відредагована копія Word‑документа втрачає нижній колонтитул, а елементи управління вмістом сплющуються до простого тексту. Перевіряйте документи, у яких старе ім’я знаходиться в нижньому колонтитулі.
  • Електронні таблиці та презентації редагуються по одному листу або слайду за виклик. У режимі оцінки можна редагувати лише перші два, і сервер повідомляє про це: «Evaluation mode edits only the first 2 slides of a presentation; slide 3 is beyond them.»
  • Режим оцінки також додає банерний рядок до кожного вихідного файлу, а PDF довший за дві сторінки відхиляється.

FAQ

Чи може він замінити текст у Word, Excel та PowerPoint в одному пакеті?
Так. Агент викликає той самий інструмент для кожного файлу і додає worksheet або slide для електронних таблиць і презентацій.

Як дізнатися, які файли були змінені?
Кожен виклик повертає підрахунок, а файли без збігів взагалі не записуються. Попросіть агента надати таблицю по файлах.

Чи будуть оригінали перезаписані?
Ні. Кожне редагування створює новий файл; оригінали залишаються незмінними, доки ви самі їх не заміните.

Поглибити