Skip to content

qlsdlfghks123/NaverBlog-AI-AutoPoster

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

17 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

๐Ÿค– ๋„ค์ด๋ฒ„ ๋ธ”๋กœ๊ทธ ์ž๋™ ํฌ์ŠคํŒ… ๋ด‡ (feat. Gemini AI)

Google์˜ ์ƒ์„ฑํ˜• AI ๋ชจ๋ธ์ธ Gemini API์™€ Selenium์„ ํ™œ์šฉํ•˜์—ฌ, ํŠน์ • ์ฃผ์ œ๋งŒ ์ž…๋ ฅํ•˜๋ฉด ๋„ค์ด๋ฒ„ ๋ธ”๋กœ๊ทธ์— ๋งž์ถคํ˜• ํฌ์ŠคํŒ…์„ ์ž๋™์œผ๋กœ ์ž‘์„ฑํ•ด ์ฃผ๋Š” ํŒŒ์ด์ฌ ์ž๋™ํ™” ํ”„๋กœ๊ทธ๋žจ์ž…๋‹ˆ๋‹ค.

โœจ ํ•ต์‹ฌ ๊ธฐ๋Šฅ (Key Features)

  • ๐Ÿง  AI ๊ธฐ๋ฐ˜ ๋งž์ถคํ˜• ์›๊ณ  ์ƒ์„ฑ (Gemini API)

    • ๋‹จ์ˆœํ•œ ํ…์ŠคํŠธ ์ƒ์„ฑ์ด ์•„๋‹Œ **ํ”„๋กฌํ”„ํŠธ ์—”์ง€๋‹ˆ์–ด๋ง(Prompt Engineering)**์„ ์ ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค.
    • AI์˜ ์‘๋‹ต์„ ํŒŒ์‹ฑํ•˜์—ฌ '์ œ๋ชฉ'๊ณผ '๋ณธ๋ฌธ' ๋ฐ์ดํ„ฐ๋ฅผ ์ •ํ™•ํ•˜๊ฒŒ ๋ถ„๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
  • ๐Ÿ”’ [Update] 100% ๋ฌด์ธ ์ž๋™ํ™” ๋ฐ ๊ฐ•๋ ฅํ•œ ๋ณด์•ˆ ๋กœ๊ทธ์ธ (Cookie Injection & Fernet)

    • ๊ธฐ์กด์˜ ๋ฒˆ๊ฑฐ๋กœ์šด '์ผํšŒ์šฉ ๋ฒˆํ˜ธ ์ˆ˜๋™ ์ž…๋ ฅ' ๋ฐฉ์‹์„ ํ๊ธฐํ•˜๊ณ , ์ฟ ํ‚ค ์ธ์ ์…˜(Cookie Injection) ๊ธฐ๋ฒ•์„ ๋„์ž…ํ•˜์—ฌ ํด๋ฆญ ํ•œ ๋ฒˆ์œผ๋กœ ์‹คํ–‰๋˜๋Š” ์™„์ „ํ•œ ๋ฌด์ธ ์ž๋™ํ™”๋ฅผ ๊ตฌํ˜„ํ–ˆ์Šต๋‹ˆ๋‹ค.

    • ๋ณด์•ˆ ๊ฐ•ํ™”: ์„ธ์…˜ ํ•˜์ด์žฌํ‚น(Session Hijacking)์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด cryptography ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋„์ž…ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋„ค์ด๋ฒ„ ๋กœ๊ทธ์ธ ์ฟ ํ‚ค๋ฅผ Fernet ๋Œ€์นญํ‚ค ์•Œ๊ณ ๋ฆฌ์ฆ˜์œผ๋กœ ์•”ํ˜ธํ™”ํ•˜์—ฌ ๋กœ์ปฌ์— ์ €์žฅ(.enc)ํ•˜๊ณ , ์‹คํ–‰ ์‹œ ํ™˜๊ฒฝ๋ณ€์ˆ˜(.env)์˜ ๋น„๋ฐ€ ํ‚ค๋กœ ๋ณตํ˜ธํ™”ํ•˜์—ฌ ์•ˆ์ „ํ•˜๊ฒŒ ์ฃผ์ž…ํ•ฉ๋‹ˆ๋‹ค.

  • ๐Ÿš€ ์Šค๋งˆํŠธ์—๋””ํ„ฐ DOM ๊ตฌ์กฐ ์šฐํšŒ ๋ฐ ํ…์ŠคํŠธ ์‚ฝ์ž… (ActionChains & Pyperclip)

    • ๋„ค์ด๋ฒ„ ์Šค๋งˆํŠธ์—๋””ํ„ฐ ONE์˜ ๋ณต์žกํ•œ ๋ ˆ์ด์–ด ๊ตฌ์กฐ์™€ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์ด๋ฒคํŠธ ๊ฐ€๋กœ์ฑ„๊ธฐ(Event Trapping)๋ฅผ ์šฐํšŒํ•˜๊ธฐ ์œ„ํ•œ ํŠน์ˆ˜ ๋กœ์ง์ด ์ ์šฉ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

    • send_keys()์˜ ์†๋„ ์ด์Šˆ์™€ ํ…์ŠคํŠธ ๊ผฌ์ž„ ํ˜„์ƒ์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ํด๋ฆฝ๋ณด๋“œ ๋™๊ธฐํ™”(pyperclip) ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

    • HTML ํƒœ๊ทธ๋ฅผ ์ง์ ‘ ์ฐพ๋Š” ๋Œ€์‹ , ๊ธฐ์ค€์ ์—์„œ ๋ฌผ๋ฆฌ์ ์ธ ํ”ฝ์…€๋งŒํผ ์ด๋™ํ•˜๋Š” ์˜คํ”„์…‹ ์ขŒํ‘œ ํด๋ฆญ(move_to_element_with_offset) ๊ธฐ๋ฒ•์„ ๋„์ž…ํ•˜์—ฌ ์–ด๋–ค ์ƒํ™ฉ์—์„œ๋„ ์ •ํ™•ํ•˜๊ฒŒ ๋ณธ๋ฌธ ์˜์—ญ์„ ํƒ€๊ฒŸํŒ…ํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ› ๏ธ ์‚ฌ์šฉ ๊ธฐ์ˆ  (Tech Stack)

  • Language: Python 3.x
  • Web Automation: Selenium WebDriver, ActionChains
  • AI API: Google Generative AI (gemini-2.5-flash)
  • Security & Utils: * cryptography (Fernet ๋Œ€์นญํ‚ค ์•”ํ˜ธํ™”)
    • pickle (์ฟ ํ‚ค ๋ฐ์ดํ„ฐ ์ง๋ ฌํ™”)
    • pyperclip (ํด๋ฆฝ๋ณด๋“œ ์ œ์–ด)
    • python-dotenv (ํ™˜๊ฒฝ๋ณ€์ˆ˜ ๋ฐ ์•”ํ˜ธํ™” ํ‚ค ๊ด€๋ฆฌ)

๐Ÿ’ก ํŠธ๋Ÿฌ๋ธ”์ŠˆํŒ… (Troubleshooting)

  • Issue 1: ๋„ค์ด๋ฒ„ ์—๋””ํ„ฐ ๋ณธ๋ฌธ ์˜์—ญ ํด๋ฆญ ์‹œ ElementNotInteractableException ๋ฐœ์ƒ ๋ฐ ์ปค์„œ ์ด๋™ ๋ถˆ๊ฐ€ ํ˜„์ƒ.

    • Solution: ์—๋””ํ„ฐ์˜ ๋ณต์žกํ•œ ๋ž˜ํผ(Wrapper) ํƒœ๊ทธ๋ฅผ ๋ฌด์‹œํ•˜๊ณ , ์ œ๋ชฉ ์นธ์„ ๊ธฐ์ค€์œผ๋กœ ๋งˆ์šฐ์Šค๋ฅผ ํ•˜๊ฐ•์‹œ์ผœ ๋นˆ ์—ฌ๋ฐฑ์„ ๊ฐ•์ œ ํด๋ฆญํ•˜๋Š” Offset ํด๋ฆญ ๊ธฐ๋ฒ•์œผ๋กœ ์šฐํšŒ ํ•ด๊ฒฐ.
  • Issue 2: ํฌ๋กฌ ์œ ์ € ํ”„๋กœํ•„(User Data) ์ง์ ‘ ์—ฐ๋™ ์‹œ, ๋ˆ„์ ๋œ ์บ์‹œ์™€ ํ™•์žฅ ํ”„๋กœ๊ทธ๋žจ ๋กœ๋”ฉ์œผ๋กœ ์ธํ•œ ํ”„๋กœ์„ธ์Šค ๋ฌดํ•œ ๋Œ€๊ธฐ(Deadlock) ๋ฐ ์›น์†Œ์ผ“ ํ†ต์‹  ๋‹จ์ ˆ ํ˜„์ƒ.

    • Solution: ๋ฌด๊ฑฐ์šด ํ”„๋กœํ•„ ํด๋” ์ „์ฒด๋ฅผ ์—ฐ๋™ํ•˜๋Š” ๋Œ€์‹ , ์ธ์ฆ์— ํ•„์š”ํ•œ ํ•ต์‹ฌ '์„ธ์…˜ ์ฟ ํ‚ค'๋งŒ ์ถ”์ถœํ•˜์—ฌ ๊ฐ€๋ฒผ์šด ๊นกํ†ต(Vanilla) ํฌ๋กฌ ์„ธ์…˜์— ์ฃผ์ž…(Injection)ํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์•„ํ‚คํ…์ฒ˜๋ฅผ ๋ณ€๊ฒฝํ•˜์—ฌ ์†๋„์™€ ์•ˆ์ •์„ฑ ํ™•๋ณด.

๊ฐœ์„ ์ ์ด ์žˆ๋‹ค๋ฉด ๋ฌด์—‡์„ ๊ฐœ์„ ํ•ด์•ผ ํ• ์ง€ ์•Œ๋ ค์ฃผ์„ธ์š”! ๋ฐ”์ด๋ธŒ์ฝ”๋”ฉ์œผ๋กœ ์ž‘์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค.

About

Python-based Naver Blog automation tool utilizing Gemini AI for content generation and encrypted session injection for seamless daily posting.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages