HongSungIn 기술 프로젝트 · 자동화

개인 자동화 프로젝트 · MacroDroid

카카오톡 체결 메시지
자동 수집 프로젝트

MacroDroid로 알림의 길이 제한을 우회하고, 채팅 화면의 긴 메시지를 서버로 전송하기 — 갤럭시 S25 울트라에서 증권사 체결 메시지를 추출해 개인 서버로 보내는 시스템의 구축 기록입니다.

핵심 기술 검증 완료 자동 트리거 검증 필요 DB 저장은 미구현
책상 위의 스마트폰 채팅 화면과 노트북 대시보드를 잇는 자동화 흐름 일러스트
01 · 프로젝트 소개

왜 체결 메시지를 자동으로 수집하려 했나

주식 체결이 이뤄지면 증권사(한국투자증권) 카카오톡 채널로 체결 안내 메시지가 도착합니다. 체결가, 수량, 주문번호가 담긴 긴 메시지인데, 이걸 매매일지에 옮겨 적는 일은 번거롭고 빠뜨리기도 쉽습니다. 휴대폰이 스스로 체결 메시지를 읽어 서버로 보내 주면, 기록은 자동으로 쌓이고 사람은 매매에만 집중할 수 있습니다.

문제는 카카오톡 알림만으로는 긴 메시지를 온전히 가져올 수 없다는 점입니다. 이 프로젝트는 그 한계를 확인하고, 알림이 아니라 채팅 화면 자체를 읽는 방식으로 우회해 전문(全文)을 서버까지 전달하는 핵심 기술을 먼저 검증한 기록입니다. 자동 실행의 마지막 단계와 DB 저장은 아직 남아 있으며, 이 페이지에서는 검증된 것과 아닌 것을 엄격히 구분해 표시합니다.

기기
갤럭시 S25 울트라
자동화 도구
MacroDroid
수집 대상
한국투자증권
카카오톡 체결 안내
전송 방식
HTTP POST
개인 서버 테스트 API
02 · 전체 시스템 흐름

시스템 아키텍처

실선은 플로팅 버튼 수동 실행으로 검증한 흐름, 점선은 자동 트리거 검증이 남았거나 추후 구현할 흐름입니다. 전체 흐름도에는 알림 경로에 제목·본문 이중 필터 단계를 반영했습니다(설정 중이라 점선). 다이어그램은 그림으로 렌더링되어 있어 스크립트 없이도 바로 보입니다. 누르면 크게 확대해 볼 수 있습니다.

전체 흐름도 — 수동 검증 경로와 향후 자동화 경로
예
아니오
예
아니오
예
아니오
카카오톡 체결 메시지
카카오톡 알림 감지
제목에 한국투자증권 포함?
본문에 체결안내 포함?
실행하지 않음
플로팅 버튼 수동 실행
카카오톡 앱 실행
증권사 채팅방 자동 열기
화면 텍스트 전체 읽기
kakao_screen 딕셔너리
HTTP POST 전송
서버 테스트 API
체결 메시지인가?
거래일 및 중복 검증
매매일지 DB
불필요한 메시지 제외
Mermaid 소스 코드 보기 · 복사
flowchart — 전체 흐름도 소스
flowchart TD
    A["카카오톡 체결 메시지"]
    B["카카오톡 알림 감지"]
    TF1{"제목에 한국투자증권 포함?"}
    TF2{"본문에 체결안내 포함?"}
    Y["실행하지 않음"]
    M["플로팅 버튼 수동 실행"]
    C["카카오톡 앱 실행"]
    D["증권사 채팅방 자동 열기"]
    E["화면 텍스트 전체 읽기"]
    F["kakao_screen 딕셔너리"]
    G["HTTP POST 전송"]
    H["서버 테스트 API"]
    I{"체결 메시지인가?"}
    J["거래일 및 중복 검증"]
    K["매매일지 DB"]
    X["불필요한 메시지 제외"]

    A -.-> B
    B -.-> TF1
    TF1 -.->|예| TF2
    TF1 -.->|아니오| Y
    TF2 -.->|예| C
    TF2 -.->|아니오| Y
    M --> C
    C --> D --> E --> F --> G --> H
    H -.-> I
    I -->|예| J --> K
    I -->|아니오| X
실선 — 수동 실행으로 검증한 기능 점선 — 자동 트리거 검증 또는 추후 구현 예정
한눈에 보는 흐름
향후 구현
카카오톡
MacroDroid
화면 텍스트 추출
HTTP POST
개인 서버
체결 데이터 검증
매매일지 DB
Mermaid 소스 코드 보기 · 복사
flowchart — 요약 흐름도 소스
flowchart LR
    A["카카오톡"] --> B["MacroDroid"]
    B --> C["화면 텍스트 추출"]
    C --> D["HTTP POST"]
    D --> E["개인 서버"]
    E -. "향후 구현" .-> F["체결 데이터 검증"]
    F -.-> G["매매일지 DB"]
03 · 구현 과정

문제 → 시도 → 결과

막힌 지점과 해결 과정을 순서대로 기록했습니다. 일곱 단계 모두 실제로 수행해 확인한 내용입니다.

04 · MacroDroid 설정

트리거와 동작 순서

수동 실행은 검증이 끝났고, 알림 트리거 자동 실행은 최종 검증이 남아 있습니다. 설정값은 복사해서 쓸 수 있습니다.

플로팅 버튼 kakao_read 검증 완료

수동 테스트용 트리거. 버튼을 누르면 카카오톡 실행부터 서버 전송까지 전체 처리가 한 번에 실행됩니다. 현재까지의 모든 검증은 이 경로로 수행했습니다.

카카오톡 알림 수신 설정 중 · 최종 검증 필요

자동 실행용 트리거. 아무 알림에나 반응하지 않도록 제목(한국투자증권)과 본문(체결안내)을 함께 검사하는 이중 필터를 설정 중입니다. 제목 필터는 설정 화면에서 확인했고, 본문 필터의 저장 여부와 실제 체결 알림에서의 동작은 아직 검증하지 않았습니다. 자세한 내용은 다음 섹션(알림 필터링)에 정리했습니다.

  1. 1카카오톡 실행
  2. 22초 대기앱 실행 안정화
  3. 3UI 자동조작 — 한국투자증권 채팅방 클릭
  4. 42초 대기채팅방 로딩
  5. 5화면 텍스트 전체 읽기
  6. 6kakao_screen 딕셔너리에 저장
  7. 7HTTP POST로 테스트 서버에 전송
HTTP 요청 명세 — 테스트 서버
POST /api/macrodroid/test
Authorization: Bearer •••••••• (실제 토큰은 비공개 — 이 페이지에 기록하지 않음)
Content-Type: text/plain; charset=utf-8

본문: kakao_screen 딕셔너리에 담긴 화면 텍스트 전문
카카오 개발자 API — 나에게 메시지 보내기 테스트 응답
HTTP 200
{
  "result_code": 0
}
05 · 알림 필터링

카카오톡 알림 필터링으로 불필요한 자동 실행 방지

자동 실행의 조건을 좁히는 단계입니다. 설정은 진행 중이고, 실제 체결 알림에서의 동작은 아직 검증되지 않았습니다.

기존 문제. 알림 트리거를 그대로 연결하면 카카오톡 메시지가 하나만 도착해도 MacroDroid가 실행돼 한국투자증권 채팅방을 열고, 화면을 읽어 서버로 전송합니다. 친구의 일상 메시지에도 휴대폰 화면이 멋대로 전환되고 불필요한 HTTP 요청이 발생하는 구조였습니다.

개선. 알림의 제목에 ‘한국투자증권’이 포함되고 본문에 ‘체결안내’가 포함될 때만 실행되도록 이중 필터를 설정했습니다. 두 조건을 모두 만족해야(AND) 매크로가 동작하므로, 일반 알림과 증권사의 일반 공지는 실행 전에 걸러집니다.

설정 항목설정값
트리거알림을 받으면
대상 앱카카오톡
별도의 제목 및 텍스트 필터 사용활성화
제목 조건포함하면 — 키워드 한국투자증권
메시지 내용 조건포함하면 — 키워드 체결안내
대소문자 구분 안 함활성화
진행 중인 알림 무시활성화
연속 발동 방지활성화
조건 결합제목과 메시지 내용이 모두 조건을 만족하는 알림만 대상
조건 분기 흐름도 — 목표 설계 (실제 자동 실행 미검증)
아니오
예
아니오
예
카카오톡 알림 수신
제목에 한국투자증권 포함?
실행하지 않음
본문에 체결안내 포함?
MacroDroid 실행
카카오톡 실행
한국투자증권 채팅방 열기
화면 텍스트 전체 읽기
kakao_screen 딕셔너리
HTTP POST 전송
개인 서버 테스트 API
향후 서버 검증 및 매매 DB 저장
Mermaid 소스 코드 보기 · 복사
flowchart — 알림 필터링 흐름도 소스
flowchart TD
    A["카카오톡 알림 수신"] --> B{"제목에 한국투자증권 포함?"}
    B -->|아니오| X["실행하지 않음"]
    B -->|예| C{"본문에 체결안내 포함?"}
    C -->|아니오| X
    C -->|예| D["MacroDroid 실행"]
    D --> E["카카오톡 실행"]
    E --> F["한국투자증권 채팅방 열기"]
    F --> G["화면 텍스트 전체 읽기"]
    G --> H["kakao_screen 딕셔너리"]
    H --> I["HTTP POST 전송"]
    I --> J["개인 서버 테스트 API"]
    J -.-> K["향후 서버 검증 및 매매 DB 저장"]

위 흐름도는 목표 설계입니다. 필터를 통과한 뒤의 동작(채팅방 열기부터 서버 전송까지)은 수동 실행으로 검증된 경로와 같지만, 이중 필터를 거쳐 자동으로 실행되는 것 자체는 아직 확인되지 않았습니다.

도입 전 문제

카카오톡 알림이 하나만 와도 매크로가 실행됐습니다. 친구가 보낸 메시지에도 채팅방이 열리고 화면 읽기와 서버 전송이 일어나, 불필요한 화면 전환과 HTTP 요청이 발생했습니다.

도입 후 — 기대 동작 설정 중 · 미검증

제목과 본문 조건을 모두 만족하는 체결안내 알림에서만 실행됩니다. 일반 친구의 알림에는 반응하지 않고, 한국투자증권의 일반 공지도 조건에 따라 제외되며, 불필요한 화면 전환과 HTTP 요청이 줄어듭니다. 단, 실제 알림의 제목과 본문에 지정한 문자열이 그대로 들어 있어야 하며, 카카오톡의 알림 표시 방식에 따라 정상 체결 메시지를 놓칠 가능성도 있습니다.

실제 검증 상태. 현재까지 확인된 것은 제목 필터가 설정 화면에 들어가 있는 것까지입니다. 나머지는 아직 확인되지 않았습니다.

항목상태내용
제목 필터 — 한국투자증권설정 화면 확인MacroDroid 설정 화면에서 제목 필터가 들어가 있는 것을 확인
본문 필터 — 체결안내미확인추가하도록 안내한 단계로, 실제로 저장됐는지는 확인되지 않음
두 조건 동시 저장미확인제목·본문 필터가 함께 저장돼 있는지는 아직 확인되지 않음
실제 체결 알림에서 자동 실행미검증실제 체결 알림이 발생했을 때 필터가 정상 동작하는지 확인 전

보안상 남은 문제. 이 필터는 자동화의 실행 조건일 뿐, 실행된 뒤 화면에서 읽은 다른 메시지가 서버로 함께 전송되는 문제까지 해결하지는 못합니다. 화면 텍스트 전체 읽기는 채팅방에 보이는 여러 메시지를 한꺼번에 수집할 수 있어서, 실제로 테스트 중에는 채팅방 화면에 있던 임시비밀번호 발급 안내가 서버로 전달된 사례가 있었습니다. 그래서 서버에서 체결안내 메시지만 식별하는 판정, 비밀번호·인증정보 같은 민감정보의 저장 방지, 주문번호와 거래일을 이용한 중복 검증이 후속 작업으로 남아 있고, 화면 잠금 상태의 자동 실행 검증과 실제 체결 알림에서의 필터 동작 확인도 함께 필요합니다.

06 · 현재 구현 상태

완료 / 검증 필요 / 미구현

실제로 확인한 것만 완료로 표시합니다. 상태는 아래 표 데이터만 고치면 페이지 전체에 반영되는 구조입니다.

기능상태비고
07 · 기술적 한계

알고 넘어가야 할 것들

잠금·화면 꺼짐 상태

화면이 꺼져 있거나 휴대폰이 잠긴 상태에서는 UI 자동조작이 실패할 수 있습니다. 무인 자동 실행의 가장 큰 변수입니다.

화면에 보이는 것만 읽힌다

화면 텍스트 읽기는 현재 화면에 표시된 내용만 가져옵니다. 스크롤 밖에 있거나 화면에 표시되지 않은 메시지는 추출할 수 없습니다.

카카오톡 UI 변경에 취약

카카오톡 화면 구조나 View ID가 업데이트로 달라지면 채팅방 자동 열기와 텍스트 읽기가 깨질 수 있어, 그때마다 설정을 손봐야 합니다.

개인정보 전송 위험

화면 전체를 읽는 방식이라 비밀번호 등 민감정보가 화면에 있으면 함께 전송될 수 있습니다. 전송 전 민감정보 차단은 아직 구현하지 않았습니다. 실제로 테스트 중 채팅방 화면에 있던 임시비밀번호 발급 안내가 서버로 전달된 사례가 있었습니다.

과거 메시지를 현재 거래로 오인할 위험

채팅방에 남은 과거 체결 메시지를 오늘 거래로 저장하면 안 됩니다. 거래일 검증은 아직 구현하지 않았으므로, 지금 단계의 수집 데이터는 기록용으로만 봅니다.

중복 방지 미구현 · 테스트와 실전의 구분

같은 메시지가 중복 전송·저장되는 것을 막는 장치도 아직 없습니다. 또한 현재 서버는 테스트 API 수신까지만 확인한 상태로, 실제 매매일지 DB 저장 기능과는 구분됩니다.

08 · 향후 개발

남은 과제

자동 트리거 검증이 먼저, 그다음이 서버 쪽 분석과 DB 연결입니다.

    결론 — 핵심 기술은 검증됐다

    카카오톡 알림의 길이 제한은 채팅 화면의 텍스트를 직접 읽는 방식으로 우회할 수 있고, 그렇게 추출한 긴 체결 메시지를 개인 서버까지 온전히 전달할 수 있음을 확인했습니다. 채팅방 자동 열기부터 전문 전송까지, 수동 실행 기준으로는 전체 흐름이 동작합니다.

    남은 일은 분명합니다. 실제 체결 알림으로 무인 자동 실행을 검증하고, 서버에서 체결 여부·거래일·중복을 걸러낸 뒤에야 매매일지 DB에 연결합니다. 완료되지 않은 단계를 완료로 표시하지 않는 것이 이 기록의 원칙입니다.