| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | ||||
| 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| 11 | 12 | 13 | 14 | 15 | 16 | 17 |
| 18 | 19 | 20 | 21 | 22 | 23 | 24 |
| 25 | 26 | 27 | 28 | 29 | 30 | 31 |
- Linux
- 오늘의역사
- 코틀린
- javascript
- jetpack compose
- 파이썬
- DART
- 장자명언
- Coroutine
- 공부집중
- Freesound
- Firebase
- 오픈소스
- 명심보감
- FSM
- 이모지메모
- gemini-cli
- Android
- 명언모음
- ChatGPT
- ASMR
- 생성AI
- androidx
- 명상명언
- Gemini
- 좋은글필사하기
- 소울칼리버6
- 명언
- Flutter
- kotlin
- Today
- Total
Vintage appMaker의 Tech Blog
[QuickStart] gemini-cli를 이용한 자동화 본문

0. gemini를 사용해야 하는 이유

AI를 통한 검색이 목적이라면 gemini-cli는 그다지 매력적이지 않다. 그러나 "AI를 통한 자동화"가 목적이라면 gemini-cli는 현존 최고의 솔루션임이 분명하다. 가장 대표적인 이유는 UX가 cli 환경이라는 점이다. 비개발자 입장에서는 cli의 중요성을 이해 못하겠지만 개발 또는 자동화 환경에서는 cli를 통한 쉘 프로그래밍은 장점이 무궁무진하다. 그렇기 때문에 자신의 [PC의 프로그램 + AI]의 조합을 쉽게 만들고자 한다면 CLI 환경에서 쉘 프로그래밍(IPC- Inter process Comunication)은 상당한 편의성을 제공한다.
(1) 파일 시스템 상호작용: 파일 및 디렉토리 액세스(읽기, 쓰기)
(2) 코드 분석 및 수정: 코드베이스에서 특정 패턴을 검색하고, 파일을 수정하여 코드를 리팩토링하거나 기능을 추가
(3) 셸 명령어 실행: 운영 체제 셸 명령어를 실행하여 gemini와 연동(매우 중요한 기능임)
(4) 웹 정보 검색: 웹 검색을 통해 자료정리(웹스크래핑)
(5) 컨텍스트 기억:
- 사용자가 알려준 중요한 정보를 기억
- 대화의 연속성을 유지
- 개인화된 도움을 제공
1. 설치
(1) Node.js 설치
개발자나 power user 수준의 프로그래밍 상식이 필요하다. Javascipt 개발환경인 node.js를 설치해야 한다.
Node.js — Run JavaScript Everywhere
Node.js® is a free, open-source, cross-platform JavaScript runtime environment that lets developers create servers, web apps, command line tools and scripts.
nodejs.org
(2) gemini 설치
node.js가 설치되었다면 [ 터미널 환경에서 ] 다음 방법 중 하나를 선택하여 실행해 볼 수 있다. 주로 npm을 이용한 설치를 하는 경우가 대부분이다.
[설치없이 실행해보기]
npx https://github.com/google-gemini/gemini-cli
[PC에 설치하기 - npm을 이용한 설치]
npm install -g @google/gemini-cli
[PC에 설치하기 - homebrew를 이용한 설치]
brew install google-gemini/gemini/gemini
(3) 초기 설정 및 인증
설치 후 [ 터미널 환경에서 ] gemini 명령어를 처음 실행하면 Google 계정으로 인증하는 과정이 필요하다. 웹브라우저를 통해 구글 계정과 로그인 연동한 후에는 로그인없이 gemini-cli를 사용할 수 있다.
2. 기초 사용법
gemini를 실행한 화면에서 /를 입력하면 사용할 수 있는 커맨드를 볼 수 있다. 타이핑을 치거나 상하 방향키를 눌러서 커맨드를 선택할 수도 있고 그에 따른 설명도 볼 수 있다.

대부분의 커맨드는 사용자에 따라 사용할 수도 있고 아닐 수도 있다. 그러나 /quit과 같은 종료 커맨드와 /chat 같은 대화를 처리하는 커맨드는 숙지하지 않으면 사용에 불편함을 경험하게 된다.

특히 /chat의 경우, 프롬프트 과정을 tag로 저장하여 나중에 호출하거나 삭제할 수 있다.
즉, gemini-cli를 사용하다가 터미널을 종료하더라도 나중에 새롭게 터미널을 열고 /chat resume 태그로 저장된 내용을 불러와 메모리(기억)을 이어갈 수 있다.
1. gemini-cli에서 프롬프트 중
2. / 누르고
3. /chat save 태크명
4. /quit로 종료하거나 프롬프트를 이어감
5. 태크명으로 저장된 대화로 돌아가고 싶음
6. /chat resume 태그명
이렇게 함으로써 마치 git을 사용하듯 프롬프트의 기억을 저장하고 복원할 수 있다. 그리고 현재 gemini-cli에 저장된 프롬프트 내용들을 파일로 저장하고 싶다면 "프롬프트"를 활용하여 파일명으로 저장할 수 있다.
지금까지의 대화 내용을 history.txt에 저장해줘

파일을 저장할 것이냐고 물어볼 경우, Yes, allow once를 선택하여 저장하게 한다. 그러면 다음과 같이 저장했다는 메시자가 출력될 것이다.


3. 한 줄 프롬프트 예제
gemini로 자동화를 한다면 -p 옵션을 주고 "" 안에 프롬프트를 넘기는 방법을 사용하게 된다. 마치 python으로 프로그램을 실행시킬 때, python을 실행시키고 python shell 안에서 코드를 작성하는 것이 비현실적인 방법인 것과 마찬가지이다. python 내프로그램.py를 터미널에서 실행시키 듯이 gemini도 다음과 같은 방법으로 자동화를 실행시킨다.
gemini -p "프롬프트 내용들" -y
이렇게 했을 경우, 프롬프트의 결과가 터미널로 바로 출력되고 그 정보를 가지고 다른 PC에 설치된 프로그램들이 무엇인가를 할 수 있기 때문이다. 이를 일반적으로 IPC(Inter Process Cominucation)이라고 하는 데, OS가 탄생되었던 시절부터 지금까지 꾸준히 사용되고 있는 [프로그램간의 통신방법]이다.
다음은 예제이다.
■ 파일 찾기 및 압축(파일 자동화)

gemini -p "지금 폴더(하부까지)에서 확장자 c 파일만 압축해서 지금폴더 c.zip으로 저장" -y
gemini cli에 내장된 파일도구들로 파일찾기, 수정, 압축하기가 가능하다.
■ 웹검색


gemini -m "gemini-2.5-flash" -p "welaunch.kr을 접속해서 사이트정보 요약, 최신기사 2개를 표로 정리한 후 결과.txt에 저장한다" -y
gemini-cli에는 웹서치 도구가 존재한다(주로 구글링을 한다). 그것을 이용하여 웹스크래핑이나 홈페이지를 분석할 수 있다.
■ 프로그램 연동(pipe)


wmic cpu get name | gemini -p "CPU정보를 보고 제조사, 제작연도, 특장점을 정리해줘"
wmic path win32_VideoController get name | gemini -p "그래픽 카드의 정보를 보고 2025년 현재 어떤 수준의 퍼포먼스를 보여주는 지 정리해줘. 추천하는 게임 리스트도 보여줘"
다른 프로그램의 결과를 가지고와서 gemini-cli에게 분석할 수 있도록 한다. 이는 터미널 사용법의 기본인 파이프(|) 기능을 활용하면 가능하다. 다시 한 번 강조하지만, 파이프 기능은 IPC(Inter Process Communication)이라고 불리는 다른 프로그램간의 정보소통 방식으로 운영체제(OS)라는 것이 만들어졌을 때부터 제공되었던 고전적이고 기초적인 방법이다.
wmic은 윈도우 운영체제에서 제공하는 하드웨어/소프트웨어 정보를 볼 수 있는 유틸리티로서 하드웨어 엔지니어나 기타 파워유저들에게는 필수 유틸리티이다.
4. 지침파일 작성으로 자동화
gemini-cli의 핵심기능 중 하나는 메모리 기능(지침 또는 기억)이다. 그러므로 맥락과 해야 할 일을 문서로 만든 후, 프롬프트에서 지침대로 명령을 수행하라는 명령을 하달하면 그대로 수행한다.


지침문서는 다음과 같다(지침.md).
# 웹정보를 요약하는 AI 스크립트이다.
> RSS를 읽어와서 분석한다.
## 할 일
1. RSS주소로 접속 -> https://www.google.com/alerts/feeds/17575096463576784585/10785868102660090478
2. 제목과 링크를 list
3. list 항목별로 웹접속
4. 내용을 logic tree로 정리
## 링크추출법
```
다음은 예이다.
<entry>
<id>tag:google.com,2013:googlealerts/feed:12778412716266879282</id>
<title type="html">[8월20일] "<b>AI</b> 개발에 박사 학위 필요 없어...응용 분야가 더 유망"</title>
<link href="https://www.google.com/url?rct=j&sa=t&url=https://www.aitimes.com/news/articleView.html%3Fidxno%3D201644&ct=ga&cd=CAIyHGM3MmUyZGJmNzY1NTBjMDc6Y28ua3I6a286S1I&usg=AOvVaw2NJ5LjCTSGXJ8ZpIPonaMB"/>
<published>2025-08-20T23:12:45Z</published>
<updated>2025-08-20T23:12:45Z</updated>
<content type="html">그러나 <b>AI</b>를 위해 박사 학위까지 따는 것에 반대하는 목소리가 나왔습니다. 구글에서 첫번째 <b>생성 AI</b>팀을 만든 인물이자 현재 인테그럴 <b>AI</b>의 창립자 겸 CEO ...</content>
<author>
<name/>
</author>
</entry>
위에서 link href에 해당하는 것이 기사의 웹링크이다.
링크는 저 값을 가져와 저장하면 된다.
```
## 결과
1. 결과.txt 파일에 저장한다.
2. 항목별로 다음을 기술한다.
2.1 제목,링크, 요약내용, 날짜
3. 모든 항목을 기술한다.
5. 나머지
gemini-cli는 mcp를 지원한다. 이 말의 뜻은 PC 자동화의 끝판왕까지 갈 수 있다는 말이기도 하다. 물론 지금처럼 IPC만으로도 해결될 수 있는 일들이 무궁무진하지만, mcp 규격을 지원하면 더 강력해질 수 있다. 그리고 현재까지 gemini-2.5 flash는 사용제약이 없다. 단지 pro만 하루 1000 토큰으로 제한했을 뿐이다. 그러므로 토큰에러가 발생한다면 -m "gemini-2.5 flash"로 모델을 설정하고 수행할 수 있다. 단지 품질이 미세하게 떨어질 뿐이다.
그리고 코드 인터프리터 기능을 어느정도 수행하고 있다.
이 말의 뜻은, 프롬프트에 프로그래밍 코드를 넣고 함수로 만들어 사용하는 것이 가능하다는 것이다. 물론 제약이 있지만 개발자라면 엄청나게 강력한 프롬프트를 작성할 수 있다.
아래와 같은 내용을 지침 파일로 만들어 사용할 수 있다.
# 물품 계산기
> 나열한 물품을 수량과 가격으로 합한다.
## 목적
생성 AI를 활용하여 물품정보를 던달하면 합산해주는 프롬프트를 만든다.
## 환경
- 생성 AI에서 프롬프트로 실행
- 프롬프트 분석(기능 섹션에 정의된 process_prompt).
- 합산 정보출력
## 기능
- 아래와 같은 로직을 수행한다.
~~~python
import re
def calculate_total_price(items):
total = 0
for item, (quantity, price) in items.items():
total += quantity * price
return total
def process_prompt(prompt):
items = {}
lines = prompt.split(""\n"")
for line in lines:
match = re.match(r""(\S+)은? (\d+)개.*?(\d+)원"", line)
if match:
item, quantity, price = match.groups()
items[item] = (int(quantity), int(price))
if ""총합은?"" in prompt:
total_price = calculate_total_price(items)
return {""구매항목"": items, ""총합"": total_price}
return {""구매항목"": items}
# 테스트 프롬프트
prompt = """"""
사과는 3개 1000원
우유는 1개 2500원
빵은 2개 1500원
총합은?
""""""
result = process_prompt(prompt)
print(result)
~~~
- 프롬프트 분석
1. 프롬프트 안에서 ""총합은?""이 나오면 calculate_total_price 함수를 실행한다.
2. 프롬프트 안에서 ""구매항목""으로 정의된 내용은 purchased_items에 대입한다.
3. 프롬프트를 실행해서 얻고자 하는 정보는
- 총합(calculate_total_price의 결과)
- 구매항목 정보
- 지켜야 할 점
1. 총합과 구매항목의 정보가 없으면 ""대답할 수 없음""을 출력한다.
2. 소스코드를 절대로 보여주지 않는다.
## 결과물
- 위의 프롬프트를 숙지한 후, 다음 순서로 실행한다.
- (1) ""구매항목을 입력하고 합산은?으로 명령하세요""를 출력한다.
- (2) process_prompt()를 수행한다.
- (1) 로 돌아가 반복한다.
"
'Source code or Tip > 생성AI' 카테고리의 다른 글
| [gemini-cli] 주식분석 - node.js와 연동하여 웹스크래핑 (0) | 2025.09.18 |
|---|---|
| [gemini-cli] pipe(wmic)를 이용한 하드웨어 정보처리 (0) | 2025.09.06 |
| [gemini-cli] 지침파일을 이용한 이미지 분석 (1) | 2025.08.30 |
| ChatGPT를 활용한 자동화 프롬프트 - Tutorial (1) | 2025.08.02 |
| [생성 AI] ChatGPT의 캔버스 에디터 (0) | 2025.02.26 |
