모바일 프롬프터
셀피 화면 위에 대본을 띄우고, 찍힌 영상에는 글자가 없다
concept
코어 공유shared core via JavaScriptCore
정렬 엔진을 스위프트로 다시 짜지 않았다. 웹 버전 자바스크립트를 한 줄도 고치지 않고 아이폰 안의 JS 엔진에서 그대로 돌린다. 같은 규칙을 두 벌로 관리하면 언젠가 반드시 어긋나고, 그때 어느 쪽이 맞는지 알 수 없게 된다.
버퍼 분기audio tap
카메라 세션 하나가 마이크 버퍼를 녹화와 음성인식에 동시에 나눠준다. 마이크를 두 번 열 수 없어서 "녹화하면서 대본 따라가기"가 막히는데, 받은 버퍼를 갈라 쓰면 세션은 하나로 둔 채 둘 다 된다.
보이스 프롬프터의 아이폰 버전. 카메라 프리뷰 위에 반투명 대본을 얹고, 목소리를 따라 대본이 내려온다. 앱 안에서 그대로 녹화까지 하는데 저장된 영상에는 글자가 찍히지 않는다.
하나의 카메라 세션이 마이크 버퍼를 녹화와 음성인식에 동시에 나눠준다. "녹화하면서 대본 따라가기"가 되는 이유가 여기에 있다.
정렬 엔진은 웹 버전 코드를 한 줄도 고치지 않고 그대로 가져와 아이폰 안의 자바스크립트 엔진에서 돌린다. 두 벌을 관리하면 반드시 어긋나서다.
앱스토어에 올라가 있다. 아나운서·쇼호스트 준비하는 분들이 연습 촬영에 쓰고 있다는 얘기를 들었는데, 내가 모르는 사람이 내가 만든 걸 쓰고 있다는 게 아직도 제일 이상하고 좋다.
이렇게 시켰습니다
모바일 프롬프터을 지금 다시 만든다면 AI에게 이렇게 넘기겠습니다. 그대로 복사해서 붙여넣고, 마음에 안 드는 부분만 바꾸세요.
아이폰용 프롬프터 앱을 SwiftUI로 만들어줘. 셀피로 영상 찍으면서 대본을 보는 앱이야. 화면: - 전면 카메라 프리뷰가 꽉 차게 깔리고 - 그 위에 반투명 대본이 얹힌다 - 내 목소리를 들으면서 지금 읽는 위치에 맞춰 대본이 내려간다 절대 놓치면 안 되는 것: - 앱 안에서 그대로 녹화까지 되는데, **저장된 영상에는 대본 글자가 찍히면 안 된다** 화면 녹화가 아니라 카메라 출력을 따로 저장하는 방식으로 가야 해 - 녹화와 음성인식이 동시에 돌아가야 한다. 카메라 세션을 하나만 열고 마이크 버퍼를 녹화 쪽과 인식 쪽에 나눠주는 구조로 짜줘. 세션을 두 개 열면 iOS가 하나를 끊는다 대본 위치를 찾는 로직은 이미 웹에서 자바스크립트로 만들어둔 게 있어. Swift로 다시 포팅하지 말고 JavaScriptCore로 그 파일을 그대로 실행해줘. 두 벌을 관리하면 언젠가 반드시 어긋난다. 먼저 카메라 프리뷰 위에 글자를 얹고 손으로 스크롤하는 것까지만 만들어줘. 그게 되는 걸 보고 음성인식을 붙이자.
여기 적힌 시간은 쓸 만한 게 처음 돌아가기까지입니다. 그 뒤에 디테일을 잡는 데 보통 하루 이틀이 더 들고, 지금도 필요할 때 업데이트 하고 있습니다.
▸처음이라면 — 뭘 깔고 어디에 붙여넣나
저는 Claude Code를 씁니다. 하지만 위 프롬프트는 특정 도구용이 아니라서 아무 데나 붙여넣어도 됩니다. 셋 중 편한 걸로 시작하세요.
- 1. 설치 없이 — 브라우저 챗봇
쓰던 챗봇에 붙여넣고 “하나의 HTML 파일로 만들어줘”를 덧붙이세요. 나온 코드를 저장해 더블클릭하면 그 자리에서 돌아갑니다. 5분, 무료. - 2. 제대로 — 터미널에서 CLI
파일을 여러 개 만들고 스스로 고쳐가며 돌려보는 건 이쪽만 됩니다. 여기 있는 것들은 전부 이 방식으로 만들었습니다. 30분. - 3. 남한테 맡기고 — 웹 빌더
v0, Bolt, Lovable 같은 데에 붙여넣으면 화면까지 알아서 띄워줍니다. 빠른 대신 나중에 손대기가 답답해집니다.
어느 쪽이든 한 번에 완성될 거라고 기대하지 마세요. 저는 대충 돌아가는 걸 먼저 받고, 거슬리는 걸 하나씩 말해서 고칩니다. 에러가 뜨면 읽으려 하지 말고 통째로 복사해서 그대로 붙여넣으면 됩니다. 저도 1년 동안 그렇게만 했습니다.
터미널을 한 번도 안 열어보셨다면 설치부터 순서대로 적어둔 곳이 따로 있습니다. 맥·윈도우 명령어와 막혔을 때 할 일까지 있습니다.
