用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
直接命令不会经过审查 Prompt;运行前请先检查来源。
npx skills add https://github.com/bam-bam-2/solo-skills --skill naver-mail命令会保持在同一行。复制前请横向滚动并检查完整内容。
想先保存到本地?可下载 SkillsMP 当前能够提供的文件。
AI(ChatGPT·Claude·Gemini 등)가 쓴 한글 텍스트를 "사람이 쓴 글처럼" 윤문해주는 오케스트레이터 스킬. 번역투·영어 인용 과다·기계적 병렬·관용구·피동태 남용·접속사 남발·리듬 균일성·이모지/불릿 과다 등 10대 카테고리 40+ AI 티 패턴을 탐지·분류해 내용은 한 글자도 건드리지 않고 문체·리듬·표현만 자연스러운 한국어로 재작성한다. 트리거 — "AI 티 없애줘", "AI 같은 글 자연스럽게", "GPT/ChatGPT 문체", "AI 번역투 고쳐", "사람이 쓴 것처럼 윤문", "AI 윤문", "ChatGPT 티 제거", "한글 AI 탐지·윤문", "AI 글 사람처럼", "번역투 제거", "영어 인용 많은 글 윤문", "AI 글 티 안 나게", "휴머나이저", "humanize Korean", "AI detector bypass 한글". 후속 작업 — "특정 카테고리만 다시", "윤문 강도 조정", "장르 바꿔서", "이 문단만", "2차 윤문" 도 모두 이 스킬. 단순 맞춤법·오탈자 교정은 직접 처리, 번역은 번역 스킬, 내용 추가·삭제를 동반한 재작성은 별도 집필 스킬.
회의 전사록을 받아 회의록으로 정리하고 노션 DB에 등록한 뒤 디스코드에 공지까지 한 번에 처리한다.
온라인 유료 커뮤니티 개설 전체 프로세스를 지원하는 에이전트 조직 스킬. 커뮤니티 기획부터 모집 카피, 노션 DB 세팅, 운영 SOP까지 한번에 처리. 오케스트레이터가 인터뷰를 진행하고 4개 전문 에이전트가 결과물을 순서대로 생성한다. 트리거: "커뮤니티 만들자", "커뮤니티 개설", "유료 커뮤니티 만들어줘", "커뮤니티 기획해줘", "/community-launch"
基于 SOC 职业分类
正在显示 SKILL.md
| name | naver-mail |
| description | 네이버 메일을 브라우저 없이 IMAP으로 읽는다. 웹 세션이 만료돼 로그인 화면으로 튕길 때, 본문과 대용량 첨부까지 그대로 받아오는 우회 경로. |
네이버 웹메일은 세션이 자주 만료되고, 만료되면 저장된 비밀번호가 없어 로그인 화면에서 막힌다.
앱 비밀번호가 이미 .env에 있으므로 IMAP으로 바로 붙는 게 빠르다.
scripts/send_naver_mail.py — 네이버 SMTP 발송기입니다. 첨부파일을 지원합니다.
python scripts/send_naver_mail.py \
--to someone@example.com --subject "제목" \
--body-file body.txt --attach report.pdf
계정 정보는 코드에 넣지 말고 .env에 둡니다. 네이버는 애플리케이션 비밀번호를 따로 발급받아야 합니다.
~/Projects/<프로젝트>/운영/.env
~/Projects/<프로젝트>/운영/서초aict-웰커밍데이/.env
키 이름: NAVER_MAIL_USER, NAVER_MAIL_APP_PASSWORD (커뮤니티 레터 발송용으로 세팅된 것)
⚠️ 값을 출력하거나 다른 파일로 복사하지 말 것. 스크립트 안에서만 읽어 쓴다.
imap.naver.com:993 SSL. 표준 imaplib이면 충분하다.
import imaplib, email
from email.header import decode_header
from pathlib import Path
env = {}
for p in [Path('.env'), Path('서초aict-웰커밍데이/.env')]:
if p.exists():
for line in p.read_text().splitlines():
if '=' in line and not line.strip().startswith('#'):
k, v = line.split('=', 1)
env.setdefault(k.strip(), v.strip().strip('"').strip("'"))
M = imaplib.IMAP4_SSL('imap.naver.com', 993)
M.login(env['NAVER_MAIL_USER'], env['NAVER_MAIL_APP_PASSWORD'])
M.select('INBOX')
# 발신자로 검색 (한글 검색어는 인코딩 이슈가 있으니 이메일 주소로 찾는 게 안전)
typ, data = M.search(None, 'FROM', '"someone@example.com"')
ids = data[0].split()
# 헤더만 빠르게 (읽음 처리 안 되게 BODY.PEEK)
typ, d = M.fetch(ids[-1], '(BODY.PEEK[HEADER.FIELDS (FROM SUBJECT DATE)])')
# 전문 + 첨부
typ, d = M.fetch(ids[-1], '(RFC822)')
msg = email.message_from_bytes(d[0][1])
제목·파일명은 반드시 decode_header로 디코드한다(MIME 인코딩).
일반 첨부는 part.get_filename() + part.get_payload(decode=True)로 바로 저장된다.
대용량 첨부(네이버 "대용량 첨부")는 본문에 안 들어 있다. HTML 파트에서 링크를 뽑아 따로 받아야 한다.
import re
fids = re.findall(r'bigfile\.mail\.naver\.com/download\?fid=([^"\'&<>\s]+)', html)
# 중복 제거 후 각각:
# https://bigfile.mail.naver.com/download?fid=<urlencode한 fid>
이 링크는 REPL 전역 fetch(사용자 쿠키 사용)로 받으면 200으로 그냥 떨어진다.
fid 값에 +, /, = 가 들어가므로 반드시 encodeURIComponent로 감싼다.
파일 개수가 안 맞으면 HTML에서 fid를 다시 전부 뽑아 중복 제거할 것(같은 파일이 mybox 링크로도 중복 등장한다).
smtp.naver.com)이며, 같은 .env에 NAVER_SMTP_SERVER/PORT가 있다.
다만 스레드 문맥이 필요한 답장은 브라우저에서 "답장"으로 쓰는 편이 안전하다.