AI 챗봇 자동화, 웹 화면에서 막히는 다섯 지점

프롬프트를 사람이 매번 붙여넣는 대신 스크립트가 넣어 주면 좋겠다는 생각은 자연스럽습니다. 그런데 브라우저 자동화 도구로 챗GPT나 클로드 입력창을 건드려 보면 이상한 일이 벌어집니다. 도구는 “성공”이라고 보고하는데 화면에는 아무것도 안 들어가 있거나, 글자가 들어가긴 했는데 한글이 뭉개져 있습니다. 이 글은 그 벽에 실제로 부딪히며 다섯 가지 경로를 전부 시험한 기록입니다.

AI 챗봇 자동화 다섯 경로의 텍스트 정확도와 전송 성공 여부를 정리한 도표. 다섯 경로 모두 실패
시험한 다섯 경로의 결과입니다. 텍스트가 정확한 경로는 전송이 안 되고, 전송되는 경로는 글자가 깨졌습니다.

📌 핵심 요약

  • 다섯 경로를 시험해 전부 실패했습니다. 실패하는 방식이 각각 달랐습니다.
  • 원인은 하나가 아닙니다. 한쪽은 한글 입력 문제, 다른 쪽은 React 상태 관리 문제입니다.
  • 도구가 “성공”을 반환해도 화면에 안 들어간 경우가 있었습니다. 반환값을 믿으면 안 됩니다.

프롬프트 파이프라인을 만들려는 사람, AI 챗봇 자동화를 업무에 붙이려다 원인 모를 실패를 겪은 사람에게 해당하는 이야기입니다.

AI 챗봇 자동화, 무엇을 시험했나

브라우저 확장 기반 제어 도구로 claude.ai와 chatgpt.com의 입력창에 한국어 프롬프트를 넣고 전송하는 것이 목표였습니다. 2026년 8월 2일부터 4일까지 다섯 경로를 하나씩 확인했습니다.

방법 텍스트가 정확한가 전송되는가
합성 키 입력(type) ❌ 한글 뭉개짐 ✅
execCommand('insertText') ✅ 정확 ❌
합성 붙여넣기 이벤트 ❌ 덧붙음 ❌
실제 cmd+v ❌ 미도달 —
type에 줄바꿈 포함 ❌ ⚠️ 문장 중간에 전송

정확한 텍스트가 들어가는 방법은 전송이 안 됩니다. 전송되는 방법은 텍스트가 깨집니다. 두 조건을 동시에 만족한 경로가 하나도 없었습니다.

AI 챗봇 자동화의 실패는 두 종류였습니다

여기가 이 문제의 핵심입니다. 다섯 가지가 같은 이유로 막힌 게 아닙니다.

첫째, 한글 입력 문제. 합성 키 입력은 글자를 하나씩 눌러 넣는 방식인데, 한글은 자모를 조합해 한 글자를 만듭니다. 조합 과정이 끼면서 띄어쓰기와 마침표가 사라지고 중간에 섞인 라틴 문자가 빠졌습니다. 영문만 넣는다면 이 경로는 쓸 수 있습니다. 한국어 작업에서만 막히는 층위입니다. 한글이 자모로 흩어지면서 생기는 문제는 파일명 쪽에서도 똑같이 나타납니다.

둘째, React 상태 문제. 요즘 챗봇 입력창은 단순한 <textarea>가 아니라 contenteditable 요소입니다. 그 내용은 React가 자기 상태로 따로 관리합니다. execCommand로 넣으면 화면(DOM)에는 글자가 보이는데 React는 그 변화를 모릅니다. 그래서 전송 버튼을 눌러도 빈 값이 나갑니다.

같은 이유로 합성 붙여넣기 이벤트도 무시됩니다. 브라우저는 스크립트가 만든 이벤트에 isTrusted: false 표시를 붙입니다. 보안이 걸린 입력 경로는 그런 이벤트를 신뢰하지 않습니다.

“화면에 글자가 보인다”와 “앱이 그 글자를 안다”는 다른 얘기입니다. 자동화가 조용히 실패하는 대부분의 사고가 이 틈에서 생깁니다.
어두운 조명 아래 키보드를 두드리는 손 (무료 스톡 이미지)
합성 키 입력은 글자를 하나씩 눌러 넣는 방식이라 한글 조합 과정에서 깨집니다. (Photo by Tima Miroshnichenko on Pexels)

도구가 거짓말을 하는 지점

가장 시간을 많이 뺏긴 건 방법 자체가 아니라 잘못된 성공 보고였습니다.

페이지를 새로 연 뒤 요소를 찾아 두었다가 클릭하는 흐름에서, 페이지가 바뀌면 그 요소 참조가 만료됩니다. 그런데 클릭은 좌표 기준으로 실행되니 엉뚱한 곳을 누르고도 “성공”이 돌아옵니다. 그 뒤에 친 타이핑은 전부 허공으로 갔는데, 로그만 보면 모든 단계가 정상이었습니다.

cmd+a로 전체 선택한 뒤 Delete를 눌러도 입력창이 비워지지 않는 것도 같은 계열입니다. 결국 자바스크립트로 선택과 삭제를 직접 실행해야 했습니다.

자동화 스크립트를 짤 때는 각 단계 뒤에 화면 상태를 다시 읽어 확인하는 절차가 필요합니다. 반환값만 믿으면 실패를 놓칩니다.

클립보드에도 함정이 있었습니다

우회로로 “클립보드에 넣어 두고 사람이 붙여넣기”를 택했는데 여기서도 한 번 막혔습니다. 터미널에서 pbcopy로 한국어를 넣으면 0바이트가 됩니다.

셸 로케일이 설정돼 있지 않아 멀티바이트 문자가 깨지는 문제였습니다. 고약한 건 ASCII는 정상으로 동작한다는 점입니다. 영문으로 시험하면 잘 되니까 원인을 엉뚱한 데서 찾게 됩니다.

export __CF_USER_TEXT_ENCODING=0x1F5:0x8000100:0x8000100
export LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8

LC_ALL만 지정하면 838바이트가 629바이트짜리 깨진 문자로 바뀝니다. __CF_USER_TEXT_ENCODING까지 있어야 온전히 넘어갔습니다.

백라이트가 켜진 키보드 위의 손 (무료 스톡 이미지)
결국 가장 확실한 경로는 사람이 한 번 붙여넣는 것이었습니다. (Photo by Michael Marais on Unsplash)

그래서 실무에서는

AI 챗봇 자동화를 실제로 붙이려면 순서가 이렇습니다.

API가 있으면 API를 씁니다. 웹 화면을 흉내 내는 것보다 정식 통로가 언제나 안정적입니다. 챗봇 웹 UI는 사람이 쓰라고 만든 물건입니다. 그 전제 위에서 보안과 상태 관리가 짜여 있습니다.

API를 못 쓰면 사람이 붙여넣습니다. 클립보드에 올려 두고 사람이 한 번 누르는 방식이 가장 확실합니다. 다만 클립보드는 다른 걸 복사하면 덮어써지니, 본문에도 같은 내용을 코드블록으로 함께 남겨 두는 편이 안전합니다.

영문 작업이면 합성 키 입력을 다시 검토해 볼 만합니다. 위 표에서 이 경로가 실패한 이유는 한글 조합이었습니다. 언어가 바뀌면 결론도 바뀝니다.

이 기록의 한계

정직하게 밝혀 둘 것이 있습니다. 이건 브라우저 확장 기반 제어 도구 하나로 시험한 결과입니다. 다른 자동화 도구는 브라우저에 더 낮은 층위로 붙어서 신뢰된 입력 이벤트를 만들 수 있습니다. 그러면 결과가 달라질 수 있습니다.

다만 React 상태 문제와 한글 조합 문제는 도구를 바꿔도 그대로 남습니다. 앞의 것은 앱 구조에서 오고 뒤의 것은 입력기에서 오기 때문입니다. 도구를 바꿔 시험하실 계획이라면 이 두 지점을 먼저 확인해 보시기 바랍니다.

그리고 이 결과는 2026년 8월 초 기준입니다. OpenAI와 Anthropic 모두 웹 UI를 자주 바꾸므로, 몇 달 뒤에는 막히는 지점이 달라져 있을 수 있습니다.

✅ 체크리스트

  • API 경로가 있는지 먼저 확인했다. 웹 UI 자동화는 그다음이다
  • 자동화 각 단계 뒤에 화면 상태를 다시 읽어 확인하는 절차를 넣었다
  • 한국어를 넣는다면 합성 키 입력 경로는 후보에서 뺐다
  • 클립보드를 쓴다면 __CF_USER_TEXT_ENCODING까지 설정했다
  • 클립보드로 건넨 내용을 본문에도 코드블록으로 함께 남겼다

마무리

AI 챗봇 자동화를 웹 화면에서 시도하면 다섯 경로가 각각 다른 이유로 막힙니다. 정확한 텍스트가 들어가는 방법은 전송이 안 되고, 전송되는 방법은 한글이 깨집니다. 원인은 React 상태 관리와 한글 조합 두 층위이고, 도구의 성공 보고를 믿으면 실패를 놓칩니다.

지금 프롬프트 파이프라인을 짜고 계신다면 웹 UI 자동화에 시간을 쓰기 전에 API 경로부터 확인해 보시기 바랍니다. 저희는 반대 순서로 가서 사흘을 썼습니다.

콘텐츠 제작·자동화와 관련된 글도 함께 보면 흐름이 잘 잡힙니다.

이 글은 한국어 AI 실측 묶음에 속합니다. 같은 주제의 글을 배우는 순서대로 묶어 두었으니 묶음 페이지에서 이어 보세요.


글쓴이 · K.Lee — 파티시에로 일하며 AI·자동화 도구를 실무에 매일 씁니다. 확인한 범위와 확인하지 못한 범위를 글 안에 밝힙니다. 운영자 소개 · 편집 원칙 · 수정 정책

코멘트

답글 남기기

It's all about AI에서 더 알아보기

지금 구독하여 계속 읽고 전체 아카이브에 액세스하세요.

계속 읽기