Communitygithub.com

아우루밀레스/스킬

@aurumiles의 인스타그램 캐러셀을 Canva 내에서 제작합니다. (create-design / copy-design #8), 2026년 9월 24-25일 Davide와 확정한 스타일: Anton/Roboto/OpenSauce 폰트, 검은 배경에 금색, 표지에만 Davide의 실제 사진. Davide가 명시적으로 "Canva에서" 만들거나 기존 Canva 캐러셀을 복제/수정하라고 요청할 때만 사용합니다. 수업 스타일(검은 배경에 빨간색, Oswald, Claude에서 자체 제작)의 캐러셀은 `caroselli-claude` 스킬을 사용하세요.

스킬란 무엇인가요?

이 스킬은 Canva의 AI 디자인 생성 도구(`create-design`)를 사용하여 Instagram 캐러셀을 제작하는 전문 워크플로우입니다. 2026년 9월 Davide와 확정된 '기사도/로마' 스타일(검은 배경, 금색 악센트, Anton/Roboto/OpenSauce 폰트)을 따르며, 표지에만 실제 사진을 사용합니다. 기존 Canva 템플릿을 수동으로 복사하는 방법을 대체하며, AI가 각 슬라이드의 레이아웃, 폰트, 아이콘을 결정합니다. Claude Code 터미널 환경에서 실행되며, Canva API를 통해 디자인을 생성하고, 품질 검사(페이지 순서, 누락된 슬라이드, 가상 텍스트 버그, 폰트 일관성, 로마 숫자 페이지 번호, 표지 사진)를 수행한 후 최종 PNG로 내보냅니다. 모든 생성 후에는 반드시 품질 검사(Phase 3)를 거쳐야 하며, 사용자에게 최종 확인을 받은 후에만 콘텐츠 로그를 업데이트합니다.

지원 대상✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/aurumiles/Skill/tree/HEAD/caroselli-canva

즐겨 사용하는 AI에게 물어보기

이 에이전트 스킬이 미리 로드된 새 채팅을 엽니다.

문서

Caroselli Canva (구 carosello-aurum)

2026년 10월 13일부터 Davide는 레슨 1 슬라이드 스타일을 선호하며 모든 캐러셀에 이를 적용하려고 합니다. 캐러셀은 caroselli-claude 스킬(Canva 아님)로 제작됩니다. 이 스킬은 Canva에서 캐러셀을 제작할 때만 사용합니다.

이전 방식(수동으로 복사한 Canva 템플릿, 사진 위 Anton 폰트 + 어두운 띠)을 대체합니다. 이전 방식은 릴 커버 ([[copertine-reel]])의 기준 스타일로는 유효하지만, 더 이상 캐러셀에는 사용하지 않습니다. 또한 전역 스킬 ig-carousel(Higgsfield/Nano Banana)도 대체합니다. 해당 스킬은 AI 이미지와 텍스트를 생성했지만, 더 이상 사용하지 않습니다.

이 스킬을 열기 전에 콘텐츠(텍스트, 연구 자료, 톤)는 [caroselli]에 설명된 대로 준비합니다: Davide에게 5-6개의 질문, 입증된 실제 연구, Davide를 '당신'으로 부르는 비인칭 어조('나' 사용 금지). 이 스킬은 여기서부터 시작하며 그래픽 제작만 담당합니다.

이 방식을 사용하는 이유

edit-design(릴 커버에 사용되는 도구)은 기존 요소를 정밀하게 수정하지만, 새로운 것에 대한 폰트나 레이아웃을 선택할 수 없습니다. create-design은 다릅니다. 서면 브리프를 보내면 Canva 자체 AI 엔진('Magic Design'과 동일)이 폰트, 레이아웃, 아이콘, 위계를 결정합니다. 결과는 각 슬라이드마다 다른 그래픽(십자선, 거대한 숫자, 체크리스트, 번호가 매겨진 원)이 있는 실제 디자인이며, 콜라주가 아닙니다. 단점: 항상 확인해야 할 결함이 있습니다 — 따라서 아래의 4단계는 선택 사항이 아닙니다.

1단계 — 브리프

하나의 텍스트 브리프(구조화된 개요 아님 — 개요는 design_type: presentation에만 유효하며, 여기서는 사용하지 않음)로 다음을 포함합니다:

  • 형식: "Instagram Post" (4:5, 1080x1350 제공 — 이 프로젝트에서 확인됨).
  • 톤: 중간 수준의 기사도/로마식 레지스터, 2026년 9월 25일 Davide와 확정 (연구 후) — 검투사/스파르탄은 피트니스/격투 업계에서 가장 진부한 클리셰(Gladiator Gym Gear, Spartan Race...)이며, 기사는 덜 사용되었고 [[cammino-guerriero]](Musashi/Bushido = 개인 규율, 군단의 대중 규율이 아님)와 일관됨. 아직 100% 확정되지 않음 — Davide가 두 레지스터를 모두 좋아하며 시간이 지남에 따라 '적절한 조합'을 찾고 싶다고 말함: 마지막 확인 이후 시간이 많이 지났다면 확인을 요청하고, 그렇지 않으면 동일한 조합(Anton/Roboto/OpenSauce, 검은 배경에 금색, 명시적인 투구/방패/글라디우스 없음, 로마 숫자와 같은 미묘한 디테일만)을 다시 제안.
  • 색상: 검은색/앤트러사이트 배경, 흰색 텍스트, 밝은 금색 악센트 하나 (#c29342–#d8af54 범위, 슬라이드마다 약간씩 다름 — AI가 생성하므로 버그가 아니며 통일할 필요 없음).
  • 사진: 표지만 사진 있음 (Davide가 9월 24일 결정: 나머지 슬라이드는 그래픽/타이포그래피로 유지, 사진 없음 — 다양한 이미지를 관리할 필요 없음). 브리프에는 "표지만 사진이 있으며... 나머지 7페이지는 그래픽/타이포그래피이며 사진이 없습니다"라고 작성.
  • 구조: 각 슬라이드를 페이지 N: ...로 레이블, 제목, 본문, 인용된 연구가 있는 경우 이탤릭체로 메모와 함께 나열. 마지막 페이지는 CTA '저장'(아이콘 + 두 줄, 4단계 참조)으로 마무리.
  • 스크롤 표시기: 모든 페이지에 페이지 표시기 "1/8"…"8/8" + 화살표 요청 (마지막 페이지 제외 — 이렇게 제공되며, 4단계에서 로마 숫자로 변환).
  • 로고/핸들: 각 페이지에 작고 눈에 띄지 않게 "AURUM MILES".

이 브리프로 create-design 호출, 짧은 user_intent, outline 없음(Instagram Post, Presentation 아님).

2단계 — 생성 대기

create-design은 비동기식입니다. job_id + continuation_token 및 status: pending을 반환합니다.

  1. 첫 번째 폴 전에 polling_policy.wait_seconds(보통 10-15초)를 기다립니다.
  2. job_id + 마지막 continuation_token으로 get-create-design-async-job을 호출합니다.
  3. status: completed가 될 때까지 반복합니다. 보통 4-6회, 대기 시간을 줄이지 마십시오 (동일한 응답이 동일하게 반환되며, 속도가 빨라지지 않음). 대기하려면 Bash와 sleep을 사용하고, 연속 호출은 피하십시오.
  4. 결과는 design.id와 design.url을 제공합니다. 이것이 확인 및 수정할 캐러셀입니다.

3단계 — 품질 관리 (항상, 예외 없음)

Davide에게 무엇이든 보여주기 전에 모든 페이지를 읽고(read-design, design_content에서 page_indices 없이 한 번에 모든 텍스트 확인) 다음 사항을 확인합니다:

a) 페이지의 물리적 순서

생성기가 때로는 각 슬라이드 위에 쓰여진 순서("N/8")와 다른 순서로 페이지를 생성합니다. 각 페이지의 텍스트를 해당 레이블과 비교하고, 슬라이드가 잘못된 위치에 있으면 다음을 사용하여 재정렬합니다:

merge-designs, type: modify_existing_design, operations: [{type: move_pages, from_page_numbers: [N], to_after_page_number: M}]

호출당 하나의 작업 — 도구는 여러 배치를 거부합니다.

b) 누락된 슬라이드

생성기가 때로는 브리프의 페이지를 건너뜁니다(이미 발생: 8페이지 대신 7페이지, 마무리 누락). 누락된 경우:

  1. 구조가 가장 유사한 페이지의 copy-design(예: '01'과 같은 테마별 유령 숫자가 있는 페이지 대신 마무리를 위한 마지막 '수정').
  2. 기존 로케이터에 대해 replace_text로 텍스트를 다시 작성합니다(제목에 add_text를 사용하지 마십시오 — 생성기가 선택한 폰트를 잃게 됨, 아래 기술 노트 참조).
  3. 더 이상 필요하지 않은 장식 요소(예: CTA가 되는 체크리스트 아이콘 행)를 delete_element로 삭제합니다.
  4. 최종 CTA(아이콘 + 두 줄, 아래 참조)를 삽입합니다.
  5. merge-designs → insert_pages로 페이지를 올바른 위치에 다시 삽입합니다.

c) 배경의 '유령' 텍스트

이 생성기의 반복적인 버그: 원본 텍스트(replace_text 이전)가 때로는 페이지의 배경 이미지에 '구워져' 남아 수정 가능한 텍스트 요소뿐만 아니라 렌더링에서 사라지지 않습니다. 제목이나 본문 뒤에 희미한 글씨로 보입니다. 수정: insert_shape로 단단한 사각형(path M0,0 H<w> V<h> H0 Z), 페이지 검은색에 가까운 색상(#0e0e0e 또는 #131110 사용 가능), 더러운 영역 전체 위에 배치 — 그런 다음 항상 동일한 로케이터에 대해 layer_element와 position: "back"을 사용하여 패치가 래스터 배경 위에 있지만 제목/본문/배지(별도 요소로 유지, 표시됨) 아래에 오도록 합니다. 유령이 더 아래(예: 목록 근처)에서 계속 보이면 resize_element로 패치를 확장하여 흔적이 남지 않을 때까지 — 렌더링으로 항상 확인한 후에 마무리로 간주합니다.

d) 일반적인 겹침 순서(z-order)

모든 새 요소(insert_shape, add_text)는 항상 맨 위 (앞)에 삽입됩니다. 기존 텍스트 뒤에 있어야 하는 항목(위의 패치와 같은)을 추가하는 경우 항상 layer_element: back이 필요합니다. 반대로, 기존 요소(로고, 제목, 페이지 번호)가 추가한 항목 뒤에 있다면 해당 요소에 layer_element: front를 사용합니다.

e) 로마 숫자 페이지 번호

생성기는 "1/8", "2/8"…을 생성합니다. "I / VIII", "II / VIII"… 마지막 페이지는 "VIII / VIII"로 바꿉니다. 로마 텍스트는 더 깁니다. 거의 항상 상자 크기를 늘리고(resize_element, width +100/150px) 왼쪽으로 재배치(position_element)해야 옆에 있는 작은 화살표를 침범하지 않습니다. 항상 같은 페이지에 있는 화살표 아이콘의 왼쪽 위치를 확인하고 번호 상자를 그 앞에 flush하게 배치합니다. 마지막 슬라이드에는 화살표가 없습니다 (더 이상 스크롤할 내용이 없음): "VIII / VIII"만 남기고 다른 것은 건드리지 않습니다.

f) 일관된 폰트

생성기는 요소마다 다른 폰트를 할당합니다. 새 요소나 기존 요소의 폰트를 선택할 수 없습니다 — 어떤 작업도 이를 허용하지 않습니다(format_text는 크기/두께/색상/이탤릭만 변경하며, 폰트 패밀리는 변경할 수 없음). 유일한 방법: Davide가 Canva( edit_url 링크)에서 텍스트를 선택하고 수동으로 폰트를 선택합니다. 요소당 한 번; 그런 다음 replace_text를 사용하여 다른 요소에 재사용합니다. replace_text는 항상 대상 요소의 폰트를 유지합니다. 새 캐러셀이 슬라이드 간에 일관되지 않은 폰트로 나오는 것은 정상입니다. Davide에게 이미 했던 동일한 빠른 작업(제목은 한 폰트, 본문은 다른 폰트, 작은 레이블은 세 번째 폰트)을 요청한 다음 크기/간격을 직접 수정하십시오.

g) 표지 사진

Davide가 자신의 사진을 보내면: create-upload-url (upload-asset-from-url 아님 — URL 필요) → 받은 일회용 URL로 파일 직접 POST → mediaId → 표지 사진 사각형에 update_fill. Canva의 자동 자르기는 일반적으로 세로 또는 정사각형 사진에서 이미 좋습니다. crop_media로 수동 조정하기 전에 렌더링으로 확인하십시오. 다른 슬라이드는 사진 없이 유지됩니다(1단계 참조).

4단계 — 최종 CTA (종료 슬라이드)

Davide와 확정된 표준(2026년 9월 22-25일), 매번 동일하게 재현:

  • 북마크 아이콘(insert_shape, path M0,0 H34 V44 L17,30 L0,44 Z, 금색) CTA 첫 번째 줄과 같은 줄에, 위에 있지 않음.
  • 1행 (행동, 예: "SALVALO PRIMA DEL PROSSIMO SPARRING."): 대문자, 굵게, 이탤릭체 아님, 금색.
  • 2행 (추가 내용, 예: "Mandalo a chi deve salire la prossima volta."): 첫 글자 외 소문자, 이탤릭체, 동일한 금색 — 한 단계 더 연하게. 텍스트 주의: 대상을 너무 좁게 제한하지 마십시오(예: 메시지가 초보자뿐만 아니라 링에 다시 오르는 모든 사람에게 적용되어야 하는 경우 "chi sale per la prima volta" 금지 — 특정 콘텐츠에 따라 다름, 첫 번째 초안이 너무 좁아 보이면 Davide에게 문의).
  • 위 단락과 실제 세로 간격(~150px)으로 분리, 바짝 붙지 않음 — 그렇지 않으면 같은 문장의 연속으로 보입니다.
  • 두 줄 = 두 개의 별도 텍스트 요소 (하나 안에 \n 아님), 각각 다른 서식이 적용되기 때문.

5단계 — 전달

  1. export-design, 형식 png, width: 1080, height: 1350, pages 없음(모두 함께) 3단계가 완료되면.
  2. 각 PNG를 다운로드하여 Caroselli elaborati/AAMMGG_Titolo/1.png … 8.png에 저장(텍스트, slide_, caption_, note_와 같은 폴더 — [[caroselli]] 및 [[produzione-contenuti]] 참조).
  3. 연락처 시트 또는 8개 이미지를 Davide에게 최종 확정 전에 보냅니다. 항상 수정 과정이 있으며, 첫 번째 내보내기에서 승인된 것으로 간주하지 마십시오.
  4. 게시 전 확인: 내보낸 PNG 수(N)를 세고 전달 메시지에서 Davide에게 게시 버튼을 누르기 전에 모든 N 슬라이드가 Instagram 대기열에 있는지 명시적으로 확인하도록 상기시킵니다(예: "N개의 슬라이드, 1.png...N.png입니다 — 게시하기 전에 모두 있는지 확인하세요"). 이미 발생한 일(#8 캐러셀)로, 업로드 중 누락으로 인해 한 슬라이드가 빠져 아무도 게시 전에 알아차리지 못했습니다. 그때는 결과에 영향을 미치지 않았지만 비용이 들지 않는 확인입니다.
  5. Davide의 승인 후에만: memoria/wiki/log.md에 기록하고 [[caroselli]]의 상태를 업데이트합니다.

레이아웃 표준 — Davide가 2026년 10월 2일 #12에서 확정 (지금부터 모든 캐러셀에 적용)

#8 복제 후(아래 참조) Davide가 Canva에서 수동으로 수정한 일련의 세부 사항은 '헤더' 슬라이드(상단에 레이블 + 로마 숫자 + 화살표, 예: "Tecnica N")마다 동일하게 나타납니다. 다음은 즉시 적용해야 하는 고정 치수/기준이며, 슬라이드마다 다시 발견할 필요가 없습니다:

  • 레이블과 정렬된 로마 숫자: 로마 숫자의 top은 옆에 있는 레이블("Tecnica 2", "Perché" 등)의 top과 일치(또는 거의 일치)해야 하며, 더 위나 아래에 있으면 안 됩니다. 같은 줄, 같은 시각적 높이.
  • 화살표: 폰트/크기 ~32-36px, 색상 항상 #c29342 (표준 금색, 아래 참조). 화살표는 로마 숫자 바로 뒤에 작은 깔끔한 간격(~15-20px)을 두고 배치, 바짝 붙지 않음.
  • 헤더 아래 가로 구분선: 있을 때(레이블 아래 줄이 있는 슬라이드), 거의 전체 너비(560-930px 정도)로 만들고, 짧은 선이 아닙니다. 레이블+번호 블록 전체 아래를 깔끔하게 자릅니다.
  • 본문 텍스트 굵게: 본문 텍스트(제목, 인용문 아님)는 font_weight: bold여야 하며, normal/medium이 아닙니다. 검은 배경에서 더 풍부하고 읽기 쉽습니다. 연속적인 짧은 단락(예: "문장 1:" + "문장 2.")은 논리적으로 두 줄로 나뉜 하나의 문장인 경우 각각을 유지하는 대신 하나의 텍스트 요소로 결합할 수 있습니다.
  • 절대 흰색 사용 금지: #ffffff는 흰색 텍스트와 "Aurum Miles" 로고에 대해 #f1f1f1로 대체해야 합니다. 검은색에 대해 약간 덜 강합니다.
  • 최종 CTA (아이콘+2줄): 저장 아이콘과 텍스트 첫 번째 줄("SALVALO...")은 동일한 top (같은 줄, 아이콘이 더 높고 텍스트가 더 낮지 않음)을 공유하며, 아이콘 오른쪽 가장자리와 텍스트 시작 사이에 ~25-30px의 수평 간격을 둡니다.

확인된 버그: 이미지 채움 아이콘의 resize_element

우리 쪽에서 해결 불가: 이미지 채움 아이콘(화살표, 배지)을 API를 통해 크기 조정하면 크기가 조정되는 대신 잘립니다([[caroselli]]의 메모 참조). 더 작은 화살표/아이콘이 필요할 때 resize_element를 사용하지 마십시오: 기본 크기로 두고 위치에서 작업하거나, Davide가 Canva에서 수동으로 수정하는 경우 크기 조정이 잘 작동한다는 점에 유의하십시오(실제 편집기는 콘텐츠를 올바르게 확장하며, API 작업에만 버그가 있음). 이런 식으로 무언가가 손상되었다는 구체적인 신호: textAlign: end가 있는 텍스트 근처의 요소가 '뒤집힌' 것처럼 보이는 경우 — 깨진 아이콘 조각이 겹쳐진 것일 수 있으며, 텍스트 버그가 아닙니다.

산발적인 기술 노트 (매번 다시 발견할 필요 없음)

  • merge-designs: 호출당 하나의 작업, 항상.
  • resize-design (이전 방법, Canva 템플릿 사용)은 제한된/체험판 사용 — 이 워크플로우에서는 더 이상 필요하지 않음, create-design이 이미 올바른 형식으로 생성함.
  • 버전을 보존해야 하는 경우… (잘림)

[기술 노트 메모 원본에서 잘림 — 번역 완료]

Individual skills in this repo

This repo contains 4 individual skills — each has its own dedicated page.

관련 스킬