TrendShift 딥다이브 · 2026-07-13 · Daily #6

awesome-mac 딥다이브
— macOS 앱 리스트를 JSON·RSS·npm으로 배포하는 "콘텐츠=데이터" 큐레이션

awesome-mac개발자·디자이너를 위한 고품질 macOS 소프트웨어를 카테고리별로 모은 거대한 큐레이션 리스트다. 하지만 이 문서가 주목하는 건 "좋은 맥 앱 목록"이라는 겉면이 아니라, 하나의 마크다운 문서(README)를 단일 진실원으로 두고 → JSON 데이터·정적 웹사이트·RSS 피드·npm 패키지·Docker 이미지로 자동 파생시키는 "콘텐츠 파이프라인"이다. 그냥 리스트가 아니라 docs-as-data(문서를 데이터로)의 교과서 — remark로 마크다운을 AST로 파싱하고, GitHub Actions로 태그·체인지로그·npm 배포·Docker 푸시를 자동화하고, 최근에는 .codex AI 에이전트 스킬로 유지보수까지 자동화한다. 10년 가까이 축적된 클래식이 어떻게 "살아있는 데이터 제품"이 되었는지를 뜯어보는 자료다. (저장소: jaywcjlove/awesome-mac · 저자 jaywcjlove(Kenny Wang) · 4개 언어(en/zh/ja/ko) · 약 1,300개 앱 · 29개 카테고리 · v2.1.0 · TrendShift 오늘 Daily #6)
목차
  1. 프로젝트 한 줄 요약
  2. 왜 지금 주목받는가
  3. 기술 스택 전체 지도
  4. 아키텍처 심화 분석
  5. 디렉토리 구조 해부
  6. 학습 포인트
  7. 시스템 요구사항
  8. 직접 해볼 수 있는 실습 과제
  9. 관련 기술 심화 학습 로드맵
  10. 핵심 키워드 사전
  11. 참고 링크

1프로젝트 한 줄 요약

이름부터 뜯어보기 — Awesome(모범 큐레이션 리스트) + Mac(macOS 앱) = "잘 정리된 맥 앱 명단"인데, 그 명단이 곧 데이터다

awesome-mac"macOS용 좋은 앱·도구를 카테고리별로 모아 한 문서에 정리한 커뮤니티 큐레이션 리스트"다. 텍스트 에디터·IDE·디자인 도구·AI 도구·브라우저·유틸리티까지 29개 대분류, 40여 개 소분류로 약 1,300개 앱이 알파벳순으로 나열되고, 각 항목은 한 줄 설명 + 공식 링크 + 아이콘 배지(오픈소스/무료/앱스토어/네이티브/Awesome)로 이뤄진다.

여기까지는 sindresorhus/awesome 계열의 흔한 "Awesome 리스트"다. awesome-mac이 특별한 건 이 마크다운을 "읽는 문서"가 아니라 "기계가 파싱하는 데이터"로 설계했다는 점이다. README에 숨겨진 <!--start-->/<!--end--> 마커 사이 영역을 remark로 파싱해 dist/awesome-mac.json을 만들고, 그걸 npm 패키지로 배포한다. 즉 "맥 앱 명단"이 곧 import 해서 쓰는 데이터셋이 된다.

한 문장 비유

"손으로 쓴 맛집 노트를, 스캔해서 검색·배달앱·뉴스레터로 자동 뿌리는 편집국"

보통 Awesome 리스트는 정성껏 손으로 쓴 맛집 노트다 — 사람이 읽기엔 좋지만, 노트일 뿐이다. awesome-mac은 이 노트를 한 번 쓰면 자동으로 여러 형태로 퍼지는 편집 시스템으로 만들었다.

노트(README)를 고치면 → 기계가 항목을 뜯어 깔끔한 데이터 카드(JSON)로 바꾸고 → 그걸로 검색되는 웹사이트를 짓고(idoc), 새로 추가된 집만 골라 뉴스레터(RSS)로 보내고, 개발자가 코드에서 불러 쓸 수 있게 상자(npm 패키지·Docker)에 담아 배송한다. 사람은 노트만 잘 쓰면 되고, 나머지 배포는 파이프라인이 한다.

핵심 용어
Awesome 리스트 (Awesome List)
sindresorhus/awesome에서 시작된 특정 주제의 고품질 자료를 엄선해 마크다운으로 정리하는 오픈소스 문화. "많이"가 아니라 "엄선"이 핵심이라 기여 규약(한 항목당 PR 하나, 알파벳순, 중복 금지, 한 문장 설명)이 엄격하다. awesome-mac은 그중 macOS 앱에 특화된 대표 리스트다.
핵심 용어
콘텐츠 = 데이터 (docs-as-data)
사람이 읽는 문서(마크다운)를 동시에 기계가 파싱하는 데이터 소스로 취급하는 발상. awesome-mac은 README를 유일한 원본(single source of truth)으로 두고, 거기서 JSON·웹사이트·RSS를 전부 자동 생성한다. 사람은 한 곳(README)만 관리하고 파생물은 손대지 않는다.

2왜 지금 주목받는가

TrendShift Daily #6 · "오래된 클래식"이 "데이터 제품 + AI 유지보수"로 리뉴얼되며 재트렌딩

awesome-mac은 새로 뜬 신상이 아니다. GitHub에서 손꼽히게 오래·널리 별을 받은 macOS 큐레이션으로, 수년째 꾸준히 갱신돼 온 클래식이다. 이런 노장이 2026년 7월 TrendShift Daily 상위(#6)로 다시 올라온 건, 리스트 자체의 방대함에 더해 최근의 "데이터화 + 자동화 + AI 유지보수" 리뉴얼이 개발자들의 관심을 끌었기 때문이다. (TrendShift의 굵은 숫자는 별 수가 아니라 사회적 언급 모멘텀이다.)

주목 포인트 1 — 방대함과 신뢰성 (약 1,300개 앱 · 4개 언어)

텍스트 에디터부터 데이터 복구·프록시/VPN·양자화 로컬 LLM 도구까지, macOS에서 쓸 만한 거의 모든 범주를 커버한다. 본문(README.md) 하나가 약 1,300개 항목 · 2,000개 이상의 링크로 구성되고, 영어·중국어·일본어·한국어 4개 언어판을 동시 유지한다. "맥 새로 샀는데 뭐 깔지?"에 대한 사실상의 표준 답안지라, 검색 유입과 재방문이 끊이지 않는다.

주목 포인트 2 — 리스트가 곧 npm 패키지 (README-as-API)

단순 열람용 문서가 아니라 npm i awesome-mac로 설치해 JSON 데이터를 코드에서 import할 수 있다. "맥 앱 추천기"나 "카테고리 브라우저" 같은 걸 만들 때, 남의 잘 관리된 데이터셋을 그대로 끌어다 쓸 수 있다는 실용성이 개발자에게 매력적이다. 언어별 서브패스(awesome-mac/ko 등)까지 제공한다.

주목 포인트 3 — AI 에이전트가 리스트를 유지보수한다

최근 저장소에 .codex/skills/awesome-mac-maintainer라는 AI 에이전트 스킬이 추가됐다. Codex 같은 코딩 에이전트에게 "이 앱을 적절한 카테고리에 추가하고 4개 언어 README에 동기화해줘"라고 시키면, 스킬이 카테고리 선택·알파벳 정렬·한 문장 설명·다국어 동기화 규칙을 지키며 편집한다. "오픈소스 큐레이션 + AI 유지보수"라는 2026년다운 조합이 화제성을 더했다.

주목 포인트 4 — 완전 자동 배포 파이프라인

master에 푸시만 하면 GitHub Actions가 JSON 생성 → RSS 갱신 → GitHub Pages 배포 → 태그·체인지로그 → npm 배포(provenance) → Docker 이미지 빌드·푸시까지 한 번에 처리한다. "마크다운 한 줄 고쳤을 뿐인데 웹사이트·패키지·도커·RSS가 전부 최신화"되는 이 흐름 자체가 CI/CD 학습용 좋은 레퍼런스다.

3기술 스택 전체 지도

"콘텐츠 → 데이터 → 배포"를 잇는 작지만 촘촘한 Node.js 툴체인

awesome-mac의 코드는 크지 않다. 핵심은 build/의 두 스크립트와 설정 파일 몇 개뿐. 하지만 "마크다운 하나를 여러 제품으로 바꾸는" 파이프라인의 각 단계가 서로 다른 도구로 잘 분업돼 있어, 스택 지도를 그리면 현대 문서-데이터 워크플로우의 축소판이 된다.

콘텐츠 계층 (원본)

순수 마크다운이 전부다. README.md(영어, ~1,667줄) + README-zh.md·README-ja.md·README-ko.md 3개 번역판. 여기에 command-line-apps*.md(CLI 앱)·editor-plugin*.md(에디터 플러그인) 같은 곁가지 리스트가 붙는다. 데이터로 뽑을 영역은 <!--start--><!--end--> HTML 주석으로 구획된다.

빌드 · 데이터 계층 (Node.js ESM)

도구역할
remark + remark-gfm마크다운을 AST(구문 트리)로 파싱하는 unified 생태계 파서. GFM(GitHub 확장 문법)까지 이해한다. build/ast.mjs의 심장.
to-vfile파일을 remark가 먹는 "가상 파일(vfile)" 객체로 읽어들이는 어댑터.
fs-extraoutputJsonSync 등으로 JSON을 편하게 쓰는 fs 확장.
build/ast.mjsREADME → dist/awesome-mac{,.zh,.ja,.ko}.json 변환기. (§4에서 정독)
build/feed.mjsgit 로그를 훑어 "최근 추가된 앱" RSS(feed*.xml)를 증분 생성.

정적사이트 · 배포 계층

도구역할
idoc저자(jaywcjlove)가 직접 만든 정적 사이트 생성기(SSG). idoc.yml 설정만으로 README들을 검색 가능한 문서 사이트로 빌드. 메뉴·다국어·RSS 링크·GA를 주입한다.
Dockerlipanski/docker-static-website(수 MB급 초경량 정적 서버) 위에 dist를 얹은 이미지. docker run -p 9881:3000으로 오프라인 열람.
npm registryawesome-mac 패키지로 발행. main/exports가 JSON을 가리켜, 코드에서 import ... with { type: 'json' }으로 소비.
GitHub Pagespeaceiris/actions-gh-pagesdistjaywcjlove.github.io/awesome-mac에 배포.

CI/CD · 유지보수 계층

.github/workflows/ci.ymlmaster 푸시에서 전 과정을 오케스트레이션한다. Node 24 · jaywcjlove/create-tag-action(package.json 버전으로 자동 태깅) · jaywcjlove/changelog-generator(체인지로그) · npm publish --provenance(공급망 증명) · Docker Hub 푸시까지. 그리고 .codex/skills/awesome-mac-maintainer/AI 에이전트용 큐레이션 규칙을 담는다.

주의 — 라이선스 표기가 3곳에서 서로 다르다
데이터를 재사용하려면 반드시 확인

이 저장소는 라이선스 표기가 일관되지 않다. 루트 LICENSE 파일은 CC0 1.0(사실상 퍼블릭 도메인), package.jsonlicense 필드는 CC-BY-SA-4.0(저작자표시·동일조건), idoc 푸터는 CC BY 4.0(저작자표시)로 각각 다르다. 리스트 데이터를 상업적으로 재활용하거나 재배포할 계획이라면, 세 표기 중 어느 것이 유효한지 이슈로 확인하는 편이 안전하다.

균형 잡기 — 자기 홍보가 섞인 헤더
"엄선 리스트"이되, 문서 상단은 저자 앱 광고

README 최상단에는 스폰서 배너와 저자 본인이 만든 유료 macOS 앱 수십 개(App Store 링크)가 배치돼 있다. 본문의 큐레이션 항목 자체는 커뮤니티 PR로 채워지지만, 문서의 얼굴 부분은 마케팅 공간이라는 점은 감안하고 보는 게 좋다. Awesome 리스트가 개인 브랜딩·수익화와 결합된 흔한 형태다.

4아키텍처 심화 분석

단일 원본(README) → AST 파싱 → 파생물 팬아웃(fan-out)

전체 구조는 "하나가 여럿을 낳는" 팬아웃 파이프라인이다. 사람이 만지는 건 왼쪽 끝(마크다운) 하나뿐이고, 오른쪽의 모든 산출물은 자동 생성된다.

[사람이 관리하는 유일한 원본] README.md / -zh / -ja / -ko (마크다운, <!--start--> ~ <!--end--> 로 데이터 영역 구획) │ ▼ ┌──────────────────────────────┐ │ build/ast.mjs (remark AST) │ 마크다운 → 구문 트리 → 앱 카드 JSON │ · 리스트 항목에서 제목/URL 추출 │ │ · 아이콘 배지를 icons[]로 구조화 │ │ · ~취소선~ 항목은 delete:true │ └──────────────┬───────────────┘ ▼ dist/awesome-mac{,.zh,.ja,.ko}.json ← "데이터" │ ┌────────────┼───────────────┬──────────────┐ ▼ ▼ ▼ ▼ npm 패키지 idoc SSG build/feed.mjs Docker (import용) (검색 웹사이트) (git 로그 → RSS) (정적 서버 이미지) │ │ │ │ ▼ ▼ ▼ ▼ registry GitHub Pages feed*.xml (커밋) Docker Hub └──────── 전부 GitHub Actions(ci.yml)가 push 한 번에 오케스트레이션 ────────┘ [곁길] .codex/skills/awesome-mac-maintainer → AI 에이전트가 README 직접 편집(카테고리·다국어 동기화)

핵심 설계 패턴 1 — 주석 마커로 "데이터 영역" 구획

ast.mjs는 트리에서 <!--start--><!--end--> 주석 노드의 위치를 찾아, 그 사이 자식들만 잘라내 데이터로 삼는다. 덕분에 상단의 스폰서 배너·설명·목차 같은 "장식"은 데이터에서 자연히 빠진다. 문서에 사람용 콘텐츠와 기계용 콘텐츠를 한 파일에 공존시키는 깔끔한 방법이다.

// build/ast.mjs — 데이터 영역만 슬라이스
const startIndex = tree.children.findIndex(
  item => item.type === 'html' && /<!--start-->/.test(item.value))
const endIndex   = tree.children.findIndex(
  item => item.type === 'html' && /<!--end-->/.test(item.value))
const data = tree.children.slice(startIndex + 1, endIndex)
FS.outputJsonSync(outputFile, getMdToAST([...data]))

핵심 설계 패턴 2 — 아이콘 배지를 구조화 데이터로

각 앱 뒤의 배지(![Open-Source Software][OSS Icon] 등)는 사람 눈엔 그림이지만, ast.mjsgetIconDetail이 이걸 imageReference 식별자로 인식icons:[{type:'oss', url}] 형태로 뽑아낸다. 즉 마크다운의 시각 기호가 곧 구조화된 메타데이터가 된다 — "무료냐/오픈소스냐/앱스토어냐"를 코드로 필터링할 수 있는 이유다. 취소선(~~폐기~~)이 있으면 delete:true로 표시된다.

배지의미JSON type
OSS Icon오픈소스 (아이콘 클릭 시 저장소)oss
Freeware Icon무료 / 무료 개인 라이선스freeware
app-store IconApp Store 링크app-store
Native Icon네이티브 앱(마커)
awesome-list Icon대응하는 Awesome 리스트로 연결awesome-list

핵심 설계 패턴 3 — 상태를 파일에서 파생하는 증분 RSS

feed.mjs는 별도 캐시·상태 파일을 두지 않는다. 대신 이미 존재하는 feed*.xml 자체에서 이전 상태를 읽어 증분 계산하고, README별로 최근 50커밋만 스캔한다(--commit-limit·--item-limit 기본 50). 매번 전체 히스토리를 걷지 않아 실행이 빠르고 예측 가능하다. "상태를 산출물에 내장"하는 영리한 무상태(stateless) 설계다.

핵심 설계 패턴 4 — AI 유지보수 스킬의 "규칙 코드화"

.codex/skills/awesome-mac-maintainer/SKILL.md는 사람이 암묵적으로 지키던 큐레이션 규칙을 에이전트가 따를 명시적 절차로 적어둔 문서다: ① 비슷한 앱을 검색해 카테고리 결정 → ② 각 언어 파일의 지역 구조 확인 → ③ 4개 언어에 추가 → ④ 설명은 한 문장 → ⑤ rg·git diff로 검증. "설명 스타일"까지 예시로 못박아, AI가 마케팅 문구를 쓰지 않게 가드레일을 건다.

5디렉토리 구조 해부

코드는 작고, 콘텐츠와 자동화 설정이 대부분
awesome-mac/ ├── README.md ← 영어 원본(단일 진실원, ~1,667줄 · 243KB) ├── README-zh.md ← 중국어판 ├── README-ja.md ← 일본어판 ├── README-ko.md ← 한국어판 ├── command-line-apps*.md ← 곁가지: CLI 앱 리스트(4개 언어) ├── editor-plugin*.md ← 곁가지: 에디터 플러그인 리스트 │ ├── build/ │ ├── ast.mjs ← 마크다운 → JSON AST 변환기 (remark) │ └── feed.mjs ← git 로그 → 증분 RSS 생성기 │ ├── feed/ ← 생성된 RSS (feed.xml, feed-zh/ja/ko.xml) — git에 커밋됨 ├── dist/ ← 빌드 산출물(JSON·favicon) — .gitignore 대상 ├── docs/ │ ├── CONTRIBUTING.md ← 기여 규약(알파벳순·한 문장·중복 금지) │ ├── CODE-OF-CONDUCT.md │ └── ES6-IMPORT-GUIDE.md ← npm 데이터 import 방법(ESM/CJS/TS) │ ├── .codex/skills/awesome-mac-maintainer/ │ ├── SKILL.md ← AI 유지보수 에이전트 규칙 │ ├── agents/openai.yaml ← Codex 표시용 메타 │ └── references/supported-files.md ← 편집 대상 파일 경계 │ ├── .github/ │ ├── workflows/ci.yml ← 빌드·배포 파이프라인 전체 │ └── ISSUE_TEMPLATE/ ← 앱 추가/삭제/버그 이슈 폼(YAML) │ ├── idoc.yml ← 정적사이트(SSG) 설정 ├── Dockerfile ← 초경량 정적 서버 이미지 ├── package.json ← npm 패키지(exports로 언어별 JSON 노출) └── logo.svg / LICENSE / renovate.json

눈여겨볼 점: 실행 코드는 build/ 두 파일이 거의 전부이고, 나머지는 콘텐츠(마크다운)와 자동화 설정이다. 이것이 이 프로젝트의 정체성을 요약한다 — "코드가 주인공인 소프트웨어"가 아니라 "콘텐츠가 주인공이고, 코드는 콘텐츠를 배포하는 얇은 도구"다. feed/는 커밋되지만 dist/는 무시된다는 구분(생성 시점이 다름)도 실무 감각을 보여준다.

6학습 포인트

"맥 앱 목록"이 아니라 "문서를 데이터·제품으로 바꾸는 법"을 배운다

이 저장소의 진짜 교육 가치는 앱 추천이 아니라 "콘텐츠를 어떻게 유지보수 가능한 데이터 제품으로 만드는가"다. 기술별로 정리하면:

① remark / unified — 마크다운을 AST로 다루기

마크다운을 문자열 정규식으로 파싱하면 금세 무너진다. ast.mjsremark로 구문 트리(AST)를 얻어 노드 타입(heading/listItem/link/imageReference)별로 안전하게 순회한다. unified 생태계(remark/rehype)는 문서 자동화의 핵심 무기 — 여기서 "트리로 생각하기"를 익힐 수 있다.

② docs-as-data — 단일 원본, 다중 산출물

README를 유일한 진실원으로 두고 JSON·사이트·RSS·패키지를 파생시키는 구조는, 문서·API 명세·설정 관리 등 "한 곳만 고치면 나머지가 따라오는" 시스템 설계의 축소판이다. 중복 원본이 없으니 불일치가 생기지 않는다.

③ 정적사이트 + 초경량 Docker

idoc로 만든 정적 결과물을 lipanski/docker-static-website(수 MB) 위에 얹는 패턴은, "무거운 nginx 대신 목적에 꼭 맞는 최소 이미지"를 고르는 감각을 보여준다. 정적 배포의 비용·보안 이점도 함께 배운다.

④ GitHub Actions 풀 파이프라인

ci.yml 한 파일에 빌드 → 자동 커밋(RSS) → Pages 배포 → 태그 → 체인지로그 → npm provenance 발행 → Docker 빌드·푸시가 순서대로 엮여 있다. 실전 릴리스 자동화를 통째로 읽을 수 있는 드문 교재다. [skip ci]로 무한 루프를 막는 디테일도 눈여겨볼 것.

⑤ AI 에이전트 스킬 설계

SKILL.md는 "에이전트에게 규칙을 어떻게 글로 못박나"의 좋은 예다. 워크플로우·큐레이션 규칙·설명 스타일(좋은 예/나쁜 예)·검증 절차·스코프 경계를 명시해, 비결정적 AI에 결정적 가드레일을 씌운다. 자기 프로젝트용 스킬을 쓸 때 참고할 만한 골격이다.

⑥ 오픈소스 큐레이션 거버넌스

CONTRIBUTING의 규칙(AP 스타일 제목, 알파벳순 삽입, 중복 검색, 한 문장 설명, PR 하나당 제안 하나)과 YAML 이슈 템플릿은, 대규모 커뮤니티 기여를 어떻게 질서 있게 받는가를 보여준다. 코드 리뷰·문서 리뷰 프로세스 설계에도 그대로 응용된다.

7시스템 요구사항

특별한 하드웨어 없음 — 리스트를 "빌드/소비"하는 데 필요한 것
목적필요한 것
리스트 열람브라우저만 있으면 됨(GitHub README 또는 GitHub Pages 사이트).
데이터 소비Node.js(ESM JSON import는 with { type: 'json' } 지원 버전 권장). npm i awesome-mac.
로컬 빌드Node.js(CI는 Node 24) + npm installnpm start(build+ast) / npm run feed. feed는 내부적으로 git CLI를 호출.
오프라인 열람Docker. docker run --rm -d -p 9881:3000 wcjiang/awesome-mac:latestlocalhost:9881.
수록 앱 실행리스트에 오른 앱들은 대부분 macOS 대상(일부 크로스플랫폼). 빌드 자체는 OS 무관.

정리하면 GPU·대용량 메모리 같은 요구는 전혀 없다. "무거운 소프트웨어"가 아니라 "문서 + 얇은 빌드 도구"이기 때문이다. 학습 목적이라면 Node와 git만 있으면 충분하다.

8직접 해볼 수 있는 실습 과제

읽기만 하지 말고, 파이프라인을 손으로 재현해보기 — 난이도별
실습 A · 난이도 ★☆☆

JSON 데이터로 통계 내기

npm i awesome-mac 후 JSON을 import 해서 카테고리 개수·앱 개수·오픈소스 비율을 세어보자. mark.iconstype:'oss'가 있는 항목만 필터링하면 "오픈소스 맥 앱 목록"이 나온다. 데이터 소비의 첫걸음.

실습 B · 난이도 ★☆☆

나만의 Awesome 리스트를 데이터화

작은 README.md<!--start-->·<!--end--> 마커와 몇 개 항목을 넣고, ast.mjs를 복사해 돌려보자. 마크다운이 JSON으로 바뀌는 순간을 직접 확인하면 "콘텐츠=데이터"가 체감된다.

실습 C · 난이도 ★★☆

기여 규칙 린터 만들기

remark로 README를 파싱해 CONTRIBUTING 규칙 위반을 잡는 CI 린터를 짜보자 — 설명이 한 문장을 넘는 항목, 알파벳 순서가 어긋난 항목, 링크 중복 등을 검출. "문서 품질을 코드로 강제"하는 경험.

실습 D · 난이도 ★★☆

git 로그 기반 "최근 추가" 피드

feed.mjs의 발상을 흉내 내, 임의 마크다운 리스트에서 최근 커밋으로 새로 추가된 줄만 뽑아 RSS/JSON으로 내보내는 스크립트를 만들어보자. "상태를 산출물에서 파생"하는 무상태 설계를 연습한다.

실습 E · 난이도 ★★★

JSON으로 검색·필터 웹앱 짓기

dist/awesome-mac.json을 데이터로 삼아, 카테고리 사이드바 + 실시간 검색 + "오픈소스만/무료만" 토글이 되는 정적 SPA를 만들어 GitHub Pages에 올려보자. 남의 잘 관리된 데이터셋 위에 자기 UI를 얹는 실전.

9관련 기술 심화 학습 로드맵

"문서 자동화 엔지니어"로 가는 4주 코스
주차주제핵심 질문 · 자료
1주차마크다운 & ASTremark/unified로 문서를 트리로 파싱하기. mdast 명세, 노드 타입, visitor 패턴. → build/ast.mjs 한 줄씩 읽기.
2주차콘텐츠=데이터 파이프라인단일 원본 → 다중 산출물 설계. 마커 구획, 아이콘→메타데이터 추출, 언어별 분기. → ast.mjs·ES6-IMPORT-GUIDE.md.
3주차정적사이트 · RSS · DockerSSG(idoc) 설정, 증분 RSS 생성, 초경량 컨테이너. → idoc.yml·feed.mjs·Dockerfile.
4주차CI/CD & AI 유지보수릴리스 자동화(태그·체인지로그·provenance), 에이전트 스킬 설계. → ci.yml·.codex/skills/…/SKILL.md.
학습 순서 팁
"원본(마크다운) → 변환(AST) → 배포(사이트·RSS·npm) → 자동화(CI·AI)" 순으로

먼저 마크다운이 어떻게 트리가 되는지(1주차)를 손에 익혀라. 그게 이 레포의 핵심 지력이다. 그다음 "그 트리를 어떤 산출물로 바꾸나"(2·3주차)가 실용 감각이고, "그 과정을 어떻게 무인화하나"(4주차)가 운영 지혜다. 앱 목록 자체를 외울 필요는 전혀 없다 — 이 레포는 "내용"이 아니라 "내용을 다루는 방법"을 가르치는 교재다.

비교하며 배우기 — 이웃 프로젝트들

같은 "Awesome 큐레이션"이라도 접근이 다르다. sindresorhus/awesome는 이 문화의 원조이자 규약의 출발점이고, awesome-mac은 그 위에 데이터화·자동화를 얹었다. 1c7/chinese-independent-developer는 "날짜순 로그 + LLM 자동 PR"이라는 또 다른 자동화를 택했고, awesome-swift-macos-apps(같은 저자)는 Swift 앱에 특화한 자매 리스트다. 이들을 나란히 보면 "리스트를 어떻게 살아있게 유지하는가"의 서로 다른 답이 보인다.

10핵심 키워드 사전

문서에 나온 용어를 한눈에
용어
Awesome 리스트
sindresorhus/awesome에서 출발한, 특정 주제의 자료를 엄선해 마크다운으로 정리하는 오픈소스 문화. "엄선"이 핵심이라 기여 규약이 엄격하다.
용어
AST (추상 구문 트리)
문서·코드를 문자열이 아니라 "노드의 트리"로 표현한 것. 마크다운은 mdast, HTML은 hast. remark는 마크다운→mdast 파서로, 정규식보다 안전하게 문서를 조작하게 해준다.
용어
remark / unified
문서를 AST로 파싱·변환·직렬화하는 JS 생태계. remark-gfm은 표·취소선 같은 GitHub 확장 문법을 이해하게 하는 플러그인.
용어
docs-as-data
사람이 읽는 문서를 동시에 기계가 파싱하는 데이터로 취급하는 접근. 단일 원본(README)에서 JSON·사이트·RSS·패키지를 자동 파생시킨다.
용어
<!--start--> / <!--end--> 마커
마크다운 안에서 "데이터로 뽑을 영역"을 구획하는 HTML 주석. 사람용 장식(배너·목차)과 기계용 데이터(앱 목록)를 한 파일에 공존시킨다.
용어
imageReference (아이콘 배지)
마크다운의 ![라벨][참조] 형태 이미지 참조. awesome-mac은 이 배지(OSS/Freeware/App Store 등)를 파싱해 icons[] 메타데이터로 구조화한다.
용어
idoc (정적사이트 생성기)
저자가 만든 SSG. 마크다운들을 검색 가능한 문서 사이트로 빌드하고 메뉴·다국어·RSS·GA를 주입한다. idoc.yml로 설정.
용어
증분(incremental) RSS
전체를 매번 다시 만들지 않고 "변한 부분만" 갱신하는 방식. feed.mjs는 상태를 별도 파일이 아니라 기존 XML과 최근 50커밋에서 파생한다.
용어
npm provenance
npm publish --provenance로 "이 패키지가 어느 CI·커밋에서 빌드됐는지"를 증명하는 공급망 보안 기능. 변조·사칭을 막는다.
용어
Codex 스킬 (SKILL.md)
AI 코딩 에이전트가 따를 절차·규칙을 마크다운으로 못박은 문서. awesome-mac은 카테고리 선택·다국어 동기화·설명 스타일을 스킬로 코드화했다.
용어
CC0 / CC-BY-SA
크리에이티브 커먼즈 라이선스. CC0=권리 포기(퍼블릭 도메인), CC-BY-SA=저작자표시+동일조건 공유. 이 레포는 두 표기가 파일마다 달라 재사용 시 확인이 필요하다(§3 주의).

11참고 링크

공식 소스와 함께 볼 자료
구분링크 / 위치
GitHub 저장소github.com/jaywcjlove/awesome-mac
TrendShifttrendshift.io/repositories/630
웹사이트jaywcjlove.github.io/awesome-mac (idoc 정적사이트)
핵심 파일build/ast.mjs (마크다운 → JSON AST 변환)
핵심 파일build/feed.mjs (git 로그 → 증분 RSS)
핵심 파일.github/workflows/ci.yml (빌드·배포 파이프라인)
핵심 파일.codex/skills/awesome-mac-maintainer/SKILL.md (AI 유지보수 규칙)
핵심 파일idoc.yml · Dockerfile · package.json(exports)
이웃 프로젝트sindresorhus/awesome(원조) · awesome-swift-macos-apps(자매) · 1c7/chinese-independent-developer
연관 개념remark/unified · AST · docs-as-data · SSG · 증분 RSS · npm provenance · Codex 스킬