πŸŒ… λͺ¨λ‹ 카톑 λΈŒλ¦¬ν•‘ v2.1 FINAL

Automated KakaoTalk morning briefing system for daily updates.

πŸŒ… λͺ¨λ‹ 카톑 λΈŒλ¦¬ν•‘ v2.1 FINAL

닀풀림행정사 μ‚¬λ¬΄μ†Œ | 맀일 μ˜€μ „ 7μ‹œ μžλ™ μΉ΄μΉ΄μ˜€ν†‘ λ°œμ†‘ μ‹œμŠ€ν…œ


πŸ“‹ μžλ™ μ‹€ν–‰ μŠ€μΌ€μ€„

μ‹œκ° (KST)μ›Œν¬ν”Œλ‘œμš°λ™μž‘
06:50refresh-kakao-tokenKakao 토큰 μžλ™ κ°±μ‹ 
07:00morning-briefλͺ¨λ‹ λΈŒλ¦¬ν•‘ 카톑 λ°œμ†‘

cron ν‘œν˜„μ‹ (UTC κΈ°μ€€):

  • 토큰 κ°±μ‹ : '50 21 * * *' β†’ KST 06:50
  • λΈŒλ¦¬ν•‘ λ°œμ†‘: '0 22 * * *' β†’ KST 07:00

🎯 μ£Όμš” κΈ°λŠ₯

κΈ°λŠ₯μ™ΈλΆ€ μ˜μ‘΄λΉ„κ³ 
πŸ”„ Kakao 토큰 μžλ™ κ°±μ‹ Kakao OAuthrefresh_token μ‚¬μš©
πŸ“’ λŒ€ν•œν–‰μ •μ‚¬νšŒ 곡지 크둀링daaa.or.kr/vtMain.html곡식 μ‚¬μ΄νŠΈ 직접 μŠ€ν¬λž˜ν•‘
πŸ“° ꡬ글 λ‰΄μŠ€ 보쑰 μˆ˜μ§‘Google News RSS무료 Β· ν‚€ λΆˆν•„μš”
πŸŽ™οΈ μŒμ„± λΈŒλ¦¬ν•‘ (TTS)gTTS무료 Β· ν‚€ λΆˆν•„μš”
πŸ“Š DART κ³΅μ‹œDART OpenAPI선택 Β· 없어도 λ™μž‘
β˜€οΈ 날씨Open-Meteo무료 Β· ν‚€ λΆˆν•„μš”
πŸ“… 주말/곡휴일 κ°„μ†Œν™”β€”μžλ™ λͺ¨λ“œ μ „ν™˜

πŸ“‚ 파일 ꡬ쑰

sjbaik0431/claude/
β”œβ”€β”€ .github/workflows/
β”‚   β”œβ”€β”€ morning-brief.yml          # 맀일 07:00 λΈŒλ¦¬ν•‘
β”‚   └── refresh-kakao-token.yml    # 맀일 06:50 토큰 κ°±μ‹ 
β”œβ”€β”€ scripts/
β”‚   β”œβ”€β”€ morning_brief.py           # 메인 슀크립트
β”‚   β”œβ”€β”€ admin_news_crawler.py      # ν–‰μ •μ‚¬νšŒ 곡지 크둀러
β”‚   β”œβ”€β”€ voice_briefing.py          # μŒμ„± λΈŒλ¦¬ν•‘ 생성
β”‚   └── refresh_kakao_token.py     # Kakao 토큰 κ°±μ‹ 
β”œβ”€β”€ logs/
β”‚   └── YYYY-MM-DD.md              # 일일 μ‹€ν–‰ 둜그
└── audio/
    └── brief_YYYYMMDD.mp3         # 일일 μŒμ„± 파일

πŸš€ GitHub Secrets 등둝 (ν•„μˆ˜ 5개)

Settings β†’ Secrets and variables β†’ Actions

Secretν•„μˆ˜νšλ“μ²˜
ANTHROPIC_API_KEYβœ…console.anthropic.com
KAKAO_REST_API_KEYβœ…developers.kakao.com
KAKAO_ACCESS_TOKENβœ…Kakao OAuth 인가 ν›„ λ°œκΈ‰ (μžλ™ 갱신됨)
KAKAO_REFRESH_TOKENβœ…Kakao OAuth 인가 μ‹œ λ™μ‹œ λ°œκΈ‰
GH_PATβœ…GitHub PAT (scope: repo) β€” 토큰 μžλ™ κ°±μ‹ μš©
DART_API_KEY⚠️ 선택opendart.fss.or.kr

Kakao 토큰 졜초 λ°œκΈ‰ 절차

# 1) 인가 μ½”λ“œ νšλ“ (λΈŒλΌμš°μ €μ—μ„œ)
https://kauth.kakao.com/oauth/authorize?client_id={REST_API_KEY}&redirect_uri=https://localhost&response_type=code&scope=talk_message

# 2) 토큰 λ°œκΈ‰
curl -X POST "https://kauth.kakao.com/oauth/token" \
  -d "grant_type=authorization_code" \
  -d "client_id={REST_API_KEY}" \
  -d "redirect_uri=https://localhost" \
  -d "code={μΈκ°€μ½”λ“œ}"

# 3) μ‘λ‹΅μ˜ access_token, refresh_token을 각 Secret에 등둝

🎯 λ©”μ‹œμ§€ μ˜ˆμ‹œ

평일 (μ›”~금)

πŸ“‹ 닀풀림행정사 04/20 μ›”

πŸ“’ 행정사 μ†Œμ‹ 3건
β€’ [회]2026λ…„ 보수ꡐ윑 일정 μ•ˆλ‚΄
β€’ [회]νšŒλΉ„ λ‚©λΆ€ κΈ°ν•œ μ—°μž₯
β€’ 행정사법 μ‹œν–‰λ Ή κ°œμ • 예고

ν›„μ„±: μ£Όμš”μ‚¬ν•­λ³΄κ³ μ„œ
β˜€οΈ 용인 12~18Β°C κ°•μˆ˜10%

주말·곡휴일

πŸ“‹ 닀풀림행정사 04/19 일 [주말]

πŸ“’ 행정사 μ†Œμ‹ 1건
β€’ [회]주말 당직 μ•ˆλ‚΄

β›… 용인 10~20Β°C κ°•μˆ˜30%

였늘 ν•˜λ£¨ 잘 λ³΄λ‚΄μ„Έμš” 😊
β€” 010-3404-5955

πŸ›  문제 ν•΄κ²°

λŒ€ν•œν–‰μ •μ‚¬νšŒ 크둀링 κ²°κ³Ό μ—†μŒ

  • scripts/admin_news_crawler.py 상단 DAAA_NOTICE_CANDIDATES 경둜 μ‘°μ •
  • μ‹€μ œ HTML ꡬ쑰 확인 ν›„ μ •κ·œμ‹ νŒ¨ν„΄(patterns) μˆ˜μ •

Kakao 토큰 만료 였λ₯˜

  • Refresh Token도 만료된 경우 μˆ˜λ™ μž¬λ°œκΈ‰ ν•„μš” (2κ°œμ›”λ§ˆλ‹€)
  • KAKAO_REFRESH_TOKEN Secret μž¬λ“±λ‘

μΊμ‹œ μ΄ˆκΈ°ν™” (전체λ₯Ό μ‹ κ·œλ‘œ 인식)

rm logs/admin_news_cache.json
git commit -am "reset: cache"
git push

μ—°λ½μ²˜: 010-3404-5955 (백상진 행정사) / [email protected]
닀풀림행정사 μ‚¬λ¬΄μ†Œ Β· 경기도 μš©μΈμ‹œ κΈ°ν₯ꡬ 쀑동