Gemini CLI로 텍스트를 JSON으로 변환하기 – 코드 없이 구현하기 #1

반복적인 복사/붙여 넣기 작업에 지치셨나요? Gemini CLI와 쉘 스크립트를 활용해 회의록, 이메일 등 비정형 텍스트를 깔끔한 JSON 데이터로 코드 구현 없이 자동 변환하는 방법을 정리해 보겠습니다.

혹시 Gemini CLI 설치가 안되어 있다면, 본문 맨 아래에 설치 가이드 글을 링크해 놓을게요. 참고하세요.

Gemini CLI로 텍스트를 JSON으로 변환하기
Gemini CLI로 텍스트를 JSON으로 변환하기


Gemini CLI로 텍스트를 JSON 데이터로 자동 변환하기

업무를 하다 보면 회의록, 고객 이메일, 웹사이트 리뷰처럼 정해진 양식 없는 텍스트 데이터를 마주할 때가 많습니다. 여기서 핵심 정보만 뽑아내 엑셀이나 다른 프로그램에 옮겨 적는 반복 작업, 한 번쯤 해보셨을 겁니다. 단순하지만 시간 잡아먹는 일을 AI를 통해 완전히 자동화할 수 있다면 어떨까요? 그것도 파이썬이나 그 어떤 프로그래밍 코드 없이 구현할 수 있다면 편리하겠죠?

이번 글에서는 Google의 강력한 AI 도구인 Gemini CLI를 활용하여, 지저분한 텍스트 파일(TXT)에서 원하는 정보만 정확히 추출하고, 컴퓨터가 구분할 수 있는 데이터 형식인 JSON으로 자동 변환하는 방법을 정리해 보려 합니다.

그런데, 텍스트 파일(.txt)을 왜 굳이 JSON 파일로 변경하는 걸까요?

본격적인 실습에 앞서 가장 근본적인 질문부터 짚고 넘어가겠습니다. 왜 우리는 멀쩡한 텍스트를 굳이 JSON이라는 생소한 형식으로 바꿔야 할까요?

  • TXT 파일(일기장, 메모): TXT 파일은 사람이 읽기엔 편하지만, 컴퓨터가 보기엔 그저 의미를 알 수 없는 통짜 글입니다. 컴퓨터는 안귀령이 사람 이름인지, 오후 2시가 시간인지 알지 못합니다. 때문에 나의 필요에 따라 해당 TXT 파일에서 특정 정보만을 추출하는 작업을 컴퓨터에 직접 할 수가 없죠.
  • JSON 파일: JSON은 모든 데이터 조각에 이름표(Key)를 붙여 정리하는 방식입니다. 예를 들어 {“attendees”: [“안기령”, “강우정”]} 처럼, “이건 attendees 라는 이름표가 붙은 정보야”라고 명확히 지정해 놓을 수 있죠.

이렇게 이름표가 붙어있으면, 컴퓨터에게 “attendees 이름표가 붙은 데이터만 쏙 골라내서 구글 캘린더에 등록해 줘!” 같은 구체적인 지시를 내릴 수 있게 됩니다.

결국 TXT를 JSON으로 바꾸는 이유는, 사람의 수작업을 ‘컴퓨터가 일하게’ 만들기 위해서입니다. 컴퓨터에게 ‘쓸모없는 글자 덩어리’를 살아있는 데이터로 만드는 셈이죠.

Gemini CLI로 변환기 만들기

이제 본격적으로 우리만의 ‘텍스트 데이터 추출 및 JSON 변환기’를 만들어 보겠습니다.

1단계: 목표 설정 및 시나리오

먼저 어떤 작업을 할지 명확히 정의해 보겠습니다.

  • (입력 파일) 아래 내용이 담긴 meeting_notes.txt 파일이 있다고 하죠.
회의록

- 일시: 2025년 8월 28일 오후 2시
- 장소: 15층 대회의실
- 참석자: 강우정 팀장, 안기령 대리, 정천래
- 주제: 3분기 신규 앱 런칭 마케팅 전략

[주요 내용]
1. 인플루언서 마케팅은 B급 인플루언서 3명과 협업하기로 결정. (담당자: 안기령)
2. SNS 광고 예산은 500만원으로 확정.
3. 런칭 이벤트는 9월 15일에 시작하기로 함. (담당자: 정처래)
  • (목표 출력) 이 파일을 스크립트로 처리하여, 아래와 같은 summary.json 파일을 자동으로 생성합니다.
{
  "topic": "3분기 신규 앱 런칭 마케팅 전략",
  "date": "2025-08-28",
  "attendees": ["강우정", "안기령", "정천래"],
  "action_items": [
    {
      "task": "B급 인플루언서 3명과 협업",
      "assignee": "안기령"
    },
    {
      "task": "런칭 이벤트 시작",
      "assignee": "정천래"
    }
  ]
}


2단계: AI를 위한 ‘JSON 변환 프롬프트’ 작성

이 작업의 성패는 AI에게 얼마나 명확하고 구체적으로 지시하는지에 달려있습니다. 이것이 바로 프롬프트 엔지니어링의 핵심입니다. 우리는 아래와 같은 프롬프트를 사용할 것입니다.

아래 텍스트 내용을 분석해서 JSON 형식으로 추출해줘:
1. ‘topic’: 회의 주제
2. ‘date’: 회의 날짜 (YYYY-MM-DD 형식)
3. ‘attendees’: 참석자 이름만 직급 제외
4. ‘action_items’: 각 할 일(task)과 담당자(assignee)를 객체로 묶은 배열

반드시 유효한 JSON만 출력하고, 다른 설명은 절대 하지 말 것.


3단계: 자동화 쉘 스크립트 만들기

이제 실행해 볼게요. 이미 Gemini-CLI를 윈도우 환경에 설치해 두었다면 아래 제시한 명령어를 따라면 하면 됩니다. Gemini CLI 관련 다른 웹사이트나 이 글의 맨 아래에 링크를 남겨둔 CLI 설치 가이드 글에서도 대화명 방법에 대해서만 설명되어 있을 거예요. 하지만, 여기에서는 그냥 윈도우 CMD나 powershell에서 직접 작성하는 방법에 대한 설명입니다.

아래 명령과 같이 입력하시면 summary.json 파일이 같은 폴더 내에 생성됩니다.

$OutputEncoding = [Console]::OutputEncoding = [Text.UTF8Encoding]::new()
Get-Content .\meeting_notes.txt | gemini -m gemini-2.5-pro -p "
아래 텍스트 내용을 분석해서 JSON 형식으로 추출해줘:
1. 'topic': 회의 주제
2. 'date': 회의 날짜 (YYYY-MM-DD 형식)
3. 'attendees': 참석자 이름만 직급 제외
4. 'action_items': 각 할 일(task)과 담당자(assignee)를 객체로 묶은 배열

반드시 유효한 JSON만 출력하고, 다른 설명은 절대 하지 말 것.
" > summary.json

여기에서 맨 윗 줄에 작성했던 “$OutputEncoding = [Console]::OutputEncoding = [Text.UTF8Encoding]::new()” 명령어는 UTF-8, 한글 코드 관련 명령어에요. 이 명령어를 먼저 입력하지 않으면 json 파일의 한글이 전부 깨져서 나타날 거예요. 이런 부분이 아직까지 한글화가 미진한 부분이죠.


4단계: 결과 확인 및 검증

그런데, 위에서 생성한 summary.json 파일은 정말 잘 생성되었을까요? summary.json을 메모장이나 VScode에서 열어보면 아래와 같이 내용을 확인할 수 있어요.

생성된 JSON 파일
생성된 JSON 파일

위 그림에서 보면 맨 윗줄 ”’json과 맨 아랫줄 ”’ 가 눈에 띄죠. 이것은 CLI가 결과를 출력하면서 JSON 코드라는 것을 알려주는 스트림 중 하나예요. 이런 것이 브라우저에 뿌려지면 코드 종류를 설명해 주는 역할을 하지만, 실제 json 파일에서는 불필요한 문자가 되는 거죠. 다시 말하면, 실제 json 파일을 이용해서 뭔가를 하려면 이 부분 때문에 에러가 발생합니다.

아래와 같이 한번 더 명령어를 입력해서 불필요한 부분을 삭제합니다.

powershell -Command "(Get-Content 'summary.json' -Encoding UTF8) | Select-Object -Skip 1 | Select-Object -SkipLast 1 | Set-Content 'summary.json' -Encoding UTF8"

다 되었으니, 이제 json파일이 올바른지 검증해 볼게요. 다음 명령어를 입력하세요.

Get-Content .\summary.json | ConvertFrom-Json | Format-List

결과는 다음과 같이 나올거에요. 실제로 json 파일이 올바르지 않으면 오류 메시지가 나오고, 정상일 경우만 아래 그림 처럼 내용을 출력합니다.

생성된 JSON 파일 검증
생성된 JSON 파일 검증




답글 남기기