{
  "schema": "tesign-radar/item/1",
  "generated_at": "2026-09-17T01:56:13.055Z",
  "lang": "ko",
  "slug": "zenconverter",
  "url": "https://tesign.com/item/zenconverter/",
  "alternates": {
    "ko": {
      "html": "https://tesign.com/item/zenconverter/",
      "json": "https://tesign.com/item/zenconverter/index.json",
      "markdown": "https://tesign.com/item/zenconverter/index.md"
    },
    "en": {
      "html": "https://tesign.com/en/item/zenconverter/",
      "json": "https://tesign.com/en/item/zenconverter/index.json",
      "markdown": "https://tesign.com/en/item/zenconverter/index.md"
    }
  },
  "name": "ZenConverter",
  "use_label": "안드로이드 기기 내 파일 변환",
  "one_liner": "영상·음성·이미지·PDF·폰트를 폰 안에서만 변환하는 안드로이드 앱 — 업로드 없음, 광고 없음",
  "text": {
    "why": "안드로이드 변환 앱은 광고가 많거나 파일을 먼저 서버에 올리는 경우가 흔한데, 이 앱은 Kotlin/Jetpack Compose로 만들어 모든 변환을 기기 안 포그라운드 서비스에서 처리한다. 영상(MP4/MKV/MOV)과 음성(MP3/M4A/WAV/FLAC/OPUS)은 FFmpeg로 실제 재인코딩하고, HEIC 포함 이미지, PDF 병합·압축·암호화, TTF/OTF/WOFF2 폰트, SRT/VTT/LRC/ASS 자막까지 다루며 Real-ESRGAN 업스케일은 NCNN Vulkan으로 돈다. INTERNET 권한은 수동 업데이트 확인과 모델·폰트 내려받기에만 쓰고, 지원 범위와 한계는 공개 support-matrix.md에 적어 둔다(v0.2.3, 2026-09-12).",
    "take": "'업로드 먼저' 관행을 거부하고 지원 범위와 한계를 표로 공개한 점이 핵심이며, 그 대가로 큰 영상은 폰의 저장 공간·메모리·배터리를 그대로 요구한다.",
    "build": [
      "AGPL 소스라 특정 용도만 남긴 경량 포크(예: 상품 사진 일괄 WEBP 변환 + 메타데이터 제거)를 만들 수 있고, 포그라운드 서비스 → 엔진 라우팅 → 저장의 큐 구조는 다른 안드로이드 미디어 앱의 참고 설계로 쓸 수 있다."
    ],
    "who": [
      {
        "role": "폰에서 바로 영상 용량을 줄이거나 GIF로 바꾸려는 사용자",
        "situation": "서버 업로드 없이"
      },
      {
        "role": "사진 메타데이터를 지우고 공유하려는 사람",
        "situation": "JPG는 재인코딩 없이 정리, 백업으로 복원 가능"
      },
      {
        "role": "안드로이드 미디어 앱 개발자",
        "situation": "Compose + 포그라운드 서비스 + FFmpeg 파이프라인 참고"
      }
    ],
    "start": [
      {
        "command": false,
        "text": "1. Google Play(패키지 org.zenconverter.app) 또는 GitHub Releases의 APK로 설치"
      },
      {
        "command": false,
        "text": "2. 파일 선택 → 파일별 출력 형식·옵션 지정 → 큐에 추가하면 포그라운드 서비스가 변환"
      },
      {
        "command": false,
        "text": "# 개발 환경은 docs/development-setup.md 참고 — 빌드 명령은 README에 없음 [확인 필요]"
      }
    ],
    "caveat": [
      "AGPL-3.0 — README 원문은 'GNU AGPL v3.0 or later', 홈페이지는 'AGPL-3.0+' (서드파티 라이브러리·네이티브 바이너리·번들 폰트는 각자 라이선스)",
      "안드로이드 전용; 최소 지원 Android 버전은 README에 없음 [확인 필요]",
      "Office 변환은 베타(레이아웃 재현 제한, 원본 64 MiB 상한), 프레임 보간은 실험 단계; 대용량 영상은 저장 공간·메모리·전원 여유가 필요"
    ]
  },
  "cta": {
    "type": "install",
    "label": "INSTALL",
    "url": "https://zenconverter.xlab.my/"
  },
  "ready": "install",
  "categories": [
    "productivity",
    "media"
  ],
  "categories_confirmed": true,
  "tags": [
    "android",
    "kotlin",
    "jetpack-compose",
    "ffmpeg",
    "file-converter",
    "local-first"
  ],
  "platform": [
    "android"
  ],
  "license": {
    "spdx": "AGPL-3.0",
    "scope": "copyleft",
    "scope_text": "사용·수정은 자유. 배포는 물론 네트워크 서비스로 제공해도 소스 공개.",
    "url": "https://spdx.org/licenses/AGPL-3.0.html",
    "note": null,
    "open_source": true
  },
  "language": "Kotlin",
  "source_urls": {
    "canonical": "https://zenconverter.xlab.my/",
    "github": "https://github.com/jasonzhu1207/zenconverter",
    "huggingface": null,
    "app_store": null,
    "sightings": [
      {
        "source": "github",
        "url": "https://github.com/jasonzhu1207/zenconverter",
        "posted_at": "2026-09-04T03:00:00.000Z",
        "hn_url": null
      }
    ]
  },
  "numbers": {
    "as_of": "2026-09-16T21:00:00.000Z",
    "stars": 1364,
    "stars_unit": "GitHub stars",
    "stars_checked_at": "2026-09-15T19:35:07.007Z",
    "stars_observed_since_check": 0,
    "star_delta_24h": null,
    "star_delta_7d": 13,
    "star_delta_30d": 27,
    "star_delta_unit": "GitHub stars gained in the window, GH Archive events summed to as_of",
    "spark_14d": [
      null,
      6,
      4,
      2,
      2,
      null,
      null,
      null,
      4,
      7,
      2,
      null,
      null,
      null
    ],
    "hf_likes": null,
    "hf_likes_observed_at": null,
    "hn_points": null,
    "hn_points_observed_at": null,
    "store": null,
    "method": "별 총합 = GitHub에서 마지막으로 확인한 값(stars_checked_at) + 그 뒤 GH Archive에서 관측한 증가. 24h·7d·30d 증가는 GH Archive 시간별 이벤트를 기준 시각(as_of)까지 합한 값. 우리 점수는 없습니다."
  },
  "ranks": null,
  "activity": {
    "pushed_at": "2026-09-14T16:01:20.000Z",
    "owner_type": "User",
    "open_issues": 2,
    "contributors": 4,
    "releases_count": 15,
    "latest_release": {
      "tag": "pre-release",
      "published_at": "2026-09-14T16:01:23.000Z",
      "prerelease": true
    },
    "checked_at": "2026-09-15T19:35:07.007Z",
    "core_checked_at": "2026-09-15T19:35:07.007Z"
  },
  "signals": [
    {
      "kind": "back",
      "label": "과거 기록",
      "value": null
    }
  ],
  "images": {
    "og": "https://tesign.com/img/zenconverter-1e5195cf95.png",
    "cover": "https://tesign.com/img/zenconverter-1e5195cf95.png",
    "cover_width": 2400,
    "cover_height": 1260,
    "gallery": [
      "https://tesign.com/img/zenconverter-1e5195cf95.png",
      "https://tesign.com/img/zenconverter-ade9d8a23a.png"
    ],
    "alt": "ZenConverter 앱 화면 — 변환 대기열에 파일별 대상 형식과 진행률이 표시된 Material 3 UI",
    "tier": 1
  },
  "dates": {
    "first_seen_at": "2026-09-13T09:39:49.913Z",
    "source_created_at": "2026-07-09T09:29:10.000Z",
    "discovery_hours": 1584.177753611111,
    "launch_signal_at": "2026-09-04T03:00:00.000Z",
    "kept_at": "2026-09-14T19:27:43.603Z",
    "first_published_at": "2026-09-14T19:27:43.743Z",
    "updated_at": "2026-09-15T04:36:57.065Z",
    "ingestion_mode": "backfill"
  },
  "notes": [
    "이 파일은 tesign.com 항목 페이지와 같은 빌드에서 같은 데이터로 만들어졌습니다. 소개 글은 편집자가 쓴 것이고, 숫자는 저장된 관측값입니다.",
    "JSON의 null은 관측하지 않았다는 뜻입니다 — 0이 아닙니다. 마크다운에서는 [확인 필요]로 적습니다.",
    "별 총합 = GitHub에서 마지막으로 확인한 값(stars_checked_at) + 그 뒤 GH Archive에서 관측한 증가. 24h·7d·30d 증가는 GH Archive 시간별 이벤트를 기준 시각(as_of)까지 합한 값. 우리 점수는 없습니다.",
    "과거 데이터를 되짚어 채운 항목입니다. 라이브 발견이 아닙니다.",
    "요약이며 법적 조언이 아닙니다."
  ]
}
