Search
moon
sun
🏷️

05 · Metadata와 스크립트 배포

메타데이터는 스크립트 본문을 실행하지 않고 식별·표시·도킹 등록에 사용한다. 현재 10개 필드를 지원한다. 기준일: 2026-10-03.

헤더 예제

//@ID com.example.title-tool //@NAME 'Title Tool' //@DESC 'Create text layers from a native panel.' //@AUTHOR 'Your name' //@VERSION 1.0.0 //@TYPE panel //@PLATFORMS windows
JavaScript
복사
예제 ID/작성자/버전은 작성할 도구에 맞게 바꾼다. 지원 주소와 최소 버전은 실제 확인된 값이 있을 때만 추가한다. @VERSION은 스크립트 버전이고 AEX/VSIX 버전과 별개다.

필드 레퍼런스

•
@ID — 의미·형식: 소문자 ASCII dotted namespace. segment는 영문/숫자 및 내부 하이픈. 업데이트·이동에도 유지 · 최대 UTF-8 bytes: 128
•
@NAME — 의미·형식: 목록에 표시할 이름 · 최대 UTF-8 bytes: 256
•
@DESC — 의미·형식: 설명. 줄바꿈/탭 escape 허용 · 최대 UTF-8 bytes: 4096
•
@AUTHOR — 의미·형식: 개발자 표시 이름 · 최대 UTF-8 bytes: 256
•
@SUPPORT — 의미·형식: 공백 없는 HTTP(S) 지원 URL. 도달 가능성은 검사하지 않음 · 최대 UTF-8 bytes: 2048
•
@VERSION — 의미·형식: 스크립트 버전, SemVer 2.0 · 최대 UTF-8 bytes: 128
•
@TYPE — 의미·형식: script 또는 panel · 최대 UTF-8 bytes: 두 값 중 하나
•
@MIN_AEUSCRIPT — 의미·형식: 최소 플러그인/runtime 버전, SemVer 2.0. VSIX 버전이 아님 · 최대 UTF-8 bytes: 128
•
@MIN_AE — 의미·형식: 최소 AE 제품 버전, major.minor 또는 major.minor.patch · 최대 UTF-8 bytes: 128
•
@PLATFORMS — 의미·형식: windows, macos, 또는 두 값을 쉼표로 나열. 공백·중복 불가 · 최대 UTF-8 bytes: 허용 목록
최소 버전과 플랫폼은 현재 정보 표시용 선언이다. 불일치 실행을 막는 gate는 아직 없다. macos를 써도 플러그인의 Mac 지원이 생기지 않는다. 확인한 지원 범위만 적는다.
일반 Run은 모든 필드를 생략할 수 있다. 도킹 등록에는 유효한 ID와 TYPE panel이 필수다. NAME이 없거나 헤더에 오류가 있으면 목록은 파일명을 사용하며, 알려진 헤더 필드 오류가 있는 파일의 실행은 차단된다.

파싱 규칙

첫 코드 token 전의 선두 공백/주석 영역만 검사한다. //@KEY value와 // @KEY value를 지원하며 키는 대문자다. 선두 block comment 자체는 허용하지만 내부 directive는 읽지 않는다. 코드나 문자열 안의 directive도 메타데이터가 아니다.
값은 작은따옴표/큰따옴표 문자열 또는 공백 없는 bare 값이다. 문자열 보간이나 표현식은 실행하지 않는다.
지원 escape: \\ \' \" \n \r \t
Plain Text
복사
DESC 외 필드에는 디코딩된 CR/LF/TAB를 허용하지 않는다. 알려진 키의 중복·빈 값은 오류다. 알 수 없는 키는 경고 후 무시하며 빌드의 canonical header에 포함하지 않는다. LICENSE/HOMEPAGE/DOCS/TAGS도 현재 구현된 필드가 아니다.
UTF-8/BOM, LF/CRLF/CR을 처리한다. 선두 공백/주석은 16 KiB로 제한한다. 닫히지 않은 block comment, 잘못된 UTF-8/NUL 또는 헤더 한도 초과는 오류다. reader는 prefix만 읽고 JS를 평가하지 않는다.

VS Code 명령

•
AEUScripts: Show Script Metadata: 현재 편집 내용의 헤더를 실행 없이 읽는다. 저장하거나 본문을 실행하지 않는다.
•
AEUScripts: Insert Script Metadata: ID가 없을 때 local.<UUID>를 한 번 삽입한다. 헤더가 없으면 NAME/VERSION/TYPE도 추가한다. 기존 ID나 잘못된 헤더는 덮어쓰지 않는다. 편집 Undo가 가능하며 자동 저장하지 않는다.
•
AEUScripts: Build Current Script: 원본 ID를 바꾸거나 새로 발급하지 않고, 알려진 필드를 생성 파일의 헤더에 보존한다.
배포용 ID는 충돌하지 않는 namespace로 정하고 한번 등록한 뒤 유지한다. 파일명 해시나 매 빌드마다 새 ID를 발급하는 방법을 쓰지 않는다.

스크립트 전달

1.
원본 .aeu와 필요한 .aeui.xml을 UTF-8로 보관한다.
2.
빌드를 성공시킨 뒤 .aeuscript/이름.aeu를 실행용으로 전달한다. 리터럴 loadXML 리소스는 생성 JavaScript 안에 포함된다.
3.
개발자용 전달에는 원본/XML과 .aeu.map도 함께 제공하면 오류 추적에 도움이 된다. 원본을 수정한 뒤에는 모두 재빌드한다.
4.
일반 실행은 Common, 도킹은 Panels 등록·새 ID 재시작이 필요하다는 사용 절차를 같이 적는다.
5.
스크립트 버전, 필요한 기능, 검증한 AE/OS, 오류 시 Undo·Restart 절차를 명시한다.
.aeux, .aeub, Custom Effect/FXwrapper, CEP bridge는 후속 지원 범위다. 현재 XML 포함 빌드는 .aeub 패키지 구현이 아니다. 생성 JavaScript는 비밀 코드 보호/암호화 포맷이 아니다.

근거

docs/SCRIPT_METADATA.md, docs/DOCKABLE_SCRIPTS.md, AEUScripts for vscode/README.md, src/metadata.cpp, 확장 src/metadata.ts.