{"id":7122,"date":"2026-10-26T01:45:43","date_gmt":"2026-10-26T01:45:43","guid":{"rendered":"https:\/\/www.canaldelasrecetas.com\/cms\/?p=7122"},"modified":"2026-10-26T01:45:43","modified_gmt":"2026-10-26T01:45:43","slug":"artcraft-apps-libres-vi","status":"publish","type":"post","link":"https:\/\/www.canaldelasrecetas.com\/cms\/artcraft-apps-libres-vi\/","title":{"rendered":"ArtCraft: 14 ph\u1ea7n m\u1ec1m t\u1ef1 do \u0111\u1ec3 s\u00e1ng t\u1ea1o, nh\u01b0 Photoshop, Premiere, Word hay AutoCAD"},"content":{"rendered":"\n<style>\n.ac-langbar{font-size:.9em;line-height:1.9}\n.ac-anuncio{border:2px solid #cc1500;border-radius:10px;padding:1em 1.2em;margin:1.8em 0;background:#fffaf2}\n.ac-anuncio .ac-et{font-size:.75em;letter-spacing:.08em;text-transform:uppercase;color:#8a6a4a}\n.ac-anuncio img{vertical-align:middle}\n.ac-app h3{margin-bottom:.2em}\n.ac-app .ac-ver{font-size:.8em;font-weight:400;color:#7a6a5a}\n.ac-aviso{border-inline-start:4px solid #dd5500;background:#fff6ec;padding:.8em 1em;margin:1.2em 0;font-size:.95em}\n.ac-bajar{display:inline-block;background:#1f6feb;color:#fff!important;padding:.6em 1.1em;border-radius:8px;font-weight:700;text-decoration:none}\n.ac-code{direction:ltr;text-align:left;background:#1e1e1e;color:#e8e8e8;padding:1em;border-radius:8px;overflow:auto;max-height:28em;font-size:.82em;line-height:1.45;white-space:pre}\n.ac-code-corto{max-height:none}\n<\/style>\n<p class=\"ac-langbar\">\ud83c\udf10 <a href=\"https:\/\/www.canaldelasrecetas.com\/cms\/artcraft-apps-libres-es\/\" hreflang=\"es\">Espa\u00f1ol<\/a> &middot; <a href=\"https:\/\/www.canaldelasrecetas.com\/cms\/artcraft-apps-libres-en\/\" hreflang=\"en\">English<\/a> &middot; <a href=\"https:\/\/www.canaldelasrecetas.com\/cms\/artcraft-apps-libres-pt\/\" hreflang=\"pt\">Portugu\u00eas<\/a> &middot; <a href=\"https:\/\/www.canaldelasrecetas.com\/cms\/artcraft-apps-libres-fr\/\" hreflang=\"fr\">Fran\u00e7ais<\/a> &middot; <a href=\"https:\/\/www.canaldelasrecetas.com\/cms\/artcraft-apps-libres-it\/\" hreflang=\"it\">Italiano<\/a> &middot; <a href=\"https:\/\/www.canaldelasrecetas.com\/cms\/artcraft-apps-libres-de\/\" hreflang=\"de\">Deutsch<\/a> &middot; <a href=\"https:\/\/www.canaldelasrecetas.com\/cms\/artcraft-apps-libres-nl\/\" hreflang=\"nl\">Nederlands<\/a> &middot; <a href=\"https:\/\/www.canaldelasrecetas.com\/cms\/artcraft-apps-libres-pl\/\" hreflang=\"pl\">Polski<\/a> &middot; <a href=\"https:\/\/www.canaldelasrecetas.com\/cms\/artcraft-apps-libres-ru\/\" hreflang=\"ru\">\u0420\u0443\u0441\u0441\u043a\u0438\u0439<\/a> &middot; <a href=\"https:\/\/www.canaldelasrecetas.com\/cms\/artcraft-apps-libres-uk\/\" hreflang=\"uk\">\u0423\u043a\u0440\u0430\u0457\u043d\u0441\u044c\u043a\u0430<\/a> &middot; <a href=\"https:\/\/www.canaldelasrecetas.com\/cms\/artcraft-apps-libres-tr\/\" hreflang=\"tr\">T\u00fcrk\u00e7e<\/a> &middot; <a href=\"https:\/\/www.canaldelasrecetas.com\/cms\/artcraft-apps-libres-el\/\" hreflang=\"el\">\u0395\u03bb\u03bb\u03b7\u03bd\u03b9\u03ba\u03ac<\/a> &middot; <a href=\"https:\/\/www.canaldelasrecetas.com\/cms\/artcraft-apps-libres-ar\/\" hreflang=\"ar\">\u0627\u0644\u0639\u0631\u0628\u064a\u0629<\/a> &middot; <a href=\"https:\/\/www.canaldelasrecetas.com\/cms\/artcraft-apps-libres-fa\/\" hreflang=\"fa\">\u0641\u0627\u0631\u0633\u06cc<\/a> &middot; <a href=\"https:\/\/www.canaldelasrecetas.com\/cms\/artcraft-apps-libres-he\/\" hreflang=\"he\">\u05e2\u05d1\u05e8\u05d9\u05ea<\/a> &middot; <a href=\"https:\/\/www.canaldelasrecetas.com\/cms\/artcraft-apps-libres-hi\/\" hreflang=\"hi\">\u0939\u093f\u0928\u094d\u0926\u0940<\/a> &middot; <a href=\"https:\/\/www.canaldelasrecetas.com\/cms\/artcraft-apps-libres-bn\/\" hreflang=\"bn\">\u09ac\u09be\u0982\u09b2\u09be<\/a> &middot; <a href=\"https:\/\/www.canaldelasrecetas.com\/cms\/artcraft-apps-libres-ta\/\" hreflang=\"ta\">\u0ba4\u0bae\u0bbf\u0bb4\u0bcd<\/a> &middot; <a href=\"https:\/\/www.canaldelasrecetas.com\/cms\/artcraft-apps-libres-id\/\" hreflang=\"id\">Bahasa Indonesia<\/a> &middot; <strong>Ti\u1ebfng Vi\u1ec7t<\/strong> &middot; <a href=\"https:\/\/www.canaldelasrecetas.com\/cms\/artcraft-apps-libres-th\/\" hreflang=\"th\">\u0e44\u0e17\u0e22<\/a> &middot; <a href=\"https:\/\/www.canaldelasrecetas.com\/cms\/artcraft-apps-libres-zh\/\" hreflang=\"zh\">\u4e2d\u6587<\/a> &middot; <a href=\"https:\/\/www.canaldelasrecetas.com\/cms\/artcraft-apps-libres-ja\/\" hreflang=\"ja\">\u65e5\u672c\u8a9e<\/a> &middot; <a href=\"https:\/\/www.canaldelasrecetas.com\/cms\/artcraft-apps-libres-ko\/\" hreflang=\"ko\">\ud55c\uad6d\uc5b4<\/a> &middot; <a href=\"https:\/\/www.canaldelasrecetas.com\/cms\/artcraft-apps-libres-sw\/\" hreflang=\"sw\">Kiswahili<\/a><\/p>\n<h2>C\u00e2u chuy\u1ec7n: m\u1ed9t kho\u1ea3n ph\u00ed h\u1ee7y qu\u00e1 nhi\u1ec1u<\/h2>\n<p>C\u00e2u chuy\u1ec7n lan truy\u1ec1n tr\u00ean c\u00e1c di\u1ec5n \u0111\u00e0n v\u00e0 m\u1ea1ng x\u00e3 h\u1ed9i m\u1ea5y tu\u1ea7n nay l\u00e0 ArtCraft ra \u0111\u1eddi t\u1eeb c\u01a1n gi\u1eadn: t\u00e1c gi\u1ea3 c\u1ee7a n\u00f3 \u00abb\u1ecb l\u1eeba\u00bb. \u0110\u1ee9ng sau d\u1ef1 \u00e1n l\u00e0 <strong>Brandon Thomas<\/strong>, k\u1ef9 s\u01b0 ph\u1ea7n m\u1ec1m \u1edf Atlanta (M\u1ef9) v\u1edbi m\u01b0\u1eddi l\u0103m n\u0103m trong ngh\u1ec1, t\u1eebng vi\u1ebft tr\u00ean Reddit v\u1edbi t\u00ean <em>u\/ai_art_is_art<\/em>. Ch\u1eef \u00abl\u1eeba \u0111\u1ea3o\u00bb l\u00e0 c\u1ee7a c\u1ed9ng \u0111\u1ed3ng; \u0111i\u1ec1u \u00f4ng k\u1ec3 l\u00e0 Adobe \u0111\u00e3 thu c\u1ee7a \u00f4ng <strong>ph\u00ed h\u1ee7y<\/strong> g\u00f3i thu\u00ea bao.<\/p>\n<p>\u00abH\u1ecd \u0111\u00e3 thu t\u00f4i \u2018ph\u00ed h\u1ee7y\u2019 nhi\u1ec1u l\u1ea7n v\u00e0 t\u1eeb \u0111\u00f3 t\u00f4i gh\u00e9t h\u1ecd\u00bb, \u00f4ng vi\u1ebft tr\u00ean Reddit. Tr\u00ean Hacker News, \u00f4ng n\u00f3i m\u00ecnh \u0111\u00e3 m\u1eafc v\u00e0o \u00abm\u1eabu thi\u1ebft k\u1ebf \u0111en t\u1ed1i\u00bb \u0111\u00f3 qu\u00e1 nhi\u1ec1u l\u1ea7n: kho\u1ea3n ph\u1ea1t khi r\u1eddi s\u1edbm m\u1ed9t g\u00f3i n\u0103m tr\u1ea3 theo th\u00e1ng. \u0110\u00e2y kh\u00f4ng ph\u1ea3i l\u1eddi ph\u00e0n n\u00e0n \u0111\u01a1n l\u1ebb: th\u00e1ng 6\/2024, B\u1ed9 T\u01b0 ph\u00e1p M\u1ef9 \u0111\u00e3 ki\u1ec7n Adobe v\u00ec che gi\u1ea5u c\u00e1c kho\u1ea3n ph\u00ed n\u00e0y v\u00e0 g\u00e2y kh\u00f3 cho vi\u1ec7c h\u1ee7y. Adobe kh\u1eb3ng \u0111\u1ecbnh \u0111i\u1ec1u kho\u1ea3n c\u1ee7a h\u1ecd minh b\u1ea1ch.<\/p>\n<p>C\u00e2u tr\u1ea3 l\u1eddi c\u1ee7a \u00f4ng l\u00e0 l\u00e0m l\u1ea1i c\u00e1c ph\u1ea7n m\u1ec1m v\u00e0 cho \u0111i mi\u1ec5n ph\u00ed. V\u1edbi s\u1ef1 tr\u1ee3 gi\u00fap c\u1ee7a Claude, tr\u00ed tu\u1ec7 nh\u00e2n t\u1ea1o c\u1ee7a Anthropic, v\u00e0 ng\u00f4n ng\u1eef Rust, t\u1eeb cu\u1ed1i th\u00e1ng 9 \u0111\u1ebfn \u0111\u1ea7u th\u00e1ng 10\/2026 \u00f4ng \u0111\u00e3 \u0111\u0103ng l\u00ean GitHub b\u1ea3y \u1ee9ng d\u1ee5ng \u0111\u1ea7u ti\u00ean \u2014 t\u01b0\u01a1ng \u0111\u01b0\u01a1ng Photoshop, Illustrator, Premiere, Lightroom, After Effects, InDesign v\u00e0 Acrobat \u2014 v\u00e0 ch\u1ec9 trong v\u00e0i tu\u1ea7n \u0111\u00e3 b\u1ed5 sung Word, PowerPoint, Excel, AutoCAD, Pro Tools v\u00e0 Figma. \u00d4ng kh\u1eb3ng \u0111\u1ecbnh \u0111\u00e2y l\u00e0 nh\u1eefng b\u1ea3n t\u00e1i hi\u1ec7n \u00abph\u00f2ng s\u1ea1ch\u00bb, l\u00e0m t\u1eeb \u0111\u1eb7c t\u1ea3 c\u00f4ng khai c\u1ee7a c\u00e1c \u0111\u1ecbnh d\u1ea1ng t\u1ec7p, kh\u00f4ng d\u00f9ng m\u00e3 c\u1ee7a ai.<\/p>\n<p>C\u00e2u n\u00f3i t\u00f3m g\u1ecdn m\u1ecdi th\u1ee9 c\u1ee7a \u00f4ng, \u00abph\u1ea7n m\u1ec1m \u0111\u00e3 h\u1ebft th\u1eddi\u00bb, lan kh\u1eafp th\u1ebf gi\u1edbi: n\u1ebfu m\u1ed9t ng\u01b0\u1eddi v\u1edbi AI c\u00f3 th\u1ec3 l\u00e0m l\u1ea1i trong v\u00e0i tu\u1ea7n nh\u1eefng g\u00ec m\u1ea5t h\u00e0ng ch\u1ee5c n\u0103m, ph\u1ea7n m\u1ec1m tr\u1ea3 ph\u00ed s\u1ebd g\u1eb7p kh\u00f3. C\u0169ng c\u00f3 ng\u01b0\u1eddi nghi ng\u1edd: gi\u00e1o s\u01b0 Andr\u00e9s Guadamuz c\u1ee7a \u0110\u1ea1i h\u1ecdc Sussex nh\u1eafc r\u1eb1ng v\u1eabn ch\u01b0a r\u00f5 quy tr\u00ecnh \u00abph\u00f2ng s\u1ea1ch\u00bb \u1ea5y c\u00f3 \u0111\u1ee9ng v\u1eefng khi b\u1ecb xem x\u00e9t kh\u00f4ng, v\u00e0 bao nhi\u00eau m\u00e3 do \u00f4ng vi\u1ebft, bao nhi\u00eau do AI. Thomas kh\u1eb3ng \u0111\u1ecbnh \u0111\u00e2y kh\u00f4ng ph\u1ea3i \u00abm\u1ed9t \u00e1nh ch\u1edbp nh\u1ea5t th\u1eddi r\u1ed3i t\u1eaft\u00bb, v\u00e0 \u0111\u1ebfn gi\u1edd nh\u1ecbp ph\u00e1t h\u00e0nh g\u1ea7n nh\u01b0 m\u1ed7i ng\u00e0y \u0111ang ch\u1ee9ng minh \u00f4ng \u0111\u00fang.<\/p>\n<aside class=\"ac-anuncio\"><div class=\"ac-et\">Qu\u1ea3ng c\u00e1o<\/div><p><strong>Ph\u1ea7n m\u1ec1m t\u1ef1 do \u0111\u1ec3 s\u00e1ng t\u1ea1o; JamboQR \u0111\u1ec3 chia s\u1ebb khuy\u1ebfn m\u00e3i.<\/strong> V\u1edbi <strong>JamboQR<\/strong> b\u1ea1n l\u1eadp m\u1ed9t c\u00e2u l\u1ea1c b\u1ed9 khuy\u1ebfn m\u00e3i c\u00f9ng h\u00e0ng x\u00f3m v\u00e0 b\u1ea1n b\u00e8: ai t\u00ecm th\u1ea5y g\u00ec th\u00ec \u0111\u0103ng l\u00ean, k\u00e8m \u1ea3nh, gi\u00e1 v\u00e0 \u0111\u1ecba \u0111i\u1ec3m. Mi\u1ec5n ph\u00ed.<\/p><p><a href=\"https:\/\/jamboqr.net\/?utm_source=canaldelasrecetas&amp;utm_medium=artcraft-inicio&amp;utm_campaign=artcraft-vi\" rel=\"noopener sponsored\"><strong>jamboqr.net<\/strong><\/a><\/p><\/aside>\n<p><strong>ArtCraft<\/strong> l\u00e0 d\u1ef1 \u00e1n m\u00e3 ngu\u1ed3n m\u1edf (gi\u1ea5y ph\u00e9p MIT ho\u1eb7c Apache-2.0) c\u1ee7a nh\u00f3m <em>storytold<\/em>, \u0111ang vi\u1ebft l\u1ea1i t\u1eeb \u0111\u1ea7u, b\u1eb1ng Rust, nh\u1eefng c\u00f4ng c\u1ee5 ta d\u00f9ng h\u1eb1ng ng\u00e0y \u0111\u1ec3 s\u00e1ng t\u1ea1o. \u0110\u00e2y l\u00e0 c\u00e1c ch\u01b0\u01a1ng tr\u00ecnh g\u1ed1c, nh\u1eb9, kh\u00f4ng thu\u00ea bao, m\u00f4 ph\u1ecfng c\u00e1ch ho\u1ea1t \u0111\u1ed9ng c\u1ee7a nh\u1eefng ph\u1ea7n m\u1ec1m th\u01b0\u01a1ng m\u1ea1i n\u1ed5i ti\u1ebfng nh\u1ea5t m\u00e0 kh\u00f4ng sao ch\u00e9p m\u00e3 c\u1ee7a ch\u00fang. Ch\u00fang ch\u1ea1y tr\u00ean <strong>Windows, macOS, Linux v\u00e0 FreeBSD<\/strong>, nhi\u1ec1u c\u00e1i ch\u1ea1y c\u1ea3 tr\u00ean tr\u00ecnh duy\u1ec7t, v\u00e0 g\u1ea7n nh\u01b0 tu\u1ea7n n\u00e0o c\u0169ng c\u00f3 phi\u00ean b\u1ea3n m\u1edbi. C\u00e1c t\u00ean th\u01b0\u01a1ng m\u1ea1i \u0111\u01b0\u1ee3c nh\u1eafc ch\u1ec9 \u0111\u1ec3 tham kh\u1ea3o: nh\u1eefng ph\u1ea7n m\u1ec1m n\u00e0y kh\u00f4ng li\u00ean quan g\u00ec \u0111\u1ebfn c\u00e1c th\u01b0\u01a1ng hi\u1ec7u \u0111\u00f3.<\/p>\n<h2>T\u1eebng c\u00f4ng c\u1ee5 m\u1ed9t<\/h2>\n<div class=\"ac-app\"><h3><a href=\"https:\/\/github.com\/storytold\/craft-launcher\" rel=\"noopener\">ArtCraft Launcher<\/a> <span class=\"ac-ver\" dir=\"ltr\">v0.8.1<\/span><\/h3><p>H\u00e3y b\u1eaft \u0111\u1ea7u t\u1eeb \u0111\u00e2y. \u0110\u00e2y l\u00e0 tr\u00ecnh c\u00e0i \u0111\u1eb7t t\u1ea5t c\u1ea3 c\u00e1c \u1ee9ng d\u1ee5ng c\u00f2n l\u1ea1i: hi\u1ec3n th\u1ecb to\u00e0n b\u1ed9 danh m\u1ee5c, c\u00e0i m\u1ed7i \u1ee9ng d\u1ee5ng ch\u1ec9 v\u1edbi m\u1ed9t c\u00fa nh\u1ea5p v\u00e0 ch\u1ecdn \u0111\u00fang b\u1ea3n cho m\u00e1y b\u1ea1n, ki\u1ec3m tra t\u1ec7p kh\u00f4ng b\u1ecb h\u1ecfng v\u00e0 b\u00e1o khi c\u00f3 b\u1ea3n c\u1eadp nh\u1eadt. Kh\u00f4ng c\u00f3 g\u00f3i duy nh\u1ea5t ch\u1ee9a t\u1ea5t c\u1ea3, nh\u01b0ng tr\u00ecnh kh\u1edfi ch\u1ea1y n\u00e0y l\u00e0 th\u1ee9 g\u1ea7n nh\u1ea5t.<\/p><\/div>\n<div class=\"ac-app\"><h3><a href=\"https:\/\/github.com\/storytold\/photocraft\" rel=\"noopener\">PhotoCraft<\/a> <span class=\"ac-ver\" dir=\"ltr\">v0.16.0<\/span><\/h3><p>Tr\u00ecnh ch\u1ec9nh s\u1eeda \u1ea3nh theo tinh th\u1ea7n Photoshop: l\u1edbp, v\u00f9ng ch\u1ecdn, c\u1ecd, \u0111i\u1ec1u ch\u1ec9nh v\u00e0 retouch. \u0110\u00e2y l\u00e0 c\u00f4ng c\u1ee5 ph\u1ed5 bi\u1ebfn nh\u1ea5t c\u1ee7a d\u1ef1 \u00e1n tr\u00ean GitHub.<\/p><\/div>\n<div class=\"ac-app\"><h3><a href=\"https:\/\/github.com\/storytold\/lightcraft\" rel=\"noopener\">LightCraft<\/a> <span class=\"ac-ver\" dir=\"ltr\">v0.14.0<\/span><\/h3><p>Th\u01b0 vi\u1ec7n \u1ea3nh v\u00e0 x\u1eed l\u00fd RAW kh\u00f4ng ph\u00e1 h\u1ee7y ki\u1ec3u Lightroom: s\u1eafp x\u1ebfp \u1ea3nh v\u00e0 ch\u1ec9nh ph\u01a1i s\u00e1ng, m\u00e0u s\u1eafc, c\u1eaft c\u00fap m\u00e0 kh\u00f4ng bao gi\u1edd \u0111\u1ed9ng \u0111\u1ebfn t\u1ec7p g\u1ed1c.<\/p><\/div>\n<div class=\"ac-app\"><h3><a href=\"https:\/\/github.com\/storytold\/vectorcraft\" rel=\"noopener\">VectorCraft<\/a> <span class=\"ac-ver\" dir=\"ltr\">v0.17.0<\/span><\/h3><p>Minh h\u1ecda vector nh\u01b0 trong Illustrator: \u0111\u01b0\u1eddng cong, h\u00ecnh kh\u1ed1i, n\u00e9t v\u00e0 ch\u1eef ph\u00f3ng to kh\u00f4ng gi\u1ea3m ch\u1ea5t l\u01b0\u1ee3ng. D\u00f9ng cho logo, bi\u1ec3u t\u01b0\u1ee3ng v\u00e0 \u00e1p ph\u00edch.<\/p><\/div>\n<div class=\"ac-app\"><h3><a href=\"https:\/\/github.com\/storytold\/filmcraft\" rel=\"noopener\">FilmCraft<\/a> <span class=\"ac-ver\" dir=\"ltr\">v0.13.0<\/span><\/h3><p>Tr\u00ecnh d\u1ef1ng video phi tuy\u1ebfn, gi\u1ed1ng Premiere Pro: d\u00f2ng th\u1eddi gian nhi\u1ec1u track, c\u1eaft gh\u00e9p, ch\u1ec9nh m\u00e0u v\u00e0 \u00e2m thanh.<\/p><\/div>\n<aside class=\"ac-anuncio\"><div class=\"ac-et\">Qu\u1ea3ng c\u00e1o<\/div><p><strong>Ph\u1ea7n m\u1ec1m t\u1ef1 do \u0111\u1ec3 s\u00e1ng t\u1ea1o; JamboQR \u0111\u1ec3 chia s\u1ebb khuy\u1ebfn m\u00e3i.<\/strong> V\u1edbi <strong>JamboQR<\/strong> b\u1ea1n l\u1eadp m\u1ed9t c\u00e2u l\u1ea1c b\u1ed9 khuy\u1ebfn m\u00e3i c\u00f9ng h\u00e0ng x\u00f3m v\u00e0 b\u1ea1n b\u00e8: ai t\u00ecm th\u1ea5y g\u00ec th\u00ec \u0111\u0103ng l\u00ean, k\u00e8m \u1ea3nh, gi\u00e1 v\u00e0 \u0111\u1ecba \u0111i\u1ec3m. Mi\u1ec5n ph\u00ed.<\/p><p><a href=\"https:\/\/jamboqr.net\/?utm_source=canaldelasrecetas&amp;utm_medium=artcraft-5&amp;utm_campaign=artcraft-vi\" rel=\"noopener sponsored\"><strong>jamboqr.net<\/strong><\/a><\/p><\/aside>\n<div class=\"ac-app\"><h3><a href=\"https:\/\/github.com\/storytold\/effectcraft\" rel=\"noopener\">EffectCraft<\/a> <span class=\"ac-ver\" dir=\"ltr\">v0.17.0<\/span><\/h3><p>\u0110\u1ed3 h\u1ecda chuy\u1ec3n \u0111\u1ed9ng, gh\u00e9p l\u1edbp v\u00e0 hi\u1ec7u \u1ee9ng h\u00ecnh \u1ea3nh theo h\u01b0\u1edbng After Effects: ti\u00eau \u0111\u1ec1, ho\u1ea1t \u1ea3nh keyframe v\u00e0 c\u00e1c l\u1edbp k\u1ebft h\u1ee3p v\u1edbi nhau.<\/p><\/div>\n<div class=\"ac-app\"><h3><a href=\"https:\/\/github.com\/storytold\/soundcraft\" rel=\"noopener\">SoundCraft<\/a> <span class=\"ac-ver\" dir=\"ltr\">v0.13.1<\/span><\/h3><p>Tr\u1ea1m \u00e2m thanh \u0111\u1ec3 thu, ch\u1ec9nh s\u1eeda v\u00e0 ph\u1ed1i, l\u1ea5y c\u1ea3m h\u1ee9ng t\u1eeb Pro Tools: nhi\u1ec1u track, c\u1eaft, hi\u1ec7u \u1ee9ng v\u00e0 b\u1ea3n ph\u1ed1i cu\u1ed1i.<\/p><\/div>\n<div class=\"ac-app\"><h3><a href=\"https:\/\/github.com\/storytold\/designcraft\" rel=\"noopener\">DesignCraft<\/a> <span class=\"ac-ver\" dir=\"ltr\">v0.13.0<\/span><\/h3><p>D\u00e0n trang v\u00e0 xu\u1ea5t b\u1ea3n ki\u1ec3u InDesign: t\u1ea1p ch\u00ed, t\u1edd g\u1ea5p v\u00e0 s\u00e1ch v\u1edbi trang, c\u1ed9t, ki\u1ec3u ch\u1eef v\u00e0 h\u00ecnh \u1ea3nh.<\/p><\/div>\n<div class=\"ac-app\"><h3><a href=\"https:\/\/github.com\/storytold\/figcraft\" rel=\"noopener\">FigCraft<\/a> <span class=\"ac-ver\" dir=\"ltr\">v0.11.2<\/span><\/h3><p>Thi\u1ebft k\u1ebf giao di\u1ec7n v\u00e0 t\u1ea1o m\u1eabu th\u1eed, nh\u01b0 Figma: m\u00e0n h\u00ecnh \u1ee9ng d\u1ee5ng v\u00e0 web, th\u00e0nh ph\u1ea7n t\u00e1i s\u1eed d\u1ee5ng v\u00e0 b\u1ea3n ph\u00e1c cho th\u1ea5y m\u1ed9t th\u1ee9 s\u1ebd ho\u1ea1t \u0111\u1ed9ng ra sao tr\u01b0\u1edbc khi \u0111\u01b0\u1ee3c x\u00e2y d\u1ef1ng.<\/p><\/div>\n<div class=\"ac-app\"><h3><a href=\"https:\/\/github.com\/storytold\/pdfcraft\" rel=\"noopener\">PdfCraft<\/a> <span class=\"ac-ver\" dir=\"ltr\">v0.14.0<\/span><\/h3><p>\u0110\u1ec3 \u0111\u1ecdc, s\u1eafp x\u1ebfp v\u00e0 b\u1ea3o v\u1ec7 PDF, theo h\u01b0\u1edbng Acrobat: m\u1edf, ghi ch\u00fa, s\u1eafp l\u1ea1i trang v\u00e0 l\u01b0u t\u00e0i li\u1ec7u \u0111\u01b0\u1ee3c b\u1ea3o v\u1ec7.<\/p><\/div>\n<aside class=\"ac-anuncio\"><div class=\"ac-et\">Qu\u1ea3ng c\u00e1o<\/div><p><strong>Ph\u1ea7n m\u1ec1m t\u1ef1 do \u0111\u1ec3 s\u00e1ng t\u1ea1o; JamboQR \u0111\u1ec3 chia s\u1ebb khuy\u1ebfn m\u00e3i.<\/strong> V\u1edbi <strong>JamboQR<\/strong> b\u1ea1n l\u1eadp m\u1ed9t c\u00e2u l\u1ea1c b\u1ed9 khuy\u1ebfn m\u00e3i c\u00f9ng h\u00e0ng x\u00f3m v\u00e0 b\u1ea1n b\u00e8: ai t\u00ecm th\u1ea5y g\u00ec th\u00ec \u0111\u0103ng l\u00ean, k\u00e8m \u1ea3nh, gi\u00e1 v\u00e0 \u0111\u1ecba \u0111i\u1ec3m. Mi\u1ec5n ph\u00ed.<\/p><p><a href=\"https:\/\/jamboqr.net\/?utm_source=canaldelasrecetas&amp;utm_medium=artcraft-10&amp;utm_campaign=artcraft-vi\" rel=\"noopener sponsored\"><strong>jamboqr.net<\/strong><\/a><\/p><\/aside>\n<div class=\"ac-app\"><h3><a href=\"https:\/\/github.com\/storytold\/wordcraft\" rel=\"noopener\">WordCraft<\/a> <span class=\"ac-ver\" dir=\"ltr\">v0.11.0<\/span><\/h3><p>Tr\u00ecnh so\u1ea1n th\u1ea3o v\u0103n b\u1ea3n gi\u1ed1ng Word, cho th\u01b0, b\u00e1o c\u00e1o v\u00e0 t\u00e0i li\u1ec7u c\u00f3 ki\u1ec3u \u0111\u1ecbnh d\u1ea1ng, b\u1ea3ng v\u00e0 h\u00ecnh \u1ea3nh.<\/p><\/div>\n<div class=\"ac-app\"><h3><a href=\"https:\/\/github.com\/storytold\/deckcraft\" rel=\"noopener\">DeckCraft<\/a> <span class=\"ac-ver\" dir=\"ltr\">v0.11.1<\/span><\/h3><p>B\u00e0i thuy\u1ebft tr\u00ecnh v\u00e0 trang chi\u1ebfu ki\u1ec3u PowerPoint: trang chi\u1ebfu c\u00f3 ch\u1eef, h\u00ecnh \u1ea3nh v\u00e0 h\u00ecnh kh\u1ed1i \u0111\u1ec3 tr\u00ecnh chi\u1ebfu to\u00e0n m\u00e0n h\u00ecnh.<\/p><\/div>\n<div class=\"ac-app\"><h3><a href=\"https:\/\/github.com\/storytold\/gridcraft\" rel=\"noopener\">GridCraft<\/a> <span class=\"ac-ver\" dir=\"ltr\">v0.12.1<\/span><\/h3><p>B\u1ea3ng t\u00ednh nh\u01b0 Excel: c\u00f4ng th\u1ee9c, b\u1ea3ng d\u1eef li\u1ec7u, bi\u1ec3u \u0111\u1ed3, s\u1eafp x\u1ebfp ho\u1eb7c l\u1ecdc th\u00f4ng tin.<\/p><\/div>\n<div class=\"ac-app\"><h3><a href=\"https:\/\/github.com\/storytold\/cadcraft\" rel=\"noopener\">CADCraft<\/a> <span class=\"ac-ver\" dir=\"ltr\">v0.13.0<\/span><\/h3><p>Thi\u1ebft k\u1ebf c\u00f3 m\u00e1y t\u00ednh h\u1ed7 tr\u1ee3 v\u00e0 v\u1ebd k\u1ef9 thu\u1eadt theo h\u01b0\u1edbng AutoCAD: b\u1ea3n v\u1ebd v\u1edbi s\u1ed1 \u0111o ch\u00ednh x\u00e1c, l\u1edbp v\u00e0 k\u00edch th\u01b0\u1edbc.<\/p><\/div>\n<div class=\"ac-app\"><h3><a href=\"https:\/\/github.com\/storytold\/artcraft\" rel=\"noopener\">ArtCraft<\/a> <span class=\"ac-ver\" dir=\"ltr\">v0.41.0<\/span><\/h3><p>\u1ee8ng d\u1ee5ng \u0111\u1eb7t t\u00ean cho d\u1ef1 \u00e1n, v\u00e0 l\u00e0 c\u00e1i duy nh\u1ea5t \u0111\u1ee9ng ri\u00eang: m\u1ed9t x\u01b0\u1edfng t\u1ea1o h\u00ecnh \u1ea3nh v\u00e0 video b\u1eb1ng tr\u00ed tu\u1ec7 nh\u00e2n t\u1ea1o, d\u00e0nh cho ngh\u1ec7 s\u0129, nh\u00e0 thi\u1ebft k\u1ebf v\u00e0 nh\u00e0 l\u00e0m phim. Hi\u1ec7n ch\u1ec9 c\u00f3 cho Windows v\u00e0 Mac.<\/p><\/div>\n<h2 id=\"script\">L\u01b0u gi\u1eef t\u1ea5t c\u1ea3: m\u00e3 ngu\u1ed3n v\u00e0 t\u1ec7p th\u1ef1c thi<\/h2>\n<p>N\u1ebfu b\u1ea1n th\u00edch gi\u1eef b\u1ea3n sao m\u1ecdi th\u1ee9 (ph\u00f2ng khi m\u1ed9t ng\u00e0y d\u1ef1 \u00e1n bi\u1ebfn m\u1ea5t, ho\u1eb7c \u0111\u1ec3 c\u00e0i \u0111\u1eb7t kh\u00f4ng c\u1ea7n Internet), script Linux n\u00e0y t\u1ea3i <strong>m\u00e3 ngu\u1ed3n<\/strong> c\u1ee7a t\u1eebng c\u00f4ng c\u1ee5 v\u00e0 <strong>m\u1ecdi t\u1ec7p th\u1ef1c thi c\u1ee7a phi\u00ean b\u1ea3n m\u1edbi nh\u1ea5t<\/strong>, x\u1ebfp v\u00e0o th\u01b0 m\u1ee5c theo c\u00f4ng c\u1ee5 v\u00e0 theo h\u1ec7 \u0111i\u1ec1u h\u00e0nh (Windows, macOS, Linux, FreeBSD v\u00e0 web). Gi\u1ea3i n\u00e9n r\u1ed3i ch\u1ea1y; tham s\u1ed1 l\u00e0 th\u01b0 m\u1ee5c \u0111\u00edch, v\u00e0 v\u1edbi <code>PLATFORMS<\/code> v\u00e0 <code>EXCLUDE<\/code> b\u1ea1n ch\u1ecdn t\u1ea3i g\u00ec. (Ch\u00fa th\u00edch trong \u0111\u00f3 b\u1eb1ng ti\u1ebfng T\u00e2y Ban Nha.)<\/p>\n<p><a class=\"ac-bajar\" href=\"https:\/\/www.canaldelasrecetas.com\/cms\/wp-content\/uploads\/2026\/10\/artcraft-mirror.zip\" download>\u2b07 T\u1ea3i script (artcraft-mirror.zip)<\/a><\/p>\n<pre class=\"ac-code ac-code-corto\" dir=\"ltr\"><code>chmod +x artcraft-mirror.sh\n.\/artcraft-mirror.sh ~\/artcraft\n\nPLATFORMS=&quot;windows linux&quot; EXCLUDE=&#x27;riscv64|aarch64&#x27; .\/artcraft-mirror.sh ~\/artcraft<\/code><\/pre>\n<ul><li><strong>C\u00f3 th\u1ec3 ng\u1eaft gi\u1eefa ch\u1eebng:<\/strong> n\u1ebfu b\u1ecb d\u1eebng, ch\u1ea1y l\u1ea1i v\u00e0 n\u00f3 ti\u1ebfp t\u1ee5c t\u1eeb ch\u1ed7 c\u0169.<\/li><li><strong>Ch\u1ec9 t\u1ea3i c\u00e1i m\u1edbi:<\/strong> khi c\u00f3 phi\u00ean b\u1ea3n m\u1edbi, n\u00f3 t\u1ea1o th\u01b0 m\u1ee5c ri\u00eang v\u00e0 kh\u00f4ng \u0111\u1ee5ng \u0111\u1ebfn c\u00e1c b\u1ea3n c\u0169.<\/li><li><strong>Ki\u1ec3m tra m\u1ecdi th\u1ee9<\/strong> b\u1eb1ng t\u1ed5ng SHA-256 m\u00e0 m\u1ed7i phi\u00ean b\u1ea3n c\u00f4ng b\u1ed1.<\/li><li><strong>T\u1ed1n nhi\u1ec1u dung l\u01b0\u1ee3ng:<\/strong> t\u1ea5t c\u1ea3 n\u1ec1n t\u1ea3ng c\u1ed9ng l\u1ea1i kho\u1ea3ng 24 GB m\u1ed7i phi\u00ean b\u1ea3n; n\u1ebfu ch\u1ec9 c\u1ea7n m\u1ed9t v\u00e0i, h\u00e3y l\u1ecdc.<\/li><\/ul>\n<details><summary>Xem to\u00e0n b\u1ed9 script<\/summary><pre class=\"ac-code\" dir=\"ltr\"><code>#!\/usr\/bin\/env bash\n# artcraft-mirror.sh \u2014 espejo local de las Craft Apps de ArtCraft (github.com\/storytold)\n#\n# Estructura que genera:\n#   &lt;DEST&gt;\/&lt;herramienta&gt;\/code\/&lt;rama&gt;-&lt;herramienta&gt;-AAAAMMDD.zip   (+ .sha con el commit)\n#   &lt;DEST&gt;\/&lt;herramienta&gt;\/release-&lt;versi\u00f3n&gt;\/{windows,macos,linux,freebsd,web,otros}\/...\n#   &lt;DEST&gt;\/&lt;herramienta&gt;\/release-&lt;versi\u00f3n&gt;\/SHA256SUMS.txt\n#\n# - Reanudable: las descargas van a *.part y contin\u00faan con Range (curl -C -).\n#   Una release se da por terminada s\u00f3lo cuando todo se verific\u00f3 contra SHA256SUMS\n#   (queda el marcador .complete). Si se corta, se vuelve a ejecutar y sigue.\n# - Incremental: s\u00f3lo mira la \u00faltima release de cada herramienta; las carpetas\n#   release-* anteriores y los zip de c\u00f3digo de d\u00edas anteriores no se tocan.\n# - El c\u00f3digo fuente se baja s\u00f3lo si el commit de la rama principal cambi\u00f3.\n#\n# Uso:\n#   .\/artcraft-mirror.sh [DEST]           (DEST por defecto: carpeta del script)\n# Variables opcionales:\n#   GITHUB_TOKEN=ghp_...                  sube el l\u00edmite de la API de 60 a 5000 llamadas\/h\n#   PLATFORMS=&quot;windows linux macos&quot;       s\u00f3lo estas plataformas (por defecto todas)\n#   EXCLUDE=&#x27;riscv64|aarch64|flatpak&#x27;     regex de nombres de archivo a omitir\n#   TOOLS=&quot;photocraft cadcraft&quot;           s\u00f3lo estas herramientas\n#   EXTRA_TOOLS=&quot;anicraft&quot;                a\u00f1adir repos de storytold no incluidos en el cat\u00e1logo\n#   SKIP_CODE=1 \/ SKIP_RELEASES=1\n\nset -uo pipefail\n\nOWNER=storytold\nSCRIPT_DIR=$(cd &quot;$(dirname &quot;${BASH_SOURCE[0]}&quot;)&quot; &amp;&amp; pwd)\nDEST=${1:-$SCRIPT_DIR}\nPLATFORMS=${PLATFORMS:-&quot;windows macos linux freebsd web otros&quot;}\nEXCLUDE=${EXCLUDE:-}\nTODAY=$(date +%Y%m%d)\n\n# Cat\u00e1logo de respaldo por si no se puede leer el del launcher\nFALLBACK_TOOLS=&quot;photocraft vectorcraft filmcraft lightcraft pdfcraft effectcraft designcraft\nfigcraft wordcraft soundcraft deckcraft cadcraft gridcraft&quot;\n# Fuera del cat\u00e1logo del launcher pero con releases propias\nALWAYS_TOOLS=&quot;craft-launcher artcraft&quot;\n\nfor bin in curl jq git sha256sum flock; do\n    command -v &quot;$bin&quot; &gt;\/dev\/null || { echo &quot;Falta &#x27;$bin&#x27;&quot; &gt;&amp;2; exit 1; }\ndone\n\nmkdir -p &quot;$DEST&quot;\nexec 9&gt;&quot;$DEST\/.artcraft-mirror.lock&quot;\nflock -n 9 || { echo &quot;Ya hay otra ejecuci\u00f3n en curso en $DEST&quot; &gt;&amp;2; exit 1; }\n\nlog()  { printf &#x27;[%s] %s\\n&#x27; &quot;$(date +%H:%M:%S)&quot; &quot;$*&quot;; }\nwarn() { printf &#x27;[%s] AVISO: %s\\n&#x27; &quot;$(date +%H:%M:%S)&quot; &quot;$*&quot; &gt;&amp;2; }\n\napi() {\n    local auth=()\n    [[ -n ${GITHUB_TOKEN:-} ]] &amp;&amp; auth=(-H &quot;Authorization: Bearer $GITHUB_TOKEN&quot;)\n    curl -fsSL --retry 3 -H &quot;Accept: application\/vnd.github+json&quot; &quot;${auth[@]}&quot; \\\n        &quot;https:\/\/api.github.com\/$1&quot;\n}\n\n# Descarga: $1 url, $2 destino final, $3 tama\u00f1o esperado.\n# Con tama\u00f1o conocido contin\u00faa el .part (Range); sin \u00e9l (zip de c\u00f3digo, generado\n# al vuelo y sin Range) empieza de cero.\nfetch() {\n    local url=$1 out=$2 size=${3:-} part=&quot;$2.part&quot; have resume=()\n    mkdir -p &quot;$(dirname &quot;$out&quot;)&quot;\n    if [[ -n $size &amp;&amp; -f $part ]]; then\n        have=$(stat -c %s &quot;$part&quot;)\n        if (( have == size )); then mv -f &quot;$part&quot; &quot;$out&quot;; return 0; fi\n        if (( have &gt; size )); then rm -f &quot;$part&quot;; fi\n        resume=(-C -)\n    else\n        rm -f &quot;$part&quot;\n    fi\n    curl -fL --retry 5 --retry-delay 5 --retry-all-errors &quot;${resume[@]}&quot; \\\n        --progress-bar -o &quot;$part&quot; &quot;$url&quot; || return 1\n    mv -f &quot;$part&quot; &quot;$out&quot;\n}\n\nplatform_of() {\n    case $1 in\n        SHA256SUMS*)                              echo . ;;\n        *windows*|*.msi|*.exe)                    echo windows ;;\n        *macos*|*.dmg|*.app.tar.gz|*universal*)   echo macos ;;\n        *freebsd*)                                echo freebsd ;;\n        *linux*|*.AppImage*|*.deb|*.rpm|*.flatpak) echo linux ;;\n        *-web-*)                                  echo web ;;\n        *)                                        echo otros ;;\n    esac\n}\n\nwanted() {\n    local name=$1 plat=$2\n    [[ $plat == . ]] &amp;&amp; return 0\n    [[ &quot; $PLATFORMS &quot; == *&quot; $plat &quot;* ]] || return 1\n    [[ -n $EXCLUDE &amp;&amp; $name =~ $EXCLUDE ]] &amp;&amp; return 1\n    return 0\n}\n\ntool_list() {\n    if [[ -n ${TOOLS:-} ]]; then echo $TOOLS; return; fi\n    local cat\n    cat=$(curl -fsSL &quot;https:\/\/raw.githubusercontent.com\/$OWNER\/craft-launcher\/main\/crates\/core\/src\/catalog.rs&quot; 2&gt;\/dev\/null \\\n          | grep -oE &quot;\\&quot;$OWNER\/[a-z0-9-]+\\&quot;&quot; | tr -d &#x27;&quot;&#x27; | cut -d\/ -f2 | grep -v &#x27;^craft-launcher$&#x27; | sort -u)\n    [[ -z $cat ]] &amp;&amp; { warn &quot;no pude leer el cat\u00e1logo del launcher; uso la lista interna&quot;; cat=$FALLBACK_TOOLS; }\n    echo $cat $ALWAYS_TOOLS ${EXTRA_TOOLS:-} | tr &#x27; &#x27; &#x27;\\n&#x27; | awk &#x27;NF &amp;&amp; !seen[$0]++&#x27;\n}\n\nmirror_code() {\n    local tool=$1 dir=&quot;$DEST\/$1\/code&quot; head branch sha last\n    head=$(git ls-remote --symref &quot;https:\/\/github.com\/$OWNER\/$tool&quot; HEAD 2&gt;\/dev\/null) \\\n        || { warn &quot;$tool: no pude consultar el repositorio&quot;; return 1; }\n    branch=$(awk &#x27;\/^ref:\/ {sub(&quot;refs\/heads\/&quot;,&quot;&quot;,$2); print $2}&#x27; &lt;&lt;&lt;&quot;$head&quot;)\n    sha=$(awk &#x27;$2==&quot;HEAD&quot; &amp;&amp; $1!=&quot;ref:&quot; {print $1}&#x27; &lt;&lt;&lt;&quot;$head&quot;)\n    mkdir -p &quot;$dir&quot;\n\n    last=$(ls -1 &quot;$dir&quot;\/*.zip.sha 2&gt;\/dev\/null | sort | tail -1)\n    if [[ -n $last &amp;&amp; $(&lt;&quot;$last&quot;) == &quot;$sha&quot; ]]; then\n        log &quot;$tool: c\u00f3digo al d\u00eda ($branch@${sha:0:8})&quot;\n        return 0\n    fi\n    local zip=&quot;$dir\/$branch-$tool-$TODAY.zip&quot;\n    log &quot;$tool: bajando c\u00f3digo $branch@${sha:0:8} \u2192 $(basename &quot;$zip&quot;)&quot;\n    # El zip por commit garantiza que el archivo corresponde al sha anotado\n    fetch &quot;https:\/\/github.com\/$OWNER\/$tool\/archive\/$sha.zip&quot; &quot;$zip&quot; || { warn &quot;$tool: fall\u00f3 el zip&quot;; return 1; }\n    echo &quot;$sha&quot; &gt; &quot;$zip.sha&quot;\n}\n\nverify() { # $1 archivo, $2 SHA256SUMS \u2192 0 ok \/ 1 mal \/ 2 sin suma publicada\n    local file=$1 sums=$2 expected\n    [[ -f $sums ]] || return 2\n    expected=$(awk -v n=&quot;$(basename &quot;$file&quot;)&quot; &#x27;{f=$2; sub(\/^\\*\/,&quot;&quot;,f)} f==n {print $1}&#x27; &quot;$sums&quot;)\n    [[ -z $expected ]] &amp;&amp; return 2\n    [[ $(sha256sum &quot;$file&quot; | cut -d&#x27; &#x27; -f1) == &quot;$expected&quot; ]]\n}\n\nmirror_release() {\n    local tool=$1 json tag ver rdir\n    json=$(api &quot;repos\/$OWNER\/$tool\/releases\/latest&quot;) || { warn &quot;$tool: sin releases o l\u00edmite de API alcanzado&quot;; return 1; }\n    tag=$(jq -r .tag_name &lt;&lt;&lt;&quot;$json&quot;)\n    ver=${tag#&quot;$tool&quot;-}; ver=${ver#v}\n    rdir=&quot;$DEST\/$tool\/release-$ver&quot;\n\n    if [[ -f $rdir\/.complete &amp;&amp; $(&lt;&quot;$rdir\/.complete&quot;) == &quot;$PLATFORMS|$EXCLUDE&quot; ]]; then\n        log &quot;$tool: release $ver ya completa&quot;\n        return 0\n    fi\n    log &quot;$tool: release $ver&quot;\n    mkdir -p &quot;$rdir&quot;\n    jq -c &#x27;{tag_name, name, published_at, html_url, body}&#x27; &lt;&lt;&lt;&quot;$json&quot; &gt; &quot;$rdir\/release.json&quot;\n\n    local ok=1 name url size plat out sums=&quot;$rdir\/SHA256SUMS.txt&quot;\n    # SHA256SUMS primero para poder verificar el resto\n    while IFS=$&#x27;\\t&#x27; read -r name url size; do\n        plat=$(platform_of &quot;$name&quot;)\n        wanted &quot;$name&quot; &quot;$plat&quot; || continue\n        if [[ $plat == . ]]; then out=&quot;$rdir\/$name&quot;; else out=&quot;$rdir\/$plat\/$name&quot;; fi\n\n        if [[ -f $out ]]; then\n            verify &quot;$out&quot; &quot;$sums&quot;; case $? in\n                0) continue ;;\n                2) [[ $(stat -c %s &quot;$out&quot;) == &quot;$size&quot; ]] &amp;&amp; continue ;;\n            esac\n            warn &quot;$tool: $name no coincide, se vuelve a bajar&quot;; rm -f &quot;$out&quot;\n        fi\n        log &quot;  \u2193 ${out#&quot;$rdir&quot;\/} ($((size \/ 1048576)) MiB)&quot;\n        if ! fetch &quot;$url&quot; &quot;$out&quot; &quot;$size&quot;; then warn &quot;  fall\u00f3 $name&quot;; ok=0; continue; fi\n        verify &quot;$out&quot; &quot;$sums&quot;; case $? in\n            1) warn &quot;  checksum INCORRECTO: $name (se borra)&quot;; rm -f &quot;$out&quot;; ok=0 ;;\n            2) [[ $name != SHA256SUMS* ]] &amp;&amp; [[ $(stat -c %s &quot;$out&quot;) != &quot;$size&quot; ]] &amp;&amp; { warn &quot;  tama\u00f1o incorrecto: $name&quot;; rm -f &quot;$out&quot;; ok=0; } ;;\n        esac\n    done &lt; &lt;(jq -r &#x27;.assets | sort_by(.name | startswith(&quot;SHA256SUMS&quot;) | not)[]\n                    | [.name, .browser_download_url, .size] | @tsv&#x27; &lt;&lt;&lt;&quot;$json&quot;)\n\n    if (( ok )); then echo &quot;$PLATFORMS|$EXCLUDE&quot; &gt; &quot;$rdir\/.complete&quot;; log &quot;$tool: release $ver completa \u2714&quot;\n    else warn &quot;$tool: release $ver incompleta; vuelve a ejecutar el script para continuar&quot;; return 1; fi\n}\n\nfail=0\nfor tool in $(tool_list); do\n    echo &quot;\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 $tool&quot;\n    [[ -z ${SKIP_CODE:-} ]]     &amp;&amp; { mirror_code &quot;$tool&quot;    || fail=1; }\n    [[ -z ${SKIP_RELEASES:-} ]] &amp;&amp; { mirror_release &quot;$tool&quot; || fail=1; }\ndone\n\n(( fail )) &amp;&amp; { warn &quot;Hubo errores; ejecuta de nuevo para reintentar lo pendiente.&quot;; exit 1; }\nlog &quot;Todo al d\u00eda en $DEST&quot;\n<\/code><\/pre><\/details>\n<p class=\"ac-aviso\">\u0110\u00e2y l\u00e0 nh\u1eefng ph\u1ea7n m\u1ec1m c\u00f2n r\u1ea5t non tr\u1ebb, g\u1ea7n nh\u01b0 t\u1ea5t c\u1ea3 g\u1eafn nh\u00e3n <em>alpha s\u1edbm<\/em>: h\u1ee9a h\u1eb9n nhi\u1ec1u, nh\u01b0ng ch\u01b0a th\u1ec3 thay th\u1ebf c\u00f4ng c\u1ee5 chuy\u00ean nghi\u1ec7p cho c\u00f4ng vi\u1ec7c nghi\u00eam t\u00fac. H\u00e3y d\u00f9ng th\u1eed, sao l\u01b0u t\u1ec7p c\u1ee7a b\u1ea1n v\u00e0 b\u00e1o l\u1ed7i tr\u00ean GitHub c\u1ee7a h\u1ecd.<\/p>\n<h2>T\u00e0i li\u1ec7u tham kh\u1ea3o<\/h2>\n<ul class=\"ac-refs\"><li><a href=\"https:\/\/github.com\/storytold\" rel=\"noopener\">GitHub \u00b7 storytold (todas las Crafting Apps)<\/a><\/li><li><a href=\"https:\/\/github.com\/storytold\/craft-launcher\" rel=\"noopener\">GitHub \u00b7 ArtCraft Launcher<\/a><\/li><li><a href=\"https:\/\/github.com\/storytold\/artcraft\" rel=\"noopener\">GitHub \u00b7 ArtCraft<\/a><\/li><li><a href=\"https:\/\/getartcraft.com\/\" rel=\"noopener\">getartcraft.com<\/a><\/li><li><a href=\"https:\/\/www.aljazeera.com\/news\/2026\/10\/14\/how-ai-apps-are-offering-free-substitutes-for-big-tech-software\" rel=\"noopener\">Al Jazeera (14-10-2026) \u00b7 How AI apps are offering free substitutes for Big Tech software<\/a><\/li><li><a href=\"https:\/\/amateurphotographer.com\/latest\/photo-news\/this-home-coder-got-so-sick-of-adobe-he-built-free-open-source-versions-of-photoshop-lightroom-and-premiere\/\" rel=\"noopener\">Amateur Photographer (08-10-2026) \u00b7 This home coder got so sick of Adobe he built free, open-source versions of Photoshop, Lightroom and Premiere<\/a><\/li><li><a href=\"https:\/\/petapixel.com\/2026\/10\/07\/someone-rebuilt-free-open-source-versions-of-photoshop-premiere-and-lightroom-using-ai\/\" rel=\"noopener\">PetaPixel (07-10-2026) \u00b7 Someone Rebuilt Free, Open-Source Versions of Photoshop, Premiere, and Lightroom Using AI<\/a><\/li><li><a href=\"https:\/\/www.creativebloq.com\/design\/design-software\/someone-just-rebuilt-adobe-creative-cloud-with-ai-then-gave-it-away-for-free\" rel=\"noopener\">Creative Bloq \u00b7 Someone just rebuilt Adobe Creative Cloud with AI \u2013 then gave it away for free<\/a><\/li><li><a href=\"https:\/\/www.cined.com\/artcraft-releases-free-open-source-adobe-alternatives-filmcraft-for-premiere-pro-effectcraft-for-after-effects-written-in-rust-with-ai\/\" rel=\"noopener\">CineD \u00b7 ArtCraft Releases Free Open-Source Adobe Alternatives<\/a><\/li><li><a href=\"https:\/\/korben.info\/en\/i-tested-the-12-free-clones-of-adobe-and-microsoft.html\" rel=\"noopener\">Korben \u00b7 I tested the 12 free clones of Adobe and Microsoft<\/a><\/li><\/ul>\n<aside class=\"ac-anuncio\"><div class=\"ac-et\">Qu\u1ea3ng c\u00e1o<\/div><p><strong>Ph\u1ea7n m\u1ec1m t\u1ef1 do \u0111\u1ec3 s\u00e1ng t\u1ea1o; JamboQR \u0111\u1ec3 chia s\u1ebb khuy\u1ebfn m\u00e3i.<\/strong> V\u1edbi <strong>JamboQR<\/strong> b\u1ea1n l\u1eadp m\u1ed9t c\u00e2u l\u1ea1c b\u1ed9 khuy\u1ebfn m\u00e3i c\u00f9ng h\u00e0ng x\u00f3m v\u00e0 b\u1ea1n b\u00e8: ai t\u00ecm th\u1ea5y g\u00ec th\u00ec \u0111\u0103ng l\u00ean, k\u00e8m \u1ea3nh, gi\u00e1 v\u00e0 \u0111\u1ecba \u0111i\u1ec3m. Mi\u1ec5n ph\u00ed.<\/p><p><a href=\"https:\/\/jamboqr.net\/?utm_source=canaldelasrecetas&amp;utm_medium=artcraft-final&amp;utm_campaign=artcraft-vi\" rel=\"noopener sponsored\"><strong>jamboqr.net<\/strong><\/a><\/p><\/aside>\n","protected":false},"excerpt":{"rendered":"<p>M\u1ed9t nh\u00f3m \u0111ang vi\u1ebft l\u1ea1i t\u1eeb \u0111\u1ea7u, b\u1eb1ng Rust, c\u00e1c ph\u1ea7n m\u1ec1m nh\u01b0 Photoshop, Lightroom, Premiere, Word, Excel v\u00e0 AutoCAD. Ch\u00fang mi\u1ec5n ph\u00ed v\u00e0 m\u00e3 ngu\u1ed3n m\u1edf. D\u01b0\u1edbi \u0111\u00e2y m\u1ed7i ph\u1ea7n m\u1ec1m m\u1ed9t \u0111o\u1ea1n, k\u00e8m m\u1ed9t script \u0111\u1ec3 l\u01b0u gi\u1eef t\u1ea5t c\u1ea3.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[12],"tags":[],"class_list":["post-7122","post","type-post","status-publish","format-standard","hentry","category-software-libre"],"spectra_blocks_featured_image_url":null,"spectra_blocks_author_info":{"display_name":"EucL1d35","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/cecf603aee34f11aa921ff30ea69d89a4e51b3cd8d5143029343fa76b0682442?s=96&d=mm&r=g","author_link":"https:\/\/www.canaldelasrecetas.com\/cms\/author\/eucl1d35\/","description":""},"_links":{"self":[{"href":"https:\/\/www.canaldelasrecetas.com\/cms\/wp-json\/wp\/v2\/posts\/7122","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.canaldelasrecetas.com\/cms\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.canaldelasrecetas.com\/cms\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.canaldelasrecetas.com\/cms\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.canaldelasrecetas.com\/cms\/wp-json\/wp\/v2\/comments?post=7122"}],"version-history":[{"count":1,"href":"https:\/\/www.canaldelasrecetas.com\/cms\/wp-json\/wp\/v2\/posts\/7122\/revisions"}],"predecessor-version":[{"id":7147,"href":"https:\/\/www.canaldelasrecetas.com\/cms\/wp-json\/wp\/v2\/posts\/7122\/revisions\/7147"}],"wp:attachment":[{"href":"https:\/\/www.canaldelasrecetas.com\/cms\/wp-json\/wp\/v2\/media?parent=7122"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.canaldelasrecetas.com\/cms\/wp-json\/wp\/v2\/categories?post=7122"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.canaldelasrecetas.com\/cms\/wp-json\/wp\/v2\/tags?post=7122"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}