본문으로 건너뛰기
autohunt
레퍼런스

launch.json 규격

Product Hunt 제출 폼을 기준으로, 조코헌트 항목까지 한 파일에 담습니다.

위치

launch.json은 사이트의 .well-known/launch.json에 둡니다. 이 파일이 있는 폴더가 기준 주소이고, 기준 주소 하나가 전시 하나입니다. Autohunt는 핑한 주소의 폴더부터 한 단계씩 위로 올라가며 파일을 찾고, 도메인 루트에서 멈춥니다.

launch.json 위치 예시
경우루트 사이트핑한 주소 → 기준 주소핑https://example.com/기준https://example.com/
경우GitHub 프로젝트 페이지핑한 주소 → 기준 주소핑https://dunzkoi.github.io/loupecast/en/기준https://dunzkoi.github.io/loupecast/

소유는 links.website로 확인합니다. 이 주소가 기준 주소로 시작해야 합니다. 이미지의 상대 경로는 기준 주소를 기준으로 풀고, 다른 출처의 웹사이트나 이미지 주소는 받지 않습니다.

주소는 비교 전에 정리합니다. 호스트는 소문자와 퓨니코드로 바꾸고, 기본 포트와 끝의 점, 쿼리와 해시는 뗍니다. www가 붙은 주소와 붙지 않은 주소는 다른 출처입니다.

필드

기본 언어는 영어(PH 기준)이고, 한국어 문구는 i18n.ko에 둡니다.

launch.json v1 필드
Main info
필드name형식string제한1–40자필수필수Product HuntName of the launch조코헌트제품 이름
필드tagline형식string제한1–60자필수필수Product HuntTagline조코헌트한 줄 소개
필드description형식string제한1–500자(260자 이내 권장)필수필수Product HuntDescription조코헌트설명
필드links.website형식HTTPS URL제한200과 <title>, 기준 주소로 시작필수필수Product HuntLinks (first)조코헌트웹사이트
필드links.github형식URL | null제한—필수선택Product HuntLinks조코헌트GitHub
필드links.other형식URL[]제한—필수선택Product HuntLinks조코헌트—
필드openSource형식boolean제한—필수선택Product HuntIs this an open source project?조코헌트—
필드x형식string | null제한x.com/ 뒤 핸들필수선택Product HuntX account of the launch조코헌트—
필드phTags형식string[]제한0–3개필수권장Product HuntLaunch tags조코헌트—
필드firstComment형식string | null제한—필수권장Product HuntFirst comment조코헌트—
Images and media
필드media.thumbnail형식path | URL제한정사각 240px 이상, PNG·JPEG·GIF·WebP, 2,097,152바이트 이하필수필수Product HuntThumbnail조코헌트로고
필드media.gallery형식(path | URL)[]제한1–8장, 1270:760 ±2%필수필수Product HuntGallery조코헌트스크린샷
필드media.video형식YouTube/Loom URL | null제한—필수권장Product HuntVideo / Loom조코헌트데모 영상
필드media.interactiveDemo형식URL | null제한—필수선택Product HuntInteractive demo조코헌트—
Makers
필드makers[]형식{ name, x?, github?, producthunt?, email?, role? }[]제한name 필수필수권장Product HuntMakers조코헌트메이커
필드submitterIsMaker형식boolean제한—필수선택Product HuntDid you work on this product?조코헌트—
Extras
필드pricing형식"free" | "paid" | "freemium"제한—필수권장Product HuntPricing조코헌트가격 모델
필드promo형식{ offer, code, expires } | null제한셋 다 채우거나 null필수선택Product HuntPromo code조코헌트—
필드launchDate형식YYYY-MM-DD | null제한미래 날짜는 그날(KST)부터 전시필수선택Product HuntLaunch date조코헌트—
Autohunt·조코헌트 전용
필드categories형식enum[]제한14개 중 1개 이상, 중복 없음필수필수Product Hunt—조코헌트카테고리
필드stage형식"idea" | "development" | "beta" | "launched"제한—필수선택Product Hunt—조코헌트단계
필드feedbackWanted형식enum[]제한UX, 가격, 아이디어 검증, 네이밍, 마케팅, GTM필수선택Product Hunt—조코헌트받고 싶은 피드백
필드draft형식boolean제한true면 수집하지 않음필수선택Product Hunt—조코헌트—
필드i18n.ko형식{ tagline?, description?, firstComment? }제한같은 제한필수권장Product Hunt—조코헌트한국어 문구

글자 수는 코드 포인트로 셉니다. 한글 한 자와 이모지 하나가 각각 1입니다. promo의 셋 다 채우기와 같은 출처 규칙은 JSON Schema로는 표현하지 못해 서버만 검사합니다.

전체 예시

POLICY의 예시 그대로입니다. MCP autohunt_get_guide의 examplePayload와 같은 값입니다.

launch.json 예시
{  "$schema": "https://autohunt.flowoodz.com/schema/launch.v1.json",  "version": 1,  "name": "Loupecast",  "tagline": "Free, open-source Screen Studio alternative for macOS",  "description": "A free, open-source Screen Studio alternative for macOS. It records your screen and zooms toward each click.",  "links": {    "website": "https://dunzkoi.github.io/loupecast/en/",    "github": "https://github.com/dunzkoi/loupecast",    "other": []  },  "openSource": true,  "x": "flowoodzx",  "phTags": [    "Open Source",    "Design Tools",    "GIFs"  ],  "categories": [    "크리에이터 도구"  ],  "pricing": "free",  "stage": "launched",  "promo": null,  "firstComment": "I wanted click-zoom screen recordings on macOS for free, so I built Loupecast in the open.",  "media": {    "thumbnail": "/launch/thumbnail.png",    "gallery": [      "/launch/gallery-1.png",      "/launch/gallery-2.png",      "/launch/gallery-3.png"    ],    "video": null,    "interactiveDemo": null  },  "makers": [    {      "name": "Dun Z",      "x": "flowoodzx",      "producthunt": null,      "github": "dunzkoi",      "role": "maker"    }  ],  "submitterIsMaker": true,  "feedbackWanted": [    "UX",    "아이디어 검증"  ],  "launchDate": null,  "i18n": {    "ko": {      "tagline": "macOS용 무료 오픈소스 Screen Studio 대안",      "description": "macOS용 무료 오픈소스 Screen Studio 대안입니다. 화면을 녹화하면서 클릭한 곳으로 확대합니다.",      "firstComment": "macOS에서 클릭 확대 녹화를 무료로 쓰고 싶어서 Loupecast를 공개로 만들었습니다."    }  }}

검사 규칙

오류가 하나라도 있으면 전시하지 않습니다. 경고는 전시를 막지 않습니다. 메시지마다 고칠 방법이 함께 나옵니다.

오류

  • required

    필수 값이 없습니다: version, name, tagline, description, links.website, categories, media.thumbnail, media.gallery, makers[].name.

  • invalid_typeinvalid_value

    형식이 틀렸거나 허용 목록에 없는 값입니다(version은 1, pricing, stage, feedbackWanted).

  • too_long

    name 40자, tagline 60자, description 500자를 넘었습니다. i18n.ko도 같고, 글자는 코드 포인트로 셉니다.

  • too_many_tags

    phTags가 3개를 넘습니다.

  • categories_emptycategory_unknowncategory_duplicate

    categories가 비었거나, 14개에 없는 값이 있거나, 같은 값이 두 번 있습니다.

  • promo_partial

    promo의 offer, code, expires 중 일부만 채웠습니다.

  • date_format

    promo.expires나 launchDate가 실제 날짜인 YYYY-MM-DD가 아닙니다.

  • website_not_https

    links.website가 https:// 주소가 아닙니다.

  • website_not_owned

    links.website가 기준 주소로 시작하지 않습니다.

  • website_statuswebsite_no_title

    웹사이트가 200을 돌려주지 않거나 <title>이 있는 HTML이 아닙니다(배포된 사이트를 검사할 때).

  • video_unrecognized

    media.video가 YouTube(watch, youtu.be, shorts, embed)나 Loom(share, embed) 주소가 아닙니다.

  • thumbnail_not_squarethumbnail_too_small

    썸네일이 정사각형이 아니거나 240px보다 작습니다.

  • gallery_emptygallery_too_many

    갤러리가 비었거나 8장을 넘습니다.

  • gallery_ratio

    갤러리 이미지 비율이 1270:760에서 2% 넘게 벗어났습니다.

  • image_typeimage_too_largeimage_no_sizeimage_fetch_failed

    바이트로 본 형식이 PNG·JPEG·GIF·WebP가 아니거나, 2,097,152바이트를 넘거나, 앞 256KB 안에서 크기를 읽지 못했거나, 받지 못했습니다.

  • asset_other_originasset_invalid

    이미지가 다른 출처의 절대 주소이거나 올바른 URL이 아닙니다.

  • draft

    "draft": true입니다. 수집하지 않습니다.

경고

  • description_long

    설명이 260자를 넘습니다.

  • gallery_few

    갤러리가 3장보다 적습니다.

  • gallery_narrow

    갤러리 이미지 너비가 1270px보다 좁습니다.

  • video_missing

    데모 영상이 없습니다.

  • first_comment_missing

    firstComment가 없습니다.

  • i18n_ko_missing

    i18n.ko의 tagline, description, firstComment 중 빈 것이 있습니다. 한국어 페이지에는 영어 값이 나갑니다.

  • makers_alone

    제출자 말고 다른 메이커가 없습니다.

  • ph_tag_unknown

    phTags 값이 내장 PH 태그 목록에 없습니다.

  • promo_expired

    promo.expires가 지났습니다.

  • pricing_missing

    pricing이 없습니다.

이미지 검사(형식, 크기, 가로세로)는 배포된 사이트를 검사할 때만 합니다. 초안만 넘기면 필드 규칙만 봅니다.

Esc

↑↓ 이동 · Enter 열기 · Esc 닫기