Notro
니트로 없이 커스텀 이모지와 큰 파일을 — 디스코드 클라이언트는 건드리지 않고.
English | 한국어 | 日本語 | 中文 | Español
---
디스코드가 돈을 받는 두 가지를, 앱 바깥에서 해결합니다.
- **이미지가 14MB인데 무료 한도는 10MB입니다.** 복사하는 순간 Notro가 알아서 줄여
클립보드에 되돌려 놓습니다. Ctrl+V만 누르면 됩니다.
- **커스텀 이모지를 어디서든 쓰고 싶습니다.** Ctrl+Shift+E를
누르고 고르면 입력창에 들어갑니다.
**패치도, 인젝션도, 로그인도 하지 않습니다.** Notro는 클립보드를 준비해 두고
Ctrl+V를 대신 눌러 주는 트레이 앱입니다 — Windows 이모지
패널(Win+.)과 같은 부류의 입력 자동화입니다. 디스코드 클라이언트를
수정하지 않고, 계정이나 토큰은 아예 보지 않습니다. 정직한 한계는 이것입니다: 받는 사람에게는
네이티브 인라인 이모지가 아니라 이미지 첨부로 보입니다.
실제 UI, 실제 라이브러리 — 입력하는 대로 걸러지고, 방향키로 이동, Enter로 붙여넣기.
⬇ NotroSetup.exe 내려받기
관리자 권한 불필요. 사용자 폴더에 설치되고, 설정 → 앱에서 제거합니다.
---
## 피커
어디서든 Ctrl+Shift+E를 누르면 커서 옆에 어두운 팝업이
열립니다. **이모지 / 스티커 / GIF** 세 탭입니다.
**진짜 이모지 크기로 나갑니다.** 디스코드는 첨부 이미지를 원본 픽셀 크기 그대로 그립니다.
그래서 20×20 GIF와 1080×1080 PNG가 섞인 라이브러리는 하나는 먼지처럼, 하나는 사진만 하게
붙습니다. Notro는 붙여넣기 직전에 긴 변을 맞춥니다 — 이모지 **48px**(점보 커스텀 이모지와
같은 크기), 스티커 **160px**, GIF는 원본. **라이브러리 원본 파일은 건드리지 않고**
클립보드에 올라가는 사본만 조정합니다.
**이모지 넣기** — *"링크 복사"* URL을 붙여넣거나, 메시지에서 이모지를 그대로 복사했을 때
나오는 `<:이름:id>` 텍스트를 넣거나, 이미지 파일을 끌어다 놓거나, **감시 폴더**를 지정하거나,
아니면 `%APPDATA%\Notro\assets` 아래에 폴더를 하나 만들어 넣기만 해도 등록 절차 없이
컬렉션이 됩니다.
**다시 찾기** — 이름·키워드 검색에 **한글 초성**이 됩니다 (`ㅁㅋ` → `미쿠`). 즐겨찾기와
최근 사용 항목이 위에 남습니다.
**마우스 없이** — 방향키로 이동, Enter로 붙여넣기, Esc로 닫기.
핫키를 누른 뒤로는 키보드에서 손을 뗄 일이 없습니다.
피커 세부 동작
- 항목 우클릭 → 이름·키워드 수정, 컬렉션 이동, 링크로 붙여넣기(URL로 등록한 항목), 삭제.
- 같은 탭·컬렉션에 이미 있는 그림을 다시 넣으면 조용히 쌓이지 않고 알려줍니다.
- 움직이는 APNG 스티커는 등록 시 GIF로 변환됩니다 — 디스코드가 업로드된 APNG를 재생하지
않기 때문입니다.
- 클립보드 버튼을 누르면 현재 클립보드 이미지가 **캡처** 컬렉션에 바로 저장됩니다. 피커
설정에서 새 클립보드 이미지를 자동 저장할 수도 있고, 기본값은 꺼짐입니다.
- 창 크기를 조절할 수 있고 그 크기를 기억합니다(모니터 배율까지 감안).
- 한도를 넘는 항목: 정지 이미지는 자동 압축, 초과 GIF는 경고와 함께 원본 전송.
- 붙여넣은 뒤 Enter까지 대신 누르는 자동 전송 옵션이 있습니다 — 기본 꺼짐.
## 자동 압축
Notro는 클립보드를 지켜봅니다. 새 이미지가 들어오면 **디스코드가 실제로 만들어 낼 PNG
용량**을 계산하고, 한도 안이면 아무 일도 하지 않습니다. 넘으면 WebP → JPEG 순으로
다시 인코딩하며 품질을, 그래도 안 되면 해상도를 낮춰 ~9.5MB 아래로 맞춘 뒤, 결과를
**파일로** 클립보드에 올려 Ctrl+V가 첨부로 올라가게 합니다.
> 디스크의 원본 파일은 절대 건드리지 않습니다 — 클립보드만 교체합니다.
한도는 트레이에서 **10 / 50 / 500MB**(무료·니트로 베이직·니트로)로 바꿀 수 있습니다.
## 비디오 클립
너무 큰 게임 클립을 복사하면 Notro가 먼저 물어보면서, 어떻게 될지를 보여줍니다:
```
52MB · 1:12 · 1080p60 → 약 9.5MB · 480p30
```
같은 창에서 **구간을 자르고**(`시작 – 끝`) **오디오를 뺄** 수 있으며, 입력하는 대로 예상치가
갱신됩니다. 이게 어떤 인코더 설정보다 중요합니다: 30초짜리 1080p60 영상은 통째로는
**1080p30**으로 떨어지지만, 실제로 원했던 7초만 남기면 **1080p60**을 그대로 유지합니다.
**ffmpeg는 앱에 넣지 않습니다.** 처음 비디오를 압축할 때 필요한 만큼만 내려받고(~30MB,
SHA-256 검증), `PATH`에 이미 있으면 그것을 씁니다. 360p로도 한도에 못 들어가는 클립은
모자이크를 만드는 대신 정직하게 안 된다고 알려줍니다.
## 설치
**[`NotroSetup.exe`](../../releases/latest)**를 받아 실행하세요. 관리자 권한이 필요 없고
`%LOCALAPPDATA%\Programs\Notro`에 설치됩니다.
> ⚠️ 아직 **코드 서명이 없어서** SmartScreen이 "게시자를 알 수 없음"이라고 경고합니다 —
> *추가 정보 → 실행*을 누르시면 됩니다. 릴리스마다 `NotroSetup.exe.sha256`을 함께 올리므로
> 받은 파일을 정확히 검증할 수 있고, [소스에서 직접 빌드](#소스에서-실행빌드설정)해도 됩니다.
> 자세한 내용은 [SECURITY.md](SECURITY.md#code-signing)와
> [코드 서명 정책](CODE_SIGNING.md)에 있습니다.
**Windows 10 사용자:** 피커에는 Microsoft Edge WebView2 런타임이 필요합니다(Windows 11은
기본 내장). 없으면 설치 프로그램이 받아서 설치합니다. 없어도 피커만 비활성화되고 압축은
그대로 동작합니다.
### 어디로 갔나요?
Notro에는 **메인 창이 없습니다** — 시계 옆 트레이에서 실행됩니다. **Windows 11은 새 트레이
아이콘을 기본으로 숨기므로**, 안 보이면 **`^`** 화살표를 누르고 Notro 아이콘을 작업 표시줄로
끌어다 놓으세요.
나머지는 전부 트레이 아이콘 우클릭에 있습니다: 피커 단축키, 일시정지, 최근 처리 내역,
업로드 한도, 언어, 출력 폴더, 그리고 Windows 시작 시 자동 실행(**기본 꺼짐**).
## 개인정보
Notro는 클립보드를 감시하므로, 그 내용을 어떻게 다루는지 밝혀 둡니다.
- **복사한 내용은 어디로도 전송되지 않습니다.** 텔레메트리·분석·크래시 리포트·계정,
어느 것도 없습니다.
- **요청하지 않으면 저장하지도 않습니다.** 캡처 자동 저장은 기본 꺼짐입니다.
- 외부 통신은 문서화된 서비스로만 제한됩니다: GitHub(업데이트 확인과 인스톨러,
SHA-256 검증), `cdn.discordapp.com`과 `media.discordapp.net`(링크로 이모지나
스티커를 등록할 때만), PyPI(비디오를 처음 압축할 때 ffmpeg 조달, 역시 SHA-256 검증).
- 설치 중에만 Microsoft Edge WebView2가 없으면 설치 프로그램이 HTTPS로
`go.microsoft.com`에서 Microsoft 서명의 Evergreen 부트스트래퍼를 다운로드합니다.
이 파일은 Notro가 게시한 SHA-256으로 검증하지 않습니다.
- 제거해도 **라이브러리는 일부러 남깁니다**(`%APPDATA%\Notro`). 재설치해도 이모지를
잃지 않게 하려는 것입니다.
파일이 정확히 어디에 저장되는지까지 [SECURITY.md](SECURITY.md)에 있습니다.
## 언어
English, 한국어, 日本語, 中文(简体), Español — Windows 언어를 자동 감지하고 트레이에서
언제든 바꿀 수 있습니다.
소스에서 실행·빌드·설정
```sh
pip install -r requirements.txt
pythonw notro.py # 실행
build.bat # dist\Notro.exe 빌드
```
Windows + Python 3.10 이상이 필요합니다.
압축 동작은 `notro_app/config.py`와 `notro_app/compress.py`에 있습니다:
| 설정 | 기본값 | 설명 |
|---|---|---|
| `LIMIT_MB` | 10 | 업로드 한도 — 트레이 메뉴에서 10/50/500 선택 가능 |
| `SAFETY` | 0.95 | 안전 마진 (약 9.5MB 목표) |
| `WEBP_QUALITIES` | 90–50 | WebP 품질 단계 |
| `MIN_SCALE` | 0.4 | 해상도 축소 하한 |
테스트:
```sh
pip install -r requirements-dev.txt
pytest
```
## 라이선스
[MIT](LICENSE). 배포물에 포함된 서드파티 구성요소와 각각의 라이선스는 — LGPL-3.0인
pystray를 포함해 — [THIRD-PARTY-NOTICES.md](THIRD-PARTY-NOTICES.md)에 정리해 두었습니다.
> Notro는 Discord와 무관한 비공식 도구이며, **Discord Inc.가 제휴/후원/승인한 프로젝트가
> 아닙니다.** "Discord"는 Discord Inc.의 상표입니다.