<?xml version="1.0" encoding="utf-8"?> 
<rss version="2.0"
  xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd"
  xmlns:atom="http://www.w3.org/2005/Atom">

<channel>

<title>Здоровий глузд: дописи з тегом chatgpt</title>
<link>https://blog-archive.alexkolodko.com/tags/chatgpt/</link>
<description>Олександр Колодько. Інформаційний та навігаційний дизайнер. Співзасновник команди ARC, співзасновник та головний дизайнер в Агентах змін (А3). Пишу про дизайн і цікаве мені · alexkolodko.com · wayfinding.systems</description>
<author></author>
<language>uk</language>
<generator>Aegea 11.3 (v4134)</generator>

<itunes:subtitle>Олександр Колодько. Інформаційний та навігаційний дизайнер. Співзасновник команди ARC, співзасновник та головний дизайнер в Агентах змін (А3). Пишу про дизайн і цікаве мені · alexkolodko.com · wayfinding.systems</itunes:subtitle>
<itunes:image href="" />
<itunes:explicit></itunes:explicit>

<item>
<title>Конвеєр: автоматизоване нарізання PDF на різні файли</title>
<guid isPermaLink="false">124</guid>
<link>https://blog-archive.alexkolodko.com/all/automation-pdf-split/</link>
<pubDate>Thu, 30 Nov 2023 17:07:41 +0200</pubDate>
<author></author>
<comments>https://blog-archive.alexkolodko.com/all/automation-pdf-split/</comments>
<description>
&lt;p&gt;В роботі над дизайном багатьох макетів буває дуже зручно їх всі робити в одному файлі: можна простіше копіювати елементи та стилі, мати єдину базу символів, бачити загальну картинку одразу на всіх макетах тощо.&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://blog-archive.alexkolodko.com/pictures/ai-file.jpg" width="2400" height="1381" alt="" /&gt;
&lt;div class="e2-text-caption"&gt;Багато макетів різних розмірів у Adobe Illustrator&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Але редактори погано пристосовані для збереження потім таких робочих файлів, що йтимуть на виробництво. Процес збереження купи файлів починає нагадувати нудну справу, в якій ви вибираєте що зберігати, якось розділяєте на окремі файли та при збереженні у різні формати правильно називаєте все. Така безглузда трата робочого часу і це нууудно 🥱. І в такій ручній роботі точно виникатимуть помилки, тож доведеться починати наново.&lt;/p&gt;
&lt;p&gt;У ІнДизайні є можливість зберігати PDF посторінково. Але можливості обмежені й потім все одно треба перейменовувати файли, як треба. У Ілюстраторі взагалі така опція є тільки для збереження окремих артбордів для екранів (у RGB), тож для друку це не підходить. І вирішувати це можна сторонніми скриптами, як-то скрипт для збереження файлу у різні формати, який ми робили для своєї роботи.&lt;/p&gt;
&lt;p&gt;Але це не вирішує задачу, коли у вас частина макетів двосторонні й ці різні сторони мають зберегтись, наприклад, в один PDF на кілька сторінок.&lt;/p&gt;
&lt;p&gt;А якщо вже після збереження потрібно буде внести якісь зміни, то весь цей нудний процес треба робити спочатку і добре якщо не для всіх файлів.&lt;/p&gt;
&lt;h2&gt;Конвеєр та алгоритм&lt;/h2&gt;
&lt;p&gt;Мені цікаво шукати і організовувати дизайн-конвеєр під такі задачі, оскільки вони точно повторюватимуться, тож автоматизація дає шалену економію часу, який можна витратити на цікавіші речі.&lt;/p&gt;
&lt;p&gt;Колись писав про &lt;a href="https://blog.alexkolodko.com/all/mass-rename/"&gt;масове перейменування файлів&lt;/a&gt;, які перед цим нарізав в Акробаті на окремі файли. Але це все одно довго, треба ще швидше.&lt;/p&gt;
&lt;p&gt;Спочатку потрібно подумати над наявними можливостями й алгоритмом. Кожен редактор може за раз зберігати всі або діапазон сторінок у суцільний PDF-файл. Тож якщо мати інструкцію, яка скаже які сторінки мають піти в який файл і як ці файли назвати. Така інструкція — своєрідна «маска», яку можна застосувати для файлу.&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;1-2=filename01
3=filename02
4-5=filename03
6-8 10=filename04
…&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;де:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;1-2 — сторінки документа (може містити одну цифру, діапазон через дефіс, перелік окремих сторінок через пробіл, також доступні параметри початку і кінця документа &lt;tt&gt;start-10&lt;/tt&gt; чи &lt;tt&gt;57-end&lt;/tt&gt; )&lt;/li&gt;
&lt;li&gt;= — технічний розділювач (у назвах файлах його не повинно бути)&lt;/li&gt;
&lt;li&gt;filename01 — назва вашого майбутнього PDF-файлу, в який в який увійдуть сторінки з діапазону (без розширення .pdf)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;bash + PDFtk&lt;/h2&gt;
&lt;p&gt;Для цього bash (потрібна версія 4 і вище, перевіряється у терміналі через &lt;tt&gt;bash -v&lt;/tt&gt;, встановлюється через &lt;tt&gt; brew install bash&lt;/tt&gt;) та &lt;a href="https://www.pdflabs.com/tools/pdftk-server/"&gt;PDF Toolkit (PDFtk&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;За допомогою ChatGPT в кілька ітерацій зробив скрипт, що бере вказаний PDF-файл, окремо бере текстову «маску» у TXT, як масив назв, в яких&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;#!/bin/bash

input_file=&amp;quot;Tustan-Signs-All.pdf&amp;quot;
data_file=&amp;quot;range.txt&amp;quot;

# Read page ranges and custom names from the external file into a single array
readarray -t page_data &amp;lt; &amp;quot;$data_file&amp;quot;

# Loop through the array and split the PDF
for data in &amp;quot;${page_data[@]}&amp;quot;; do
    IFS=&amp;quot;=&amp;quot; read -r range custom_name &amp;lt;&amp;lt;&amp;lt; &amp;quot;$data&amp;quot;
    output_file=&amp;quot;${custom_name// /_}.pdf&amp;quot;  # Replace spaces with underscores in the custom name
    pdftk &amp;quot;$input_file&amp;quot; cat $range output &amp;quot;$output_file&amp;quot;
    echo &amp;quot;$output_file — Done&amp;quot;
done&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Для більшої універсальності я виніс вказання файлів, як аргументів у командному рядку. Тож тепер можна скопіювати скрипт у потрібну теку та запустити командою:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;bash splitter-pro.sh filename.pdf mask.txt&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;де:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;filename.pdf — назва вашого PDF-файлу&lt;/li&gt;
&lt;li&gt;mask.txt — текстовий файл з «маскою»&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Сам скрипт виглядає так ($1 — перший аргумент, тобто PDF-файл; $2 — другий аргумент, тобто TXT-файл):&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;#!/bin/bash

input_file=$1
data_file=$2

# Read page ranges and custom names from the external file into a single array. Requaire bash 4.0
readarray -t page_data &amp;lt; &amp;quot;$data_file&amp;quot;

# Loop through the array and split the PDF
for data in &amp;quot;${page_data[@]}&amp;quot;; do
    IFS=&amp;quot;=&amp;quot; read -r range custom_name &amp;lt;&amp;lt;&amp;lt; &amp;quot;$data&amp;quot;
    output_file=&amp;quot;${custom_name// /_}.pdf&amp;quot;  # Replace spaces with underscores in the custom name
    pdftk &amp;quot;$input_file&amp;quot; cat $range output &amp;quot;$output_file&amp;quot;
    echo &amp;quot;$output_file — Done&amp;quot;
done&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Приклад «маски», де спочатку номери сторінок, символ =, а далі назва файла (Проект-Знак-Точка-Розмір):&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;1-2=Tustan-WF-Sign-Т1-400x600
3=Tustan-WF-Sign-Т2.1-200x350
4=Tustan-WF-Sign-Т2.2-200x350
5=Tustan-WF-Sign-Т3.1-200x350
6=Tustan-WF-Sign-Т3.2-200x350
7-8=Tustan-WF-Sign-Т4.1-T4.2-200x600
9-10=Tustan-WF-Sign-Т4.3-T4.4-200x600
11=Tustan-WF-Sign-Т5.1-200x600
12=Tustan-WF-Sign-Т5.2-200x600
13=Tustan-WF-Sign-Т6.1-200x600
14=Tustan-WF-Sign-Т6.2-200x600
15=Tustan-WF-Sign-Т7.1-200x600
16=Tustan-WF-Sign-Т7.2-200x600
17=Tustan-WF-Sign-Т8.1-200x600
18=Tustan-WF-Sign-Т8.2-200x600
19=Tustan-WF-Sign-Т9.1-200x600
20=Tustan-WF-Sign-Т9.2-200x600
21=Tustan-WF-Sign-Т9.3-200x600
22-23=Tustan-WF-Sign-Т10-200x600
…&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Весь процес виглядає ось так:&lt;/p&gt;
&lt;div class="e2-text-video"&gt;
&lt;video src="https://blog-archive.alexkolodko.com/video/tustan-wf-signs-automation-x2.mp4#t=0.001" width="2560" height="1507.1428571429" controls alt="" /&gt;

&lt;div class="e2-text-caption"&gt;Розділення PDF-файлу по «масці»&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Також можна цей підхід використовувати для нарізання макетів по одному і одразу з правильним перейменуванням файлів. Колись робив скрипт для перейменування пачки файлів, але тепер можна цей крок пропустити й робити все швидше.&lt;/p&gt;
&lt;div class="e2-text-video"&gt;
&lt;video src="https://blog-archive.alexkolodko.com/video/metromap-tram-x2.mp4#t=0.001" width="2560" height="1477.9676158571" controls alt="" /&gt;

&lt;div class="e2-text-caption"&gt;Розділення на файли по одній сторінці&lt;/div&gt;
&lt;/div&gt;
&lt;h2&gt;Нюанси&lt;/h2&gt;
&lt;p&gt;&lt;b&gt;№1. &lt;/b&gt;Порядок артбордів/сторінок у файлі має завжди зберігатись і співпадає з «маскою». Тож при зміні порядку, треба міняти й маску.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;№2. &lt;/b&gt;При збереженні PDF з Ілюстратора рекомендую прибирати прапорець &lt;i&gt;Preserve Illustrator Editing Capabilities&lt;/i&gt;. Так при розділенні PDF у файлі не буде нічого, що було поза потрібного артборду. Якщо ж цей прапорець увімкнутий, то навіть якщо ви бачитиме у прев’ю лише один артборд, все одно при відкритті файлу в Ілюстраторі в ньому будуть всі артборди й об’єкти, що були в оригінальному AI-файлі.&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://blog-archive.alexkolodko.com/pictures/ai-save-pdf-settings.png" width="1436" height="1182" alt="" /&gt;
&lt;div class="e2-text-caption"&gt;Налаштування при збереженні PDF&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;b&gt;№3. &lt;/b&gt;Як і з будь-якою автоматизацією її треба уважно перевірити, коли створюєте. Наприклад, можна помилково вказати не ті сторінки в «масці» і файл нарізатиметься неправильно.&lt;/p&gt;
&lt;h2&gt;Бонус №1: запуск скрипку одразу в теці&lt;/h2&gt;
&lt;p&gt;Щоб ще прискорити процес і навіть не запускати консоль, то можна зібрати виконавчий файл .command, який запускатиме все в наявній теці. &lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;#!/bin/bash

# Change directory to be where the command is.
cd &amp;quot;$(cd &amp;quot;$(dirname &amp;quot;$0&amp;quot;)&amp;quot; &amp;gt; /dev/null &amp;amp;&amp;amp; pwd)&amp;quot;
 # Run script with arguments
bash pdf-splitter.sh metromap_tram_v1.12.pdf Metromap-Tram-Range.txt&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Єдина маніпуляція, яку треба зробити — дати системі права на виконання скрипту в нашій теці:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;chmod u+x splitter.command&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Таким чином у теку копіюються сам bash-скрипт, маска .txt, вхідний .pdf та у command файлі замінюються значення. Тепер просто зберігаєте PDF, запускайте файл, п’єте каву ☕️, готово.&lt;/p&gt;
&lt;div class="e2-text-video"&gt;
&lt;video src="https://blog-archive.alexkolodko.com/video/command-file-x2.mov#t=0.001" width="2560" height="1469.3914014517" controls alt="" /&gt;

&lt;div class="e2-text-caption"&gt;Скрипт упакований у виконавчий файл&lt;/div&gt;
&lt;/div&gt;
&lt;h2&gt;Бонус №2: артборди в AI → «маска»&lt;/h2&gt;
&lt;p&gt;Якщо ви називали артборди в Ілюстраторі так, як би ви хотіли мати готові файли, то можна теж це використати і скриптом вже в самому AI зберегти всі назви артбордів, як «маску» у текстовому файлі. Знову ChatGPT запропонував доволі простий скрипт, що робить на робочому столі готовий txt-файл з маскою.&lt;/p&gt;
&lt;div class="e2-text-video"&gt;
&lt;video src="https://blog-archive.alexkolodko.com/video/ai-artboards-to-txt-x2.mp4#t=0.001" width="2560" height="1470.8207705193" controls alt="" /&gt;

&lt;div class="e2-text-caption"&gt;Робота скрипта&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Трохи допиляв, що він робив одразу потрібний вигляд:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;// Function to export artboard names to a text file
function exportArtboardNames() {
    var doc = app.activeDocument;
    var artboards = doc.artboards;
    var file = new File(&amp;quot;~/Desktop/artboard_names.txt&amp;quot;);
    file.open(&amp;quot;w&amp;quot;);

    for (var i = 0; i &amp;lt; artboards.length; i++) {
        var artboard = artboards[i];
        var artboardName = artboard.name;
        file.writeln(&amp;quot;&amp;quot; + (i + 1) + &amp;quot;=&amp;quot; + artboardName);
    }

    file.close();
    alert(&amp;quot;Artboard names exported to ~/Desktop/artboard_names.txt&amp;quot;);
}

// Run the exportArtboardNames function
exportArtboardNames();&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Напевно було б можна написати скрипт саме для Ілюстратора, який би з «маскою» зберігав певні артборди, але всі подібні скрипти в Adobe Illustrator працюють доволі повільно. Тому найшвидше створювати конвеєр іншими інструментами.&lt;/p&gt;
&lt;h2&gt;Бонус №3: зробити зі скрипта окрему cli-програму (Mac OS)&lt;/h2&gt;
&lt;p&gt;Копіювати скрипт у кожну теку не зручно, тож можна піти далі і зробити з цього скрипта cli-програму, яку можна буде викликати просто у певній теці одразу з терміналу (описав як зробити це у Mac OS, але думаю у Windows це так само можливо; якщо хтось напише як це зробити, то додам у статтю).&lt;/p&gt;
&lt;p&gt;Для цього модифікуємо спочатку сам скрипт. У першому рядку міняємо шлях до bash:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;#!/usr/local/bin/bash

input_file=$1
data_file=$2

# Read page ranges and custom names from the external file into a single array. Requaire bash 4.0
readarray -t page_data &amp;lt; &amp;quot;$data_file&amp;quot;

# Loop through the array and split the PDF
for data in &amp;quot;${page_data[@]}&amp;quot;; do
    IFS=&amp;quot;=&amp;quot; read -r range custom_name &amp;lt;&amp;lt;&amp;lt; &amp;quot;$data&amp;quot;
    output_file=&amp;quot;${custom_name// /_}.pdf&amp;quot;  # Replace spaces with underscores in the custom name
    pdftk &amp;quot;$input_file&amp;quot; cat $range output &amp;quot;$output_file&amp;quot;
    echo &amp;quot;$output_file — Done&amp;quot;
done&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Потім краще прибрати розширення і назвати файл так, як ви будете викликати команду. У моєму випадку — &lt;i&gt;pdfsplitter&lt;/i&gt;.&lt;/p&gt;
&lt;p&gt;Далі скопіювати файл у директорію /&lt;i&gt;usr/local/bin&lt;/i&gt;, можна одразу в терміналі:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;sudo cp pdfsplitter /usr/local/bin&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Тепер можна у терміналі викликати нашу команду. Якщо ж при цьому буде відображатись помилка доступу, на кшталт, «&lt;i&gt;zsh: permission denied: pdfsplitter&lt;/i&gt;», то треба дати системі дозвіл використати нашу програму. Наприклад, командою:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;chmod 755 /usr/local/bin/pdfsplitter&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Відтепер ви самі додали програму у термінал і її можна запускати у будь-якій теці, не копіюючи туди скрипт.&lt;/p&gt;
&lt;div class="e2-text-video"&gt;
&lt;video src="https://blog-archive.alexkolodko.com/video/script-as-cli-program-x2.mp4#t=0.001" width="2560" height="1470.8207705193" controls alt="" /&gt;

&lt;div class="e2-text-caption"&gt;Скрипт, як cli-програма&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;hr&gt;&lt;br /&gt;
Завантажити скрипти:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.dropbox.com/scl/fi/zpdpqvcjau4ps7qaoqn9b/pdf-splitter.sh?rlkey=nsgiia85dj5noveqgoab3o9hz&amp;dl=0"&gt;pdf-splitter.sh&lt;/a&gt; — розділювач PDF&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.dropbox.com/scl/fi/sequwpl5crthcnsyb8pfn/artboard-names-to-file.jsx?rlkey=0eysee0w68fa99c8yg9vpu4p4&amp;dl=0"&gt;artboard-names-to-file.jsx&lt;/a&gt; — назви артбордів AI у TXT файл&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.dropbox.com/scl/fi/303ikqdr93bt0ypzwgzet/splitter.command?rlkey=7uj309zmg2ijodxpqr42zx1qo&amp;dl=0"&gt;splitter.command&lt;/a&gt; — приклад виконавчого файлу запуску скрипта; має розміщуватись в одній теці з маскою та pdf-splitter.sh.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;hr&gt;&lt;/p&gt;
&lt;div&gt;&lt;div style="float: left;"&gt;&lt;p&gt;&lt;span style="font-weight:bold; font-size: 3em"&gt;&lt;b&gt;₴&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;&lt;div style="padding: 1em 0 0 4em"&gt;&lt;p&gt;Якщо вам було цікаво та корисно, можете пригостити мене кавою ☕️: картка Монобанку: &lt;tt&gt;4441114450427339&lt;/tt&gt; або &lt;a href="https://send.monobank.ua/5jVrTaRziu"&gt;через сайт&lt;/a&gt;.&lt;/p&gt;
&lt;/div&gt;&lt;/div&gt;</description>
</item>

<item>
<title>Автоматизація дизайну з ChatGPT. Частина 2: скрипти для InDesign, Figma, Google Docs, Automator</title>
<guid isPermaLink="false">94</guid>
<link>https://blog-archive.alexkolodko.com/all/design-automation-with-chatgpt-part2/</link>
<pubDate>Fri, 24 Mar 2023 22:37:31 +0200</pubDate>
<author></author>
<comments>https://blog-archive.alexkolodko.com/all/design-automation-with-chatgpt-part2/</comments>
<description>
&lt;p&gt;Продовжую експерименти написання простих скриптів з допомогою ChatGPT. Тут &lt;a href="https://blog.alexkolodko.com/all/adobe-scripting-with-chatgpt/"&gt;перша частина&lt;/a&gt; зі скриптами для Adobe Illustrator.&lt;/p&gt;
&lt;h2&gt;1. Заміна шрифтів у InDesign&lt;/h2&gt;
&lt;p&gt;Перше, що захотілося зробити, це перенести скрипт з Ілюстратора в Індизайн (хоч скрипти й схожі, але у програм всередині різна специфіка).&lt;/p&gt;
&lt;p&gt;Тож спочатку я спробував подібними до попередніх запитами згенерувати скрипт. Але з 5-6 спроб робочого коду не вийшло. Тому далі я знайшов &lt;a href="https://community.adobe.com/t5/indesign-discussions/font-replacement-scripting-javascript/td-p/11021763"&gt;у спільноті Адоб&lt;/a&gt; шматок коду схожий на те, що мені треба.&lt;/p&gt;
&lt;p&gt;Але для його використання для різних накреслень і шрифтів не вистачало масиву значень на початку та циклу його виконання. Тому я скопіював код і попросив ChatGPT додати мені ці модулі. І за кілька уточнень вийшло робоче рішення.&lt;/p&gt;
&lt;p&gt;Далі зробив ще одну версію, попросивши додати виклик модального вікна, в яке можна ввести руками потрібні назви шрифтів. І він мені це теж зробив:&lt;/p&gt;
&lt;div class="e2-text-video"&gt;
&lt;video src="https://blog-archive.alexkolodko.com/video/automation-1-1-2-indesign-x4-noaudio.mp4#t=0.001" width="2560" height="1600" controls alt="" /&gt;

&lt;div class="e2-text-caption"&gt;Створення скрипту заміни шрифту в InDesign&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Завантажити скрипти:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.dropbox.com/s/lgcoaglq2yl7lkn/Font%20Replacer%20INDD.jsx?dl=0"&gt;Версія&lt;/a&gt;, яка заміняє усі шрифти у всіх фреймах;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.dropbox.com/s/sh4p04jj41wq4j9/Font%20Replacer%20INDD%20Selected.jsx?dl=0"&gt;Версія&lt;/a&gt;, яка заміняє шрифт лише у виділеному тексті;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.dropbox.com/s/zdouo1ppa8sq9ka/Font%20Replacer%20INDD%20SelectedORNot.jsx?dl=0"&gt;Версія&lt;/a&gt;, заміняє шрифт або у виділених фреймах, або в усіх;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.dropbox.com/s/6ifotvcavyeinit/Font%20Replacer%20INDD%20with%20window.jsx?dl=0"&gt;Версія&lt;/a&gt; з двома вікнами введення назви старого і нового шрифтів;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.dropbox.com/s/eiazxfnj92d09ze/Font%20Replacer%20INDD%20ww2.jsx?dl=0"&gt;Версія&lt;/a&gt; з одним вікном, в якому можна ввести кілька шрифтів.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;1.2. Заміна стилів у InDesign&lt;/h2&gt;
&lt;p&gt;Окрім зміни шрифтів, попросив придумати скрипт, для заміни одних стилів на інші та ще попросив додати вікно, в якому ці назви можна ввести. Отримав &lt;a href="https://www.dropbox.com/s/l252xyt2flartv8/Change%20style%20with%20one%20window.jsx?dl=0"&gt;такий скрипт&lt;/a&gt;.&lt;/p&gt;
&lt;div class="e2-text-video"&gt;
&lt;video src="https://blog-archive.alexkolodko.com/video/indesign-1-2-1-changestyles-x2.mp4#t=0.001" width="2560" height="1600" controls alt="" /&gt;

&lt;div class="e2-text-caption"&gt;Скрипт для InDesign, який заміняє один стиль на інший&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;А далі попросив замість полів для введення тексту зробити спадні списки зі всіма наявними стилями у документі. Але скрипт сходу не запрацював, але його можна об’єднати з попередніми.&lt;/p&gt;
&lt;div class="e2-text-video"&gt;
&lt;video src="https://blog-archive.alexkolodko.com/video/indesign-1-2-2-changestyles-dropdowns-x2.mp4#t=0.001" width="2560" height="1600" controls alt="" /&gt;

&lt;/div&gt;
&lt;h2&gt;2. Збереження Google Docs у тій самій теці на Драйві&lt;/h2&gt;
&lt;p&gt;У мене є потреба періодично зберігати поруч з Гугл Документом також і PDF, який я потім можу відправити. При збереженні через меню документів сам документ у мене завантажується у Downloads, як і решта файлів. Але потім мені потрібно знову завантажувати PDF у ту саму теку на драйв. Не складно, але це витрата часу.&lt;/p&gt;
&lt;p&gt;Шукав приклади скриптів, які  б могли зберігати PDF у ту саму теку, але робочих не знайшов. І от попросив ChatGPT запропонувати мені такий скрипт. І з першого разу отримав робочий варіант:&lt;/p&gt;
&lt;pre&gt;
function onOpen() {
  var ui = DocumentApp.getUi();
  ui.createAddonMenu()
      .addItem(’Convert to PDF’, ’convertDocToPDF’)
      .addToUi();
}

function convertDocToPDF() {
  var docFile = DocumentApp.getActiveDocument().getId();
  var doc = DriveApp.getFileById(docFile);
  var pdfFile = DriveApp.createFile(doc.getAs(’application/pdf’)).setName(doc.getName() + «.pdf»);
  var parentFolder = doc.getParents().next();
  pdfFile.makeCopy(parentFolder);
  pdfFile.setTrashed(true);
}

&lt;/pre&gt;
&lt;div class="e2-text-video"&gt;
&lt;video src="https://blog-archive.alexkolodko.com/video/google-script-with-chatgpt-x2.mp4#t=0.001" width="2560" height="1600" controls alt="" /&gt;

&lt;/div&gt;
&lt;p&gt;Також ChatGPT описав інструкцію, як цей скрипт опублікувати, щоб він працював не тільки у конкретному документі, але це виявилось не так просто, як зробити скрипт 😅.&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;div class="fotorama" data-width="2400" data-ratio="1.6"&gt;
&lt;img src="https://blog-archive.alexkolodko.com/pictures/_automation-2-1.png" width="2400" height="1500" alt="" /&gt;
&lt;img src="https://blog-archive.alexkolodko.com/pictures/_automation-2-2.png" width="2400" height="1500" alt="" /&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h2&gt;3. Транслітерація тексту в Figma&lt;/h2&gt;
&lt;p&gt;Колись для транслітерації назв зробили разом з програмістами простий сайт з простим JS, якій заміняв літери на інші за певними правилами. Потім з цього створили скрипти для AI та ID. А потім я стикнувся з такою з задачею у Фігмі, але робочих рішень не знайшов. Щось покрутив, але кинув, бо моїх знань було недостатньо.&lt;/p&gt;
&lt;p&gt;І от спробував згодувати цю задачу ChatGPT. Взяв увесь наявний скрипт, як приклад, і попросив придумати, як з цього скрипту зробити скрипт для Фігми. Спочатку запропонований код транслітерував всі тексти на сторінці. Через уточнення він це робив для виділеного тексту, а якщо не виділений, то вже для всього.&lt;/p&gt;
&lt;div class="e2-text-video"&gt;
&lt;video src="https://blog-archive.alexkolodko.com/video/automation-3-figma-x2.mp4#t=0.001" width="2560" height="1600" controls alt="" /&gt;

&lt;/div&gt;
&lt;p&gt;І у першому варіанті цей код навіть працює, транслітерує, лишилось тільки допиляти для виключень і різних випадків. Далі вже можна туди додати якийсь інтерфейс за потреби. Тест вважаю вдалим.&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;div class="fotorama" data-width="2400" data-ratio="1.6"&gt;
&lt;img src="https://blog-archive.alexkolodko.com/pictures/_automation-3-1.png" width="2400" height="1500" alt="" /&gt;
&lt;img src="https://blog-archive.alexkolodko.com/pictures/_automation-3-2.png" width="2400" height="1500" alt="" /&gt;
&lt;img src="https://blog-archive.alexkolodko.com/pictures/_automation-3-3.png" width="2400" height="1500" alt="" /&gt;
&lt;/div&gt;
&lt;div class="e2-text-caption"&gt;Код транслітерації для Фігми від ChatGPT&lt;/div&gt;
&lt;/div&gt;
&lt;h2&gt;4. Створення регулярних виразів для GREP / RegEx&lt;/h2&gt;
&lt;p&gt;Про грепи (або регулярні вирази, або regex) розповідав у лекції і все хотів написати детальну статтю зі всіма посиланнями, які назбирав, але все не знаходив час. GREP дуже потужна штука, але в неї був дуже високий поріг входу, щоб розуміти як будувати потрібні правильні вирази.&lt;/p&gt;
&lt;p&gt;І от тепер з ChatGPT цей поріг можна вважати зниженим, бо він дуже гарно конструює навіть складні вирази.&lt;/p&gt;
&lt;p&gt;Наприклад, давайте в Індизайні після всіх прийменників додамо нерозривні пробіли у всьому тексті через GREP-стилі. Для цього потрібно знайти у тексті всі прийменники. Тож створюємо стиль для символів без перенесень (no break) та питаємо у ChatGPT список всіх прийменників у вигляді регулярного виразу.&lt;/p&gt;
&lt;p&gt;Він розуміє українську і віддає згенерований вираз вже у потрібній формі. Єдине що цей regex не зовсім підійде у Індизайн, тому уточнюємо що це має бути саме GREP для Індизайну і отримуємо робочий запит.&lt;/p&gt;
&lt;div class="e2-text-video"&gt;
&lt;video src="https://blog-archive.alexkolodko.com/video/automation-4-1-indesign-grep-find-x4.mp4#t=0.001" width="2560" height="1600" controls alt="" /&gt;

&lt;/div&gt;
&lt;p&gt;Так само можна конструювати грепи, які знаходять прізвища та ініціали, одиниці вимірювання, дати та місяці, номери телефонів у різних видах тощо. Далі потім знайдені дані (одразу всі, в усьому тексті) можна або переформатовувати або задавати їм потрібний стиль.&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;div class="fotorama" data-width="2400" data-ratio="1.6"&gt;
&lt;img src="https://blog-archive.alexkolodko.com/pictures/_automation-4-1.png" width="2400" height="1500" alt="" /&gt;
&lt;img src="https://blog-archive.alexkolodko.com/pictures/_automation-4-2.png" width="2400" height="1500" alt="" /&gt;
&lt;img src="https://blog-archive.alexkolodko.com/pictures/_automation-4-3.png" width="1694" height="950" alt="" /&gt;
&lt;img src="https://blog-archive.alexkolodko.com/pictures/_automation-4-4.png" width="1650" height="1936" alt="" /&gt;
&lt;img src="https://blog-archive.alexkolodko.com/pictures/_automation-4-5.png" width="1614" height="1074" alt="" /&gt;
&lt;img src="https://blog-archive.alexkolodko.com/pictures/_automation-4-6.png" width="2400" height="1500" alt="" /&gt;
&lt;img src="https://blog-archive.alexkolodko.com/pictures/_automation-4-7.png" width="2400" height="1500" alt="" /&gt;
&lt;img src="https://blog-archive.alexkolodko.com/pictures/_automation-4-8.png" width="2400" height="1500" alt="" /&gt;
&lt;img src="https://blog-archive.alexkolodko.com/pictures/_automation-4-9.png" width="1604" height="1176" alt="" /&gt;
&lt;/div&gt;
&lt;div class="e2-text-caption"&gt;Приклади різних регулярних виразів&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Регулярні вирази — дуже технічно-орієнтований інструмент. Тому тепер до цього інструменту є людино-орієнтований інтерфейс, який трансформує ваш запит у зрозумілу машині форму.&lt;/p&gt;
&lt;div class="e2-text-video"&gt;
&lt;video src="https://blog-archive.alexkolodko.com/video/automation-4-2-indesign-grep-replace-x4.mp4#t=0.001" width="2560" height="1600" controls alt="" /&gt;

&lt;div class="e2-text-caption"&gt;GREP заміни кириличних лапок латинськими&lt;/div&gt;
&lt;/div&gt;
&lt;h2&gt;5.1 Зібрати відео зі скріншотів (з використанням ffmpeg)&lt;/h2&gt;
&lt;p&gt;Також в лекції згадував, що також у автоматизації дуже допомагають різні консольні команди (cli, command line interface), які заточені на певні дії. З ними така сама ситуація — щоб ними користуватись, потрібно розбиратись в прикладах та документації, що теж техно-орієнтованість.&lt;/p&gt;
&lt;p&gt;Тому тут можна теж ChatGPT використовувати, як посередника для пошуку потрібної команди з потрібними параметрами. Наприклад, маємо купу скріншотів зроблених автоматично з різницею у 4-5 секунд, з яких хочемо зробити скрінкаст.&lt;/p&gt;
&lt;p&gt;Для роботи з відео є потужна програма &lt;a href="https://ffmpeg.org/download.html"&gt;ffmpeg&lt;/a&gt;, яка працює з командного рядка. Тож попросив ChatGPT запропонувати команду для ffmpeg, яка б об’єднала картинки у відео. З першого разу отримуємо варіант, який на 100% працює та робить відео з заданою кількістю кадрів, які можна скоригувати.&lt;/p&gt;
&lt;pre&gt;
ffmpeg -framerate 30 -pattern_type glob -i ’/path/to/folder/*.jpg’ -c:v libx264 -pix_fmt yuv420p /path/to/output.mp4
&lt;/pre&gt;
&lt;p&gt;Таким чином не потрібні ніякі додаткові програми, для створення відео з картинок: за допомогою Автоматора робимо скріншоти, а через ffmpeg отримуємо відео.&lt;/p&gt;
&lt;div class="e2-text-video"&gt;
&lt;video src="https://blog-archive.alexkolodko.com/video/automation-5-1-x4.mp4#t=0.001" width="2560" height="1600" controls alt="" /&gt;

&lt;div class="e2-text-caption"&gt;Збір відео з окремих картинок&lt;/div&gt;
&lt;/div&gt;
&lt;h2&gt;5.2 Компресія відео (з використанням ffmpeg)&lt;/h2&gt;
&lt;p&gt;Так само можна пошукати запити і на інші задачі з відео, наприклад, перезберегти з певною компресією чи зміною розміру, або прискоренням.&lt;/p&gt;
&lt;div class="e2-text-video"&gt;
&lt;video src="https://blog-archive.alexkolodko.com/video/automation-5-2-compress-video-x4-noaudio.mp4#t=0.001" width="2560" height="1600" controls alt="" /&gt;

&lt;/div&gt;
&lt;p&gt;Раніше я шукав налаштування команд на Stackoverflow, а зараз швидше спитати у ChatGPT. Приклади запитів.&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;div class="fotorama" data-width="2400" data-ratio="1.6"&gt;
&lt;img src="https://blog-archive.alexkolodko.com/pictures/_automation-5-2-1-compress-video.png" width="2400" height="1500" alt="" /&gt;
&lt;img src="https://blog-archive.alexkolodko.com/pictures/_automation-5-2-2-compress-video.png" width="2400" height="1500" alt="" /&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Компресія відео з ffmpeg&lt;/p&gt;
&lt;h2&gt;6. Зміна в наявному скрипті для Автоматора (Apple Script)&lt;/h2&gt;
&lt;p&gt;До попереднього пункту: для створення скрінкасту у мене був скрипт, який робив скріншот екрану і клав у потрібну теку в Дропбоксі, а потім зі скріншотів збиралося відео.&lt;/p&gt;
&lt;p&gt;Зараз Дропбокс змінив і виходить старий скрипт некоректно працює. Йти шукати у документації до AppleScript як змінити шлях було б довго. Тому скопіював наявний скрипт і попросив замінити шлях збереження скріншотів у теку /&lt;i&gt;Desktop&lt;/i&gt;.&lt;/p&gt;
&lt;div class="e2-text-video"&gt;
&lt;video src="https://blog-archive.alexkolodko.com/video/automation-6-applescript-x4.mp4#t=0.001" width="2560" height="1600" controls alt="" /&gt;

&lt;/div&gt;
&lt;h2&gt;7. Збереження в TIFF у Adobe Illustrator&lt;/h2&gt;
&lt;p&gt;Ще попросив зробити скрипт для швидкого збереження артборду у TIFF з заданим DPI. Отримав отакий варіант, який видавав помилку. Знайшов у спільноті Адоба відповідь зі схожою частиною, та побачив що один з параметрів замість IBM має називатись IBMPC, замінив, запрацювало. Тобто весь скрипт робочий, але помилка була в одному з параметрів. &lt;a href="https://www.dropbox.com/s/g6u54xerw8lg4v4/toTIFF.jsx?dl=0"&gt;Завантажити скрипт&lt;/a&gt;.&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://blog-archive.alexkolodko.com/pictures/automation-7-1-w2400.png" width="2400" height="1500" alt="" /&gt;
&lt;div class="e2-text-caption"&gt;Збереження артбоду в TIFF 300dpi&lt;/div&gt;
&lt;/div&gt;
&lt;h2&gt;8. OSM Overpass Query&lt;/h2&gt;
&lt;p&gt;Деякі системи хоч і доступні всім, але поріг входу в них занадто високий. Але ChatGPT і тут зможе допомогти його подолати.&lt;/p&gt;
&lt;p&gt;У OpenStreetMap (карта/база даних, які відкриті для всіх) зберігається величезна база геоданих, доступ до яких не суперпростий. І в OSM є мова запитів Overpass, яка дозволяє вивантажувати / запитувати якусь певну частину тих даних. Так от Overpass супер-неінтуітивна мова, і тут Chat GPT допомагає перекласти запит з людської на машинну.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://twitter.com/lemonodor/status/1636849040548675584"&gt;twitter.com/lemonodor/status/1636849040548675584&lt;/a&gt;&lt;/p&gt;&lt;h2&gt;P.S.&lt;/h2&gt;
&lt;p&gt;І це я скористався лише безкоштовною версією ChatGPT (модель GPT 3.5), і вже відчув, що стаю продуктивнішим ніби маю ще один механізований маніпулятор на додачу до рук, який розуміє що я хочу зробити та робить це швидше,&lt;/p&gt;
&lt;p&gt;Тепер спробую модель Codex (Github Copilot), яка створювалась як раз для написання коду, а також GPT4. Напишу потім, що з цього вийшло.&lt;/p&gt;
&lt;p&gt;&lt;i&gt;Також хотів проілюструвати цю думку згенерувавши картинку людини з ще оною механізованою рукою, накшталт, технодесандників з Вархаммеру, але з 20 спроб у Midjourney v4 мого задуму не вийшло&lt;/i&gt; ¯\_(ツ)_/¯&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;div class="fotorama" data-width="1024" data-ratio="1"&gt;
&lt;img src="https://blog-archive.alexkolodko.com/pictures/alexkolodko_man_with_extra_bionic_robotic_mechanical_manipulato_5e4ed387-75ea-434f-80ad-54a6bbf25a92-transformed.png" width="1024" height="1024" alt="" /&gt;
&lt;img src="https://blog-archive.alexkolodko.com/pictures/alexkolodko_man_with_extra_bionic_robotic_mechanical_manipulato_c97b8485-4aa5-4fcc-aba3-c6bbdc06f756-transformed.png" width="1024" height="1024" alt="" /&gt;
&lt;img src="https://blog-archive.alexkolodko.com/pictures/alexkolodko_man_with_augmentics_stay_with_laptop_at_the_large_f_35d6b34f-06c8-42a9-bb5f-a9f7d0228c89.png" width="1024" height="1024" alt="" /&gt;
&lt;img src="https://blog-archive.alexkolodko.com/pictures/alexkolodko_man_with_augmentics_stay_with_laptop_at_the_large_f_366792c8-fc63-431c-adb1-e75029104bb6.png" width="1024" height="1024" alt="" /&gt;
&lt;img src="https://blog-archive.alexkolodko.com/pictures/alexkolodko_man_with_augmentics_stay_with_laptop_at_the_large_f_b5de7f02-f43b-4fd6-b01c-4c33fcdace3e.png" width="1024" height="1024" alt="" /&gt;
&lt;img src="https://blog-archive.alexkolodko.com/pictures/alexkolodko_man_with_bionic_robotic_mechanical_manipulator_in_h_4edd41d4-5a33-488d-ad2c-58255555764f.png" width="1024" height="1024" alt="" /&gt;
&lt;img src="https://blog-archive.alexkolodko.com/pictures/alexkolodko_man_with_bionic_robotic_mechanical_manipulator_in_h_79d5dd21-a324-4f24-b5c2-ce37832c925b.png" width="1024" height="1024" alt="" /&gt;
&lt;img src="https://blog-archive.alexkolodko.com/pictures/alexkolodko_man_with_extra_bionic_robotic_mechanical_manipulato_5e4ed387-75ea-434f-80ad-54a6bbf25a92.png" width="1024" height="1024" alt="" /&gt;
&lt;img src="https://blog-archive.alexkolodko.com/pictures/alexkolodko_man_with_extra_bionic_robotic_mechanical_manipulato_15cc879c-6032-47b5-883c-56ccb48732cb.png" width="1024" height="1024" alt="" /&gt;
&lt;img src="https://blog-archive.alexkolodko.com/pictures/alexkolodko_man_with_extra_bionic_robotic_mechanical_manipulato_bb7622b8-8dac-41de-9925-d14892d79a05.png" width="1024" height="1024" alt="" /&gt;
&lt;img src="https://blog-archive.alexkolodko.com/pictures/alexkolodko_man_with_extra_bionic_robotic_mechanical_manipulato_c97b8485-4aa5-4fcc-aba3-c6bbdc06f756.png" width="1024" height="1024" alt="" /&gt;
&lt;img src="https://blog-archive.alexkolodko.com/pictures/alexkolodko_techmarine_warhammer_40k_style_with_robotic_arm_sit_092b8d8f-7132-4b40-9394-dd83607d6cb8.png" width="1024" height="1024" alt="" /&gt;
&lt;img src="https://blog-archive.alexkolodko.com/pictures/alexkolodko_techno_spacemarine_warhammer40k_style_with_robotic__b100e5a6-8d87-4b47-83cf-3151991a242a.png" width="1024" height="1024" alt="" /&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;hr&gt;&lt;/p&gt;
&lt;div&gt;&lt;div style="float: left;"&gt;&lt;p&gt;&lt;span style="font-weight:bold; font-size: 3em"&gt;&lt;b&gt;?&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;&lt;div style="padding: 1em 0 0 4em"&gt;&lt;p&gt;Якщо у вас приклади вашого повторюваного дизайн-процесу, який ви повторюєте щоразу і витрачаєте свій час, напишіть на &lt;a href="mailto:alexkolodko@gmail.com"&gt;пошту&lt;/a&gt; або у &lt;a href="https://t.me/alexkolodko"&gt;телеграм&lt;/a&gt;.&lt;/p&gt;
&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&lt;hr&gt;&lt;/p&gt;
&lt;div&gt;&lt;div style="float: left;"&gt;&lt;p&gt;&lt;span style="font-weight:bold; font-size: 3em"&gt;&lt;b&gt;₴&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;&lt;div style="padding: 1em 0 0 4em"&gt;&lt;p&gt;Якщо вам було цікаво та корисно, можете пригостити мене кавою ☕️: картка Монобанку: &lt;tt&gt;4441114450427339&lt;/tt&gt; або &lt;a href="https://send.monobank.ua/5jVrTaRziu"&gt;через сайт&lt;/a&gt;.&lt;/p&gt;
&lt;/div&gt;&lt;/div&gt;</description>
</item>

<item>
<title>ChatGPT як помічник з автоматизації</title>
<guid isPermaLink="false">93</guid>
<link>https://blog-archive.alexkolodko.com/all/adobe-scripting-with-chatgpt/</link>
<pubDate>Wed, 15 Mar 2023 11:37:29 +0200</pubDate>
<author></author>
<comments>https://blog-archive.alexkolodko.com/all/adobe-scripting-with-chatgpt/</comments>
<description>
&lt;p&gt;Знайшов для себе цікавий кейс застосування ChatGPT — створення простих скриптів для Ілюстратора.&lt;/p&gt;
&lt;p&gt;У лекції про дизайн-конвеєр я розповідав, що можна дуже прискорити роботу автоматизуючі окремі дії. І тут дуже допомагають екшени та різного роду скрипти. Але екшени покривають точно не всі функції, а поріг входу у скрипти доволі високий.&lt;/p&gt;
&lt;p&gt;Так от, нейромережа може допомогти створювати прості скрипти (до об’ємних вони поки не доросли).&lt;/p&gt;
&lt;div class="e2-text-video"&gt;
&lt;video src="https://blog-archive.alexkolodko.com/video/Screen-Recording-2023-03-14-at-23.32.20-x2.mp4#t=0.001" width="2560" height="1600" controls alt="" /&gt;

&lt;div class="e2-text-caption"&gt;ChatGPT → JSX → Adobe Illustrator&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Наприклад, є задача: маємо купу інфографіки для звіту двома мовами. І в усіх картинках треба поміняти шрифт на інший та замінити кому на крапку у числах (45,5% → 45.5%).&lt;/p&gt;
&lt;p&gt;У картинках використовуються різні накреслення, тож просто все виділити і поміняти не підходить. Треба йти в Find/Replace font і там вручну задавати зміну кожного накреслення. Довго. Те саме  заміною символів: Find and Replace, ввести символи, замінити, підтвердити. Довго.&lt;/p&gt;
&lt;p&gt;Спочатку, як завжди, пошукав у гуглі відповідь, бо можливо хтось вже писав такий код. Сходу не знайшов щось робоче.&lt;/p&gt;
&lt;p&gt;Тож далі я запитав у ChatGPT, щоб він описав скрипт, який би замінював один шрифт на інший. Вийшов скрипт, який міняє шрифт, але робить все одним накресленням. Другим запитом я уточнив, щоб і накреслення враховувалось. Перевірив — працює. Тож у кожному документі просто запускався скрипт і все саме мінялось.&lt;/p&gt;
&lt;p&gt;На цю задачу можна було залучити програміста, який на цьому розуміється, але з конкретною простою задачею навіть безплатний ChatGPT впорався непогано.&lt;/p&gt;
&lt;p&gt;Далі можна ще допиляти скрипт додати заміну кількох шрифтів на інші. І ось, ще один службовий інструмент у вас є.&lt;/p&gt;
&lt;p&gt;Авжеж, не весь код працює або не враховує якісь крайні ситуації. Але через кілька уточнень можна спробувати трохи іншу версію.&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;div class="fotorama" data-width="2400" data-ratio="1.6"&gt;
&lt;img src="https://blog-archive.alexkolodko.com/pictures/adobe-scripting-with-chatpgpt-1.png" width="2400" height="1500" alt="" /&gt;
&lt;img src="https://blog-archive.alexkolodko.com/pictures/adobe-scripting-with-chatpgpt-2.png" width="2400" height="1500" alt="" /&gt;
&lt;/div&gt;
&lt;div class="e2-text-caption"&gt;Відповіді ChatGPT&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Ось вам приклад цього скрипта, який я частково докрутив: &lt;a href="https://www.dropbox.com/s/5c26qlafyo225sq/Font%20Replacer.jsx?dl=0"&gt;https://www.dropbox.com/s/5c26qlafyo225sq/Font%20Replacer.jsx?dl=0&lt;/a&gt;&lt;/p&gt;
&lt;p&gt; На початку у масиві вказуються назви старого і нового шрифтів та їхні накреслення. Також можна вказати декілька змін для різних шрифтів і накреслень.&lt;/p&gt;
&lt;pre&gt;
{
«oldFontName» : «Daikon»,  // Назва старого шрифта
«oldFontWeight» : «Bold»,  // Накреслення старого шрифта
«newFontName» : «DM Sans», // Назва нового шрифта
«newFontWeight» : «Bold»   // Накреслення нового шрифта
},

&lt;/pre&gt;
&lt;p&gt;Не обов’язково треба вивчати кодування для програм Адоб, буде достатньо розуміння, що ви хочете отримати в результаті. Чим простіша і точкова задача, тим буде простіше поставити питання нейромережі й отримати більш-менш робоче рішення. &lt;/p&gt;
&lt;p&gt;І замість витрачання на часу на ручне клацання в інтерфейсі, можна створювати такі скрипти. Для своєї задачі я зекономив десь пів години, але чим більше картинок, тим більша буде й економія.&lt;/p&gt;
&lt;p&gt;Цікаво, як з такою задачею впрорається анонсований вчора GPT-4. Уявіть плагін, який би працював безпосередньо в Ілюстраторі, в який можна написати задачу і він видаватиме робочий скрипт, який можна запускати одразу у редакторі.&lt;/p&gt;
</description>
</item>


</channel>
</rss>