| name | kakaotalk-mac |
| description | Use kakaocli on macOS to read KakaoTalk chats, search messages, and send replies after explicit confirmation. |
| license | MIT |
| metadata | {"category":"messaging","locale":"ko-KR","phase":"v1.5"} |
KakaoTalk Mac CLI
What this skill does
kakaocli ๋ฅผ ์ฌ์ฉํด macOS์์ ์นด์นด์คํก ๋ํ ๋ชฉ๋ก์ ํ์ธํ๊ณ , ๋ฉ์์ง๋ฅผ ๊ฒ์ํ๊ณ , ํ์ํ ๋ ๋ต์ฅ์ ๋ณด๋ธ๋ค.
์ด ์คํฌ์ macOS + ์นด์นด์คํก Mac ์ฑ ์ค์น๋ฅผ ์ ์ ๋ก ํ๋ค. ๊ณต์ Kakao API๋ฅผ ์ฐ๋ ๊ฒ์ด ์๋๋ผ ๋ก์ปฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฝ๊ธฐ์ macOS ์ ๊ทผ์ฑ ์๋ํ ์์์ ๋์ํ๋ฏ๋ก, ๊ถํ๊ณผ ์์ ๊ท์น์ ๋จผ์ ํ์ธํด์ผ ํ๋ค.
When to use
- "์นด์นด์คํก ์ต๊ทผ ๋ํ ๋ชฉ๋ก ๋ณด์ฌ์ค"
- "ํน์ ์ฑํ
๋ฐฉ ์ต๊ทผ ๋ฉ์์ง ์ฐพ์์ค"
- "์นด์นด์คํก ๋ฉ์์ง ๊ฒ์ํด์ค"
- "๋ด ์นดํก์ผ๋ก ํ
์คํธ ๋ฉ์์ง ๋ณด๋ด์ค"
- "๋ต์ฅ ์ด์์ ๋ง๋ค๋ ์ค์ ์ ์ก ์ ์๋ ๊ผญ ํ์ธ๋ฐ์"
When not to use
- macOS๊ฐ ์๋ ํ๊ฒฝ
- ์นด์นด์คํก Mac ์ฑ์ด ์ค์น๋์ด ์์ง ์์ ํ๊ฒฝ
- ์ฌ์ฉ์ ํ์ธ ์์ด ๋ค๋ฅธ ์ฌ๋์๊ฒ ๋ฉ์์ง๋ฅผ ๋ฐ๋ก ๋ณด๋ด์ผ ํ๋ ์์
- ์นด์นด์ค ๊ณต์ API ๋ฒ์ ์์์ ํด๊ฒฐ ๊ฐ๋ฅํ ์๋ฒ-ํฌ-์๋ฒ ์ฐ๋ ์์
Prerequisites
- macOS
- KakaoTalk for Mac ์ค์น
- Homebrew
- Mac App Store ๋ก๊ทธ์ธ(
mas ์ฌ์ฉ ์)
kakaocli ์ค์น
python3 3.10+
- ์ด ์ ์ฅ์์ helper
scripts/kakaotalk_mac.py
- ํฐ๋ฏธ๋ ์ฑ์ Full Disk Access ์ Accessibility ๊ถํ ๋ถ์ฌ
Inputs
- ์ฑํ
๋ฐฉ ์ด๋ฆ ๋๋ ๊ฒ์ ํค์๋
- ์ฝ๊ธฐ ๋ฒ์: ์ต๊ทผ N๊ฐ,
--since 1h, --since 7d ๋ฑ
- ์ ์กํ ๋ฉ์์ง ๋ณธ๋ฌธ
- ํ
์คํธ ์ฌ๋ถ (
--me, --dry-run)
Workflow
0. Install KakaoTalk for Mac first when missing
์นด์นด์คํก Mac ์ฑ์ด ์์ผ๋ฉด ๋จผ์ ์ค์นํ๋ค. mas ๋ฅผ ์ฐ๋ ค๋ฉด App Store ๋ก๊ทธ์ธ ์ํ์ฌ์ผ ํ๋ค.
brew install mas
mas account
mas install 869223134
mas install ์ด ๋งํ๋ฉด App Store ์ฑ์์ ๋จผ์ ๋ก๊ทธ์ธํ ๋ค ๋ค์ ์๋ํ๋ค.
1. Install kakaocli
๊ณต์ ์ ์ฅ์ ๊ธฐ์ค ๊ถ์ฅ ์ค์น๋ Homebrew tap ์ด๋ค.
brew install silver-flight-group/tap/kakaocli
์ค์น ํ ๋ฐ๋ก ์ํ๋ฅผ ํ์ธํ๋ค.
kakaocli status
2. Grant the required macOS permissions
System Settings > Privacy & Security ์์ ํ์ฌ ์ฌ์ฉํ๋ ํฐ๋ฏธ๋ ์ฑ(iTerm, Terminal, Warp ๋ฑ)์ ์๋ ๊ถํ์ ์ค๋ค.
- Full Disk Access: ์นด์นด์คํก ๋ก์ปฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฝ๊ธฐ์ฉ
- Accessibility: ๋ฉ์์ง ์ ์ก, harvest, inspect ๊ฐ์ UI ์๋ํ์ฉ
๊ธฐ๋ณธ ๊ท์น:
status / auth / chats ๊ฐ์ ์ฝ๊ธฐ ๋ช
๋ น๋ Full Disk Access ๊ฐ ํ์ํ๋ค.
send, harvest, inspect ๋ฅ ์์
์ Accessibility ๊ถํ๊น์ง ํ์ํ๋ค.
3. Verify read access before attempting side effects
๋จผ์ ์ฝ๊ธฐ ๊ฒฝ๋ก๊ฐ ๋๋์ง ํ์ธํ๋ค.
kakaocli status
kakaocli auth
kakaocli chats --limit 10 --json
auth ๊ฐ ์ฑ๊ณตํ๋ฉด ์ฝ๊ธฐ ๊ฒฝ๋ก๋ ์ค๋น๋ ๊ฒ์ด๋ค.
3.5. Use the helper when kakaocli auth fails on user_id auto-detection
์ค์ macOS ํ๊ฒฝ์์๋ KakaoTalk.db ๋ผ๋ literal ํ์ผ์ด ์์ด๋, container ์์ 78์ hex ํ์ผ์ด ์ค์ SQLCipher DB ์ธ ๊ฒฝ์ฐ๊ฐ ์๋ค. ์ด๋ kakaocli status ๋ ์ ์์ธ๋ฐ kakaocli auth ๋ง ์คํจํ๋ ๋ํ ์์ธ์:
AlertKakaoIDsList ํ๋ณด๋ก๋ ๋ณตํธํ๊ฐ ์ ๋จ
- plist ์
DESIGNATEDFRIENDSREVISION:<sha512(user_id)> ๋ง ๋จ์ ์์
- upstream
kakaocli ์ ๊ธฐ๋ณธ user_id brute-force ์๊ฐ์ด ์งง์์ auto-detection ์ด ์คํจํจ
์ด ์ ์ฅ์๋ ๊ทธ ๊ตฌ๊ฐ๋ง ๋ณด์ํ๋ read-only helper ๋ฅผ ํจ๊ป ์ ๊ณตํ๋ค.
python3 scripts/kakaotalk_mac.py auth --refresh
python3 scripts/kakaotalk_mac.py chats --limit 10 --json
python3 scripts/kakaotalk_mac.py messages --chat "์ง์" --since 1d --json
python3 scripts/kakaotalk_mac.py search "ํ์" --json
- helper ๋ plist ์
AlertKakaoIDsList ์ DESIGNATEDFRIENDSREVISION hash ๋ฅผ ์ฝ๋๋ค.
- ํ๋ณด
user_id ๊ฐ ๋ชจ๋ ์คํจํ๋ฉด SHA-512 preimage search ๋ก ์ค์ user_id ๋ฅผ ๋ ์ค๋ ์ฐพ๋๋ค.
- ์ฑ๊ณตํ
user_id, DB ๊ฒฝ๋ก, derived key ๋ ~/.cache/k-skill/kakaotalk-mac-auth.json ์ ์บ์ํ๋ค.
- ์ดํ read-only helper ๋ช
๋ น(
chats, messages, search, schema)์ cached --db / --key ๋ฅผ ๋ถ์ฌ kakaocli ๋ฅผ ๋ค์ ํธ์ถํ๋ค.
4. Read or search messages
kakaocli messages --chat "์ง์" --since 1h --json
kakaocli search "์ ์ฌ" --json
helper ๊ฒฝ์ ์์:
python3 scripts/kakaotalk_mac.py messages --chat "์ง์" --since 1h --json
python3 scripts/kakaotalk_mac.py search "์ ์ฌ" --json
์๋ต์ ๊ฐ๋ฅํ๋ฉด JSON ๋ชจ๋๋ก ๋ฐ๊ณ , ์ฌ๋์ด ์ฝ๊ธฐ ์ฝ๊ฒ ๋ค์ ์์ฝํ๋ค.
5. Use safe testing before real sends
์ค์ ์ ์ก ์ ์ ๋จผ์ ์๊ธฐ ์์ ์๊ฒ ํ
์คํธํ๊ฑฐ๋ dry-run ์ผ๋ก ํ์ธํ๋ค.
kakaocli send --me _ "ํ
์คํธ ๋ฉ์์ง"
kakaocli send --dry-run "์ฑํ
๋ฐฉ ์ด๋ฆ" "๋ณด๋ผ ๋ฌธ์ฅ"
--me ๋ ๋์์ ์ฑํ
์ผ๋ก ๋ณด๋ด๋ฏ๋ก ๊ฐ์ฅ ์์ ํ ํ
์คํธ ๊ฒฝ๋ก๋ค.
6. Confirm before sending to other people
๋ค๋ฅธ ์ฌ๋์ด๋ ๋จ์ฒด๋ฐฉ์ผ๋ก ๋ณด๋ด๊ธฐ ์ ์๋ ๋ฐ๋์ ์ฌ์ฉ์์ ์ต์ข
ํ์ธ์ ๋ฐ๋๋ค.
ํ์ธ ์ ์๋ ์๋๋ง ์ค๋นํ๋ค.
- ๋์ ์ฑํ
๋ฐฉ ์ด๋ฆ
- ์ ์กํ ๋ฌธ์ฅ
- ์ ์ด ๋ฌธ์ฅ์ ๋ณด๋ด๋์ง ํ ์ค ์ค๋ช
ํ์ธ์ ๋ฐ์์ ๋๋ง ์ ์กํ๋ค.
kakaocli send "์ฑํ
๋ฐฉ ์ด๋ฆ" "๋ณด๋ผ ๋ฌธ์ฅ"
7. Use login storage only when the user explicitly wants auto-login
์๋ ๋ก๊ทธ์ธ ํธ์๋ฅผ ์ํ ๋๋ง ์๊ฒฉ์ฆ๋ช
์ ์ ์ฅํ๋ค.
kakaocli login
kakaocli login --status
๋น๋ฐ๋ฒํธ๋ฅผ ์ฑํ
์ฐฝ์ ๋ณด๋ด๋ผ๊ณ ์๊ตฌํ์ง ์๋๋ค. ์ฌ์ฉ์๊ฐ ์ง์ ๋ก์ปฌ ํฐ๋ฏธ๋์์ ์
๋ ฅํ๊ฒ ํ๋ค.
Done when
- ์ฝ๊ธฐ ์์ฒญ์ด๋ฉด ์ํ ํ์ธ + ๋ํ/๋ฉ์์ง ์กฐํ ๊ฒฐ๊ณผ๊ฐ ์ ๋ฆฌ๋์ด ์๋ค
- ๊ฒ์ ์์ฒญ์ด๋ฉด ํค์๋ ๊ธฐ์ค ๊ฒฐ๊ณผ๊ฐ ์ ๋ฆฌ๋์ด ์๋ค
- ์ ์ก ์์ฒญ์ด๋ฉด ํ
์คํธ(
--me ๋๋ --dry-run)์ ์ฌ์ฉ์ ํ์ธ์ด ๋๋ ๋ค ์ค์ ์ ์ก ์ฌ๋ถ๊ฐ ๋ช
ํํ๋ค
Failure modes
- KakaoTalk for Mac ๋ฏธ์ค์น
- App Store ๋ก๊ทธ์ธ ๋๋ฝ์ผ๋ก
mas install ์คํจ
- Full Disk Access ๋ฏธ๋ถ์ฌ
- Accessibility ๋ฏธ๋ถ์ฌ
status ๋ ์ ์์ธ๋ฐ auth ๋ง ์คํจํ๋ user_id auto-detection / key mismatch ์ผ์ด์ค
- ์ฑํ
๋ฐฉ ์ด๋ฆ substring ์ด ์ ๋งคํด์ ์๋ชป๋ ํ๋ณด๊ฐ ์ฌ๋ฌ ๊ฐ ์กํ
Notes
- ์ด ์คํฌ์ macOS ์ ์ฉ์ด๋ค.
- ๋ค๋ฅธ ์ฌ๋์๊ฒ ๋ณด๋ด๋ ๋ฉ์์ง๋ ํญ์ confirm before sending ์์น์ ์งํจ๋ค.
- ์ฒซ ๊ฒ์ฆ์
kakaocli status ์ kakaocli auth ๋ถํฐ ์์ํ๋ ํธ์ด ์์ ํ๋ค.
kakaocli auth ๊ฐ User ID: auto-detection failed ๋ก ๋ฉ์ถ๋ฉด helper ๊ฒฝ๋ก๋ฅผ ์ฐ์ ์ฌ์ฉํ๋ค.
- helper cache ๋ ๋ก์ปฌ SQLCipher key ๋ฅผ ํฌํจํ๋ฏ๋ก ๋ณธ์ธ ๊ณ์ ์์๋ง ์ ์งํ๊ณ ๊ณต์ ํ์ง ์๋๋ค.
- ๊ธฐ๋ณธ
auth ํ
์คํธ ์ถ๋ ฅ์ key ๋ฅผ ๋ค์ ๋ณด์ฌ์ฃผ์ง ์๋๋ค. ์๋ํ๊ฐ ํ์ํ ๋๋ง --format json ๋๋ --format shell ์ ์ฌ์ฉํ๋ค.