명령줄(jpgboost-cli)

jpgboost-cli는 그래픽 인터페이스를 열지 않고도 이미지를 압축합니다. 스크립트, 예약 작업, 지속적 통합에 적합한 도구입니다.

Mac App Store 버전에서는 사용할 수 없습니다

jpgboost-cli는 jpgboost.com에서 직접 판매되는 JPGBoost 버전에만 포함되어 있습니다. Mac App Store 버전에는 어떤 라이선스 등급에서도 포함되어 있지 않으며, 향후 업데이트로도 추가될 수 없습니다. Store 앱에 적용되는 Apple의 샌드박스는 명령줄 실행 파일을 포함하거나 인터페이스 없이 실행되는 것을 완전히 금지합니다. Mac App Store 버전을 사용 중이라면 로컬 API, 감시 폴더, 단축어 및 AppleScript 연동이 대부분의 스크립트 및 자동화 요구를 대신 충족해 줍니다.

Pro 기능

여러분의 라이선스는 개인적으로 사용하는 최대 2개의 설치를 지원합니다. 앱과 CLI는 같은 Mac에 설치되어 있더라도 각각 별도의 설치로 계산됩니다. 이는 설정 > 라이선스에 기기로 표시됩니다.

지속적 통합이나 예약 작업처럼 자신의 자동화를 위해 CLI만 실행하는 서버는 추가 라이선스 없이 이 두 자리 중 하나를 사용할 수 있습니다. 자세한 내용은 서버에서의 라이선스사용자당 하나의 라이선스 섹션을 참고하세요.

명령줄의 용도

jpgboost-cli는 JPGBoost.app에 포함된 독립적인 실행 파일입니다. 로컬 API에도, 실행 중인 앱 인스턴스에도 의존하지 않으며, 동일한 디코딩 및 인코딩 엔진을 직접 사용하므로 그래픽 인터페이스와 정확히 동일한 파일을 만들어냅니다.

인터페이스를 전혀 열고 싶지 않은 경우에 적합한 진입점입니다. 셸 스크립트, 예약 작업, 지속적 통합, 대량 파일 처리 등에 유용합니다.

설치할 것이 없습니다

jpgboost-cliJPGBoost.app에 포함되어 있습니다. 이미 앱에 통합된 구성 요소를 사용하므로 컴파일도, 라이브러리 설치도 필요하지 않습니다.

명령어를 접근 가능하게 만들기

바이너리는 앱 패키지 안에 있습니다. 전체 경로를 사용해 직접 호출할 수 있습니다:

/Applications/JPGBoost.app/Contents/MacOS/jpgboost-cli --help

어떤 폴더에서든 jpgboost-cli를 실행할 수 있도록, 한 번만 심볼릭 링크를 만드세요:

sudo ln -s /Applications/JPGBoost.app/Contents/MacOS/jpgboost-cli \
  /usr/local/bin/jpgboost-cli

jpgboost-cli --help

이 링크는 패키지를 가리키므로 앱을 업데이트한 후에도 유효합니다. 이 페이지의 예시는 이러한 설치를 전제로 합니다. 설치하지 않았다면 jpgboost-cli 대신 위의 전체 경로를 사용하세요.

sudo를 사용하지 않는 경우

PATH에 포함되어 있다면 /usr/local/bin 대신 ~/bin처럼 개인 폴더를 사용할 수도 있습니다. 간단한 대안으로 ~/.zshrc에 별칭을 추가하는 방법도 있습니다.

서버에서의 라이선스

그래픽 인터페이스가 없는 서버처럼 CLI만 실행하는 머신은 JPGBoost.app을 사용하지 않고도 활성화 및 관리할 수 있습니다.

# CLI에서 이 기기의 식별자 확인
jpgboost-cli --machine-id

# 구매 후 이메일로 받은 토큰으로 첫 활성화
jpgboost-cli --activate ACT-XXXX-XXXX-XXXX-XXXX-XXXX

# 이미 활성화된 이 서버에서 다른 기기를 추가하기 위한 코드 생성
jpgboost-cli --add-device

# 다른 곳(앱 또는 다른 CLI)에서 생성한 코드로 라이선스에 참여하기
jpgboost-cli --pair XXXX-XXXX

# 서버에 더 최신 버전의 라이선스가 있으면 가져오기
jpgboost-cli --sync

# 사용 중인 설치 수/한도, 그 목록 — 네트워크 호출 없는 로컬 읽기
jpgboost-cli --devices
앱과 CLI는 별도의 두 설치로 계산됩니다

앱과 CLI는 같은 Mac에서 사용하더라도 서로 다른 두 개의 설치로 간주됩니다. 각각 고유한 설치 식별자를 가지므로, Pro 라이선스가 허용하는 두 자리 중 하나를 차지합니다.

따라서 여러분의 Mac에는 앱을, 서버에는 CLI를 두거나, 같은 Mac에 앱과 CLI를 함께 두거나, 서로 다른 두 대의 Mac에 앱을 두거나, 앱을 전혀 열지 않는 서버에 CLI만 두는 등 다양한 방식으로 라이선스를 활용할 수 있습니다.

문법과 옵션

jpgboost-cli <file...> --output <folder> [options]
옵션기능기본값
--output <folder>대상 폴더, 존재하지 않으면 생성됨필수
--quality <1-100>압축 화질75
--format <format>png, jpeg, heic, avif, webp, jxl 중 하나jpeg
--profile <name>이름이 지정된 내보내기 프로필 적용없음
--jobs <N>병렬로 처리되는 파일 수코어 수
--json읽기 쉬운 텍스트 대신 구조화된 JSON 출력비활성화
--help도움말 표시

첫 번째 예시

# 두 파일을 WebP, 화질 60으로 변환
jpgboost-cli foto1.jpg foto2.png --quality 60 --format webp --output ./compressed
# foto1.jpg: 4.2 MB -> 890 KB (-79%) -> ./compressed/foto1.webp
# foto2.png: 1.8 MB -> 620 KB (-66%) -> ./compressed/foto2.webp
#
# 2개의 파일 처리됨, 실패 0개.

# 폴더 전체를 AVIF로 변환
jpgboost-cli ~/Pictures/export/*.png --format avif --quality 65 --output ~/Pictures/web

일괄 처리 및 병렬화

수백에서 수천 개의 파일을 다룰 때는 --jobs 옵션으로 여러 이미지를 동시에 처리할 수 있습니다. 각 파일은 독립적으로 디코딩되고 인코딩된 후 해제되므로, 메모리 사용량은 대기 중인 파일 수가 아니라 --jobs 값에 따라서만 증가합니다.

# 8개의 파일을 동시에 처리
jpgboost-cli ~/Photos/batch/*.jpg --jobs 8 --format webp --output ~/Photos/web

# 공유 머신의 부하를 줄이기 위해 하나씩 처리
jpgboost-cli ~/Photos/batch/*.jpg --jobs 1 --format webp --output ~/Photos/web
측정된 성능 향상

12개 파일로 이루어진 배치에서 --jobs 8--jobs 1보다 약 4배 빨랐습니다. 실제 성능 향상은 Mac의 코어 수와 대상 포맷에 따라 달라집니다. AVIF와 JPEG XL은 JPEG나 HEIC보다 인코딩 속도가 눈에 띄게 느립니다.

내보내기 프로필 사용하기

--profile 옵션은 앱이나 API를 통해 만든 프로필을 다시 사용합니다. 명시적으로 지정하지 않은 부분만 보완합니다.

# 포맷, 화질, 폴더가 모두 프로필에서 옵니다
jpgboost-cli --profile "Web JPEG" *.png

# 명시적인 폴더가 우선하고 나머지는 프로필에서 옵니다
jpgboost-cli --profile "Web JPEG" --output ./de/livery *.png

CLI는 설정이나 로컬 API를 거치지 않고도 프로필을 직접 만들거나 업데이트할 수 있습니다:

jpgboost-cli --create-profile "Web JPEG" --format jpeg --quality 70 --output ./compressed

--format--quality는 필수이며, --output은 선택 사항입니다(지정한 폴더는 이미 존재해야 합니다). 이미 사용 중인 이름은 앱의 프로필 탭과 로컬 API에서와 마찬가지로, 복제본을 만드는 대신 기존 프로필을 대체합니다. CLI의 다른 기능과 마찬가지로 JPGBoost Pro가 필요합니다.

JSON 출력

--json을 사용하면 출력은 처리된 각 파일이 JSON 객체에 대응하는 JSON 배열이 되며, 로컬 API의 응답과 동일한 형식이므로 jq나 다른 도구와 연결하기 쉽습니다.

jpgboost-cli *.png --format webp --output ./output --json

# jq와 연결하기: 오류가 있는 파일만 남기기
jpgboost-cli *.png --format webp --output ./output --json \
  | jq '.[] | select(.error != null)'

사용 가능한 필드: path, originalSizeBytes, compressedSizeBytes, ratio, destination, error.

종료 코드

코드의미
0모든 파일이 성공적으로 처리됨
77이 기기에 유효한 Pro 라이선스가 없음
0이 아닌 값적어도 하나의 파일이 실패함. 스크립트나 지속적 통합에서 직접 사용 가능

동일한 이름의 파일

기본 이름이 같은 두 입력 파일은 자연스럽게 같은 출력을 가리키게 됩니다. a/foto.jpgb/foto.png를 WebP로 변환하면 둘 다 foto.webp가 됩니다.

JPGBoost는 이를 덮어쓰지 않습니다. 두 번째 파일에는 별도의 이름이 부여됩니다.

a/foto.jpg  ->  foto.webp
b/foto.png  ->  foto-2.webp

이름은 --jobs에 따른 실행 순서와 관계없이 인수의 순서대로 지정되므로 결과는 재현 가능합니다. 동일한 규칙이 앱, 단축어, AppleScript, 감시 폴더에도 적용됩니다.

동일한 내보내기 반복하기

이 규칙은 서로 다른 파일 간의 충돌에만 관련됩니다. 동일한 파일을 동일한 폴더로 다시 내보내면 이전 출력을 대체할 뿐, foto-2, foto-3 등이 쌓이지 않습니다.

설치 확인하기

언제든지 명령어가 제대로 응답하는지 확인할 수 있습니다:

jpgboost-cli --help