<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>jan-nabee.log</title>
        <link>https://velog.io/</link>
        <description>“브랜드를 잇고, 감성을 설계하며, 기능을 실현하는 연결자”로 성장하고픈^.^</description>
        <lastBuildDate>Tue, 17 Mar 2026 16:20:13 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <image>
            <title>jan-nabee.log</title>
            <url>https://velog.velcdn.com/images/jan-nabee/profile/0aecf9d5-c255-4a7d-9d63-63659b7d7488/social_profile.png</url>
            <link>https://velog.io/</link>
        </image>
        <copyright>Copyright (C) 2019. jan-nabee.log. All rights reserved.</copyright>
        <atom:link href="https://v2.velog.io/rss/jan-nabee" rel="self" type="application/rss+xml"/>
        <item>
            <title><![CDATA[나를 기록하는 방법을 만들고 있다 — 차분일기 MVP 만들기]]></title>
            <link>https://velog.io/@jan-nabee/%EB%82%98%EB%A5%BC-%EA%B8%B0%EB%A1%9D%ED%95%98%EB%8A%94-%EB%B0%A9%EB%B2%95%EC%9D%84-%EB%A7%8C%EB%93%A4%EA%B3%A0-%EC%9E%88%EB%8B%A4-%EC%B0%A8%EB%B6%84%EC%9D%BC%EA%B8%B0-MVP-%EB%A7%8C%EB%93%A4%EA%B8%B0</link>
            <guid>https://velog.io/@jan-nabee/%EB%82%98%EB%A5%BC-%EA%B8%B0%EB%A1%9D%ED%95%98%EB%8A%94-%EB%B0%A9%EB%B2%95%EC%9D%84-%EB%A7%8C%EB%93%A4%EA%B3%A0-%EC%9E%88%EB%8B%A4-%EC%B0%A8%EB%B6%84%EC%9D%BC%EA%B8%B0-MVP-%EB%A7%8C%EB%93%A4%EA%B8%B0</guid>
            <pubDate>Tue, 17 Mar 2026 16:20:13 GMT</pubDate>
            <description><![CDATA[<p><img src="https://velog.velcdn.com/images/jan-nabee/post/fbe34aa6-d2d8-4d4a-9f4b-ad50260178e9/image.png" alt=""></p>
<h1 id="차분일기-mvp를-구현하며-작은-자아실현을-해보는-중">차분일기 MVP를 구현하며, 작은 자아실현을 해보는 중</h1>
<p>회사를 다니면서 느끼기 어려운 성취감,
그걸 차분일기 페이지를 만드는 과정에서라도 느껴보고 싶었다.</p>
<p>완벽하지 않아도 괜찮고,
의미 있는 결과가 아니어도 괜찮다.</p>
<p>그냥 스케치북에 그림을 그리듯,
쓱쓱 만들어보는 차분일기 MVP.</p>
<hr>
<h2 id="시작은-나를-위한-일기였다">시작은 ‘나’를 위한 일기였다</h2>
<p><img src="https://velog.velcdn.com/images/jan-nabee/post/c45e4ab6-9328-4b13-b8fe-1fecc8340236/image.png" alt=""></p>
<p>A5 사이즈의 노트를 기준으로 구성했다.</p>
<ul>
<li><p>날짜 / 시간 / 날씨 / 현재 감정</p>
</li>
<li><p>감정을 문장으로 쓰고, 한 단어로 정리</p>
</li>
</ul>
<p>특히 감정을 한 문장에서 한 단어로 정리하는 과정에서
“아, 내가 지금 이런 상태구나” 하고 인지하게 되고,
그 순간 마음이 조금 정리되는 느낌이 들도록 기획했다.</p>
<hr>
<h3 id="오늘의-차--일부러-넣은-장치">‘오늘의 차’ — 일부러 넣은 장치</h3>
<p><img src="https://velog.velcdn.com/images/jan-nabee/post/2ec842ae-86bb-456a-8c12-5b3047b6b619/image.png" alt=""></p>
<p>일기 중간에는 ‘오늘의 차’ 섹션을 넣었다.</p>
<p>솔직히 말하면…
차 한 잔을 강요(?) 하는 구조다 ㅋㅋ</p>
<p>차를 마시기 전 상태,
차를 마신 후 마음가짐을 기록하게 해서</p>
<ul>
<li><p>차라는 행위가 나에게 어떤 영향을 주는지</p>
</li>
<li><p>그게 실제로 도움이 되는지</p>
</li>
</ul>
<p>스스로 체감하게 만드는 것이 목적이다.</p>
<p>귀찮음을 이겨내게 만드는 장치이기도 하고.</p>
<hr>
<h3 id="기록--질문--타로의-연결">기록 + 질문 + 타로의 연결</h3>
<p><img src="https://velog.velcdn.com/images/jan-nabee/post/566c6cf6-6a8a-4ac2-a67e-be6b18b0ade4/image.png" alt=""></p>
<p>하단에는 자유 기록 영역을 크게 두고,
그 옆에는 영어 문장을 필사할 수 있는 공간을 만들었다.</p>
<p>총 30페이지 구성으로,
각 페이지마다 다른 문장을 넣을 예정이다.</p>
<p>그리고 ‘오늘 나에게 필요한 말’은
직접 적는 방식뿐 아니라</p>
<p>👉 QR 코드를 통해
👉 타로 카드처럼 선택해서
👉 메시지를 받는 구조로 구현했다</p>
<hr>
<h2 id="qr-→-감정-카드-선택-→-결과-페이지">QR → 감정 카드 선택 → 결과 페이지</h2>
<p><img src="https://velog.velcdn.com/images/jan-nabee/post/afa3859d-e6a9-485f-b2a8-d84f14dc56e9/image.png" alt=""></p>
<p>QR을 찍으면 모바일 화면에서
9개의 감정 카드가 나타난다.</p>
<p><img src="https://velog.velcdn.com/images/jan-nabee/post/6fbe7e07-11a2-4ef9-b10f-7032928b9bd6/image.png" alt=""></p>
<p>마음에 드는 카드를 하나 선택하면,</p>
<p><img src="https://velog.velcdn.com/images/jan-nabee/post/6fbe7e07-11a2-4ef9-b10f-7032928b9bd6/image.png" alt=""></p>
<p>👉 메시지 + 질문이 함께 등장한다</p>
<p>단순한 위로 문장이 아니라
기록으로 이어질 수 있는 질문까지 연결되도록 설계했다.</p>
<hr>
<h2 id="실제-노트--웹-연결">실제 노트 + 웹 연결</h2>
<p><img src="https://velog.velcdn.com/images/jan-nabee/post/4e91a40f-730e-468f-8671-a478cf0aef7e/image.png" alt=""></p>
<p>QR을 노트에 실제로 붙여봤다.</p>
<p><img src="https://velog.velcdn.com/images/jan-nabee/post/f9004b2b-b859-4865-8317-7743977e7af9/image.png" alt=""></p>
<p>생각보다 잘 연결돼서 꽤 뿌듯했다.</p>
<p>다만 모바일에서 여백이나 UI는
조금 더 다듬을 필요가 있다.</p>
<hr>
<h2 id="다음-단계">다음 단계</h2>
<ul>
<li><p>노트 디자인 감도 높이기</p>
</li>
<li><p>30개의 영어 문장 + 질문 구성</p>
</li>
<li><p>전체 UX 다듬기</p>
</li>
</ul>
<p>그리고</p>
<p>👉 3월 안에
👉 나만을 위한 30장 노트를 실제로 제작해보는 것</p>
<h3 id="목표">목표</h3>
<p>나 자신을 테스트베드 삼아
감정 노트를 만들고, 수정하고, 다시 만들어보는 것.</p>
<p>그리고 최종적으로는</p>
<p>👉 텀블벅 펀딩까지 연결해보기</p>
<h3 id="한-줄-정리">한 줄 정리</h3>
<p>완벽한 결과보다,
계속 만들어보는 과정이 더 중요하니까.</p>
<p>화이팅.</p>
<p><img src="https://velog.velcdn.com/images/jan-nabee/post/1c1d88f2-c339-482c-8934-b97b917ea1a4/image.png" alt=""></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[홍보대행사 마케터가 AICE Associate를 시작한 이유 (도파민 실험)]]></title>
            <link>https://velog.io/@jan-nabee/%ED%99%8D%EB%B3%B4%EB%8C%80%ED%96%89%EC%82%AC-%EB%A7%88%EC%BC%80%ED%84%B0%EA%B0%80-AICE-Associate%EB%A5%BC-%EC%8B%9C%EC%9E%91%ED%95%9C-%EC%9D%B4%EC%9C%A0-%EB%8F%84%ED%8C%8C%EB%AF%BC-%EC%8B%A4%ED%97%98</link>
            <guid>https://velog.io/@jan-nabee/%ED%99%8D%EB%B3%B4%EB%8C%80%ED%96%89%EC%82%AC-%EB%A7%88%EC%BC%80%ED%84%B0%EA%B0%80-AICE-Associate%EB%A5%BC-%EC%8B%9C%EC%9E%91%ED%95%9C-%EC%9D%B4%EC%9C%A0-%EB%8F%84%ED%8C%8C%EB%AF%BC-%EC%8B%A4%ED%97%98</guid>
            <pubDate>Sun, 08 Feb 2026 04:28:31 GMT</pubDate>
            <description><![CDATA[<p>홍보대행사에 다니고 있는 요즈음
새로운 도파민이 필요하다</p>
<p>쓸데없진 않지만,
쓸데없어 보이는 일들.</p>
<p>행정력을 낭비하는 순간마다
묘한 회의감과 스트레스가 쌓인다.</p>
<p>이 감정을
<strong>공부에서 오는 도파민</strong>으로 다스릴 수 있을까?</p>
<p>그리고 지금,</p>
<h1 id="마케터로-일하고-있는-내가-aice-associate-자격증이-과연-필요할까">마케터로 일하고 있는 내가 AICE Associate 자격증이 과연 필요할까?</h1>
<p>내 업무나 커리어에 실질적인 도움이 될까?</p>
<p>답을 미리 정해두기보다는,
약간 실험을 해보는 모드로 공부를 시작해보기로 했다.</p>
<h2 id="aice-associate-어떤-시험인가">AICE Associate, 어떤 시험인가</h2>
<blockquote>
<p>AICE Associate 자격증은
<strong>“AI를 잘 만든다”기보다
“데이터를 다룰 줄 아는 사람인지”</strong>를 본다.</p>
</blockquote>
<p>시험은 오픈북 형식이며,
아래 7가지 라이브러리를 사용할 수 있다.</p>
<ul>
<li><p>NumPy</p>
</li>
<li><p>Pandas</p>
</li>
<li><p>Matplotlib</p>
</li>
<li><p>Seaborn</p>
</li>
<li><p>Scikit-learn</p>
</li>
<li><p>TensorFlow</p>
</li>
<li><p>XGBoost</p>
</li>
</ul>
<hr>
<h2 id="시험에서-사용하는-7가지-라이브러리-정리">시험에서 사용하는 7가지 라이브러리 정리</h2>
<h3 id="1️⃣-numpy">1️⃣ NumPy</h3>
<blockquote>
<p>한 줄 요약: 수학적인 계산을 빠르고 깔끔하게 처리하는 기본 체력</p>
</blockquote>
<ul>
<li><p>파이썬에서 숫자 배열(행렬)을 다루는 핵심 라이브러리</p>
</li>
<li><p>AI, 데이터 분석의 가장 아래에 깔린 뼈대</p>
</li>
<li><p>리스트보다 훨씬 빠르고, 수학 연산이 직관적이다</p>
</li>
</ul>
<p><strong>이걸 왜 보냐면</strong></p>
<ul>
<li><p>“데이터를 그냥 리스트로 다루는 사람”인지</p>
</li>
<li><p>“연산 단위로 사고하는 사람”인지 구분하기 위해서</p>
</li>
</ul>
<p>👉 마케터 관점에서는
수치 기반 리포트나 지표 계산 로직을 이해하는 데 도움이 된다.</p>
<hr>
<h3 id="2️⃣-pandas">2️⃣ Pandas</h3>
<blockquote>
<p>한 줄 요약: 엑셀을 코드로 다루는 능력</p>
</blockquote>
<ul>
<li><p>표 형태 데이터(DataFrame)를 다룸</p>
</li>
<li><p>CSV, 엑셀 불러오기 / 정리 / 필터링 / 그룹화까지 가능</p>
</li>
<li><p>실무에서 가장 많이 쓰이는 라이브러리</p>
</li>
</ul>
<p><strong>이걸 왜 보냐면</strong>
데이터 전처리를 못 하면
머신러닝이고 뭐고 아무것도 할 수 없다.</p>
<p>👉 마케터에게는 솔직히
이 7개 중 <strong>가장 실용적</strong>이다.
(캠페인 성과 데이터, 설문 결과, 로그 데이터 전처리 전부 여기서 한다)</p>
<hr>
<h3 id="3️⃣-matplotlib">3️⃣ Matplotlib</h3>
<blockquote>
<p>한 줄 요약: 데이터 시각화의 기본 중 기본</p>
</blockquote>
<ul>
<li><p>그래프를 ‘직접’ 그리는 라이브러리</p>
</li>
<li><p>커스터마이징 자유도는 높지만 코드가 다소 투박하다</p>
</li>
<li><p>다른 시각화 도구들의 기반이 된다</p>
</li>
</ul>
<p><strong>이걸 왜 보냐면</strong>
숫자를 ‘보여줄 수 있는 사람인지’ 보기 위해서다.</p>
<p>👉 보고서·제안서에서
“이 그래프 왜 이렇게 그렸지?”라는 질문에
답할 수 있는 감각을 만들어준다.</p>
<hr>
<h3 id="4️⃣-seaborn">4️⃣ Seaborn</h3>
<blockquote>
<p>한 줄 요약: 보기 좋은 그래프를 빠르게 만드는 도구</p>
</blockquote>
<ul>
<li><p>Matplotlib 기반</p>
</li>
<li><p>통계적 시각화에 강함</p>
</li>
<li><p>기본 디자인이 깔끔하다</p>
</li>
</ul>
<p><strong>이걸 왜 보냐면</strong>
데이터의 패턴을 빠르게 읽어낼 수 있는지 확인하기 위해서.</p>
<p>👉 마케터에게는
<strong>데이터에서 인사이트를 뽑아내는 연습용</strong>으로 좋다.</p>
<hr>
<h3 id="5️⃣-scikit-learn">5️⃣ Scikit-learn</h3>
<blockquote>
<p>한 줄 요약: 머신러닝 입문자의 표준 교과서</p>
</blockquote>
<ul>
<li><p>분류, 회귀, 군집화 등 전통적인 ML 모델이 모두 포함</p>
</li>
<li><p>코드 구조가 일관돼 있어 배우기 쉽다</p>
</li>
<li><p>시험에서도 가장 핵심 비중을 차지한다</p>
</li>
</ul>
<p><strong>이걸 왜 보냐면</strong></p>
<ul>
<li><p>“모델을 써본 사람”인지</p>
</li>
<li><p>“AI라는 단어만 아는 사람”인지 구분하기 위해서다.</p>
</li>
</ul>
<p>👉 마케터 기준으로는</p>
<ul>
<li><p>추천 로직</p>
</li>
<li><p>고객 세그먼트 분류</p>
</li>
<li><p>이탈 예측 같은 개념 이해와 직접 연결된다.</p>
</li>
</ul>
<hr>
<h3 id="6️⃣-tensorflow">6️⃣ TensorFlow</h3>
<blockquote>
<p>한 줄 요약: 딥러닝 프레임워크 (꽤 무거움)</p>
</blockquote>
<ul>
<li><p>신경망 기반 모델 구현</p>
</li>
<li><p>실제 서비스용 AI에 많이 쓰임</p>
</li>
<li><p>AICE Associate에서는 깊게 묻지 않는다</p>
</li>
</ul>
<p><strong>이걸 왜 넣었냐면</strong>
AI 생태계에서 이걸 모르면 말이 안 되기 때문이다.</p>
<p>👉 마케터에게는
“이 모델이 왜 블랙박스인지” 이해하는 정도면 충분하다.</p>
<hr>
<h3 id="7️⃣-xgboost">7️⃣ XGBoost</h3>
<blockquote>
<p>한 줄 요약: 실무에서 성능 잘 나오는 머신러닝 치트키</p>
</blockquote>
<ul>
<li><p>트리 기반 모델</p>
</li>
<li><p>데이터가 조금 지저분해도 성능이 잘 나온다</p>
</li>
<li><p>캐글과 실무에서 매우 많이 쓰인다</p>
</li>
</ul>
<p><strong>이걸 왜 보냐면</strong>
이론보다 결과를 내는 모델을 아는지 보기 위해서다.</p>
<p>👉 마케터 실무에서는
CTR 예측, 전환 예측 같은 사고방식과 연결된다.</p>
<hr>
<h2 id="그래서-마케터에게-aice-associate는-필요할까">그래서, 마케터에게 AICE Associate는 필요할까?</h2>
<h3 id="❌-이런-기대라면-비추천">❌ 이런 기대라면 비추천</h3>
<ul>
<li><p>연봉이 오른다</p>
</li>
<li><p>이직에서 한 방이 된다</p>
</li>
<li><p>‘AI 마케터’ 타이틀을 바로 얻는다</p>
</li>
</ul>
<h3 id="✅-이런-목적이라면-충분히-의미-있음">✅ 이런 목적이라면 충분히 의미 있음</h3>
<ul>
<li><p>데이터/AI 용어에 휘둘리지 않고 싶다</p>
</li>
<li><p>개발자·데이터팀과 대화할 때 번역기 없이 말하고 싶다</p>
</li>
<li><p>‘감으로 기획하는 마케터’에서 <strong>‘구조를 이해하는 마케터’</strong>로 넘어가고 싶다</p>
</li>
<li><p>지금의 회의감을 성장하고 있다는 감각으로 상쇄하고 싶다</p>
</li>
</ul>
<hr>
<h2 id="aice-associate-공부-우선순위-마케터-기준">AICE Associate 공부 우선순위 (마케터 기준)</h2>
<blockquote>
<p>👉 Pandas → Scikit-learn → 시각화(Matplotlib/Seaborn) → NumPy → XGBoost → TensorFlow</p>
</blockquote>
<hr>
<h3 id="🥇-1순위-pandas">🥇 1순위: Pandas</h3>
<p><strong>중요도: ★★★★★</strong></p>
<p>시험, 실무, 사고방식 전부 여기서 갈린다.</p>
<ul>
<li><p>시험 문제의 절반 이상이 데이터 전처리 흐름에서 나온다</p>
</li>
<li><p>마케터가 AI를 이해하느냐는
👉 “데이터를 표 단위로 다룰 줄 아느냐”로 결정된다</p>
</li>
</ul>
<p><strong>꼭 익혀야 할 것</strong></p>
<ul>
<li><p><code>read_csv</code>, <code>head</code>, <code>info</code>, <code>describe</code></p>
</li>
<li><p>조건 필터링 (<code>loc</code>, <code>isin</code>)</p>
</li>
<li><p><code>groupby + agg</code></p>
</li>
<li><p>결측치 처리 (<code>fillna</code>, <code>dropna</code>)</p>
</li>
<li><p>컬럼 생성 및 변형</p>
</li>
</ul>
<p>👉 Pandas가 안 되면
뒤에 나오는 모든 AI는 공허해진다.</p>
<hr>
<h3 id="🥈-2순위-scikit-learn">🥈 2순위: Scikit-learn</h3>
<p><strong>중요도: ★★★★☆</strong></p>
<p>“AI를 써봤다”의 최소 기준.</p>
<ul>
<li><p>모델 선택 → 학습 → 평가 흐름 이해가 핵심</p>
</li>
<li><p>모델 이름 암기 ❌</p>
</li>
<li><p>언제 분류 / 언제 회귀를 쓰는지 이해 ⭕</p>
</li>
</ul>
<p>👉 여기서부터 기획 회의에서 말이 바뀐다.</p>
<hr>
<h3 id="🥉-3순위-matplotlib--seaborn">🥉 3순위: Matplotlib + Seaborn</h3>
<p><strong>중요도: ★★★☆☆</strong></p>
<p>데이터를 인사이트로 바꾸는 연결 고리.</p>
<ul>
<li><p>예쁘게 ❌</p>
</li>
<li><p>의미가 보이게 ⭕</p>
</li>
</ul>
<hr>
<h3 id="4순위-numpy">4순위: NumPy</h3>
<p><strong>중요도: ★★☆☆☆</strong></p>
<p>깊게 파지 말고,
<strong>왜 다른 라이브러리들이 이 위에서 돌아가는지만 이해</strong>하면 충분.</p>
<hr>
<h3 id="5순위-xgboost">5순위: XGBoost</h3>
<p><strong>중요도: ★★☆☆☆</strong></p>
<ul>
<li><p>성능 좋은 모델이 있다는 인지</p>
</li>
<li><p>실무에서 왜 선호되는지 이유 이해 정도면 충분</p>
</li>
</ul>
<hr>
<h3 id="6순위-tensorflow">6순위: TensorFlow</h3>
<p><strong>중요도: ★☆☆☆☆</strong></p>
<ul>
<li><p>Associate 레벨 + 마케터에게는 과함</p>
</li>
<li><p>시간 부족하면 과감히 스킵해도 무방</p>
</li>
</ul>
<hr>
<p>결론적으로 AICE Associate는 ‘AI를 잘 만드는 자격증’이라기보다,
<strong>데이터와 모델을 다루는 기본 체력을 확인하는 시험</strong>에 가까웠다.
마케터에게 중요한 건 결국 정답을 외우는 것이 아니라,
숫자/표/모델을 두려워하지 않는 감각을 만드는 것 같고.</p>
<p>다음 글에는 내가 실제로 <strong>Pandas부터 어떻게 손에 익혔는지,</strong>
마케터 업무에 바로 연결되는 예제로 정리해보려고 한다.
(아마 여기서부터 도파민이 본격적으로 올라올 듯)</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[홍보대행사 AE는 왜 아나콘다(Anaconda)를 알아야 할까?]]></title>
            <link>https://velog.io/@jan-nabee/%ED%99%8D%EB%B3%B4%EB%8C%80%ED%96%89%EC%82%AC-AE%EB%8A%94-%EC%99%9C-%EC%95%84%EB%82%98%EC%BD%98%EB%8B%A4Anaconda%EB%A5%BC-%EC%95%8C%EC%95%84%EC%95%BC-%ED%95%A0%EA%B9%8C</link>
            <guid>https://velog.io/@jan-nabee/%ED%99%8D%EB%B3%B4%EB%8C%80%ED%96%89%EC%82%AC-AE%EB%8A%94-%EC%99%9C-%EC%95%84%EB%82%98%EC%BD%98%EB%8B%A4Anaconda%EB%A5%BC-%EC%95%8C%EC%95%84%EC%95%BC-%ED%95%A0%EA%B9%8C</guid>
            <pubDate>Fri, 19 Dec 2025 03:55:29 GMT</pubDate>
            <description><![CDATA[<p>보통 아나콘다라고 하면
“데이터 사이언스”, “개발자”, “머신러닝” 같은 단어가 먼저 떠오른다.</p>
<p>그래서 홍보대행사 AE 입장에서는</p>
<blockquote>
<p>“나랑은 상관없는 툴”
이라고 생각하기 쉽다.</p>
</blockquote>
<p>하지만 실제로 써보면,
<img src="https://velog.velcdn.com/images/jan-nabee/post/b9ec6460-fc0d-455e-bd35-7e8eaaf47654/image.png" alt=""></p>
<h1 id="아나콘다는-ae의-시간을-가장-많이-잡아먹는-일을-정리해주는-도구가-될-수-있다"><strong>아나콘다는 AE의 시간을 가장 많이 잡아먹는 일을 정리해주는 도구</strong>가 될 수 있다.</h1>
<hr>
<h2 id="ae-업무를-한-문장으로-요약하면">AE 업무를 한 문장으로 요약하면</h2>
<blockquote>
<p>데이터를 정리해서
사람들이 이해할 수 있는 말과 문서로 바꾸는 일</p>
</blockquote>
<ul>
<li><p>광고 성과 데이터 정리</p>
</li>
<li><p>주간/월간 리포트</p>
</li>
<li><p>보고용 PPT</p>
</li>
<li><p>내부 공유 문서</p>
</li>
<li><p>“그래서 이게 잘 된 건가요?”에 대한 답변</p>
</li>
</ul>
<p>문제는 이 과정의 <strong>80%가 반복 작업</strong>이라는 점이다.</p>
<hr>
<h2 id="ae의-하루를-갉아먹는-대표적인-반복-작업">AE의 하루를 갉아먹는 대표적인 반복 작업</h2>
<ul>
<li><p>CSV / 엑셀 파일 열어서 정리</p>
</li>
<li><p>수치 복붙</p>
</li>
<li><p>전주 대비 계산</p>
</li>
<li><p>그래프 만들기</p>
</li>
<li><p>똑같은 문장 다시 쓰기</p>
</li>
<li><p>Word → PDF 변환</p>
</li>
<li><p>“지난주랑 형식 똑같이요” 요청</p>
</li>
</ul>
<p>👉 이걸 <strong>사람 손으로 매번 하는 게 비효율</strong>이다.</p>
<hr>
<h2 id="아나콘다는-ae에게-어떤-도구인가">아나콘다는 AE에게 어떤 도구인가?</h2>
<p>한 줄로 정리하면 이렇다.</p>
<blockquote>
<p><strong>아나콘다 = 반복되는 ‘보고용 노동’을 자동화할 수 있는 환경</strong></p>
</blockquote>
<p>코딩을 잘해야 쓰는 도구가 아니다.
<strong>실무를 정리하고 싶을 때 쓰는 도구</strong>에 가깝다.</p>
<hr>
<h2 id="ae-관점에서-아나콘다의-핵심-기능-3가지">AE 관점에서 아나콘다의 핵심 기능 3가지</h2>
<h3 id="1️⃣-csv--엑셀-자동-정리">1️⃣ CSV / 엑셀 자동 정리</h3>
<p>광고 데이터, 매체 리포트, 성과 지표
대부분 CSV나 엑셀로 온다.</p>
<p>아나콘다 + 파이썬을 쓰면:</p>
<ul>
<li><p>여러 CSV 파일 자동 병합</p>
</li>
<li><p>날짜 기준 주간/월간 집계</p>
</li>
<li><p>전주 대비 증감률 계산</p>
</li>
<li><p>불필요한 컬럼 자동 제거</p>
</li>
</ul>
<p><strong>👉 “엑셀로 하던 작업을 한 번의 실행으로”</strong></p>
<hr>
<h3 id="2️⃣-숫자를-보고용-문장으로-바꿔줌">2️⃣ 숫자를 ‘보고용 문장’으로 바꿔줌</h3>
<p>AE가 힘든 이유는
숫자가 아니라 <strong>해석을 매번 다시 써야 한다는 것</strong>이다.</p>
<p>예를 들면:</p>
<blockquote>
<p>“CTR이 올랐습니다”
“도달은 감소했지만 효율은 개선됐습니다”</p>
</blockquote>
<p>이 문장 구조는 사실 매번 비슷하다.</p>
<p>아나콘다 환경에서는:</p>
<ul>
<li><p>수치 변화 기준으로</p>
</li>
<li><p>문장 템플릿 자동 생성 가능</p>
</li>
</ul>
<p>👉 AE는 <strong>‘이 문장이 맞는지’만 판단</strong>하면 된다.</p>
<hr>
<h3 id="3️⃣-리포트-초안-자동-생성">3️⃣ 리포트 초안 자동 생성</h3>
<ul>
<li><p>표</p>
</li>
<li><p>차트</p>
</li>
<li><p>요약 문장</p>
</li>
</ul>
<p>이걸 자동으로 만든 뒤:</p>
<ul>
<li><p>PPT에 옮기거나</p>
</li>
<li><p>Word → PDF로 변환</p>
</li>
</ul>
<p><strong>👉 AE의 역할은 ‘초안 제작자’가 아니라 ‘검토자’로 이동</strong></p>
<hr>
<h2 id="그럼-ae가-개발자가-돼야-하나">그럼 AE가 개발자가 돼야 하나?</h2>
<p>전혀 아니다.</p>
<p>중요한 포인트는 이거다.</p>
<p>❌ 코드를 잘 짜는 것
⭕ <strong>내 업무 흐름을 코드로 고정하는 것</strong></p>
<ul>
<li><p>“이 리포트는 항상 이 구조”</p>
</li>
<li><p>“이 수치는 항상 이렇게 해석”</p>
</li>
<li><p>“이 보고서는 이 톤”</p>
</li>
</ul>
<p>이걸 <strong>한 번만 정리해두면</strong>
다음부터는 실행만 하면 된다.</p>
<hr>
<h2 id="아나콘다를-쓰면-ae의-역할이-이렇게-바뀐다">아나콘다를 쓰면 AE의 역할이 이렇게 바뀐다</h2>
<table>
<thead>
<tr>
<th>기존 AE</th>
<th>아나콘다 활용 AE</th>
</tr>
</thead>
<tbody><tr>
<td>복붙 담당</td>
<td>구조 설계자</td>
</tr>
<tr>
<td>엑셀 장인</td>
<td>해석 담당</td>
</tr>
<tr>
<td>밤샘 리포트</td>
<td>빠른 판단</td>
</tr>
<tr>
<td>반복 노동</td>
<td>의사결정 지원</td>
</tr>
</tbody></table>
<h3 id="솔직한-한계도-있다">솔직한 한계도 있다</h3>
<p>아나콘다는 만능이 아니다.</p>
<ul>
<li><p>클라이언트 감정 읽기</p>
</li>
<li><p>정치적인 문장 조율</p>
</li>
<li><p>“이번엔 다르게 가야 할 것 같은데?” 같은 직감</p>
</li>
</ul>
<p>👉 이건 여전히 <strong>사람의 영역</strong>이다.</p>
<p>그래서 더더욱
<strong>기계가 할 수 있는 건 기계에게 넘기는 게 합리적</strong>이다.</p>
<hr>
<h2 id="마무리">마무리</h2>
<p>아나콘다는
AE를 개발자로 만들기 위한 도구가 아니다.</p>
<blockquote>
<p>AE가 덜 소모되고,
<strong>더 중요한 판단에 에너지를 쓰게 해주는 환경</strong>이다.</p>
</blockquote>
<p>홍보대행사에서 오래 살아남는 AE는
일을 많이 하는 사람이 아니라
<strong>일이 돌아가게 만드는 사람</strong>이다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[전략기획자·PR실무자를 위한 자료조사(리서치) 가이드]]></title>
            <link>https://velog.io/@jan-nabee/%EC%A0%84%EB%9E%B5%EA%B8%B0%ED%9A%8D%EC%9E%90PR%EC%8B%A4%EB%AC%B4%EC%9E%90%EB%A5%BC-%EC%9C%84%ED%95%9C-%EC%9E%90%EB%A3%8C%EC%A1%B0%EC%82%AC%EB%A6%AC%EC%84%9C%EC%B9%98-%EA%B0%80%EC%9D%B4%EB%93%9C</link>
            <guid>https://velog.io/@jan-nabee/%EC%A0%84%EB%9E%B5%EA%B8%B0%ED%9A%8D%EC%9E%90PR%EC%8B%A4%EB%AC%B4%EC%9E%90%EB%A5%BC-%EC%9C%84%ED%95%9C-%EC%9E%90%EB%A3%8C%EC%A1%B0%EC%82%AC%EB%A6%AC%EC%84%9C%EC%B9%98-%EA%B0%80%EC%9D%B4%EB%93%9C</guid>
            <pubDate>Thu, 11 Dec 2025 06:38:14 GMT</pubDate>
            <description><![CDATA[<blockquote>
<p>제안서를 잘 쓰는 사람은 결국 자료를 잘 찾는 사람이다.</p>
</blockquote>
<p>프로젝트를 시작할 때 가장 먼저 부딪히는 벽은 “무엇부터 찾아야 하지?”라는 막막함이다.
자료조사는 기술이다.
루틴과 방법을 체득하는 것이 중요하다.</p>
<p>아래는 나를 위한..
PR/브랜딩/정책 제안서에서 사용할 수 있는 자료조사 프로세스의 정리본이다.</p>
<hr>
<h2 id="1-🎯-조사-전-준비-목표와-전략-수립">1. 🎯 조사 전 준비: 목표와 전략 수립</h2>
<h3 id="■-목적-명확화">■ 목적 명확화</h3>
<ul>
<li><p>이번 제안서에서 <strong>무엇을 증명해야 하는가?</strong></p>
</li>
<li><p><strong>누구를 설득해야 하는가?</strong></p>
</li>
<li><p>RFP(제안요청서)의 핵심 요구사항과 평가 기준을 반드시 분석한다.
→ 이 단계에서 목적이 명확해지면 자료조사의 방향도 자동으로 잡힌다.</p>
</li>
</ul>
<h3 id="■-초기-정보-훑기">■ 초기 정보 훑기</h3>
<p>주제가 생소하다면 20~30분만 시간을 정해</p>
<ul>
<li><p>키워드</p>
</li>
<li><p>개념</p>
</li>
<li><p>국내·국외 동향</p>
</li>
<li><p>기존 연구</p>
</li>
</ul>
<p>를 빠르게 파악하는 “오리엔테이션 리서치”를 한다.
진짜 심층 조사는 이 다음 단계에서 한다.</p>
<hr>
<h2 id="2-🔎-효과적인-자료-수집-방법">2. 🔎 효과적인 자료 수집 방법</h2>
<p>자료조사는 <strong>출처를 아는 사람이 가장 유리</strong>하다.
아래는 PR·정책·브랜딩 실무에서 가장 많이 쓰이는 출처들이다.</p>
<hr>
<h3 id="①-국내-3대-여론조사-기관가장-많이-쓰는-핵심-출처">① 국내 3대 여론조사 기관(가장 많이 쓰는 핵심 출처)</h3>
<h4 id="한국갤럽-gallup-korea">한국갤럽 (Gallup Korea)</h4>
<ul>
<li><p>기관 신뢰도, 직업 신뢰도</p>
</li>
<li><p>정부 신뢰, 사회 이슈 인식 조사</p>
</li>
<li><p>매주 업데이트</p>
</li>
<li><p>PDF 형태로 깔끔하게 제공 → 제안서에 바로 넣기 최고</p>
</li>
</ul>
<p>👉 <a href="https://www.gallup.co.kr">https://www.gallup.co.kr</a></p>
<hr>
<h4 id="한국리서치-korea-research">한국리서치 (Korea Research)</h4>
<ul>
<li><p>공공기관·정책 인식 조사 대량 보유</p>
</li>
<li><p>국가 의뢰 조사 많음</p>
</li>
<li><p>국방·안보 관련 데이터도 종종 제공</p>
</li>
<li><p>지표 체계가 명확해서 인사이트 뽑기 좋음</p>
</li>
</ul>
<p>👉 <a href="https://www.korearesearch.co.kr">https://www.korearesearch.co.kr</a></p>
<hr>
<h4 id="리얼미터-realmeter">리얼미터 (Realmeter)</h4>
<p>사회 이슈·정책·정치 관련 여론 흐름 파악할 때 유용
👉 <a href="https://www.realmeter.net">https://www.realmeter.net</a></p>
<hr>
<h3 id="②-정책-관련-공공기관-조사-가장-근거력이-높은-자료">② 정책 관련 공공기관 조사 (가장 근거력이 높은 자료)</h3>
<h4 id="행정안전부--정책고객만족도-조사">행정안전부 — 정책고객만족도 조사</h4>
<p>공공 서비스 신뢰도, 기관 만족도 등의 데이터를 담고 있어 신뢰도 높음.</p>
<h4 id="한국행정연구원kipa">한국행정연구원(KIPA)</h4>
<ul>
<li><p>정부 신뢰</p>
</li>
<li><p>사회통합·공공정책 인식 조사
→ 정책 제안서에서 가장 강력한 레퍼런스</p>
</li>
</ul>
<hr>
<h3 id="③-언론·전문기관-기반-조사">③ 언론·전문기관 기반 조사</h3>
<p>신문사와 연구기관이 공동으로 수행하는 여론조사.</p>
<ul>
<li><p>중앙일보 국민미래여론</p>
</li>
<li><p>조선일보 미디어리서치</p>
</li>
<li><p>서울대·정치외교학부 공동조사</p>
</li>
<li><p>동아일보 × 리서치앤리서치</p>
</li>
<li><p>한국보건사회연구원(복지·청년·가족)</p>
</li>
</ul>
<p>언론 기반 조사는 “시의성”이 좋아서 트렌드를 설명할 때 매우 유용하다.</p>
<hr>
<h3 id="④-검색-엔진-고급-활용법-pr-실무자-필수-스킬">④ 검색 엔진 고급 활용법 (PR 실무자 필수 스킬)</h3>
<h4 id="✔-구글-고급검색-문법">✔ 구글 고급검색 문법</h4>
<p>가장 강력한 방법은 아래 두 가지.</p>
<p><strong>1) filetype:pdf</strong>
→ 정부·기관 보고서만 필터링</p>
<blockquote>
<p>“군 신뢰도” filetype:pdf
“정책 인지도 조사” filetype:pdf</p>
</blockquote>
<p><strong>2) site:re.kr / site:go.kr</strong>
→ 연구기관·정부 공식자료만 검색</p>
<blockquote>
<p>site:re.kr 군사력 인식 조사
site:go.kr 국방 정책 홍보</p>
</blockquote>
<h4 id="✔-영어-키워드-병행">✔ 영어 키워드 병행</h4>
<p>국제조사 자료가 필요한 경우</p>
<blockquote>
<p>“Korea military trust survey”
“public confidence institutions 2025”</p>
</blockquote>
<hr>
<h3 id="⑤-신뢰-가능한-정량·정성-데이터-함께-보기">⑤ 신뢰 가능한 정량·정성 데이터 함께 보기</h3>
<ul>
<li><p>정량: 통계청, 마이크로데이터(MDIS), 한국은행</p>
</li>
<li><p>정성: 인터뷰, 포커스 그룹, 관찰, 고객 VOC</p>
</li>
</ul>
<p>두 가지가 결합되어야 ‘진짜 통찰’이 나온다.</p>
<hr>
<h3 id="⑥-사례·경쟁사-분석">⑥ 사례·경쟁사 분석</h3>
<ul>
<li><p>유사 과업의 성공·실패 사례</p>
</li>
<li><p>경쟁사의 제안서 포맷</p>
</li>
<li><p>해외 사례(이건 특히 차별화할 때 유용)</p>
</li>
</ul>
<p>이 단계에서 <strong>“우리 제안이 왜 더 나은가?”</strong>의 근거가 잡힌다.</p>
<hr>
<h2 id="3-🧩-자료-정리-및-분석">3. 🧩 자료 정리 및 분석</h2>
<h3 id="✔-수집-즉시-요약">✔ 수집 즉시 요약</h3>
<p>자료를 모두 모은 뒤에 정리하는 것은 너무 비효율적이다.
링크 옮길 때마다</p>
<ul>
<li><p>어떤 내용인지</p>
</li>
<li><p>왜 중요한지</p>
</li>
<li><p>어디에 활용할지</p>
</li>
</ul>
<p>간단히 메모하는 습관이 중요하다.</p>
<hr>
<h3 id="✔-팩트-체크">✔ 팩트 체크</h3>
<ul>
<li><p>출처 확인</p>
</li>
<li><p>표본 수와 조사 방식 확인</p>
</li>
<li><p>과장되거나 편향된 수치인지 점검</p>
</li>
</ul>
<p>PR 제안서는 근거의 질이 설득력의 80%를 결정한다.</p>
<hr>
<h3 id="✔-스토리텔링-구조화">✔ 스토리텔링 구조화</h3>
<p>제안서는 논문이 아니다.
“읽히는 구조”가 필요하다.</p>
<ul>
<li><p>문제 정의</p>
</li>
<li><p>핵심 인사이트</p>
</li>
<li><p>제안 솔루션</p>
</li>
<li><p>기대 효과</p>
</li>
<li><p>행동 유도(Call to Action)</p>
</li>
</ul>
<p>이 흐름으로 구조화하면 어떤 제안서든 형태가 잡힌다.</p>
<hr>
<h2 id="4-📝-제안서-작성-및-최종-검토">4. 📝 제안서 작성 및 최종 검토</h2>
<h3 id="✔-가독성">✔ 가독성</h3>
<ul>
<li><p>복잡한 문장은 줄이고</p>
</li>
<li><p>그래프·인포그래픽·표는 과감히 활용</p>
</li>
<li><p>슬라이드당 메시지 1개 원칙</p>
</li>
</ul>
<h3 id="✔-음독소리-내어-읽기">✔ 음독(소리 내어 읽기)</h3>
<p>문장을 소리 내서 읽으면</p>
<ul>
<li><p>어색한 구문</p>
</li>
<li><p>논리적 비약</p>
</li>
<li><p>지나치게 긴 문장
을 바로 캐치할 수 있다.</p>
</li>
</ul>
<hr>
<h2 id="✨-마무리">✨ 마무리</h2>
<p>자료조사는 단순한 검색 작업이 아니라
전략을 설계하는 시작점이다.</p>
<p>출처를 알고, 검색 공식을 알고, 정리 방식을 알면
누구나 빠르고 정확하게 근거를 확보할 수 있다.</p>
<p>제안서의 완성도는 자료조사의 깊이로 결정된다.
오늘 소개한 방법을 루틴으로 만들면
어떤 프로젝트에서도 흔들리지 않는 기반이 생긴다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[기획이란, ‘비어있는 페이지를 채우는 일’이 아니라 ‘삭제하는 일’]]></title>
            <link>https://velog.io/@jan-nabee/%EA%B8%B0%ED%9A%8D%EC%9D%B4%EB%9E%80-%EB%B9%84%EC%96%B4%EC%9E%88%EB%8A%94-%ED%8E%98%EC%9D%B4%EC%A7%80%EB%A5%BC-%EC%B1%84%EC%9A%B0%EB%8A%94-%EC%9D%BC%EC%9D%B4-%EC%95%84%EB%8B%88%EB%9D%BC-%EC%82%AD%EC%A0%9C%ED%95%98%EB%8A%94-%EC%9D%BC</link>
            <guid>https://velog.io/@jan-nabee/%EA%B8%B0%ED%9A%8D%EC%9D%B4%EB%9E%80-%EB%B9%84%EC%96%B4%EC%9E%88%EB%8A%94-%ED%8E%98%EC%9D%B4%EC%A7%80%EB%A5%BC-%EC%B1%84%EC%9A%B0%EB%8A%94-%EC%9D%BC%EC%9D%B4-%EC%95%84%EB%8B%88%EB%9D%BC-%EC%82%AD%EC%A0%9C%ED%95%98%EB%8A%94-%EC%9D%BC</guid>
            <pubDate>Fri, 05 Dec 2025 05:20:01 GMT</pubDate>
            <description><![CDATA[<p>홍보대행사에 들어와서 처음으로 협업을 통해 제안서를 만드는 과정을 경험해봤다. 하나의 설득 문서를 여러 사람이 함께 만들어가는 과정이 신기하기도 했고, 재밌고 새롭기도 했고, 힘들기도 했다.</p>
<p>그 와중에 많은 것을 느끼고 배우고 반성했다.</p>
<p>아래는 나의 시행착오와 실수를 경험치로 바꾸기를 소망하며 남기는 기록들.</p>
<hr>
<h1 id="제안서는-비우기의-기술">제안서는 &#39;비우기&#39;의 기술</h1>
<p>자료를 많이 넣는 것이 기획이 아니란 걸 이번에 확실히 체감했다.
오히려,</p>
<ul>
<li>덜어내고</li>
<li>정리하고</li>
<li>핵심 메시지를 하나로 압축하고</li>
</ul>
<p>그래서 단 하나의 문장으로 설득하는 게 기획의 본질이다.</p>
<hr>
<h2 id="자료조사를-공유할-때-조차-수요자-중심으로">자료조사를 공유할 때 조차, 수요자 중심으로</h2>
<p>처음 자료조사를 나누어 한다고 했을 때, 막막했다. 
혼자 기획하고 문서를 작성하는 것에만 익숙했던 나는 정리되기 전의 &#39;자료&#39;를 타인과 어떤식으로 공유해야할지 감 잡기가 쉽지 않았다.</p>
<p>덕분에 이번 첫 시도에서 많은 시행착오와 볼을 벌겋게 붉히는.. 상황들을 마주했다.</p>
<p>모든 홍보 메시지의 기본은 &#39;수요자의 시선에서 출발할 것&#39;일것이다.
함께 힘을 합쳐 제안서를 만들기 위한 &#39;자료조사&#39; 단계에서조차 이 원칙은 유효했다.</p>
<p>자료조사 문서는 나 이만큼 조사했어요 , 이만큼 열심히 알아봤어요, 티내는 문서가 아니다.
나는 그 지점에서 실패했다.</p>
<p>자료조사 문서는 간결하면 간결할 수록 좋다.
망망대해와 같은 정보의 바다 속에서 우리의 제안서에 꼭 필요할만한 핵심 메시지와 그를 뒷받침할 근거의 흐름을 정돈하여 &#39;공유할 자료조사 파일&#39;을 만들어야 한다.</p>
<p>즉, 자료조사 문서라지만, 사실은 자료조사 문서가 아닌 보고문서의 형태로 &#39;가공&#39;해야 한다.
나만 보기 위한 노트가 아니라는 점에 주목해야 한다.</p>
<p>타인이 봤을 때 직관적으로 이해할 수 있고,
내가 얻은 인사이트에 공감할 수 있게끔 정돈한 뒤 공유해야 한다.</p>
<h3 id="①-보고--현재-위치를-정확히-알려주는-일">① 보고 = 현재 위치를 정확히 알려주는 일</h3>
<p>보고는 “일했어요”가 아니라
*<em>“지금 어디에 있고, 어디로 가고 있고, 무엇이 막혔는지” *</em> 알려주는 일이다.</p>
<h3 id="②-좋은-보고는-판단을-덜어주는-것">② 좋은 보고는 ‘판단을 덜어주는 것’</h3>
<p>상사가 직접 판단해야 할 일을 줄여주는 보고는
그 자체로 신뢰다.</p>
<ul>
<li><p>선택지를 정리하고</p>
</li>
<li><p>리스크를 표시하고</p>
</li>
<li><p>선호하는 방향을 1순위로 제시하는 것</p>
</li>
</ul>
<p>이게 바로 ‘좋은 보고’다.</p>
<hr>
<h3 id="③-보고는-문장보다-구조가-더-중요하다">③ 보고는 문장보다 구조가 더 중요하다</h3>
<p>잘 정리된 3개의 항목이
10줄짜리 장황한 보고보다 훨씬 압도적이다.</p>
<p>보고의 본질은 <strong>‘명확성’</strong>이다.</p>
<hr>
<h2 id="협업-시-상대의-문장과-세계를-이해하는-태도">협업 시 &#39;상대의 문장과 세계를 이해하는 태도&#39;</h2>
<p>제안서 작업은 한 문장을 두고도 서로 다른 해석이 나오는 상황의 연속이다.
이때 중요한 건 &quot;내 문장을 고집하는 능력&quot;이 아니라 &quot;상대의 논리를 이해하려는 능력&quot;이었다.</p>
<ul>
<li>내가 왜 이 문장을 썼는지</li>
<li>상대는 왜 이 구조를 더 좋아하는지</li>
<li>기획자의 우선순위는 무엇인지</li>
</ul>
<p>이걸 읽어내는 힘이 쌓일수록 협업은 더 수월해진다.</p>
<blockquote>
<p>문제를 &#39;누가 맞나&#39;가 아니라 &#39;무엇이 더 설득적인가&#39;로 바라보는 관점이 필요하다.</p>
</blockquote>
<hr>
<h2 id="내가-맡은-한-페이지가-전체-설득-구조-안에서-어떤-역할인지-파악하기">내가 맡은 &#39;한 페이지&#39;가 전체 설득 구조 안에서 어떤 역할인지 파악하기</h2>
<p>제안서는 여러 페이지의 조각이 합쳐진 하나의 설득 스토리다. 하지만 초반엔 내 파트만 보느라 전체 구조를 놓치기 쉽다.</p>
<p>그래서 꼭 필요한 건,</p>
<ul>
<li>이 페이지는 앞 장표의 어떤 내용을 &#39;이어주는 역할&#39;을 하는가?</li>
<li>이 페이지의 핵심 문장은 무엇인가?</li>
<li>이 페이지가 빠지면 제안서 구조가 어떻게 흔들리는가?
이 질문을 스스로 던져보면서
단순히 &#39;한 장표의 작성자&#39;가 아니라 &#39;전체 내러티브를 만드는 사람&#39;이 되어야 한다는 것이다.</li>
</ul>
<hr>
<h2 id="작업-중간-단계에서의-보고가-오히려-효율을-높인다">작업 중간 단계에서의 &#39;보고&#39;가 오히려 효율을 높인다.</h2>
<p>혼자 완성해서 들고 가는 방식은 헛다리를 짚는 경우가 많다.</p>
<p>보고의 시점을 아래 3단계로 구분해서 챙겨가는 것이 좋다.</p>
<ul>
<li>40% 완성도에서 구조 먼저 확인받기</li>
<li>70% 에서 메시지 톤 확인받기</li>
<li>100%는 거의 다 정리하고 마지막 다듬기만</li>
</ul>
<p>이렇게 하면 시간을 훨씬 절약하면서 퀄리티를 높일 수 있다.</p>
<blockquote>
<p>보고는 &#39;검토&#39;나 &#39;평가&#39;받는 자리가 아니라 &#39;조율하는 과정&#39; 이라는 것을 명심하자.</p>
</blockquote>
<hr>
<h2 id="ai를-사용하되-매몰되지-않을-것">AI를 사용하되, 매몰되지 않을 것</h2>
<p>자료조사의 단계에서 메시지를 만들어낼 때 종종, 아니 수시로 AI의 도움을 받곤 한다.
하지만 AI가 만들어 낸 메시지를 복사 붙여넣기 하여 그대로 쓰는 것은 지양해야 한다.</p>
<p>AI는 많이 반복되는 문장들을 검수 없이 마치 사실인 것처럼 그럴사하게 내뱉는다.</p>
<p>AI가 제안한 메시지가 실제로 설득력이 있는지 항상 의심하며 판단해야 한다.
AI가 제시한 근거 또한 항시 그것이 실제 팩트인지 체크해야 한다.</p>
<hr>
<h2 id="감정관리도-실력이다">&#39;감정관리&#39;도 실력이다.</h2>
<p>누군가 내 장표를 수정하거나, 아이디어가 빠지거나, 내가 쓴 문장을 그대로 쓰지 않을 때,</p>
<p>그걸 개인적인 감정과 분리시키는 것이 전문가의 태도임을 배웠다.</p>
<p>&quot;수정 = 내 실력 부족&quot;이 아니라,
&quot;수정 = 팀이 더 좋은 방향으로 가는 과정&quot;이라는 걸 이해하는 과정이었다.</p>
<p>*하지만 여전히 어려운....</p>
<hr>
<p>이번 협업 제안서를 통해 느낀 건,
일 잘하는 사람은 결국 &#39;기술&#39;이 아니라 &#39;태도&#39;를 가지고 있다는 점이다.</p>
<p>자료를 정리하는 태도, 협업을 바라보는 태도, 질문하는 태도, 그리고 무엇보다 &#39;내 문장을 내려놓을 줄 아는 태도&#39;.</p>
<p>이 모든 것이 내가 앞으로 더 단단해지기 위해 반드시 배워야 할 것들이었다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[📘 PR 전략 실무 핵심 개념 정리]]></title>
            <link>https://velog.io/@jan-nabee/PR-%EC%A0%84%EB%9E%B5-%EC%8B%A4%EB%AC%B4-%ED%95%B5%EC%8B%AC-%EA%B0%9C%EB%85%90-%EC%A0%95%EB%A6%AC</link>
            <guid>https://velog.io/@jan-nabee/PR-%EC%A0%84%EB%9E%B5-%EC%8B%A4%EB%AC%B4-%ED%95%B5%EC%8B%AC-%EA%B0%9C%EB%85%90-%EC%A0%95%EB%A6%AC</guid>
            <pubDate>Wed, 26 Nov 2025 09:36:43 GMT</pubDate>
            <description><![CDATA[<p><strong>이해관계자 리서치 · 메시지 매핑 · 캠페인 IA · 여정맵 · 브랜드 언어셋 · 커뮤니티 아키텍처까지</strong></p>
<p>PR/IMC 실무를 준비하면서 반복적으로 마주치는 개념들을 하나씩 정리했다.
기본 개념들을 한 번에 정리해두면, 이후 제안서·기획서 작업에서 큰 뼈대를 잡는 데 도움이 된다.</p>
<hr>
<h2 id="🟦-1-이해관계자-리서치stakholder-research란">🟦 1) 이해관계자 리서치(Stakholder Research)란?</h2>
<h3 id="정의">정의</h3>
<blockquote>
<p>캠페인이나 프로젝트에 직접·간접적으로 영향을 주는 모든 당사자를 분석하는 것.</p>
</blockquote>
<h3 id="리서치-기본-흐름">리서치 기본 흐름</h3>
<h4 id="①-분류">① 분류</h4>
<ul>
<li><p>정책 결정자(정부·기관)</p>
</li>
<li><p>시민·소비자</p>
</li>
<li><p>전문가 집단</p>
</li>
<li><p>언론</p>
</li>
<li><p>업계/협회</p>
</li>
<li><p>비판세력·이슈 메이커</p>
</li>
<li><p>파트너·스폰서</p>
</li>
<li><p>내부 관계자(클라이언트/의사결정자)</p>
</li>
</ul>
<h4 id="②-니즈욕구-파악">② 니즈/욕구 파악</h4>
<ul>
<li><p>각 이해관계자가 바라는 점</p>
</li>
<li><p>불만·고통</p>
</li>
<li><p>KPI</p>
</li>
<li><p>기대효과</p>
</li>
<li><p>우려요소</p>
</li>
</ul>
<h4 id="③-영향력-매핑">③ 영향력 매핑</h4>
<ul>
<li><p>영향력이 큰 이해관계자</p>
</li>
<li><p>여론을 좌우하는 존재</p>
</li>
<li><p>의사결정자 vs 수용자</p>
</li>
</ul>
<h4 id="④-행동-패턴-분석">④ 행동 패턴 분석</h4>
<ul>
<li><p>정보 소비 경로</p>
</li>
<li><p>신뢰하는 채널</p>
</li>
<li><p>감정·행동의 흐름</p>
</li>
</ul>
<p> <strong><em>👉 PR/IMC에서 ‘타겟 정의’의 근간이 되는 작업.</em></strong></p>
<hr>
<h2 id="🟦-2-메시지-매핑message-mapping이란">🟦 2) 메시지 매핑(Message Mapping)이란?</h2>
<h3 id="정의-1">정의</h3>
<blockquote>
<p>“무엇을, 누구에게, 어떤 언어로 전달할지”를 구조화해 놓은 지도.</p>
</blockquote>
<h3 id="작성-방식">작성 방식</h3>
<h4 id="①-핵심-메시지-13개-선정">① 핵심 메시지 1~3개 선정</h4>
<pre><code>→ 캠페인이 말하려는 중심 문장</code></pre><h4 id="②-서브-메시지-작성">② 서브 메시지 작성</h4>
<pre><code>→ 근거, 설명, 사례 등을 계층적으로 정리</code></pre><h4 id="③-타겟별-메시지-변환">③ 타겟별 메시지 변환</h4>
<ul>
<li><p>시민 대상 메시지</p>
</li>
<li><p>언론용 메시지</p>
</li>
<li><p>정부/기관용 메시지</p>
</li>
<li><p>내부관계자용 메시지</p>
</li>
</ul>
<h4 id="④-위험요소-대응-메시지-준비">④ 위험요소 대응 메시지 준비</h4>
<pre><code>→ 위기 상황에서 사용할 공식 메시지</code></pre><p><strong>예시(한돈PR)</strong></p>
<ul>
<li><p><strong>핵심 메시지:</strong> “한돈은 가장 신선하고 안전한 국내산 단백질 원천이다.”</p>
</li>
<li><p><strong>서브 메시지:</strong> 영양·유통기간·지역경제·건강 등</p>
</li>
<li><p><strong>타겟 변형:</strong> 소비자=‘신선’, 기관=‘식량 안정성’, 업계=‘농가 소득’</p>
</li>
</ul>
<p><strong><em>👉 캠페인의 언어 체계를 정리하는 프레임워크.</em></strong></p>
<hr>
<h2 id="🟦-3-퍼블릭-커뮤니케이션public-communication-개론">🟦 3) 퍼블릭 커뮤니케이션(Public Communication) 개론</h2>
<h3 id="정의-2">정의</h3>
<blockquote>
<p>사회·공공의 문제를 대중·언론·정책·시민과 소통하여 해결하는 전략.</p>
</blockquote>
<h3 id="핵심-요소">핵심 요소</h3>
<ul>
<li><p>여론 분석</p>
</li>
<li><p>미디어 관계</p>
</li>
<li><p>공공 이해관계자 조율</p>
</li>
<li><p>정확한 메시지 설계</p>
</li>
<li><p>신뢰 기반 행동 변화 유도</p>
</li>
<li><p>시민 참여·커뮤니티 기반 확산</p>
</li>
<li><p>위기관리</p>
</li>
</ul>
<p><em><strong>👉 공익·정책·사회적 의미와 신뢰를 다루는 커뮤니케이션.</strong></em></p>
<hr>
<h2 id="🟦-4-캠페인-iainformation-architecture란">🟦 4) 캠페인 IA(Information Architecture)란?</h2>
<h3 id="정의-3">정의</h3>
<blockquote>
<p>웹/앱 IA와 동일하게 캠페인을 구성하는 전체 흐름과 구조를 정리하는 것.</p>
</blockquote>
<h4 id="포함되는-요소-예시">포함되는 요소 예시</h4>
<ul>
<li><p>메인 메시지</p>
</li>
<li><p>참여 방법</p>
</li>
<li><p>슬로건 구조</p>
</li>
<li><p>온·오프라인 액션 플로우</p>
</li>
<li><p>콘텐츠 아키텍처</p>
</li>
<li><p>미디어 플랜</p>
</li>
<li><p>KPI 연결 구조</p>
</li>
</ul>
<p><em><strong>👉 한 페이지짜리 ‘캠페인 구조 설계도’.</strong></em></p>
<h2 id="🟦-5-캠페인-여정맵journey-map이란">🟦 5) 캠페인 여정맵(Journey Map)이란?</h2>
<h4 id="정의-4">정의</h4>
<blockquote>
<p>타겟(시민/소비자)이 캠페인을 접하고 행동하기까지의 전체 경험을 시각화한 맵.</p>
</blockquote>
<h4 id="기본-흐름-예시">기본 흐름 예시</h4>
<ol>
<li><p>최초 접점(포스터/영상/뉴스)</p>
</li>
<li><p>관심/탐색</p>
</li>
<li><p>참여/행동</p>
</li>
<li><p>공유/확산</p>
</li>
<li><p>후속 행동(재참여·인식 변화)</p>
</li>
</ol>
<h4 id="각-단계에서-기록하는-요소">각 단계에서 기록하는 요소</h4>
<ul>
<li><p>감정</p>
</li>
<li><p>행동</p>
</li>
<li><p>사용 채널</p>
</li>
<li><p>메시지</p>
</li>
<li><p>개선점</p>
</li>
</ul>
<p><em><strong>👉 “타겟의 감정과 행동 이동”을 설계하는 도구.</strong></em></p>
<hr>
<h2 id="🟫-8-브랜드-언어셋brand-language-set">🟫 8) 브랜드 언어셋(Brand Language Set)</h2>
<h3 id="정의-5">정의</h3>
<blockquote>
<p>브랜드가 세상과 소통할 때 사용하는 문장 시스템.</p>
</blockquote>
<h3 id="구성-요소">구성 요소</h3>
<ul>
<li><p>브랜드 톤(차분·정직·사려 깊음 등)</p>
</li>
<li><p>핵심 문장(세계관 요약)</p>
</li>
<li><p>반복되는 단어 선택</p>
</li>
<li><p>금기어 리스트</p>
</li>
<li><p>슬로건 패턴</p>
</li>
<li><p>감정의 기본 결</p>
</li>
<li><p>메시지 구조</p>
</li>
</ul>
<p><strong>예시(개인 브랜드 버전)</strong></p>
<ul>
<li><p>“감정을 다루는 건 기술이다.”</p>
</li>
<li><p>“차를 우리는 건 마음을 내리는 일이다.”</p>
</li>
<li><p>“조금 더 느리고, 조금 더 나답게.”</p>
</li>
<li><p>“오늘의 감정은 기록될 가치가 있다.”</p>
</li>
</ul>
<p><em><strong>👉 브랜드의 세계관을 ‘언어’로 구축한 뼈대.</strong></em></p>
<hr>
<h2 id="🟧-9-커뮤니티-기반-캠페인-예시-5가지">🟧 9) 커뮤니티 기반 캠페인 예시 5가지</h2>
<h3 id="①-시민참여형-챌린지">① 시민참여형 챌린지</h3>
<ul>
<li><p>다회용기 사용 인증</p>
</li>
<li><p>걷기 캠페인</p>
</li>
<li><p>건강 리추얼 공유
  → UGC 기반 확산</p>
</li>
</ul>
<h3 id="②-지역-커뮤니티-매칭">② 지역 커뮤니티 매칭</h3>
<ul>
<li><p>동네 상점·기관 연계</p>
</li>
<li><p>자원봉사자 그룹 운영</p>
</li>
<li><p>로컬 페스티벌과 연동</p>
</li>
</ul>
<h3 id="③-스토리-공모·사연-캠페인">③ 스토리 공모·사연 캠페인</h3>
<ul>
<li><p>개인 경험 공유</p>
</li>
<li><p>감정 기반 인터뷰</p>
</li>
<li><p>영상·카드뉴스 제작</p>
</li>
</ul>
<h3 id="④-커뮤니티-리더-양성-프로그램">④ 커뮤니티 리더 양성 프로그램</h3>
<ul>
<li><p>서포터즈·앰배서더</p>
</li>
<li><p>교육 프로그램</p>
</li>
<li><p>시민 리더십 활동</p>
</li>
</ul>
<h3 id="⑤-행동-변화-아카이브">⑤ 행동 변화 아카이브</h3>
<ul>
<li><p>하루 1 행동 등록</p>
</li>
<li><p>ESG·환경·공공 의제 해결형</p>
</li>
<li><p>데이터 기반 인식 변화 추적</p>
</li>
</ul>
<p><em><strong>👉 핵심: 사람이 직접 참여해 ‘가치’를 만들어낸다.</strong></em></p>
<hr>
<h2 id="🟦-10-메시지-구조화란-카피라이팅과의-차이">🟦 10) 메시지 구조화란? (카피라이팅과의 차이)</h2>
<h3 id="메시지-구조화">메시지 구조화</h3>
<p>→ 말하고자 하는 메시지를 <strong>계층 구조로 설계하는 것</strong></p>
<h3 id="카피라이팅">카피라이팅</h3>
<p>→ 그 구조화된 메시지를 <strong>한 문장으로 압축·극대화하는 기술</strong></p>
<hr>
<p><strong>예시</strong></p>
<h4 id="메시지-구조화-1">메시지 구조화</h4>
<pre><code>한돈은 국내산이라 신선함

영양적 우월성

지역경제 기여

안전한 생산·유통 체계</code></pre><h4 id="카피라이팅-1">카피라이팅</h4>
<pre><code>→ “한돈, 신선함의 기준이 되다.”</code></pre><hr>
<p><em><strong>👉 구조화가 먼저, 카피는 그 위에서 나온다.</strong></em></p>
<hr>
<h2 id="🟫-11-인사이트-리포트-정리-기술-올리는-방법-4가지">🟫 11) 인사이트 리포트 정리 기술 올리는 방법 4가지</h2>
<h3 id="①-팩트-→-해석-→-시사점-구조로-정리">① 팩트 → 해석 → 시사점 구조로 정리</h3>
<ul>
<li><p>데이터/현상</p>
</li>
<li><p>왜 이런가? (인사이트)</p>
</li>
<li><p>그래서 어떻게? (제안)</p>
</li>
</ul>
<h3 id="②-유형화분류-능력">② 유형화/분류 능력</h3>
<ul>
<li><p>3개 카테고리로 재정리</p>
</li>
<li><p>흐름을 묶는 능력 키우기</p>
</li>
</ul>
<h3 id="③-슬라이드-1장-1메시지-규칙">③ 슬라이드 1장 1메시지 규칙</h3>
<p>→ 핵심이 선명해짐</p>
<h3 id="④-일주일에-하나-5줄-요약-연습">④ 일주일에 하나 ‘5줄 요약’ 연습</h3>
<p>→ 벨로그에 기록하기 좋음</p>
<hr>
<h2 id="🟪-12-커뮤니티-운영-이론-핵심-정리">🟪 12) 커뮤니티 운영 이론 (핵심 정리)</h2>
<p>커뮤니티는 아래 3요소가 겹칠 때 구축된다.</p>
<h3 id="①-정체성identity">① 정체성(Identity)</h3>
<ul>
<li><p>왜 모이는가?</p>
</li>
<li><p>어떤 감정·가치를 공유하는가?</p>
</li>
</ul>
<h3 id="②-리추얼ritual">② 리추얼(Ritual)</h3>
<ul>
<li><p>함께 반복하는 행동</p>
</li>
<li><p>매일/매주/매월의 참여 패턴</p>
</li>
</ul>
<h3 id="③-관계-구조roles">③ 관계 구조(Roles)</h3>
<ul>
<li><p>운영자</p>
</li>
<li><p>코어 멤버</p>
</li>
<li><p>기여자</p>
</li>
<li><p>관망자</p>
</li>
</ul>
<p><em><strong>👉 핵심: 참여자를 “기여자”로 설계하는 커뮤니티가 오래 간다.</strong></em></p>
<hr>
<h2 id="🟧-13-커뮤니티-아키텍처란">🟧 13) 커뮤니티 아키텍처란?</h2>
<h3 id="정의-6">정의</h3>
<p>커뮤니티라는 ‘세계’를 설계하는 <strong>구조도·설계도.</strong></p>
<h3 id="구성-요소-1">구성 요소</h3>
<ul>
<li><p>커뮤니티 목적(정서/생활/학습 등)</p>
</li>
<li><p>정체성·세계관</p>
</li>
<li><p>참여 흐름 (가입 → 활동 → 기여 → 리더십)</p>
</li>
<li><p>콘텐츠 구조 (포스트/챌린지/리추얼)</p>
</li>
<li><p>역할 구조 (운영자·리더·멤버)</p>
</li>
<li><p>보상 구조 (명성·뱃지·포인트 등)</p>
</li>
<li><p>커뮤니티 규칙</p>
</li>
<li><p>온·오프라인 연결</p>
</li>
<li><p>KPI (활성도·참여도·재방문·기여도)</p>
</li>
</ul>
<p><em><strong>👉 캠페인 IA가 ‘프로젝트 구조도’라면,
👉 커뮤니티 아키텍처는 ‘사람이 살아가는 세계의 구조도’.</strong></em></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[내가 전념해야 할 방향을 찾기 위해 던진 7개의 질문들]]></title>
            <link>https://velog.io/@jan-nabee/%EB%82%B4%EA%B0%80-%EC%A0%84%EB%85%90%ED%95%B4%EC%95%BC-%ED%95%A0-%EB%B0%A9%ED%96%A5%EC%9D%84-%EC%B0%BE%EA%B8%B0-%EC%9C%84%ED%95%B4-%EB%8D%98%EC%A7%84-7%EA%B0%9C%EC%9D%98-%EC%A7%88%EB%AC%B8%EB%93%A4</link>
            <guid>https://velog.io/@jan-nabee/%EB%82%B4%EA%B0%80-%EC%A0%84%EB%85%90%ED%95%B4%EC%95%BC-%ED%95%A0-%EB%B0%A9%ED%96%A5%EC%9D%84-%EC%B0%BE%EA%B8%B0-%EC%9C%84%ED%95%B4-%EB%8D%98%EC%A7%84-7%EA%B0%9C%EC%9D%98-%EC%A7%88%EB%AC%B8%EB%93%A4</guid>
            <pubDate>Wed, 26 Nov 2025 09:18:46 GMT</pubDate>
            <description><![CDATA[<p>요즘 나는 _‘호기심에 휘둘리지 말고, 내가 관계할 방향을 파악해 전념하라’_는 니체의 문장을 자주 떠올린다.
누군가에게는 추상적으로 들릴지 모르지만, 지금의 나에게 이 말은 꽤 구체적인 질문을 던진다.</p>
<h1 id="그렇다면-나는-어디에-전념해야-할까">“그렇다면 나는 어디에 전념해야 할까?”</h1>
<p>이 질문에 답하고 싶어서, 나는 나 자신에게 7개의 질문을 건넸다.
아주 개인적이고, 동시에 앞으로의 일을 결정짓는 질문들이다.</p>
<hr>
<h2 id="1-나는-자연스럽게-어떤-일을-반복하고-있는가">1) 나는 자연스럽게 어떤 일을 반복하고 있는가?</h2>
<p>나는 끊임없이 나의 감정을 들여다보고 돌본다.
차를 마시고, 필사를 하고, 짧은 문장을 쓰고, 오늘의 감정을 정리하고…
나의 일상은 ‘감정관리’라는 축을 중심으로 돌아간다.
이건 취미가 아니라 내 생존 방식이자 세계관이다.</p>
<h2 id="2-나는-무엇을-기획할-때-가장-행복한가">2) 나는 무엇을 기획할 때 가장 행복한가?</h2>
<p>나는 누군가의 감정이나 경험에 작은 변화를 줄 수 있는 일을 좋아한다.
누군가가 내가 만든 문장을 읽고, 콘텐츠를 보고, 생각이 달라지거나
작게라도 미소를 짓는 순간—
그게 나에게 가장 큰 보상이다.
‘내 결과물로 인정받는 기쁨’은 나에게 황홀에 가깝다.</p>
<h2 id="3-사람들은-나에게-어떤-도움을-요청해왔는가">3) 사람들은 나에게 어떤 도움을 요청해왔는가?</h2>
<p>마지막으로 누군가 나에게 도움을 요청한 건 네이밍과 카피 아이디어였다.
돌이켜보면 나는 예전부터 문장·언어·카피 영역에 욕심이 있었다.
말을 찾아주는 일, 의미를 이야기로 바꾸는 일을 꾸준히 해온 셈이다.</p>
<h2 id="4-나만의-감각이-있다면-무엇일까">4) 나만의 감각이 있다면 무엇일까?</h2>
<p>대단히 특별한 감각은 아닐지 몰라도,
타겟이 ‘재미’를 느낄 수 있는 요소를 자연스럽게 끼워 넣는 능력은 있다.
가볍고 따뜻한 재치.
그런 감각을 지향한다.</p>
<h2 id="5-내가-만드는-모든-것들은-결국-어디를-향하고-있는가">5) 내가 만드는 모든 것들은 결국 어디를 향하고 있는가?</h2>
<p>감정일기든, 리추얼이든, 서비스 기획이든,
내가 만들고 싶은 건 결국 ‘사람의 행복’에 닿아 있다.
새로운 감정, 작은 깨달음, 안정, 회복…
사람이 조금 더 행복해지는 방향.</p>
<h2 id="6-나는-어떤-공부를-지루해하지-않는가">6) 나는 어떤 공부를 지루해하지 않는가?</h2>
<p>지치지 않는 공부는 없다.
하지만 ‘감정관리’는 지루하지 않다.
왜냐면 이것은 나의 삶과 직결되기 때문이다.
그리고 사람들에게 즐거움·흥미·재미를 주는 기획—
이 역시 오래 붙잡고 있을 수 있다.</p>
<h2 id="7-미래의-나는-어떤-결과물을-내-작품이라고-부르고-싶은가">7) 미래의 나는 어떤 결과물을 ‘내 작품’이라고 부르고 싶은가?</h2>
<p>서비스도 좋지만, 한 번도 해본 적 없는 ‘커뮤니티’를 만들어보고 싶다.
좋은 영향력을 나눌 수 있는 공간.
사람들이 연결되고, 나의 세계관을 함께 체험하고,
서로가 서로에게 작지만 안정과 영감을 주는 곳.</p>
<p>이 7개의 답을 모아보니, 나의 방향성이 선명해졌다</p>
<p>내가 전념해야 할 방향은 이렇게 정리된다.</p>
<blockquote>
<p>“감정과 의미를 언어·브랜딩·기획으로 엮어,
사람들에게 작은 변화와 즐거움을 만드는 정서 기반 창작자.
그리고 그 힘으로 커뮤니티를 구축하는 사람.”</p>
</blockquote>
<p>이 문장이 지금의 나를 정확하게 설명한다.
이 문장을 기준으로 앞으로의 공부, 일, 기록, 창작을 정렬해도 좋겠다는 확신이 든다.</p>
<hr>
<h2 id="내가-얻은-결론">내가 얻은 결론</h2>
<p>나는</p>
<ul>
<li><p>감정을 돌보고</p>
</li>
<li><p>언어로 세계를 만들고</p>
</li>
<li><p>사람들에게 작은 변화와 즐거움을 주고</p>
</li>
<li><p>그 경험이 모여 ‘커뮤니티’로 확장되길 바라는 사람이다.</p>
</li>
</ul>
<p>그리고 지금 나는 그 방향으로 움직이고 있다.
천천히, 하지만 아주 명확하게.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[브랜딩·PPT·PR·불안관리까지: 나의 4가지 구조화 시스템]]></title>
            <link>https://velog.io/@jan-nabee/%EB%B8%8C%EB%9E%9C%EB%94%A9PPTPR%EB%B6%88%EC%95%88%EA%B4%80%EB%A6%AC%EA%B9%8C%EC%A7%80-%EB%82%98%EC%9D%98-4%EA%B0%80%EC%A7%80-%EA%B5%AC%EC%A1%B0%ED%99%94-%EC%8B%9C%EC%8A%A4%ED%85%9C</link>
            <guid>https://velog.io/@jan-nabee/%EB%B8%8C%EB%9E%9C%EB%94%A9PPTPR%EB%B6%88%EC%95%88%EA%B4%80%EB%A6%AC%EA%B9%8C%EC%A7%80-%EB%82%98%EC%9D%98-4%EA%B0%80%EC%A7%80-%EA%B5%AC%EC%A1%B0%ED%99%94-%EC%8B%9C%EC%8A%A4%ED%85%9C</guid>
            <pubDate>Sat, 22 Nov 2025 03:47:41 GMT</pubDate>
            <description><![CDATA[<p><img src="blob:https://velog.io/cfef7c76-8223-4f32-88f5-71bcf4332145" alt="업로드중.."></p>
<h1 id="구조화란">구조화란?</h1>
<p>구조화를 잘 하려면 어떻게 해야 할까?</p>
<p>&#39;구조화&#39;는 PR·브랜딩·기획·퍼블리싱·PT 모두에서 레벨업의 핵심 스킬이다.</p>
<p>다행인 건, 재능이 아닌 기술의 영역이라는 것.</p>
<blockquote>
<p>구조화는 &#39;정리&#39;가 아니다.</p>
</blockquote>
<p><strong>구조화는 흐름을 &#39;최소 단위 조각&#39;으로 쪼개고, 그 조각을 의미있게 연결하는 기술</strong>이다.</p>
<p>정리가 아니라 <strong>질문을 던지고, 범주를 나누고, 순서를 만드는 과정</strong>이다.</p>
<hr>
<h2 id="구조화를-잘-하기-위한-5단계-공식">구조화를 잘 하기 위한 5단계 공식</h2>
<h3 id="1-핵심-질문-단-하나-설정">1) 핵심 질문 &#39;단 하나&#39; 설정.</h3>
<p>모든 구조화는 질문에서 시작된다.</p>
<ul>
<li>이 프로젝트의 본질은 뭘까?</li>
<li>왜 이 일이 필요한가?</li>
<li>사용자는 무엇을 원하는가?</li>
<li>내가 말하려는 핵심 메시지는 무엇인가?</li>
</ul>
<p>이 질문을 정해두면 정보가 쏟아져도 핵심에서 벗어나는 것을 방지할 수 있다.</p>
<h3 id="2-덩어리bucket-만들기">2) 덩어리(Bucket) 만들기</h3>
<p>덩어리 만들기는 구조화의 진짜 시작점이라고 말할 수 있다.</p>
<p>예를 들어 차분일기 서비스의 구조를 만든다면,</p>
<ul>
<li>사용자</li>
<li>기능</li>
<li>감정</li>
<li>기술</li>
<li>운영</li>
<li>성장
등 큰 카테고리 4~6개를 만들 수 있다.</li>
</ul>
<p>덩어리를 만들면 생각이 정돈되기 시작한다.</p>
<h3 id="3-덩어리-안의-핵심-조각-3개-만들기">3) 덩어리 안의 &#39;핵심 조각&#39; 3개 만들기</h3>
<p>각 덩어리마다 3가지의 핵심 조각을 도출한다. 너무 많은 조각들을 덕지덕지 붙이지 않아도 된다. 사람은 3개까지 밖에 구조적으로 이해하지 못하기 때문.</p>
<p>예를 들어, 차분일기의 &#39;사용자&#39; 덩어리 안에 넣는 조각으로는 아래 3가지가 있을 수 있다.</p>
<ul>
<li><ol>
<li>첫 사용자 집단 정의(코호트 집단 예측)</li>
</ol>
</li>
<li><ol start="2">
<li>사용자의 동기(왜 쓸까?)</li>
</ol>
</li>
<li><ol start="3">
<li>사용자 문제(미해결 pain-point)</li>
</ol>
</li>
</ul>
<p>구조화 단계에서는, 딱 이 수준이면 충분하다.</p>
<h3 id="4-흐름flow을-만든다">4) 흐름(Flow)을 만든다</h3>
<p>덩어리끼리 어떤 순서로 이어지면 자연스러운지 스토리라인을 설정한다.
흐름의 대표적인 규칙을 기억해 두면 유용하다.</p>
<ul>
<li>시간 순</li>
<li>중요도 순</li>
<li>원인 → 결과</li>
<li>문제 → 해결</li>
</ul>
<h3 id="5-전체를-위에서-아래로-한-줄-요약하기">5) 전체를 위에서 아래로 한 줄 요약하기</h3>
<p>주의할 점(!)
구조화의 마지막 단계는 요약이 아니다. 
<strong>전체 구조가 하나의 줄거리처럼 보이는지 확인하는 것</strong>이다.</p>
<p>ex) 사용자의 문제를 정의하고 → 그것을 해결하는 핵심 기능을 제시하고 → 실제 사용 흐름과 실행 계획으로 이어진다.</p>
<p>이런 전체 흐름을 담은 문장이 자연스럽다면, 구조화가 잘 됐다고 평가할 수 있다.</p>
<hr>
<h2 id="구조화-실습하기">구조화 실습하기</h2>
<p>최근 재정비한 4가지 구조화 체계</p>
<ul>
<li><p>자기 브랜딩 구조</p>
</li>
<li><p>PPT 학습 체계</p>
</li>
<li><p>PR 기획력 강화 구조</p>
</li>
<li><p>불안 관리 구조</p>
</li>
</ul>
<p>기획·디자인·콘텐츠·실행을 함께 다루는 사람에게
이 네 가지는 결국 하나의 흐름으로 연결된다.</p>
<p>나는 이걸 ‘구조화 5단계 공식’으로 정리했해봤다:</p>
<p>질문 설정 → 덩어리 만들기 → 조각 3개씩 → 흐름 구성 → 한 줄 줄거리</p>
<p>아래는 각각의 구조를 이 공식을 그대로 적용한 버전이다.</p>
<hr>
<h3 id="1️⃣-자기-브랜딩-구조-하이브리드-크리에이터로-보이기">1️⃣ 자기 브랜딩 구조: 하이브리드 크리에이터로 보이기</h3>
<h4 id="🔸-핵심-질문">🔸 핵심 질문</h4>
<p>“내 브랜드를 보고 사람들이 어떤 인상을 즉시 받아야 할까?”</p>
<h4 id="🔸-덩어리">🔸 덩어리</h4>
<ul>
<li><p>Identity(정체성)</p>
</li>
<li><p>포트폴리오</p>
</li>
<li><p>커뮤니케이션 채널</p>
</li>
<li><p>증거자료(Performance)</p>
</li>
<li><p>톤 &amp; 내러티브</p>
</li>
</ul>
<h4 id="🔸-각-항목-3조각">🔸 각 항목 3조각</h4>
<p><strong>1) Identity</strong></p>
<ul>
<li><p>PR/브랜딩 기반의 기획력</p>
</li>
<li><p>디지털·퍼블리싱·개발 실행</p>
</li>
<li><p>감각 기반의 스토리텔링</p>
</li>
</ul>
<p><strong>2) 포트폴리오</strong></p>
<ul>
<li><p>VS코드 테마 메인 사이트</p>
</li>
<li><p>프로젝트 3개(브랜딩/기획/웹)</p>
</li>
<li><p>문·비주얼·코드의 결합 구조</p>
</li>
</ul>
<p><strong>3) 커뮤니케이션</strong></p>
<ul>
<li><p>Velog: 기술 + 기록</p>
</li>
<li><p>Instagram: 라이프 + 스토리</p>
</li>
<li><p>Notion Super: 레퍼런스 아카이브</p>
</li>
</ul>
<p>*<em>4) 증거자료
*</em></p>
<ul>
<li><p>성과 지표: 287% 협찬 등</p>
</li>
<li><p>PR 실무 경험</p>
</li>
<li><p>HTML·CSS·JS·React 데모</p>
</li>
</ul>
<p><strong>5) 톤 &amp; 내러티브</strong></p>
<ul>
<li><p>“브랜드 본질을 구조화해 실행까지 하는 사람”</p>
</li>
<li><p>“감성과 기술을 연결하는 하이브리드 크리에이터”</p>
</li>
<li><p>“브랜딩 디렉터에서 프론트엔드까지 확장 중”</p>
</li>
</ul>
<h4 id="🔸-한-줄-정리">🔸 한 줄 정리</h4>
<blockquote>
<p>“브랜드를 구조화해 디지털 경험으로 구현하는 사람.”</p>
</blockquote>
<br>

<hr>
<h3 id="2️⃣-ppt-강의-따라잡기-체계-실무형-스킬-독학-방식">2️⃣ PPT 강의 따라잡기 체계: 실무형 스킬 독학 방식</h3>
<h4 id="🔸-핵심-질문-1">🔸 핵심 질문</h4>
<p>“짧은 시간에 PPT 실력의 핵심만 빠르게 익히려면?”</p>
<h4 id="🔸-덩어리-1">🔸 덩어리</h4>
<ul>
<li><p>기본기</p>
</li>
<li><p>디자인 룰</p>
</li>
<li><p>템플릿 제작</p>
</li>
<li><p>모방 학습</p>
</li>
<li><p>주간 루틴</p>
</li>
</ul>
<h4 id="🔸-각-항목-3조각-1">🔸 각 항목 3조각</h4>
<p><strong>1) 기본기</strong></p>
<ul>
<li><p>마스터·레이아웃 구조 이해</p>
</li>
<li><p>정렬·여백·텍스트 그리드</p>
</li>
<li><p>1슬라이드 1메시지 원칙</p>
</li>
</ul>
<p>*<em>2) 디자인 룰
*</em></p>
<ul>
<li><p>컬러 2~3개 제한</p>
</li>
<li><p>폰트 계층 구조</p>
</li>
<li><p>일관된 아이콘/도형 사용</p>
</li>
</ul>
<p><strong>3) 템플릿 제작</strong></p>
<ul>
<li><p>타이틀/비주얼/목차/데이터 4종</p>
</li>
<li><p>레이아웃 10개 사전 제작</p>
</li>
<li><p>브랜드 고유 템플릿 1세트</p>
</li>
</ul>
<p><strong>4) 모방 학습</strong></p>
<ul>
<li><p>레퍼런스 3개 선정</p>
</li>
<li><p>1:1 리디자인</p>
</li>
<li><p>흐름·구성 패턴 분석</p>
</li>
</ul>
<p><strong>5) 주간 루틴</strong></p>
<ul>
<li><p>월: 템플릿 재정비</p>
</li>
<li><p>수: 레퍼런스 리디자인 1건</p>
</li>
<li><p>금: 5장 미니 슬라이드 실습</p>
</li>
</ul>
<h4 id="🔸-한-줄-정리-1">🔸 한 줄 정리</h4>
<blockquote>
<p>“기본기 → 룰 → 템플릿 → 모방 → 루틴의 흐름으로 빠르게 실무형 PPT 습득.”</p>
</blockquote>
<br>

<hr>
<h3 id="3️⃣-pr-기획력-강화-구조-대행사-실전-버전">3️⃣ PR 기획력 강화 구조: 대행사 실전 버전</h3>
<h4 id="🔸-핵심-질문-2">🔸 핵심 질문</h4>
<p>“실무에서 바로 신뢰감을 주는 기획은 어떤 구조인가?”</p>
<h4 id="🔸-덩어리-2">🔸 덩어리</h4>
<ul>
<li><p>정보 구조화</p>
</li>
<li><p>인사이트</p>
</li>
<li><p>전략 구성</p>
</li>
<li><p>실행·예산</p>
</li>
<li><p>리스크 관리</p>
</li>
</ul>
<h4 id="🔸-각-항목-3조각-2">🔸 각 항목 3조각</h4>
<p><strong>1) 정보 구조화</strong></p>
<ul>
<li><p>자료 요약(팩트 기반)</p>
</li>
<li><p>문제/현상/기회 분류</p>
</li>
<li><p>핵심 메시지 추출</p>
</li>
</ul>
<p><strong>2) 인사이트</strong></p>
<ul>
<li><p>타깃 분석(Persona)</p>
</li>
<li><p>채널·소셜 트렌드</p>
</li>
<li><p>브랜드 맥락 연결</p>
</li>
</ul>
<p><strong>3) 전략 구성</strong></p>
<ul>
<li><p>문제 → 해결 구조</p>
</li>
<li><p>캠페인 스토리라인</p>
</li>
<li><p>KPI 설정</p>
</li>
</ul>
<p><strong>4) 실행·예산</strong></p>
<ul>
<li><p>채널 믹스</p>
</li>
<li><p>일정 시퀀스</p>
</li>
<li><p>예산 구조</p>
</li>
</ul>
<p><strong>5) 리스크 관리</strong></p>
<ul>
<li><p>일정 지연 요소</p>
</li>
<li><p>이해관계자 충돌</p>
</li>
<li><p>산출물 톤 불일치</p>
</li>
</ul>
<h4 id="🔸-한-줄-정리-2">🔸 한 줄 정리</h4>
<blockquote>
<p>“자료 → 인사이트 → 전략 → 실행 → 리스크까지 이어지는 5단계 구조가 곧 기획력이다.”</p>
</blockquote>
<br>

<hr>
<h3 id="4️⃣-불안-관리-구조-나를-잃지-않기-위한-시스템">4️⃣ 불안 관리 구조: 나를 잃지 않기 위한 시스템</h3>
<h4 id="🔸-핵심-질문-3">🔸 핵심 질문</h4>
<p>“내가 흔들려도, 내가 원하는 행동을 유지하려면?”</p>
<h4 id="🔸-덩어리-3">🔸 덩어리</h4>
<ul>
<li><p>초기 감지</p>
</li>
<li><p>안정</p>
</li>
<li><p>원인 분석</p>
</li>
<li><p>행동 선택</p>
</li>
<li><p>지속 관리</p>
</li>
</ul>
<h4 id="🔸-각-항목-3조각-3">🔸 각 항목 3조각</h4>
<p><strong>1) 초기 감지</strong></p>
<ul>
<li><p>심박·어깨 긴장</p>
</li>
<li><p>‘망할 것 같다’는 생각 패턴</p>
</li>
<li><p>회피·멍해짐 등 초기 징후</p>
</li>
</ul>
<p><strong>2) 안정</strong></p>
<ul>
<li><p>4-2-6 호흡</p>
</li>
<li><p>시선 이동</p>
</li>
<li><p>감정 라벨링(“불안을 느끼는 중”)</p>
</li>
</ul>
<p><strong>3) 원인 분석</strong></p>
<ul>
<li><p>지금 무엇이 두렵지?</p>
</li>
<li><p>이건 사실인가, 예측인가?</p>
</li>
<li><p>내가 통제할 수 있는 범위는?</p>
</li>
</ul>
<p><strong>4) 행동 선택</strong></p>
<ul>
<li><p>가장 작은 단위로 쪼개기</p>
</li>
<li><p>10분 타이머로 착수</p>
</li>
<li><p>결과 아닌 ‘착수’에 의미 두기</p>
</li>
</ul>
<p><strong>5) 지속 관리</strong></p>
<ul>
<li><p>데일리 루틴(요가·차·정리)</p>
</li>
<li><p>주간 감정 로그 3줄</p>
</li>
<li><p>회복 행동 반복</p>
</li>
</ul>
<h4 id="🔸-한-줄-정리-3">🔸 한 줄 정리</h4>
<blockquote>
<p>“감지 → 안정 → 분석 → 행동 → 유지라는 구조가 불안을 다루는 가장 현실적인 방법.”</p>
</blockquote>
<br>

<hr>
<h2 id="🔮-마무리">🔮 마무리</h2>
<p>이 네 가지 구조는 따로 떨어져 있는 것 같지만 결국 연결되어 있다.</p>
<ul>
<li><p>브랜딩은 나를 외부에 설명하는 구조</p>
</li>
<li><p>PPT는 생각을 시각화하는 구조</p>
</li>
<li><p>PR 기획력은 문제를 해결하는 구조</p>
</li>
<li><p>불안 관리는 나를 지키는 내부 구조</p>
</li>
</ul>
<p>결국 “구조화 능력”은
나의 실력, 일, 감정, 브랜딩 전부를 정돈하는 핵심 기술이라는 걸 체감한다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[기록하면 지름길이 열린다.]]></title>
            <link>https://velog.io/@jan-nabee/%EA%B8%B0%EB%A1%9D%ED%95%98%EB%A9%B4-%EC%A7%80%EB%A6%84%EA%B8%B8%EC%9D%B4-%EC%97%B4%EB%A6%B0%EB%8B%A4</link>
            <guid>https://velog.io/@jan-nabee/%EA%B8%B0%EB%A1%9D%ED%95%98%EB%A9%B4-%EC%A7%80%EB%A6%84%EA%B8%B8%EC%9D%B4-%EC%97%B4%EB%A6%B0%EB%8B%A4</guid>
            <pubDate>Fri, 21 Nov 2025 08:18:49 GMT</pubDate>
            <description><![CDATA[<h1 id="니체의-문장-하나가-나에게-던진-질문">니체의 문장 하나가, 나에게 던진 질문</h1>
<p>얼마 전 니체의 문장을 발견하고 필사했다.</p>
<blockquote>
<p>“이상으로 향하는 지름길을 파악하라.”</p>
</blockquote>
<p>그러고 나서 스스로에게 물었다.</p>
<h1 id="내-이상으로-향하는-지름길이-있을까-있다면-뭘까">내 이상으로 향하는 지름길이 있을까? 있다면 뭘까?</h1>
<p><img src="https://velog.velcdn.com/images/jan-nabee/post/3f3fb331-99b4-48c2-8aae-35e51cd5bb41/image.png" alt=""></p>
<hr>
<h2 id="결론-지름길은-있다">결론: 지름길은 있다</h2>
<p>사람은 보통 &quot;내 이상으로 가려면 완전히 새로운 뭔가를 해야 한다&quot;고 생각한다.</p>
<p>나도 그랬던 적이 종종 있다.
하지만 실제로는 반대다.</p>
<p>내가 이미 가진 방향성을 좁혀서, 더 자주, 더 작게 쓰는 것이 지름길이다</p>
<p>즉, <strong>지름길은 완전히 새로운 길이 아니라, 이미 있는 길을 더 뚜렷하게 만드는 것</strong>이다.</p>
<hr>
<h2 id="그래서-내게-맞는-지름길은">그래서 내게 맞는 지름길은?</h2>
<h3 id="1-정확히-잘하는-걸-꾸준한-루틴으로-만들기">1) 정확히 잘하는 걸 &#39;꾸준한 루틴&#39;으로 만들기</h3>
<p>내가 유난히 잘하는 것들:</p>
<ul>
<li>정보/인사이트 흡수하기</li>
<li>정보/생각을 정리하고 구조화하기</li>
<li>스토리로 엮기</li>
<li>꾸준한 루틴 유지(요가, 리셋, 공부, 작업)</li>
<li>몰입하면 오래가는 집중력</li>
<li>미적 감각과 일관성</li>
<li>사람의 마음과 감정의 흐름 읽기</li>
</ul>
<p>문제는 ‘잘하는 것’을
<strong>어쩌다 한 번</strong>만 쓸 때는 힘이 약하다는 것.</p>
<p>이걸 <strong>주기적 루틴</strong>으로 만들면
이 능력들이 나를 원하는 방향으로 계속 끌고 간다.</p>
<p>예를 들어,</p>
<ul>
<li>매일 15분 인사이트 스크랩하기</li>
<li>매일 30분 코딩/포폴 작업하기</li>
<li>요가/호흡 10분 이상 하기 </li>
</ul>
<p>등등...</p>
<p>이런 작은 반복이 결국 <strong>가장 큰 차이를 만든다.</strong></p>
<h3 id="2-지름길은-정교함이-아니라-안정성에서부터">2) 지름길은 &#39;정교함&#39;이 아니라 &#39;안정성&#39;에서부터</h3>
<p>성장곡선이 가장 빠른 사람은 &#39;열심히 하는 사람&#39;이 아니라
<strong>&quot;정서가 안정된 사람&quot;</strong>이다.</p>
<p>난 감정이 흔들릴 때마다 성장이 끊기는 것을 경험했다.
하지만 요가, 차, 정리, 기록 같은 루틴을 통해서 
정신적인 진동폭을 줄이고부터는 성장에 가속도가 붙고 있다.</p>
<p>이게 바로 나의 지름길이다.</p>
<p><strong>감정 회복력이 강화되고 안정되면, 지금의 노력들이 10배 속도로 반응하기 시작한다.</strong></p>
<hr>
<h3 id="3-나다운-기록이-방향을-또렷하게-만든다">3) &#39;나다운 기록&#39;이 방향을 또렷하게 만든다.</h3>
<p>나는 &quot;생각하면서 쓰는 사람&quot;이 아니라 **&quot;쓰면서 길을 여는 사람&quot;이다.</p>
<p>내가 진짜 성장하는 순간은 언제냐면,</p>
<ul>
<li>일기에 정리할 때</li>
<li>프로젝트 회고할 때</li>
<li>노션에 기록할 때</li>
<li>요가 후 마음을 기록할 때</li>
<li>포트폴리오 정리할 때</li>
<li>루틴 체크할 때</li>
</ul>
<blockquote>
<p>기록이 방향을 만든다.
방향이 또렷해지면 불안이 줄고,
불안이 줄면 성장이 빨라진다.</p>
</blockquote>
<p>그래서, 사실 지름길은 단순하다:
<strong>기록하면 길이 열린다.</strong></p>
<p>기록은 감정을 안정시키고, 성장을 가속한다.</p>
<hr>
<h2 id="나의-지름길-요약">나의 지름길 요약</h2>
<p>1) 내가 이미 잘 하는 걸 루틴화하기
2) 불안을 줄여 마음의 파도 폭 낮추기
3) 기록으로 방향성 강화하기</p>
<p>아주 거창한 변화가 아니라
내가 이미 잘하는 걸 내 하루 일상으로 조금 더 자주 끌어들이는 것.</p>
<p>그게 나를 가장 빠르게 이상으로 데려간다.</p>
<blockquote>
<p>이상으로 가는 지름길을 파악하라. 어떤 이상을 단지 가지는 것만으로는 부족하다. <strong>우선은, 어떻게 해서든 이상을 향한 지름길을 나름대로 발견하는 것이 중요하다. 그렇지 않으면 자신의 행동과 삶의 방식이 전혀 정해지지 않은 채로 머물게 된다.</strong> 이상이라는 것을 멀리 있는 별처럼, 자신과 상관없는 듯 멀거니 바라보며 자신이 걸어야 할 길을 알지 못하는 것은 비참한 결과를 낳는다. 최악의 경우에는 이상을 가지지 못하고 살아가는 사람보다 훨씬 지리멸렬한 삶을 살게 된다.</p>
</blockquote>
]]></description>
        </item>
        <item>
            <title><![CDATA[감탄을 자아내는 축제 홈페이지, UE17 서울아트북페어 2025]]></title>
            <link>https://velog.io/@jan-nabee/%EA%B0%90%ED%83%84%EC%9D%84-%EC%9E%90%EC%95%84%EB%82%B4%EB%8A%94-%EC%B6%95%EC%A0%9C-%ED%99%88%ED%8E%98%EC%9D%B4%EC%A7%80-UE17-%EC%84%9C%EC%9A%B8%EC%95%84%ED%8A%B8%EB%B6%81%ED%8E%98%EC%96%B4-2025</link>
            <guid>https://velog.io/@jan-nabee/%EA%B0%90%ED%83%84%EC%9D%84-%EC%9E%90%EC%95%84%EB%82%B4%EB%8A%94-%EC%B6%95%EC%A0%9C-%ED%99%88%ED%8E%98%EC%9D%B4%EC%A7%80-UE17-%EC%84%9C%EC%9A%B8%EC%95%84%ED%8A%B8%EB%B6%81%ED%8E%98%EC%96%B4-2025</guid>
            <pubDate>Fri, 14 Nov 2025 06:31:45 GMT</pubDate>
            <description><![CDATA[<p>2025 서울아트북페어 홈페이지를 보고 한참을 들여다보았다.
단순히 “예쁘다”가 아니라, 사용자를 이해하는 UI/UX가 무엇인지 보여주는 교본 같은 사례다.</p>
<hr>
<h2 id="🔎-1-축제-홈페이지편해야-한다는-진리를-정확히-잡아냈다">🔎 1. “축제 홈페이지=편해야 한다”는 진리를 정확히 잡아냈다</h2>
<p>축제 홈페이지의 목적은 단순하다.</p>
<p><strong>사용자가 길을 잃지 않게 하는 것.
필요한 정보를 최소 클릭으로 제공하는 것.</strong></p>
<p>UE17 홈페이지는 이 기본을 압도적으로 잘 이해하고 있다.</p>
<hr>
<h2 id="🗺-2-축제-지도를-ui로-가져온-용기">🗺 2. ‘축제 지도’를 UI로 가져온 용기</h2>
<p>첫 화면부터 기존 축제 홈페이지의 틀을 완전히 깨버린다.
<strong>축제 맵 자체를 인터페이스로 활용했다는 점</strong>, 그리고 그 UI가 새롭지만 아주 직관적이라는 점.</p>
<p>이 접근은 쉽지 않은 선택이다.
지도 기반 UI는 잘못 만들면 혼란을 야기하기 때문이다.
그런데 UE17은 “시각적 재미 + 정보의 구조화”를 모두 잡았다.</p>
<hr>
<h2 id="📌-3-첫-화면에-필요한-기능이-전부-있다">📌 3. 첫 화면에 필요한 기능이 전부 있다</h2>
<ul>
<li><p>축제 소개</p>
</li>
<li><p>일정 / 장소</p>
</li>
<li><p>프레스킷 다운로드 버튼까지 “원클릭”</p>
</li>
</ul>
<p>보통 프레스킷과 행사장 맵은 2~3단계 탐색을 거쳐야 찾을 수 있는데,
UE17은 <strong>첫 화면에서 바로 접근 가능</strong>하다.
(홍보 담당자 입장에서 정말 세심하다고 느낀 부분)</p>
<p><img src="https://velog.velcdn.com/images/jan-nabee/post/7514fc35-9ad3-44b9-a1fa-cabe56c5c959/image.png" alt="">
<img src="https://velog.velcdn.com/images/jan-nabee/post/594c1bb7-4c98-4dff-836c-edfeb0062652/image.png" alt=""></p>
<hr>
<h2 id="📱-4-모바일-ux는-더-놀라웠다">📱 4. 모바일 UX는 더 놀라웠다</h2>
<p>모바일을 열어보고 더 감탄했다.
<img src="https://velog.velcdn.com/images/jan-nabee/post/2f6162ca-4442-4e77-80f3-06a43312d3ee/image.png" alt=""></p>
<h3 id="✦-꼭-필요한-기능만-상단에-모아둠">✦ 꼭 필요한 기능만 상단에 모아둠</h3>
<p>화장실, 물품보관함, 카페, 엘리베이터 등
<strong>관람객 기준의 핵심 버튼</strong>이 위에 고정되어 있다.</p>
<p>클릭하면 지도에 자연스럽게 핀이 꽂히면서 위치가 표시된다.
이건 정말 관람객 경험 중심 UX 다.</p>
<p><img src="https://velog.velcdn.com/images/jan-nabee/post/035a992d-287b-4ccf-a89b-3dfca30c7ef5/image.png" alt=""></p>
<h3 id="✦-1층·2층-토글-구조">✦ 1층·2층 토글 구조</h3>
<p>전체 지도를 한 화면에 표현했지만,
사용자가 구조를 정확히 이해하기는 어렵다.
그래서 <strong>층별 토글 기능을 UX 보완 요소로 배치</strong>해놨다.
작지만 중요한 개선이다.</p>
<hr>
<h2 id="🔍-5-검색-ux의-디테일">🔍 5. 검색 UX의 디테일</h2>
<p>검색창에 포커스를 두는 순간,</p>
<ul>
<li><p>공식부스</p>
</li>
<li><p>프로그램룸</p>
</li>
<li><p>신간의전당</p>
</li>
<li><p>잠깐낭독회</p>
</li>
</ul>
<p>축제의 주요 카테고리가 자동으로 노출된다.</p>
<p>즉, <strong>검색창을 ‘탐색’의 출발점으로 재구성한 UX</strong>다.
관람객에게 자연스럽게 축제의 핵심 프로그램을 소개하는 역할도 한다.</p>
<hr>
<h2 id="🗂-6-프로그램-정보-구조의-완성도">🗂 6. 프로그램 정보 구조의 완성도</h2>
<p><img src="https://velog.velcdn.com/images/jan-nabee/post/5e27133c-3d5d-4365-93f8-9b54b73140a4/image.png" alt=""></p>
<p>모바일에서는 ‘위로 올리는 바(bar)’ 형태로 프로그램 설명이 뜬다.</p>
<ul>
<li><p>날짜별 정렬</p>
</li>
<li><p>프로그램별 설명 제공</p>
</li>
<li><p>운영 주체와 부스 위치를 지도에서 바로 확인 가능</p>
</li>
</ul>
<p>이 UX는 “현장 이동이 많은 축제 사용자”를 100% 이해한 설계다.</p>
<hr>
<h2 id="🌿-7-정보-섹션의-미니멀리즘">🌿 7. 정보 섹션의 미니멀리즘</h2>
<p>‘더 즐길 것’, ‘관람 안내’ 등
모든 부가 정보도 가볍고 간결하게 정리되어 있다.
<img src="https://velog.velcdn.com/images/jan-nabee/post/7f93877a-c3bc-40d0-ab96-6d61b19bfbb7/image.png" alt=""></p>
<p>과하게 꾸미지 않아서 좋다.
<strong>행동의 방해요소를 모두 제거한 디자인.</strong>
<img src="https://velog.velcdn.com/images/jan-nabee/post/a04ec0a3-568f-479b-9320-0ce1fc3b22d8/image.png" alt=""></p>
<hr>
<h2 id="📧-8-뉴스레터도-훌륭하다">📧 8. 뉴스레터도 훌륭하다</h2>
<p><img src="https://velog.velcdn.com/images/jan-nabee/post/a0986d04-6ae0-417b-a0b8-52f77fd8b1e5/image.png" alt=""></p>
<p>UE17 뉴스레터는 스티비로 제작되었는데
사전 안내 콘텐츠 구성도 인상적이었다.</p>
<ul>
<li><p>행사 소개</p>
</li>
<li><p>참가팀 소개</p>
</li>
<li><p>올해 특징</p>
</li>
<li><p>먹을거리 가이드</p>
</li>
<li><p>현장 스케치</p>
</li>
</ul>
<p>축제 톤앤매너와 잘 맞고, 정보 조합도 매우 좋다.</p>
<hr>
<h2 id="✨-마무리-웹퍼블리싱을-배우는-입장에서-느낀-점">✨ 마무리: 웹퍼블리싱을 배우는 입장에서 느낀 점</h2>
<p>UE17 홈페이지는
“디자인이 아름다운 축제 홈페이지”가 아니라,</p>
<p><strong>사용자 경험의 문제를 정확하게 해결한 UX의 정답</strong>이다.</p>
<p>언젠가 축제나 대형 이벤트의 홈페이지를 기획할 기회가 온다면,
나도 이 사이트처럼 <strong>사용자의 ‘행동’을 기준으로 레이아웃을 설계하는 방식</strong>을 반드시 적용해보고 싶다.</p>
<p>주말에 가보고 싶었지만…
아쉽게도 이번엔 화면으로만 감상해야 할 것 같다.
그래도 배우는 건 많았다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[입찰 정보 미리 읽는 법: Lilys로 연간보고서 요약해 과업 예측하기]]></title>
            <link>https://velog.io/@jan-nabee/%EC%9E%85%EC%B0%B0-%EC%A0%95%EB%B3%B4-%EB%AF%B8%EB%A6%AC-%EC%9D%BD%EB%8A%94-%EB%B2%95-Lilys%EB%A1%9C-%EC%97%B0%EA%B0%84%EB%B3%B4%EA%B3%A0%EC%84%9C-%EC%9A%94%EC%95%BD%ED%95%B4-%EA%B3%BC%EC%97%85-%EC%98%88%EC%B8%A1%ED%95%98%EA%B8%B0</link>
            <guid>https://velog.io/@jan-nabee/%EC%9E%85%EC%B0%B0-%EC%A0%95%EB%B3%B4-%EB%AF%B8%EB%A6%AC-%EC%9D%BD%EB%8A%94-%EB%B2%95-Lilys%EB%A1%9C-%EC%97%B0%EA%B0%84%EB%B3%B4%EA%B3%A0%EC%84%9C-%EC%9A%94%EC%95%BD%ED%95%B4-%EA%B3%BC%EC%97%85-%EC%98%88%EC%B8%A1%ED%95%98%EA%B8%B0</guid>
            <pubDate>Fri, 14 Nov 2025 04:47:59 GMT</pubDate>
            <description><![CDATA[<p>연말·연초는 기관들이</p>
<ul>
<li><p>연간 성과보고서</p>
</li>
<li><p>차년도 업무계획</p>
</li>
<li><p>정책 추진결과</p>
</li>
<li><p>예산안</p>
</li>
<li><p>감사보고서</p>
</li>
</ul>
<p>같은 방대한 문서를 한꺼번에 공개하는 시기.</p>
<p>문제는… <strong>이 문서들이 너무 길고, 시간이 없다는 것.</strong></p>
<p>그래서 이번 글에서는
<strong>Lilys.ai를 이용한 ‘입찰 예측(Pre-bidding Insight)’ 방법</strong>을 정리한다.</p>
<p>AI가 잘하는 건 요약이고,
AE가 잘하는 건 맥락을 읽어 “과업의 씨앗”을 발견하는 것.
이 둘을 결합하면, 실무 속도가 빨라질 수 있다.</p>
<hr>
<h2 id="왜-lilys를-입찰-예측에-활용하는가">왜 Lilys를 입찰 예측에 활용하는가?</h2>
<p>Lilys는 단순한 요약툴이 아니라
<strong>정책 자료 → 논리 구조 → 요약 → 인사이트 추출</strong>에 특화된 AI다.</p>
<p>특히 공공기관 문서처럼</p>
<ul>
<li>길고</li>
<li>정책 언어로 되어 있고</li>
<li>핵심 파악이 어려운
자료들 요약에 정말 잘 맞는다.</li>
</ul>
<p>즉, <strong>AE가 연말 보고서를 3시간 들여 읽을 걸 3분 안에 80% 파악 가능</strong>하다는 뜻.</p>
<p>AI에게 맡길 부분은 맡기고,
사람(AE)은 판단·예측·기획에 집중하면 효율이 극대화된다.</p>
<hr>
<h2 id="어떤-문서를-lilys에-넣어야-할까">어떤 문서를 Lilys에 넣어야 할까?</h2>
<p>연말/연초에 공공기관들이 올리는 문서 중, 아래 5가지가 특히 중요하다.</p>
<p>✅ 1) 연간 홍보성과 보고서</p>
<p>홍보 Pain Point를 파악하는 데 가장 직접적이다.</p>
<p>✅ 2) 차년도 업무계획</p>
<p>이 문서에 “홍보 강화” 문구가 등장하면 과업으로 이어질 확율이 높다.</p>
<p>✅ 3) 정책 추진백서 · 주요사업 성과보고서</p>
<p>홍보가 부족했던 영역이 명확히 드러난다.</p>
<p>✅ 4) 예산안(사업별 예산 증감)</p>
<p>예산 증가 → 신규 홍보 사업 신설 가능성 높음.</p>
<p>✅ 5) 감사보고서</p>
<p>“대국민 소통 필요”, “인지도 개선 필요” 등의 문구는 사실상 입찰 예고편.</p>
<hr>
<h2 id="실전-시뮬레이션--lilys로-어떻게-입찰-예측할까">실전 시뮬레이션 — Lilys로 어떻게 입찰 예측할까?</h2>
<h3 id="0-보건복지부-공개자료-확보">0) 보건복지부 공개자료 확보</h3>
<p>(누구나 다운로드 가능한, 2025년+보건복지부+주요업무+추진계획)
<img src="https://velog.velcdn.com/images/jan-nabee/post/13889ca8-8da1-4ef5-b7ba-fb0df1d8552f/image.png" alt=""></p>
<blockquote>
<p>아래는 Lilys에 입력한 실전 프롬프트</p>
</blockquote>
<h3 id="1-과업-가능성-탐지">1. 과업 가능성 탐지</h3>
<pre><code>이 보고서에서 향후 홍보 대행 과업으로 연계될 가능성이 높은 항목만 뽑아줘.
근거가 되는 문장도 함께 제시해줘.</code></pre><p><img src="https://velog.velcdn.com/images/jan-nabee/post/7ca1e08d-f0f3-478b-a94a-505fdf2853c1/image.png" alt=""></p>
<h3 id="2-홍보-강화-영역-추출">2. 홍보 강화 영역 추출</h3>
<pre><code>이 문서에서 &#39;홍보가 부족한 부분&#39;, &#39;행동 변화가 필요한 부분&#39; 또는 &#39;대국민 소통이 필요한 영역&#39;을 5가지로 정리해줘.
왜 그렇게 판단했는지도 설명해줘.</code></pre><p><img src="https://velog.velcdn.com/images/jan-nabee/post/7cb0b7f9-4467-4a48-ab4a-6f8822550984/image.png" alt=""></p>
<h3 id="3-rfp-예상-요구조건-도출">3. RFP 예상 요구조건 도출</h3>
<pre><code>올해 홍보 과업의 RFP에서 포함될 가능성이 높은 요구사항을 항목별로 예측해줘.
기관의 정책 방향과 연계해서 정리해줘.</code></pre><h3 id="4-예산-흐름-분석">4. 예산 흐름 분석</h3>
<pre><code>예산 증가/감소 항목 중, 대국민 홍보 사업과 직접 연결될 가능성이 있는 항목을 알려줘.
그 이유도 설명해줘.</code></pre><h3 id="5-핵심-사업만-자동-요약">5. 핵심 사업만 자동 요약</h3>
<pre><code>보고서 전체에서 핵심 추진사업만 10줄 정도로 요약해줘.
특히 홍보와 관련된 사업은 강조해서 보여줘.</code></pre><p><img src="https://velog.velcdn.com/images/jan-nabee/post/d0aca554-4cc4-4462-91a5-c30e48735806/image.png" alt=""></p>
<h3 id="6-rfp-예상-항목-5개만-재정리">6. RFP 예상 항목 5개만 재정리</h3>
<pre><code>이 문서 기반으로 &#39;홍보 대행사가 실제로 수행할 가능성이 높은 과업&#39;을
정확한 문구로 5개만 뽑아줘.</code></pre><p><img src="https://velog.velcdn.com/images/jan-nabee/post/2d1d01da-7289-4779-9748-a88648e4e54b/image.png" alt=""></p>
<hr>
<h2 id="lilys를-써보니--느낀-점">Lilys를 써보니 — 느낀 점</h2>
<blockquote>
<p>이건 단순한 자동화가 아니라,
<strong>AE의 판단력을 강화하는 “지적 보조장치”</strong>처럼 느껴졌다.</p>
</blockquote>
<p>릴리스를 사용하면서 가장 크게 느낀 점은 두 가지였다.</p>
<h3 id="1-방대한-자료를-읽을-수-있는-양으로-축소해-준다">1) 방대한 자료를 “읽을 수 있는 양”으로 축소해 준다</h3>
<p>처음부터 끝까지 다 읽는 것이 아니라,
‘핵심만 남긴 상태’로 판단할 수 있다는 점이 압도적으로 편했다.</p>
<h3 id="2-ae의-핵심역량빠른-파악·인사이트-추출이-더-날카로워진다">2) AE의 핵심역량—빠른 파악·인사이트 추출—이 더 날카로워진다</h3>
<p>AI는 문서를 요약하고 구조를 잡아준다.
그 위에서 AE는
정책 방향 → 문제 → 기회 → 과업
이 흐름을 빠르게 연결할 수 있다.</p>
<p>결국, AI는 ‘읽어주는 도구’이고
AE는 ‘읽고 이해하는 사람’이라는 역할이 훨씬 분명해졌다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[KOCCA 2025 1분기 입찰 분석]]></title>
            <link>https://velog.io/@jan-nabee/KOCCA-2025-1%EB%B6%84%EA%B8%B0-%EC%9E%85%EC%B0%B0-%EB%B6%84%EC%84%9D</link>
            <guid>https://velog.io/@jan-nabee/KOCCA-2025-1%EB%B6%84%EA%B8%B0-%EC%9E%85%EC%B0%B0-%EB%B6%84%EC%84%9D</guid>
            <pubDate>Thu, 13 Nov 2025 11:05:29 GMT</pubDate>
            <description><![CDATA[<h1 id="🟣-kocca-2025-입찰-분석-홍보대행사가-봐야-할-행사·콘텐츠-용역만-선별해봤다">🟣 KOCCA 2025 입찰 분석: 홍보대행사가 봐야 할 ‘행사·콘텐츠 용역’만 선별해봤다</h1>
<p>레인보우 입사를 앞두고, 실무 감각을 조금이라도 빨리 되찾고 싶어서
KOCCA(한국콘텐츠진흥원) 2025년 3~4월 입찰 공고를 훑어보며
<strong>홍보대행사가 실제로 수행할 수 있는 사업들만 직접 선별</strong>해봤다.</p>
<p>KOCCA 입찰은 매년 유형이 크게 변하지 않지만,
2025 공고에는 유난히 뚜렷한 흐름이 보였다.</p>
<p>이 글은 단순한 목록 정리가 아니라
<strong>홍보AE가 KOCCA 입찰을 읽을 때 ‘무엇을 먼저 봐야 하는지’</strong>
그리고 <strong>2025 트렌드에서 발견되는 시사점</strong>까지 기록한 나의 분석 노트다.</p>
<hr>
<h2 id="🟡-1-이번-분석의-기준">🟡 1. 이번 분석의 기준</h2>
<p>전체 입찰 중 아래 유형만 선별했다.</p>
<h3 id="✅-포함한-과업">✅ 포함한 과업</h3>
<ul>
<li><p>행사 운영</p>
</li>
<li><p>콘텐츠 제작</p>
</li>
<li><p>SNS 운영</p>
</li>
<li><p>스타트업/IR/뮤직 프로그램 운영</p>
</li>
<li><p>캠페인 운영</p>
</li>
<li><p>홍보 패키지</p>
</li>
</ul>
<p><strong>→ 레인보우가 실제로 수주할 수 있는 과업들.</strong></p>
<h3 id="✅-제외한-과업">✅ 제외한 과업</h3>
<ul>
<li><p>정책 연구</p>
</li>
<li><p>재무/분석 중심 연구용역</p>
</li>
<li><p>법·정책 기반 조사</p>
</li>
<li><p><em>→ 전문 연구기관 담당이라 홍보대행사는 잘 하지 않는 영역.*</em></p>
</li>
</ul>
<hr>
<h2 id="🟢-2-2025-kocca-홍보·행사·콘텐츠-관련-입찰-전체-리스트">🟢 2. 2025 KOCCA ‘홍보·행사·콘텐츠’ 관련 입찰 전체 리스트</h2>
<p>아래는 2025년 3~4월 KOCCA 공고 중
홍보대행사가 수행 가능한 사업만 모아서 정리한 목록이다.</p>
<p>내가 직접 정리한 엑셀 버전 그대로 가져왔다.</p>
<blockquote>
<p>📌 [긴급], [변경공고] 등의 문구는 모두 제거했다.
📌 전체는 행사 중심, SNS/영상 제작 중심, 글로벌/IR 중심으로 분류된다.</p>
</blockquote>
<hr>
<h3 id="🎤-행사--공연-운영-중심">🎤 행사 &amp; 공연 운영 중심</h3>
<ul>
<li><p>2025년 멀티턴 쇼케이스 운영 위탁용역</p>
</li>
<li><p>2025년 시리즈 온 보드 행사 운영</p>
</li>
<li><p>2025 콘텐츠 스타트업 주요행사 통합 운영 및 비즈니스 지원
(투자유치·PoC 포함)</p>
</li>
<li><p>2025 콘텐츠 공정문화 확산 캠페인 운영 용역</p>
</li>
</ul>
<h3 id="🌏-글로벌·ir·스타트업-지원-프로그램">🌏 글로벌·IR·스타트업 지원 프로그램</h3>
<ul>
<li><p>U-KNOCK 해외권역 운영</p>
</li>
<li><p>2025 해외 방송마켓 한국공동관 운영</p>
</li>
<li><p>2025 콘텐츠 스타트업 글로벌 진출지원 프로그램 운영</p>
</li>
</ul>
<h3 id="🎮-게임·체험·전시-운영">🎮 게임·체험·전시 운영</h3>
<ul>
<li><p>2025년 신기술융합콘텐츠 체험거점 운영</p>
</li>
<li><p>2025년 게임더하기(성과창출형) 운영 및 관리</p>
</li>
<li><p>2025년 게임더하기(초기진입형) 운영 및 관리</p>
</li>
</ul>
<h3 id="🎵-음악·sns·영상-콘텐츠">🎵 음악·SNS·영상 콘텐츠</h3>
<ul>
<li><p>2025 KOCCA뮤직스튜디오 운영</p>
</li>
<li><p>2025 KOCCA MUSIC SNS채널 운영</p>
</li>
<li><p>2025 하이브리드 음악 영상 제작 위탁용역</p>
</li>
<li><p>2025년 플랫폼 기반 뮤지션 육성지원(뮤즈온)</p>
</li>
</ul>
<h3 id="🎓-교육·아카데미-운영--홍보">🎓 교육·아카데미 운영 + 홍보</h3>
<ul>
<li>2025 뉴콘텐츠아카데미 단기과정 운영 및 홍보</li>
</ul>
<h3 id="🎤-포럼·세미나-운영">🎤 포럼·세미나 운영</h3>
<ul>
<li>2025년 방송영상 리더스포럼 운영 위탁용역</li>
</ul>
<h3 id="🧱-콘텐츠-제작·홍보-패키지">🧱 콘텐츠 제작·홍보 패키지</h3>
<ul>
<li><p>방송영상콘텐츠 기획개발 사업화지원</p>
</li>
<li><p>2025~2026 스토리숲 운영 및 콘텐츠 관리</p>
</li>
<li><p>KNOCK 투자유치 지원 위탁용역</p>
</li>
</ul>
<p>총 19개 사업.
여기에 연구용역까지 포함하면 40개가 넘지만, 홍보AE 입장에서는 이 정도만 보면 충분하다.</p>
<hr>
<h2 id="🔵-3-kocca-2025-입찰에서-보인-3가지-큰-흐름-ae-실무-인사이트">🔵 3. KOCCA 2025 입찰에서 보인 3가지 큰 흐름 (AE 실무 인사이트)</h2>
<h3 id="🟣-➊-행사-운영--홍보-패키징이-기본-구조가-됨">🟣 ➊ “행사 운영 + 홍보 패키징”이 기본 구조가 됨</h3>
<p>예전에는 행사, 홍보, 영상 제작이 따로 발주됐는데
2025년 공고는 대부분 <strong>‘한 대행사가 통합 운영하는 구조’</strong>로 바뀌었다.</p>
<p>예:</p>
<ul>
<li><p>행사 운영 + SNS 콘텐츠 + 영상 기록 + 보도자료</p>
</li>
<li><p>현장 운영 + 홍보 캠페인</p>
</li>
<li><p>프로그램 운영 + 성과 홍보</p>
</li>
</ul>
<p>➡ 기관은 <strong>“한 번에 맡길 수 있는 파트너”</strong>를 원한다.
➡ AE는 <strong>운영·콘텐츠·홍보를 한 흐름으로 설계하는 역량</strong>이 필요.</p>
<hr>
<h3 id="🟢-➋-음악·스타트업·글로벌-등-전문-프로그램-운영이-강화">🟢 ➋ 음악·스타트업·글로벌 등 “전문 프로그램 운영”이 강화</h3>
<p>뮤즈온, 뮤직스튜디오, 글로벌 진출 프로그램, IR 지원 사업 등
<strong>각 영역별 전문성 기반 프로그램 운영</strong>이 늘었다.</p>
<p>즉,</p>
<blockquote>
<p>단순 홍보대행이 아니라
<strong>프로그램 매니지먼트(PM) 역량</strong>을 가진 AE가 훨씬 유리한 구조.</p>
</blockquote>
<hr>
<h3 id="🔵-➌-성과-기반-운영이-필수가-됨">🔵 ➌ ‘성과 기반 운영’이 필수가 됨</h3>
<p>비록 연구용역은 제외했지만,
행사·지원 프로그램에서도 성과 보고서의 수준이 강화되고 있다.</p>
<ul>
<li><p>데이터 기반 운영</p>
</li>
<li><p>참여자 만족도</p>
</li>
<li><p>콘텐츠 성과</p>
</li>
<li><p>SNS 지표</p>
</li>
<li><p>IR 매칭 결과</p>
</li>
</ul>
<p>➡ AE는 <strong>성과를 설명하는 구조화 능력</strong>을 갖춰야 한다.</p>
<hr>
<h3 id="🟡-4-트렌드코리아-2026과-연결해-본-시사점">🟡 4. 트렌드코리아 2026과 연결해 본 시사점</h3>
<p>KOCCA 입찰을 트렌드코리아 2026 키워드와 연결해서 보면
이 세 가지 키워드가 특히 선명하게 보인다.</p>
<h4 id="🔎-zero-click">🔎 Zero-click</h4>
<p>→ 콘텐츠·행사 정보도 “요약형·짧은 형식”으로 요구됨
→ 사업 제안서도 “한눈에 보이는 구조”가 강점</p>
<h4 id="🔎-feel-conomy">🔎 Feel-conomy</h4>
<p>→ 행사·캠페인 기획 시 감정 동기 요소가 더 중요
→ 공정문화·청년 프로그램·콘텐츠 체험 등이 이 흐름과 맞물림</p>
<h4 id="🔎-ax-조직">🔎 AX 조직</h4>
<p>→ AI × 경험 설계 기반 조직 형태 확산
→ AE도 운영/콘텐츠/데이터를 모두 다루는 방향으로 변함</p>
<hr>
<h2 id="🟣-5-결론">🟣 5. 결론</h2>
<p>KOCCA 입찰을 한번에 훑어보니,
2025년의 핵심은 다음 한 문장으로 요약된다.</p>
<blockquote>
<p><strong>“행사와 콘텐츠 운영을 통합적으로 다룰 수 있는 홍보대행사가 필요하다.”</strong></p>
</blockquote>
<p>2025 KOCCA 공고 흐름을 보면 기관이 원하는 건 “기획-운영-홍보-성과측정”의 통합 패키지다.
그래서 AE가 PT하거나 제안서를 만들 때 다음 요소를 고려해야 한다.</p>
<hr>
<h3 id="①-통합-운영-역량-→-kocca가-가장-중요하게-보는-지점">① “통합 운영 역량” → KOCCA가 가장 중요하게 보는 지점</h3>
<p>2025 입찰은 전부 <strong>행사 + 홍보 + 콘텐츠 제작 + 프로그램 운영을 묶어서 발주</strong>한다.</p>
<h4 id="🔥-pt에서-강조할-문장-예시">🔥 PT에서 강조할 문장 예시</h4>
<ul>
<li><p>“이번 사업은 <strong>운영·콘텐츠·홍보·성과</strong>를 하나의 흐름으로 설계합니다.”</p>
</li>
<li><p>“단순 운영이 아니라 <strong>프로그램 매니지먼트 기반 운영</strong>을 제안합니다.”</p>
</li>
</ul>
<h4 id="🔧-준비해야-할-것">🔧 준비해야 할 것</h4>
<ul>
<li><p>운영 → 홍보 → 콘텐츠 → 성과의 <strong>원페이지 흐름도</strong></p>
</li>
<li><p>운영/콘텐츠/홍보가 각각 따로가 아니라 “하나의 스토리”임을 보여주는 구조</p>
</li>
</ul>
<hr>
<h3 id="②-프로그램-pm-역량-→-단순-ae가-아니라-program-manager여야-함">② “프로그램 PM 역량” → 단순 AE가 아니라 Program Manager여야 함</h3>
<p>뮤즈온, 글로벌 IR, 스타트업 프로그램, 뮤직 스튜디오 등
<strong>전문 분야 프로그램 운영 경험</strong>이 중요해지고 있음.</p>
<h4 id="🔥-pt-포인트">🔥 PT 포인트</h4>
<ul>
<li><p>“OO 분야 운영 경험 기반으로, 프로그램 단위 설계가 가능합니다.”</p>
</li>
<li><p>“홍보AE가 아닌 PM 관점에서 운영합니다.”</p>
</li>
</ul>
<h4 id="🔧-준비할-것">🔧 준비할 것</h4>
<ul>
<li>과거 실무에서 했던 PM 요소들 재정의해서 포트폴리오화
(일정 운영, 참여자 관리, 매칭 프로그램 설계, KPI 관리 등)</li>
</ul>
<hr>
<h3 id="③-콘텐츠·sns의-다층-구조-→-행사-홍보는-콘텐츠-제작력에서-결정남">③ “콘텐츠·SNS의 다층 구조” → 행사 홍보는 콘텐츠 제작력에서 결정남</h3>
<p>행사 홍보의 실체는 콘텐츠 패키징 능력이다.</p>
<h4 id="🔥-pt에서-강조할-요소">🔥 PT에서 강조할 요소</h4>
<ul>
<li><p>숏폼 구조</p>
</li>
<li><p>하이라이트 영상</p>
</li>
<li><p>SNS 이벤트 설계</p>
</li>
<li><p>보도자료 패키지</p>
</li>
<li><p>인터뷰 콘텐츠</p>
</li>
</ul>
<h4 id="🔧-준비해야-할-것-1">🔧 준비해야 할 것</h4>
<ul>
<li><p>포트폴리오에 넣을 콘텐츠 템플릿 3종
(예: ‘행사 숏폼’, ‘참여자 인터뷰’, ‘요약 카드뉴스’)</p>
</li>
<li><p>벨로그에 콘텐츠 제작 프로세스 정리해두기</p>
</li>
</ul>
<hr>
<h3 id="④-데이터·성과-기반-운영-→-kocca가-점점-더-수치-기반-레포트를-요구">④ “데이터·성과 기반 운영” → KOCCA가 점점 더 ‘수치 기반 레포트’를 요구</h3>
<p>2025 공고 대부분이 결과보고서와 성과지표 항목이 강화됨.</p>
<h4 id="🔥-pt-문구">🔥 PT 문구</h4>
<ul>
<li><p>“성과 중심 운영을 제안합니다.”</p>
</li>
<li><p>“데이터 기반 운영으로 사업의 재발주 가능성을 높입니다.”</p>
</li>
</ul>
<h4 id="🔧-준비해야-할-것-2">🔧 준비해야 할 것</h4>
<ul>
<li><p>지표 정의 템플릿
(참여자 수/만족도/SNS도달률/영상조회수/IR매칭 등)</p>
</li>
<li><p>샘플 성과 보고서 1장짜리</p>
</li>
</ul>
<hr>
<h3 id="⑤-제안서의-zero-click-구조-→-기관-담당자가-5초-안에-이해하게-만들어야-함">⑤ “제안서의 Zero-click 구조” → 기관 담당자가 5초 안에 이해하게 만들어야 함</h3>
<p>2025 트렌드에서 Zero-click은 KOCCA 제안서에도 그대로 적용된다.</p>
<h4 id="🔥-pt-문구-1">🔥 PT 문구</h4>
<ul>
<li>“제안서가 한 눈에 구조를 이해할 수 있도록 설계했습니다.”</li>
</ul>
<h4 id="🔧-준비해야-할-것-3">🔧 준비해야 할 것</h4>
<ul>
<li><p>핵심 요약표 (문장 X → 키워드형)</p>
</li>
<li><p>‘한 눈에 보는 제안 정리’ 1장 슬라이드</p>
</li>
</ul>
<hr>
<h3 id="⑥-피지컬-행사·체험·공정문화-등-감정형-설계-→-컨셉과-스토리텔링의-시대">⑥ “피지컬 행사·체험·공정문화 등 감정형 설계” → 컨셉과 스토리텔링의 시대</h3>
<p>Feel-conomy 트렌드와 맞물려서
행사에서도 ‘감정 설계’가 중요한 경쟁 포인트.</p>
<h4 id="🔥-pt-문구-2">🔥 PT 문구</h4>
<ul>
<li><p>“참여자의 경험을 감정 기반으로 설계합니다.”</p>
</li>
<li><p>“행사가 끝나도 기억되는 감정 포인트를 제공합니다.”</p>
</li>
</ul>
<h4 id="🔧-준비해야-할-것-4">🔧 준비해야 할 것</h4>
<ul>
<li><p>체험형 프로그램 설계 템플릿</p>
</li>
<li><p>참여자 동선 기반 감정곡선 맵 (Emotion journey map)</p>
</li>
</ul>
<hr>
<h3 id="⑦-axexperience-×-ai-기반-운영-→-2025년-이후의-기본-역량">⑦ “AX(Experience × AI) 기반 운영” → 2025년 이후의 기본 역량</h3>
<p>콘텐츠 운영 + 데이터 설계 + AI 기반 고도화가 하나의 패키지로 요구됨.</p>
<h4 id="🔥-pt-문구-3">🔥 PT 문구</h4>
<ul>
<li><p>“AI 기반 모니터링 및 콘텐츠 생성으로 효율·완성도를 높입니다.”</p>
</li>
<li><p>“데이터 기반 의사결정(AX) 체계를 적용합니다.”</p>
</li>
</ul>
<h4 id="🔧-준비해야-할-것-5">🔧 준비해야 할 것</h4>
<ul>
<li><p>AI 활용 홍보 실습 예시 (요약·콘텐츠 제작·모니터링 등)</p>
</li>
<li><p>자동 리포트 생성 흐름도 1장</p>
</li>
</ul>
<hr>
<h3 id="⑧-리스크-관리--시나리오-운영-→-워낙-행사·운영형-사업이-많아-리스크-관리-능력이-중요해짐">⑧ “리스크 관리 + 시나리오 운영” → 워낙 행사·운영형 사업이 많아 리스크 관리 능력이 중요해짐</h3>
<h4 id="🔥-pt-문구-4">🔥 PT 문구</h4>
<ul>
<li><p>“운영 리스크 10가지 요소를 사전 관리합니다.”</p>
</li>
<li><p>“시나리오 기반 행사 운영 체계를 적용합니다.”</p>
</li>
</ul>
<h4 id="🔧-준비할-것-1">🔧 준비할 것</h4>
<ul>
<li><p>비상상황 대응 시나리오</p>
</li>
<li><p>행사 운영 3단계 체크리스트
(준비–운영–마무리)</p>
</li>
</ul>
<hr>
<p>입사 전 워밍업으로 시작한 작업이지만
실무에서 바로 쓸 수 있는 정리라 기록해둔다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[입사 전 준비: 트렌드코리아 2026으로 정리한 공공PR 인사이트]]></title>
            <link>https://velog.io/@jan-nabee/%EC%9E%85%EC%82%AC-%EC%A0%84-%EC%A4%80%EB%B9%84-%ED%8A%B8%EB%A0%8C%EB%93%9C%EC%BD%94%EB%A6%AC%EC%95%84-2026%EC%9C%BC%EB%A1%9C-%EC%A0%95%EB%A6%AC%ED%95%9C-%EA%B3%B5%EA%B3%B5PR-%EC%9D%B8%EC%82%AC%EC%9D%B4%ED%8A%B8</link>
            <guid>https://velog.io/@jan-nabee/%EC%9E%85%EC%82%AC-%EC%A0%84-%EC%A4%80%EB%B9%84-%ED%8A%B8%EB%A0%8C%EB%93%9C%EC%BD%94%EB%A6%AC%EC%95%84-2026%EC%9C%BC%EB%A1%9C-%EC%A0%95%EB%A6%AC%ED%95%9C-%EA%B3%B5%EA%B3%B5PR-%EC%9D%B8%EC%82%AC%EC%9D%B4%ED%8A%B8</guid>
            <pubDate>Thu, 13 Nov 2025 05:07:28 GMT</pubDate>
            <description><![CDATA[<p>트렌드코리아2026의 화두는 AI.
재입사 전 업무 감각을 세우기 위한 첫 목표는 트렌드코리아2026 정독하기, 그리고 나름의 인사이트 벨로그에 정리하기.</p>
<blockquote>
<ul>
<li>올해의 핵심 화두는 단연 AI와 행동 변화(Behavior Shift).</li>
</ul>
</blockquote>
<ul>
<li>아래는 10개 키워드를 공공PR 시각에서 재해석한 인사이트 노트</li>
</ul>
<hr>
<h2 id="제로클릭-zero-click">제로클릭 (Zero-click)</h2>
<blockquote>
<p>“검색→클릭→탐색” 없는 시대. 정보는 ‘자동으로 도달’해야 한다.</p>
</blockquote>
<p>검색→클릭 방식이 점점 사라지고, 추천/자동화/AI 응답으로 소비가 빠르게 이루어진다는 트렌드.</p>
<p>마케팅 설계나 웹디자인 시 &quot;사용자가 최소한의 클릭으로 원하는 정보에 도달&quot; 하도록 흐름을 짜야 함. SEO 뿐 아니라 AI 추천/자동완성 등도 고려해야 한다. GEO라고 했었나?
<em>**GEO — Generative Engine Optimization, 생성AI 중심 검색최적화 패턴</em></p>
<h3 id="🔎-공공-pr-적용">🔎 공공 PR 적용</h3>
<p>국민들이 정부 사이트·보도자료를 찾아 읽지 않는다.</p>
<p>요약형/자동 추천/한눈에 정보 구조가 필요.</p>
<ul>
<li><p>기관 발표자료에 <strong>“제로 클릭 기반 국민경험 개선”</strong>이라는 키워드 활용 검토</p>
</li>
<li><p>카드형 요약, 핵심 3초 요약, 한 페이지 완결형 정보 구조</p>
</li>
<li><p>SNS 콘텐츠도 “1카드에 메시지 하나”</p>
</li>
<li><p>복잡한 제도 설명을 앱 알림·리마인더·AI 요약 기반으로 간단히</p>
</li>
</ul>
<hr>
<h2 id="필코노미-feel-conomy">필코노미 (Feel-conomy)</h2>
<blockquote>
<p>공공도 감정 기반 커뮤니케이션이 필요하다</p>
</blockquote>
<p>감정·기분이 소비의 중심이 된다—이성적 기능이나 가격보다 ‘느낌’이 구매를 움직이는 요소로.</p>
<p>사용자의 감정을 자극하는 UI/UX, 브랜드 메시지, 콘텐츠 기획이 중요. </p>
<h3 id="🔎-공공-pr-적용-1">🔎 공공 PR 적용</h3>
<p>공공기관은 ‘객관·사실·절차’ 중심 메시지를 반복하는 경향</p>
<p>하지만 국민을 움직이는 건 <strong>감정적 공감→행동 변화</strong></p>
<ul>
<li>보건, 환경, 안전 캠페인에서</li>
<li><em>“정보 전달”보단 “감정 스토리텔링”*</em>이 행동 변화를 더 잘 만든다는 인사이트로 기획안 설득</li>
</ul>
<p>예:</p>
<pre><code>- 재활용 캠페인 → “내가 버린 하나로 누구의 하루가 달라질까?”

- 고독사 예방 → ‘당신이 생각보다 중요한 사람입니다’ 감정선 메시지</code></pre><hr>
<h2 id="휴먼-인-더-루프-human-in-the-loop">휴먼 인 더 루프 (Human-in-the-loop)</h2>
<blockquote>
<p>AI 시대일수록, &#39;사람의 개입&#39;이 신뢰를 만든다.</p>
</blockquote>
<p>AI가 기능을 대체해도 ‘사람’이 개입하고 질문하고 판단하는 단계가 중요해진다는 개념.</p>
<p>디자인, 웹 개발시 AI 도구를 활용하는데, &#39;어디까지 자동&#39;이고, &#39;어디서 어떻게 사람이 개입&#39;하는지가 관건. </p>
<h3 id="🔎-공공-pr-적용-2">🔎 공공 PR 적용</h3>
<p>공공기관의 중요한 가치:** 신뢰, 투명성, 책임성**</p>
<p>AI가 정보 요약·자동 응답을 도와도,
<strong>최종 메시지는 ‘사람의 눈’으로 검증된다</strong>는 스토리를 강조</p>
<ul>
<li>“공공서비스 안내 챗봇 + 실무자 점검 프로세스”를 홍보 메시지로 구성</li>
<li>“AI가 바꾸는 행정, 그러나 최종 검증은 사람” 같은 캠페인 슬로건 제안</li>
<li>홍보자료 제작 시, AI 도구 활용 + 최종 인간 편집 과정을 투명하게 설명
<em>(→ 기관의 책임성과 신뢰 확보에 아주 적합한 키워드라서 발표 때 쓰기 좋음.)</em></li>
</ul>
<hr>
<h2 id="레디코어-ready-core">레디코어 (Ready-core)</h2>
<p>불확실성 시대에 스스로 대비하고 준비하는 역량이 중요하다는 의미.</p>
<p>포트폴리오나 브랜딩 구축할 때 ‘변화에 빠르게 대응할 수 있도록 준비됐다’는 인상이 중요. </p>
<ul>
<li>“레디코어 기반의 안정적 수행체계 구축”<ol>
<li>리스크 사전 감지 시스템</li>
<li>다중 대응 시나리오 구축</li>
<li>즉시 실행 가능한 비상 커뮤니케이션 프로토콜 </li>
</ol>
</li>
</ul>
<hr>
<h2 id="ax조직-ax-organization">AX조직 (AX Organization)</h2>
<blockquote>
<p>AI 전환 시대의 유연 조직 구조</p>
</blockquote>
<p>AI 전환(Automation / eXperience) 시대의 조직 형태—유연하고 프로젝트 중심적 조직 구조.</p>
<p>내게 있어서.. 이 트렌드는 “개발 + 마케팅” 교차 역할을 맡을 유연 조직에서 강점</p>
<h3 id="🔎-공공기관-pr에서의-의미">🔎 공공기관 PR에서의 의미</h3>
<p>공공기관은 느리고 복잡하다는 이미지</p>
<p>그래서 “AX”는 기관에게 매우 매력적인 변화의 언어</p>
<ul>
<li>기획안에서 &quot;AX 전환&quot; → AI 리포트 자동화, 챗GPT 기반 질의응답, 반복형 디자인 자동화</li>
<li>“작은 실험 → 빠른 피드백 → 반복 개선” 방식 제안
→ 기존의 느린 PR문화와 대비되어 신선.</li>
</ul>
<hr>
<h2 id="픽셀-라이프-pixelated-life">픽셀 라이프 (Pixelated Life)</h2>
<blockquote>
<p>작은 경험, 작은 과업, 짧은 콘텐츠가 중심.</p>
</blockquote>
<p>크고 길게 계획하기보다 작고 빠르게, 미니 경험을 중심으로 한 삶의 방식.
트렌드가 매우 빠르게 지나간다. 웹/앱 설계 시 ‘마이크로 인터랙션’, ‘짧은 집중 경험’, ‘모바일 기기 최적화’ 등을 강하게 고려</p>
<h3 id="🔎-공공-pr-적용-3">🔎 공공 PR 적용</h3>
<p>공공은 ‘대형 캠페인’ 위주
→ 그런데 요즘은 짧은 반복 콘텐츠가 더 효과적</p>
<ul>
<li>“대형 캠페인 1개 + 피드형 마이크로 콘텐츠 20개” 구성<ul>
<li>하루 1분 보건 안내</li>
<li>10초 국민안전 팁</li>
<li>카드뉴스 1장짜리 행정 정보</li>
</ul>
</li>
</ul>
<hr>
<h2 id="프라이스-디코딩-price-decoding">프라이스 디코딩 (Price Decoding)</h2>
<blockquote>
<p>국민은 세금이 어디에 어떻게 쓰였는지를 “정확히 알고 싶어한다.&quot;</p>
</blockquote>
<p>소비자가 가격구조를 해독하고 ‘납득 가능한 가격’에만 지갑을 연다는 흐름.</p>
<p>마케팅 메시지에서 “왜 이 가격인가”, “어떤 가치인가”를 명확히 전달하는 전략이 더 중요
가격 숨기기보다 설명, 설득, 납득시키는 것이 중요.</p>
<h3 id="🔎-공공-pr에서-핵심">🔎 공공 PR에서 핵심</h3>
<p>세금 사용 정당성 확보</p>
<p>비용 구조의 투명성 전달</p>
<ul>
<li>프로젝트 제안 시 &quot;비용 사용 투명성 콘텐츠 패키지&quot; 설계</li>
<li>00사업 홍보 시 
  -&quot;예산 대비 얼마나 효율/성과 발생했는가&quot;
  -&quot;비용 구조를 쉽게 풀어 설명&quot; → 신뢰 강화</li>
</ul>
<hr>
<h2 id="건강지능-hq--health-quotient">건강지능 (HQ = Health Quotient)</h2>
<blockquote>
<p>건강은 행동을 설계하는 중심 가치</p>
</blockquote>
<p>단순히 IQ/EQ 넘어서 ‘건강’을 어떻게 관리하고 응용하느냐가 핵심 역량으로 떠오름.</p>
<p>웰니스 관련 마케팅, 프로젝트 기획에서 이 흐름을 잡을 것. </p>
<h3 id="🔎-공공-pr-적용-4">🔎 공공 PR 적용</h3>
<p>보건·식품·정신건강 분야 캠페인에 활용 가능</p>
<p>“건강을 돕는 행동 설계”가 요점</p>
<ul>
<li>복지부/지자체 건강 프로그램 홍보</li>
<li>건강한 식습관 행동유도 콘텐츠</li>
</ul>
<hr>
<h2 id="15가구-15-household">1.5가구 (1.5 Household)</h2>
<blockquote>
<p>완전한 1인도, 전통 가족도 아닌 유연 결합형 생활단위</p>
</blockquote>
<p>전통적 가족 형태(2인 부모+자녀)도, 완전 독립 1인 가구도 아닌 ‘유연 결합형 생활단위’가 증가한다는 개념.
타겟 층 설정 시 “나 혼자이지만 완전 1인이 아니다”, “유연하게 구성된 생활” 이런 라이프스타일 세그먼트를 고려하면 마케팅 타당성이 높아..질수도?</p>
<h3 id="🔎-공공-pr-적용-5">🔎 공공 PR 적용</h3>
<p>정책 타겟을 세분화할 때 매우 유용</p>
<p>청년정책, 복지정책 공공 캠페인에서 중요해짐</p>
<ul>
<li>“1인 가구=혼자 사는 사람”이라는 오래된 프레임을 깨고 다양한 생활 단위를 이해하는 기획 제안</li>
<li>정책 수혜자 정의할 때 새로운 시각 제시 가능</li>
</ul>
<hr>
<h2 id="근본이즘-fundamental-ism">근본이즘 (Fundamental-ism)</h2>
<blockquote>
<p>‘진짜’ ‘원조’ ‘근본 있는’ 것에 대한 회귀</p>
</blockquote>
<p>복잡하고 빠른 변화 속에서 ‘원조’, ‘진짜’, ‘근본 있는 것’에 대한 회귀 현상이 커진다는 흐름.
브랜드 스토리텔링에서 “진짜”, “기원”, “유래”, “근본 깊이” 같은 키워드를 강화하면 신뢰감과 차별화 생길 수 있다.</p>
<h3 id="🔎-공공-pr-적용-6">🔎 공공 PR 적용</h3>
<p>전통, 역사, 지역 유산 캠페인에 딱 맞음</p>
<p>기관의 권위·정통성 홍보에도 효과적</p>
<ul>
<li>지역 축제, 역사 정책, 전통주·문화 콘텐츠 홍보</li>
<li>“유래·기원·근본” 스토리텔링 구조 개발</li>
<li>공공 브랜딩에서 “오래되고 신뢰할 수 있는 정체성” 강조</li>
</ul>
<hr>
<p>개인적으로는 개발(Frontend)과 PR 경험 양쪽을 이해하는 입장에서,
AX 조직과 AI 기반 협업 구조는 앞으로 AE가 경쟁력을 가지는 핵심 영역이라고 판단한다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[Firebase Firestore로 CRUD 게시판 만들기 실습]]></title>
            <link>https://velog.io/@jan-nabee/Firebase-Firestore%EB%A1%9C-CRUD-%EA%B2%8C%EC%8B%9C%ED%8C%90-%EB%A7%8C%EB%93%A4%EA%B8%B0-%EC%8B%A4%EC%8A%B5</link>
            <guid>https://velog.io/@jan-nabee/Firebase-Firestore%EB%A1%9C-CRUD-%EA%B2%8C%EC%8B%9C%ED%8C%90-%EB%A7%8C%EB%93%A4%EA%B8%B0-%EC%8B%A4%EC%8A%B5</guid>
            <pubDate>Mon, 08 Sep 2025 06:10:14 GMT</pubDate>
            <description><![CDATA[<p>너무 어려운 게시판 구현하기..</p>
<p>게시판 구현하는 걸 <code>firestore Database</code>로 실습했다.</p>
<h2 id="indexhtml-게시판-목록-페이지">index.html (게시판 목록) 페이지</h2>
<p>index 페이지 만드는 것부터가 어려웠는데...</p>
<p>list라는 클래스를 부여한 div 태그 안에 데이터를 만드는 것부터 시작이다.</p>
<p><img src="https://velog.velcdn.com/images/jan-nabee/post/6afb678b-da25-4c9c-b12f-a00629a369c2/image.png" alt=""></p>
<p><code>import { collection, getDocs, query, orderBy } from &quot;…/firebase-firestore.js&quot;;</code>
파이어스토어에서 쿼리 만들고 문서 묶음 읽는 함수들 로드.
<img src="https://velog.velcdn.com/images/jan-nabee/post/f0bfd359-7374-4599-98cb-9c9585c69f7e/image.png" alt=""></p>
<p><code>const q = query(collection(db, &quot;posts&quot;), orderBy(&quot;createdAt&quot;,&quot;desc&quot;));</code></p>
<ul>
<li><code>posts</code> 컬렉션을 대상으로,</li>
<li><code>createdAt</code> 필드를 기준으로 <strong>내림차순(desc)</strong> 정렬하는 쿼리를 생성.</li>
</ul>
<p><img src="https://velog.velcdn.com/images/jan-nabee/post/e9041947-97fb-4037-937a-810b22906260/image.png" alt=""></p>
<p><code>const snap = await getDocs(q);</code></p>
<ul>
<li>위 쿼리를 실행해서 스냅샷(문서 모음)을 받아옴.</li>
</ul>
<p><img src="https://velog.velcdn.com/images/jan-nabee/post/150eb34d-a44f-401a-9186-2bb09ddade5f/image.png" alt=""></p>
<ul>
<li>목록을 비워서 중복 렌더링 방지(새로고침 느낌).
<img src="https://velog.velcdn.com/images/jan-nabee/post/a1db90e2-1fb1-4dbe-8d33-2d7df03c1fd3/image.png" alt=""></li>
<li>결과에 담긴 각 문서마다 반복</li>
<li><code>const d = docSnap.data();</code> →문서 실제 데이터 객체</li>
<li><code>const id = docSnap.id;</code> →문서 ID(문서 식별자).</li>
<li><code>const li = document.greateElement(&#39;a&#39;);</code> →목록 아이템으로 쓸 <code>&lt;a&gt;</code>생성.
<img src="https://velog.velcdn.com/images/jan-nabee/post/d6a69ffb-42a1-4ef3-91c1-199fe00ff248/image.png" alt=""></li>
<li>읽기 페이지로 이동하도록 링크 설정(쿼리스트링으로 문서 ID 전달)</li>
</ul>
<p><img src="https://velog.velcdn.com/images/jan-nabee/post/710a36d5-227a-448b-98ab-abf40873cfbe/image.png" alt=""></p>
<ul>
<li>제목 표시. <code>??</code>(null 병합 연산자): <code>d.title</code>이 <code>null/undefined</code>면 “(제목 없음)”로 대체.</li>
<li>날짜 표시. <code>?.</code>(옵셔널 체이닝): <code>createdAt</code>이 없거나 타입이 달라도 에러 없이 건너뜀.</li>
<li>Firestore <code>Timestamp</code>라면 <code>toDate()</code>로 JS <code>Date</code>로 바꾸고, <code>toLocaleString()</code>으로 지역 시간 문자열로 변환.</li>
</ul>
<p><img src="https://velog.velcdn.com/images/jan-nabee/post/5748f349-d93a-40c2-beec-15fefecb7954/image.png" alt=""></p>
<ul>
<li>완성된 링크를 목록 컨테이너에 추가.</li>
</ul>
<hr>
<h2 id="writehtml-뜯어보기">write.html 뜯어보기</h2>
<p><img src="https://velog.velcdn.com/images/jan-nabee/post/a9bf4409-23cc-44d7-82ca-81923c3fa862/image.png" alt=""></p>
<p>불러온 함수들 :</p>
<ul>
<li><code>collection</code> : 컬렉션 선택</li>
<li><code>addDoc</code> : 새 문서 추가.</li>
<li><code>serverTimestamp</code>: 서버 시간 자동 입력.</li>
</ul>
<ul>
<li><p><code>doc</code> : 특정 문서 지정.</p>
</li>
<li><p><code>getDoc</code> : 문서 읽기.</p>
</li>
<li><p><code>updateDoc</code>: 문서 수정.</p>
</li>
</ul>
<hr>
<h3 id="url에서-글-id-읽어오기">url에서 글 ID 읽어오기</h3>
<p><img src="https://velog.velcdn.com/images/jan-nabee/post/25ceeac7-94bf-4057-a433-be2575863bc5/image.png" alt=""></p>
<ul>
<li>주소창 <code>?id=xxxxxx</code>에서 글 ID추출.</li>
<li><code>postId</code> 값이 있으면 &quot;수정모드&quot;, 없으면 &quot;새 글쓰기 모드.&quot;</li>
</ul>
<hr>
<h3 id="dom-요소-변수">DOM 요소 변수</h3>
<p><img src="https://velog.velcdn.com/images/jan-nabee/post/9c35cd8f-a390-4e5c-baff-b446380fb6c6/image.png" alt=""></p>
<ul>
<li>입력칸, 버튼, 제목 DOM을 변수로 잡아 둠.</li>
</ul>
<hr>
<h3 id="수정모드-처리-then-방식">수정모드 처리 (then 방식)</h3>
<p><img src="https://velog.velcdn.com/images/jan-nabee/post/d7cb1d01-bcc8-4e2c-a27c-033310374a84/image.png" alt=""></p>
<ul>
<li><code>postId</code>가 있으면 글 수정모드 진입.</li>
<li>Firestore에서 해당 문서 불러와서 제목·내용 입력칸에 채워 넣음.</li>
<li><code>?? &quot;&quot;</code> →값이 없으면 빈칸으로 처리
<img src="https://velog.velcdn.com/images/jan-nabee/post/2689a506-6803-42de-9b0c-ab2dc1e03973/image.png" alt="">
<img src="https://velog.velcdn.com/images/jan-nabee/post/f297caff-f280-4668-91e0-deaea8cf005b/image.png" alt=""></li>
</ul>
<hr>
<h3 id="수정모드-처리-await-방식">수정모드 처리 (await 방식)</h3>
<p><img src="https://velog.velcdn.com/images/jan-nabee/post/d643f0ff-f9d8-4360-9a2d-81454fbb72c6/image.png" alt=""></p>
<blockquote>
<ul>
<li>await는 async 함수 안에서만 쓸 수 있음.</li>
</ul>
</blockquote>
<ul>
<li>Promise가 끝날 때까지 “잠깐 기다렸다가” 결과를 변수에 바로 담아 줌. </li>
<li>코드가 위에서 아래로 동기 코드처럼 읽혀서 직관적임.</li>
</ul>
<p>--</p>
<h2 id="readhtml-살펴보기">read.html 살펴보기</h2>
<p>글 목록에서 항목을 클릭하면 <code>read.html?id=문서ID</code>로 이동한다.<br>이 페이지에서는 URL에서 <code>id</code>를 꺼내 Firestore에서 해당 문서를 불러오고,<br>제목/내용/날짜를 DOM에 표시해준다.
<img src="https://velog.velcdn.com/images/jan-nabee/post/229362af-8566-4a71-b2f4-48ea7e0a22e0/image.png" alt=""></p>
<ul>
<li><code>const ref = doc(db, &quot;posts&quot;, postId);</code> → 특정 문서 참조</li>
<li><code>const snap = await getDoc(ref);</code> → 데이터 가져오기</li>
<li>가져온 <code>snap.data()</code>를 화면에 출력</li>
</ul>
<p>또한 “수정하기” 버튼을 누르면 <code>write.html?id=문서ID</code>로 이동해서<br>글 수정 모드로 진입할 수 있다.</p>
<hr>
<h2 id="전체-흐름-정리-crud">전체 흐름 정리 (CRUD)</h2>
<ul>
<li>Create: <code>addDoc()</code>으로 새 글쓰기</li>
<li>Read: <code>getDocs()</code> / <code>getDoc()</code>으로 목록과 읽기</li>
<li>Update: <code>updateDoc()</code>으로 수정</li>
<li>Delete: <code>deleteDoc()</code>으로 삭제 (추가 구현 가능)</li>
</ul>
<hr>
<h2 id="배운-점과-회고">배운 점과 회고</h2>
<p>이번 실습에서 가장 헷갈렸던 건 <code>then()</code>과 <code>await</code> 차이였다.<br>처음엔 <code>getDoc(...).then(...)</code> 방식이 익숙했는데,<br><code>await</code>로 바꾸고 나니 코드가 위에서 아래로 읽혀서 훨씬 직관적이었다.  </p>
<p>또한 <code>??</code>(null 병합)과 <code>?.</code>(옵셔널 체이닝)을 사용하면<br>Firestore에서 값이 없을 때도 페이지가 깨지지 않는다는 점이 인상 깊었다.</p>
<p>마지막으로 <code>serverTimestamp()</code>를 활용하면<br>글 작성/수정 시점을 서버 기준으로 정확하게 기록하고,<br>정렬할 때 안정적으로 동작한다는 것도 알게 되었다.</p>
<hr>
]]></description>
        </item>
        <item>
            <title><![CDATA[스폰서 슬라이드: 마키(무한흘러가기) 구현 삽질기]]></title>
            <link>https://velog.io/@jan-nabee/%EC%9E%90%EC%97%B0%EC%8A%A4%EB%9F%BD%EA%B2%8C-%ED%9D%98%EB%9F%AC%EA%B0%80%EB%8A%94-%EC%8A%A4%ED%8F%B0%EC%84%9C-%EB%A1%9C%EA%B3%A0-%EC%8A%AC%EB%9D%BC%EC%9D%B4%EB%93%9C-%EB%A7%8C%EB%93%A4%EA%B8%B0</link>
            <guid>https://velog.io/@jan-nabee/%EC%9E%90%EC%97%B0%EC%8A%A4%EB%9F%BD%EA%B2%8C-%ED%9D%98%EB%9F%AC%EA%B0%80%EB%8A%94-%EC%8A%A4%ED%8F%B0%EC%84%9C-%EB%A1%9C%EA%B3%A0-%EC%8A%AC%EB%9D%BC%EC%9D%B4%EB%93%9C-%EB%A7%8C%EB%93%A4%EA%B8%B0</guid>
            <pubDate>Wed, 03 Sep 2025 08:03:44 GMT</pubDate>
            <description><![CDATA[<hr>
<h1 id="부드럽게-일정한-속도로-흘러가는-스폰서-배너를-만들고-싶었다">부드럽게 일정한 속도로 흘러가는 스폰서 배너를 만들고 싶었다..</h1>
<p>부산국제영화제 클론의 마지막 과제, 푸터 직전 스폰서 로고 슬라이드를 만들었다.
요즘 축제/행사 사이트에서 자주 쓰는 패턴이고, 로고가 딱딱하지 않게 율동감을 주는 장점이 있다.</p>
<p><img src="https://velog.velcdn.com/images/jan-nabee/post/2afd8d62-be63-4698-a68c-ccc310500412/image.png" alt=""></p>
<h2 id="슬라이더-무한루프-버그-발생">슬라이더 무한루프 버그 발생...</h2>
<p>처음엔 간단해 보였는데… <strong>autoplay + loop</strong> 조합이 의외로 까다로웠다.
증상은 두 가지:</p>
<ol>
<li><p>시간이 지날수록 속도가 둔화</p>
</li>
<li><p>무한루프가 끊김(티끌 같은 멈칫/튐)</p>
</li>
</ol>
<p>원인은 예상 밖이었다. 내가 안전용으로 넣었던
<code>loopedSlides</code> / <code>loopAdditionalSlides</code>가 오히려 문제였다.</p>
<p><img src="https://velog.velcdn.com/images/jan-nabee/post/82580de0-b2a7-45b3-9667-d899fd3b0087/image.png" alt=""></p>
<p><strong>왜 문제가 됐나?</strong></p>
<ul>
<li><p>Swiper는 loop:true면 내부적으로 복제 슬라이드를 자동 관리한다.</p>
</li>
<li><p>여기에 loopedSlides/loopAdditionalSlides를 과하게 주면,</p>
<ul>
<li>복제본이 과다 생성 → DOM 재계산/관찰(observer)와 충돌,</li>
<li>slidesPerView:&#39;auto&#39;일 때 폭 계산이 흔들려 루프 경계에서 속도 ‘꿀렁’.</li>
</ul>
</li>
</ul>
<p><strong>결론: 이 두 옵션을 아예 빼거나 아주 작게 두는 게 안정적이었다.</strong></p>
<hr>
<h2 id="최종-디버깅-마키-느낌-부드럽게-무한-흘러가기">최종 디버깅 (마키 느낌, 부드럽게 무한 흘러가기)</h2>
<pre><code class="language-js">window.addEventListener(&#39;load&#39;, () =&gt; {
  if (window.sponsorSwiper?.destroy) window.sponsorSwiper.destroy(true, true);

  window.sponsorSwiper = new Swiper(&#39;.spon-Swiper&#39;, {
    slidesPerView: &#39;auto&#39;,
    spaceBetween: 30,
    loop: true,
    watchOverflow: false,     // 슬라이드 수가 적어도 강제 활성

    // ❌ 문제 원인: 과도한 복제 생성
    // loopedSlides: 14,
    // loopAdditionalSlides: 2,

    speed: 6000,              // 한 번 이동 트랜지션 시간(ms)
    autoplay: {
      delay: 0,               // 지연 없이 연속
      disableOnInteraction: false,
      pauseOnMouseEnter: false
    },

    observer: true,
    observeParents: true,
    observeSlideChildren: true,

    on: {
      init(sw) {
        const wrap = document.querySelector(&#39;.spon-Swiper .swiper-wrapper&#39;);
        console.log(&#39;duplicate count:&#39;,
          wrap.querySelectorAll(&#39;.swiper-slide-duplicate&#39;).length);
      }
    }
  });
});
</code></pre>
<p><strong>CSS 한 줄</strong>로 더 매끈하게:</p>
<pre><code class="language-CSS">.spon-Swiper .swiper-wrapper { transition-timing-function: linear; }</code></pre>
<p>옵션 요약:</p>
<ul>
<li><strong>loop만 신뢰</strong>하고, 복제 개수는 Swiper의 자동 계산에 맡긴다.</li>
<li><code>delay:0 + speed</code>로 마키(끊김 없는 흐름) 연출.</li>
<li><code>slidesPerView:&#39;auto&#39; + spaceBetween</code> 으로 로고 폭에 맞춰 자연 배치.</li>
<li>필요 시 <code>allowTouchMove:false</code>로 사용자 드래그에 영향 받지 않게 할 수 있다.</li>
</ul>
<hr>
<h2 id="마크업이미지-팁실무-안정성">마크업/이미지 팁(실무 안정성)</h2>
<ul>
<li><p>각 로고 <code>&lt;img&gt;</code>에 <strong>width/height</strong> 속성을 넣어** CLS(레이아웃 흔들림)** 방지.</p>
</li>
<li><p><code>loading=&quot;lazy&quot; decoding=&quot;async&quot;</code> 사용.</p>
</li>
<li><p>WebP/AVIF로 <strong>용량↓.</strong> 흑백→호버컬러 전환도 깔끔:</p>
</li>
</ul>
<pre><code class="language-CSS">.sponsor img { filter: grayscale(1); opacity:.7; transition:.2s; }
.sponsor img:hover { filter:none; opacity:1; }</code></pre>
<ul>
<li>로고 링크에 <code>aria-label(스폰서명)</code> 달아 접근성 챙기기.</li>
</ul>
<hr>
<h2 id="디버깅-메모나중에-또-삽질-안-하게">디버깅 메모(나중에 또 삽질 안 하게)</h2>
<ul>
<li><p>루프가 끊기거나 속도가 흔들리면 먼저 <strong>복제 슬라이드 수 확인.</strong></p>
</li>
<li><p><code>slidesPerView:&#39;auto&#39;</code> + 이미지 로딩 타이밍 → 가능한 <code>load</code> 이후 초기화.</p>
</li>
<li><p><strong>옵션을 더하기보다 빼서</strong> 기본 동작을 신뢰.</p>
</li>
</ul>
<hr>
<p>또한, 디버깅 씨름의 원인은 아니였지만 기억해야 할 지점!</p>
<h2 id="스와이퍼-css-설정-시-주의사항">스와이퍼 css 설정 시 주의사항</h2>
<p><img src="https://velog.velcdn.com/images/jan-nabee/post/68a92371-fed3-4efa-b98d-110e9d23970c/image.png" alt=""></p>
<ul>
<li>스와이퍼 슬라이더 내 플렉스 설정 시 스와이퍼 자체의 높이값 설정이 필요!! (높이값 설정이 없으면 플렉스가 안먹을 수 있음)</li>
<li>스와이퍼랩퍼에는 플렉스 금지!! (자체 설정이랑 충돌나서 오류남)</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[Firebase Firestore로 배우는 게시판 동작 원리]]></title>
            <link>https://velog.io/@jan-nabee/Firebase-Firestore%EB%A1%9C-%EB%B0%B0%EC%9A%B0%EB%8A%94-%EA%B2%8C%EC%8B%9C%ED%8C%90-%EB%8F%99%EC%9E%91-%EC%9B%90%EB%A6%AC</link>
            <guid>https://velog.io/@jan-nabee/Firebase-Firestore%EB%A1%9C-%EB%B0%B0%EC%9A%B0%EB%8A%94-%EA%B2%8C%EC%8B%9C%ED%8C%90-%EB%8F%99%EC%9E%91-%EC%9B%90%EB%A6%AC</guid>
            <pubDate>Wed, 03 Sep 2025 07:29:56 GMT</pubDate>
            <description><![CDATA[<p>오늘은 firebase의 기능 중 firestore에 대해서 알아봤다.</p>
<p>사실 처음에 firebase가 뭔지 그 개념을 모르는 상태에서 수업을 들었는데,</p>
<p>백엔드, 서버의 mvp 버전이라고 이해하게 됐다.</p>
<blockquote>
<p>Firestore는 Firebase에서 제공하는 클라우드 NoSQL 데이터베이스로, 실시간 동기화와 간단한 CRUD 구현이 가능하다.</p>
</blockquote>
<hr>
<h3 id="시작은-initjs-설정">시작은 init.js 설정</h3>
<p>다른 여타 firebase 기능 사용법과 마찬가지로 firestore 또한 init 설정이 필요하다.</p>
<p><code>firebaseConfig</code> 를 파이어베이스 웹 앱 설정에서 가지고 와 맞춰줘야 한다.</p>
<p><img src="https://velog.velcdn.com/images/jan-nabee/post/5092ee5c-8675-4a14-8602-8b928e1d21a2/image.png" alt=""></p>
<p>그리고 파이어베이스 서버에서 <code>initializeApp``getFirestore</code>를 import 한다.</p>
<p>export 값은 <code>db</code>  (데이터베이스)</p>
<hr>
<h1 id="firestore-이해하기---게시판의-기본-원리">firestore 이해하기 - 게시판의 기본 원리</h1>
<p><img src="https://velog.velcdn.com/images/jan-nabee/post/e1ddb16e-82a8-44fc-b1e8-c7c92f5bc5ce/image.png" alt=""></p>
<p>firestore 기본 기능을 이해하기 위한 html 파일이다.
<img src="https://velog.velcdn.com/images/jan-nabee/post/b65f19ea-fe2a-4d4e-9af8-5a2fa57ffcfd/image.png" alt=""></p>
<p>문서를 생성하고, 읽고, 업데이트하고, 삭제하고, 병합하는 기능을 버튼으로 구현했다.</p>
<p>또한 상황체크와 디버깅을 위한 상태출력 영역도 마련했다.</p>
<hr>
<h3 id="js파일-연결하기">js파일 연결하기</h3>
<p><img src="https://velog.velcdn.com/images/jan-nabee/post/68c0c057-4809-4a71-adc5-7400269a101d/image.png" alt="">
init.js 파일에서 export한 db를 연결시켜주고, 파이어스토어에서 제공하는 함수 또한 import 해준다.</p>
<p>**  각 함수 기능 설명 **</p>
<table>
<thead>
<tr>
<th>함수명</th>
<th>기능 설명</th>
</tr>
</thead>
<tbody><tr>
<td><code>doc()</code></td>
<td>Firestore에서 특정 문서의 <strong>참조(reference)</strong>를 생성하는 함수. 컬렉션 이름과 문서 ID를 지정하여 사용.</td>
</tr>
<tr>
<td><code>setDoc()</code></td>
<td>문서를 새로 생성하거나 덮어쓰는 함수. <code>{ merge: true }</code> 옵션을 주면 기존 데이터에 병합 가능.</td>
</tr>
<tr>
<td><code>getDoc()</code></td>
<td>특정 문서의 데이터를 가져오는 함수. 존재 여부 확인 시 <code>docSnap.exists()</code>로 검사.</td>
</tr>
<tr>
<td><code>updateDoc()</code></td>
<td>기존 문서의 일부 필드만 업데이트하는 함수. 문서가 존재하지 않으면 에러 발생.</td>
</tr>
<tr>
<td><code>deleteDoc()</code></td>
<td>특정 문서를 삭제하는 함수. 실행 시 해당 문서가 Firestore에서 제거됨.</td>
</tr>
<tr>
<td><code>serverTimestamp()</code></td>
<td>서버 기준의 현재 시간(<code>Timestamp</code>)을 자동으로 기록해 주는 함수. 생성일/수정일 관리에 사용.</td>
</tr>
<tr>
<td><code>increment()</code></td>
<td>숫자 필드 값을 지정한 만큼 자동 증가시키는 함수. 카운트 기능 등에 활용.</td>
</tr>
</tbody></table>
<p>이러한 함수들은 파이어베이스의 내장 함수임으로 from 값을 아래와 같이 설정하면 된다.
<img src="https://velog.velcdn.com/images/jan-nabee/post/5ad74a15-7012-4c1b-8e65-235baedf14d0/image.png" alt=""></p>
<hr>
<h3 id="dom-설정">DOM 설정</h3>
<p><img src="https://velog.velcdn.com/images/jan-nabee/post/307cb279-4f3d-496e-a064-2dc51ec524b5/image.png" alt=""></p>
<p>간단하게 DOM을 설정하기 위해 선택자를 const 했다. <code>$</code> 안에 <code>document.querySelector()</code> 구문을 삽입하는 것.
단, 이 다음 정의 때는 &#39;#&#39; 을 빼뜨리면 안된다는 것에 유의해야 한다.</p>
<hr>
<h3 id="상황체크를-위한-setstatus">상황체크를 위한 setStatus</h3>
<p><img src="https://velog.velcdn.com/images/jan-nabee/post/f1260add-a0de-42bf-bbdb-060c6450e4d3/image.png" alt=""></p>
<p>try-catch 구문에서 버그가 났는지 안났는지 직관적으로 알 수 있도록 setStatus값을 변수로 만들어주고~</p>
<p><img src="https://velog.velcdn.com/images/jan-nabee/post/abb647ea-b90b-4ad2-966f-23443ebabf58/image.png" alt=""></p>
<p>문서를 읽어왔을 때 화면에 보일 수 있도록 JSON.stringify() 도 활용한다.</p>
<hr>
<h2 id="문서-생성하기-setdoc">문서 생성하기 (setDoc)</h2>
<p><img src="https://velog.velcdn.com/images/jan-nabee/post/7237a858-c3eb-4ce6-8513-0e2313ba880d/image.png" alt=""></p>
<p>버튼을 클릭하면 async 으로 try-catch 구문이 실행된다.</p>
<p>setDoc() 내장함수로 타이틀과 카운트, 태그, 그리고 생성일시(createdAT) 를 설정했다.
이러한 과정이 진행되면 setStatus 변수에 &quot;문서 생성 요청 보냄&quot; 메시지(m)가 출력된다.
<img src="https://velog.velcdn.com/images/jan-nabee/post/86ab6aa4-05c2-4403-a0e1-47495a6526f4/image.png" alt=""></p>
<hr>
<h2 id="생성된-문서-읽어오기-getdoc">생성된 문서 읽어오기 (getDoc)</h2>
<p><img src="https://velog.velcdn.com/images/jan-nabee/post/3ea60968-0c5f-4e94-97de-1409ec91729a/image.png" alt="">
btnRead 를 클릭하면 getDoc 내장함수를 통해 데이터가 snap 된다.</p>
<p><img src="https://velog.velcdn.com/images/jan-nabee/post/40e98a51-8a54-46ba-8079-3f5d392696e7/image.png" alt=""></p>
<p>JSON 문법으로 출력되는 것을 확인할 수 있다.</p>
<hr>
<h2 id="문서-업데이트하기-updatedoc">문서 업데이트하기 (updateDoc)</h2>
<p><img src="https://velog.velcdn.com/images/jan-nabee/post/dd4c8b82-2f8e-4f66-b063-d9b56185bd3d/image.png" alt=""></p>
<p>업데이트 버튼을 누르면 <code>updateDoc()</code> 와 <code>increment()</code> 내장함수를 통해 카운트가 올라간다.</p>
<p>또한 프로필-닉네임 속성과 테스터라는 값이 추가된다. 업데이트 시간 또한 <code>serverTimestamp()</code>를 통해 남겨진다.
<img src="https://velog.velcdn.com/images/jan-nabee/post/dbc9b9d3-c3eb-4821-b3c1-3f61b17cd643/image.png" alt=""></p>
<p>업데이트 버튼을 8번 눌러서 ㅋㅋ 카운트 숫자가 8이 됐다.</p>
<hr>
<h2 id="필드-병합하기-merge-true-옵션">필드 병합하기 (merge: true 옵션)</h2>
<p><img src="https://velog.velcdn.com/images/jan-nabee/post/6308e146-716b-4ad3-b5a6-290b27db020f/image.png" alt=""></p>
<p>필드를 병합하는것은 setDoc 함수 안에 merge: ture를 적용하면 된다.</p>
<p>이러한 방식과 updateDoc의 차이는,
updateDoc의 경우 업데이트 할 문서가 없으면 에러가 나지만 이 경우 문서가 없더라도 오류가 나지 않고 생성되며, 있다면 일부만 수정된다.</p>
<hr>
<h2 id="문서-삭제하기">문서 삭제하기</h2>
<p><img src="https://velog.velcdn.com/images/jan-nabee/post/9b1403d7-8c9c-4cfc-8fbb-d68e5999f949/image.png" alt=""></p>
<p>삭제 버튼을 누르면 뭔저 컨펌창으로 &quot;정말 삭제하시겠습니까?&quot; 확인한다. 컨펌창에서 &#39;취소&#39; 즉, false 값이 반환되면 리턴하고, 만약 그렇지 않다면 deleteDoc() 함수가 실행된다.</p>
<p>그러고 나면 setStatus 메시지에 &quot;삭제 완료(요청 보냄)&quot;이 출력되고, 
실제로 문서가 파이어베이스 데이터베이스 상에서도 삭제된 것을 확인할 수 있다.
<img src="https://velog.velcdn.com/images/jan-nabee/post/428b03a6-aef9-4db7-8c2a-28c30d5e2c1e/image.png" alt=""></p>
<hr>
<h2 id="느낀점">느낀점</h2>
<p>게시판의 기본 원리를 이해할 수 있었다는 점에서 고무적이였다.</p>
<p>단순히 게시판의 디자인만 공부하는 게 아니라, 이렇게 동작 원리까지 알고 있는 것이 향후 서비스 기획이나 디자인을 진행할 때 도움이 될 것이라고 생각한다.</p>
<p>또한, 작은 CRUD 게시판을 직접 만들어보는 것도 좋은 연습이 될 것 같다</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[Firebase에서 카카오 로그인 구현하기 (포트폴리오용 가짜 로그인 흐름)]]></title>
            <link>https://velog.io/@jan-nabee/%EA%B0%80%EB%9D%BC%EB%A1%9C-%EC%B9%B4%EC%B9%B4%EC%98%A4-%EB%A1%9C%EA%B7%B8%EC%9D%B8-%EA%B5%AC%ED%98%84%ED%95%98%EA%B8%B0</link>
            <guid>https://velog.io/@jan-nabee/%EA%B0%80%EB%9D%BC%EB%A1%9C-%EC%B9%B4%EC%B9%B4%EC%98%A4-%EB%A1%9C%EA%B7%B8%EC%9D%B8-%EA%B5%AC%ED%98%84%ED%95%98%EA%B8%B0</guid>
            <pubDate>Wed, 03 Sep 2025 05:26:11 GMT</pubDate>
            <description><![CDATA[<p>Firebase Authentication에서는 구글·페이스북 같은 글로벌 플랫폼 로그인은 기본 제공하지만, <strong>카카오 로그인은 직접 구현</strong>해야 한다.</p>
<p>유료 옵션이나 서버 연동 방식도 있지만, 연습용/포트폴리오용 프로젝트라면 부담스러운 게 사실..</p>
<p>그래서 이번 글에서는 <strong>카카오 JavaScript SDK를 이용해 ‘가짜 로그인 흐름’</strong>을 만들어 본 과정을 기록해봤다.</p>
<h1 id="카카오-가짜로그인-흐름-구현해보기">카카오 &#39;가짜&#39;로그인 흐름 구현해보기</h1>
<hr>
<h2 id="1-kakao-initjs-설정">1. kakao-init.js 설정</h2>
<p>시작은 <a href="https://developers.kakao.com/docs/latest/ko/javascript/getting-started">카카오 데벨로퍼 페이지</a>에서 친절하게 설명된 것 그대로 따라한 init.js 만들기!
<img src="https://velog.velcdn.com/images/jan-nabee/post/24d50bc0-1e67-48ea-acf7-5832b17fdb8f/image.png" alt=""></p>
<p>그리고 login.html에 카카오 로그인 JavaScript SDK 파일을 포함시켰다.
<img src="https://velog.velcdn.com/images/jan-nabee/post/7fdd23e1-ad68-4298-8022-645e639381db/image.png" alt=""></p>
<ul>
<li><code>${VERSION}</code> 은 v1으로 적용했다</li>
<li>참고로 v2도 나왔다고 한다.</li>
</ul>
<blockquote>
<p><strong>v1 vs v2:</strong> 카카오 SDK v2는 v1을 개선한 최신 버전으로, ES6+ 환경에 맞춰 코드 구조가 단순해졌다고 한다. (신규 프로젝트는 v2 권장)</p>
</blockquote>
<blockquote>
<p>** integrity...?**
브라우저가 리소스를 변조되지 않은 상태로 받았는지 확인하기 위한 SRI(Subresource Integrity) 값입니다. (보안 강화를 위해 제공됨)</p>
</blockquote>
<blockquote>
<p><strong>crossorigin=&quot;anonymous&quot;:</strong> 
다른 도메인에서 불러온 리소스라도 쿠키나 인증 정보를 포함하지 않고 가져오는 설정. (역시 보안 목적)</p>
</blockquote>
<hr>
<h2 id="카카오-로그인-버튼-만들기">카카오 로그인 버튼 만들기</h2>
<p>카카오 로그인 버튼 삽입하기<del>.</del>
<a href="https://developers.kakao.com/docs/latest/ko/kakaologin/design-guide"><strong>카카오 데벨로퍼 사이트에서는 디자인 가이드</strong></a>도 제공하고 있다.</p>
<p><img src="https://velog.velcdn.com/images/jan-nabee/post/c23d1eaf-ddbf-4306-8343-5b45df9ff677/image.png" alt=""></p>
<p>리소스도 다운로드 받을 수 있어서, 
<img src="https://velog.velcdn.com/images/jan-nabee/post/a6d720d9-3617-4728-a9ef-1f25f6fa876c/image.png" alt="">
간단하게 png로 다운받았다.
<img src="https://velog.velcdn.com/images/jan-nabee/post/08ee744e-b999-446a-90a0-43bd34248ece/image.png" alt=""></p>
<p>버튼 높이값이 좀 아쉽긴 하지만 ㅠ 지금은 기능 구현이 우선이니까~~</p>
<hr>
<h2 id="콜백용-html-만들기">콜백용 html 만들기</h2>
<p>실제 서비스라면 받은 토큰을 <strong>서버에서 검증 → 세션/DB에 저장 → 사용자 인증 관리</strong> 단계까지 거쳐야 한다.</p>
<p>하지만 이번 연습에서는 단순히 <code>로그인 성공!</code> 메시지를 띄우는 정도로, <strong>프론트엔드에서만 동작하는 가짜 로그인 흐름</strong>을 구현했다.</p>
<p>때문에,
로그인 토큰을 받을 서버가 없으니 callback용 html을 따로 만들어야 했다.
<img src="https://velog.velcdn.com/images/jan-nabee/post/6ee233b1-929f-48d7-9d7e-52221dd22adc/image.png" alt=""></p>
<p>그리고 그 html에 진짜 서버 연동은 없지만 페이지에서는 로그인 된것처럼 처리할 수 있다.</p>
<p><img src="https://velog.velcdn.com/images/jan-nabee/post/2c0d2405-d0cd-4f6f-9bb1-9c3770cd49b2/image.png" alt=""></p>
<ul>
<li>카카오데벨로퍼 사이트에서 앱 키를 다운받아서 맞춰줘야 한다.</li>
</ul>
<p><img src="https://velog.velcdn.com/images/jan-nabee/post/671154cb-252c-46de-a5c8-7fd680f8319e/image.png" alt=""></p>
<p>페이지가 여러개라 생각보다 이것저것 맞춰줘야 할 게 많았음.
<img src="https://velog.velcdn.com/images/jan-nabee/post/b36d8e85-9666-432b-a61f-5fb12c2f9cf5/image.png" alt="">
카카오 데벨로퍼 사이트에서 사이트 도메인도 등록해줘야 하고, <strong>리다이렉트 uri가 특히 헷갈리고 할 것들이 많았다.</strong></p>
<h3 id="✅-리다이렉트-uri-설정-시-체크할-것">✅ 리다이렉트 URI 설정 시 체크할 것</h3>
<ol>
<li><strong>카카오 개발자 사이트</strong> → 앱 설정에서 리다이렉트 URI 등록  </li>
<li><strong>init.js</strong> → <code>redirectUri</code> 값 동일하게 지정  </li>
<li><strong>callback.html</strong> → 해당 파일 경로가 일치해야 정상 작동</li>
</ol>
<p><img src="https://velog.velcdn.com/images/jan-nabee/post/db3838c9-15d8-401a-9d42-16c5139f5132/image.png" alt="">
카카오 데벨로퍼 사이트에서도 맞춰주고~</p>
<p><img src="https://velog.velcdn.com/images/jan-nabee/post/57bf8458-294d-415c-a3d1-5b6001e9e52c/image.png" alt="">
이닛 파일에서도,</p>
<p><img src="https://velog.velcdn.com/images/jan-nabee/post/56b7f502-9a2c-4cd5-bc18-851f0f51bcbb/image.png" alt="">
콜백화면에서도 맞춰줘야 함.</p>
<hr>
<p>여차저차 맞춰주니까,</p>
<p><img src="https://velog.velcdn.com/images/jan-nabee/post/9a190b91-33f8-4973-bce1-08b18979153f/image.png" alt=""></p>
<p>제대로 작동한다 ㅎㅎ</p>
<p><img src="https://velog.velcdn.com/images/jan-nabee/post/f002076c-9d48-4af5-af6a-2e6e40e22adf/image.png" alt=""></p>
<p>마무리로 깃허브 업데이트 푸시까지 완료!</p>
<h2 id="👉정리">👉정리</h2>
<p>Firebase에서는 카카오 로그인을 기본 지원하지 않는다.  </p>
<ul>
<li>JavaScript SDK를 이용하면 <strong>포폴용 가짜 로그인 흐름</strong> 정도는 구현할 수 있다.  </li>
<li>리다이렉트 URI, 앱 키 설정 등 여러 곳을 꼼꼼히 맞추는 게 핵심 포인트다.  </li>
</ul>
<p>이후 실무 프로젝트에서는 서버 검증/토큰 관리까지 붙여야 하니, 이번 경험이 좋은 디딤돌이 될 듯하다.</p>
<p>오늘 하루 고생했습니다 나 자신<del>~</del></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[🎨 Tailwind CSS, 왜 이렇게 편하지?]]></title>
            <link>https://velog.io/@jan-nabee/Tailwind-CSS-%EC%99%9C-%EC%9D%B4%EB%A0%87%EA%B2%8C-%ED%8E%B8%ED%95%98%EC%A7%80</link>
            <guid>https://velog.io/@jan-nabee/Tailwind-CSS-%EC%99%9C-%EC%9D%B4%EB%A0%87%EA%B2%8C-%ED%8E%B8%ED%95%98%EC%A7%80</guid>
            <pubDate>Mon, 01 Sep 2025 09:04:03 GMT</pubDate>
            <description><![CDATA[<p><img src="https://velog.velcdn.com/images/jan-nabee/post/b1aab3fa-a586-4e87-a91f-faf42fdf9043/image.png" alt=""></p>
<p>Firebase Authentication UI를 만들면서, CSS는 <a href="https://tailwindcss.com/">Tailwind CSS</a>
를 활용했다.
이번 글에서는 Tailwind CSS가 뭔지, 그리고 왜 쓰면 편한지 직접 느낀 경험을 기록해둔다.</p>
<hr>
<h1 id="tailwind-css란">Tailwind CSS란?</h1>
<ul>
<li><strong>Tailwind CSS = “디자인용 레고 블록”</strong></li>
<li>기존 방식: CSS 파일에 <code>.button { color: red; }</code> 이런 식으로 직접 스타일 정의</li>
<li>Tailwind 방식: HTML 태그 안에 바로 <code>class=&quot;bg-red-500 text-white p-4 rounded&quot;</code> 처럼 <strong>클래스 이름만 붙여서 스타일 완성</strong></li>
</ul>
<p>👉 즉, 미리 준비된 “스타일 조각”들을 가져다가 조립하는 느낌이다.</p>
<hr>
<h2 id="일반-css-vs-tailwind-css-예시-비교">일반 CSS VS Tailwind CSS 예시 비교</h2>
<pre><code class="language-html">&lt;!-- 일반 CSS --&gt;
&lt;button class=&quot;btn&quot;&gt;회원가입&lt;/button&gt;

&lt;style&gt;
  .btn {
    background: blue;
    color: white;
    padding: 8px 16px;
    border-radius: 8px;
  }
&lt;/style&gt;</code></pre>
<pre><code class="language-html">&lt;!-- Tailwind CSS --&gt;
&lt;button class=&quot;bg-blue-500 text-white px-4 py-2 rounded-lg&quot;&gt;
  회원가입
&lt;/button&gt;</code></pre>
<p>✅ 차이점: CSS 따로 안 쓰고, HTML 클래스만으로 바로 스타일링 가능!</p>
<hr>
<h2 id="tailwind-css-장점">Tailwind CSS 장점</h2>
<p><strong>1. 빠르다</strong></p>
<ul>
<li><p>CSS 새 파일 열고, 클래스명 고민할 필요 없음</p>
</li>
<li><p>그냥 필요한 스타일을 <code>class</code> 안에 적으면 끝</p>
</li>
</ul>
<p><strong>2. 일관성 유지</strong></p>
<ul>
<li><p>팀에서 쓰면, 다들 같은 색상/여백 단위를 공유하게 됨</p>
</li>
<li><p><code>text-gray-600</code>, <code>p-4</code>, <code>rounded-lg</code> 같은 표준화된 규칙</p>
</li>
</ul>
<p><strong>3. 반응형도 손쉽게</strong></p>
<pre><code class="language-html">&lt;div class=&quot;w-full sm:w-1/2 lg:w-1/3&quot;&gt;내용&lt;/div&gt;</code></pre>
<p>→ 화면 크기별로 자동 스타일 적용 (sm, md, lg 같은 prefix 사용)
<img src="https://velog.velcdn.com/images/jan-nabee/post/c6648a53-ec43-4741-8d21-b3416eaad715/image.png" alt=""></p>
<hr>
<h3 id="반응형-프리픽스sm-md-lg-가-뭔데">반응형 프리픽스(sm:, md:, lg: …)가 뭔데?</h3>
<p>Tailwind는 <strong>모바일 우선(Mobile-first)</strong> 이라서, <strong>기본 클래스는 작은 화면에 적용</strong>되고,
<code>sm:</code>, <code>md:</code>, <code>lg:</code> 같은 <strong>프리픽스(prefix)</strong> 를 붙이면 그 너비 이상에서 덮어써서 적용된다.</p>
<h4 id="기본-브레이크포인트기본값">기본 브레이크포인트(기본값)</h4>
<table>
<thead>
<tr>
<th>접두사</th>
<th>의미(최소 너비)</th>
</tr>
</thead>
<tbody><tr>
<td><code>sm:</code></td>
<td>≥ <strong>640px</strong></td>
</tr>
<tr>
<td><code>md:</code></td>
<td>≥ <strong>768px</strong></td>
</tr>
<tr>
<td><code>lg:</code></td>
<td>≥ <strong>1024px</strong></td>
</tr>
<tr>
<td><code>xl:</code></td>
<td>≥ <strong>1280px</strong></td>
</tr>
<tr>
<td><code>2xl:</code></td>
<td>≥ <strong>1536px</strong></td>
</tr>
</tbody></table>
<p>✅ 해석: lg:w-1/3 → 화면이 1024px 이상일 때 너비를 1/3로.</p>
<hr>
<h4 id="예제-해부">예제 해부</h4>
<pre><code class="language-html">&lt;div class=&quot;w-full sm:w-1/2 lg:w-1/3&quot;&gt;내용&lt;/div&gt;</code></pre>
<ul>
<li>기본(모바일, &lt; 640px): w-full → 가로 100%</li>
<li>태블릿(≥ 640px): sm:w-1/2 → 가로 1/2 (2열 레이아웃처럼 보임)</li>
<li>데스크탑(≥ 1024px): lg:w-1/3 → 가로 1/3 (3열 레이아웃)</li>
</ul>
<p>즉, 화면이 커질수록 더 구체적인 규칙이 다음 규칙을 덮어쓴다고 보면 된다.</p>
<hr>
<h3 id="자주쓰는-클래스-정리">자주쓰는 클래스 정리</h3>
<h4 id="레이아웃디스플레이">레이아웃/디스플레이</h4>
<table>
<thead>
<tr>
<th>분류</th>
<th>클래스</th>
<th>의미</th>
</tr>
</thead>
<tbody><tr>
<td>컨테이너 폭</td>
<td><code>container</code>, <code>max-w-sm/md/lg/xl/2xl</code>, <code>w-full</code>, <code>w-1/2</code>, <code>w-1/3</code>, <code>w-96</code></td>
<td>최대/고정/분수 너비</td>
</tr>
<tr>
<td>디스플레이</td>
<td><code>block</code>, <code>inline-block</code>, <code>inline</code>, <code>flex</code>, <code>grid</code>, <code>hidden</code></td>
<td>표시 방식</td>
</tr>
<tr>
<td>방향/정렬</td>
<td><code>flex-row</code>, <code>flex-col</code>, <code>items-center</code>, <code>justify-between</code>, <code>gap-4</code></td>
<td>플렉스 정렬/간격</td>
</tr>
<tr>
<td>그리드</td>
<td><code>grid-cols-1/2/3</code>, <code>sm:grid-cols-2</code>, <code>gap-4</code></td>
<td>그리드 열/간격</td>
</tr>
</tbody></table>
<h4 id="간격spacing">간격(Spacing)</h4>
<table>
<thead>
<tr>
<th>분류</th>
<th>클래스</th>
<th>의미</th>
</tr>
</thead>
<tbody><tr>
<td>마진</td>
<td><code>m-4</code>, <code>mx-4</code>, <code>my-2</code>, <code>mt-6</code></td>
<td>바깥 여백</td>
</tr>
<tr>
<td>패딩</td>
<td><code>p-4</code>, <code>px-4</code>, <code>py-2</code>, <code>pt-6</code></td>
<td>안쪽 여백</td>
</tr>
<tr>
<td>요소간 간격</td>
<td><code>space-x-4</code>, <code>space-y-2</code></td>
<td>형제 사이 간격(수직/수평)</td>
</tr>
</tbody></table>
<h4 id="타이포그래피">타이포그래피</h4>
<table>
<thead>
<tr>
<th>분류</th>
<th>클래스</th>
<th>의미</th>
</tr>
</thead>
<tbody><tr>
<td>크기</td>
<td><code>text-xs/sm/base/lg/xl/2xl/…</code></td>
<td>글자 크기</td>
</tr>
<tr>
<td>두께</td>
<td><code>font-light/normal/medium/semibold/bold</code></td>
<td>폰트 두께</td>
</tr>
<tr>
<td>색상</td>
<td><code>text-gray-600</code>, <code>text-blue-600</code>, <code>text-red-500</code></td>
<td>글자 색</td>
</tr>
<tr>
<td>정렬</td>
<td><code>text-left/center/right</code></td>
<td>정렬</td>
</tr>
</tbody></table>
<h4 id="배경테두리모서리그림자">배경/테두리/모서리/그림자</h4>
<table>
<thead>
<tr>
<th>분류</th>
<th>클래스</th>
<th>의미</th>
</tr>
</thead>
<tbody><tr>
<td>배경색</td>
<td><code>bg-white</code>, <code>bg-gray-100</code>, <code>bg-blue-600</code></td>
<td>배경 색</td>
</tr>
<tr>
<td>테두리</td>
<td><code>border</code>, <code>border-0/2</code>, <code>border-gray-300</code></td>
<td>보더 두께/색</td>
</tr>
<tr>
<td>모서리</td>
<td><code>rounded</code>, <code>rounded-md/lg/full</code></td>
<td>둥근 정도</td>
</tr>
<tr>
<td>그림자</td>
<td><code>shadow</code>, <code>shadow-md/lg</code></td>
<td>그림자 강도</td>
</tr>
</tbody></table>
<h4 id="상태hoverfocusdisabled-등">상태(hover/focus/disabled 등)</h4>
<table>
<thead>
<tr>
<th>분류</th>
<th>클래스</th>
<th>예시</th>
</tr>
</thead>
<tbody><tr>
<td>호버</td>
<td><code>hover:bg-blue-700</code>, <code>hover:underline</code></td>
<td>마우스 오버</td>
</tr>
<tr>
<td>포커스</td>
<td><code>focus:outline-none</code>, <code>focus:ring-2</code>, <code>focus:ring-blue-500</code>, <code>focus:ring-offset-2</code></td>
<td>포커스 스타일</td>
</tr>
<tr>
<td>비활성</td>
<td><code>disabled:opacity-50</code>, <code>disabled:cursor-not-allowed</code></td>
<td>비활성 상태</td>
</tr>
</tbody></table>
<h4 id="위치기타">위치/기타</h4>
<table>
<thead>
<tr>
<th>분류</th>
<th>클래스</th>
<th>의미</th>
</tr>
</thead>
<tbody><tr>
<td>위치</td>
<td><code>relative</code>, <code>absolute</code>, <code>fixed</code>, <code>inset-0</code>, <code>top-0</code>, <code>left-1/2</code></td>
<td>포지셔닝</td>
</tr>
<tr>
<td>오버플로우</td>
<td><code>overflow-hidden/auto</code></td>
<td>넘침 처리</td>
</tr>
<tr>
<td>커서</td>
<td><code>cursor-pointer/not-allowed</code></td>
<td>커서</td>
</tr>
<tr>
<td>전환</td>
<td><code>transition</code>, <code>duration-200</code>, <code>ease-in-out</code></td>
<td>트랜지션</td>
</tr>
</tbody></table>
<hr>
<h2 id="실제-사용-시-느낀-점firebase-인증-페이지에-적용해보니">실제 사용 시 느낀 점(Firebase 인증 페이지에 적용해보니…)</h2>
<ul>
<li>로그인 박스를 만들 때, <code>bg-white shadow-lg rounded-lg p-6</code>만 붙여도 바로 예쁜 카드 완성</li>
<li>버튼도 <code>bg-blue-600 hover:bg-blue-700 text-white px-4 py-2 rounded-lg</code>만 쓰면 즉시 현대적인 느낌</li>
</ul>
<p>👉 디자인 감각 없어도 깔끔한 UI를 만들 수 있었다.
<img src="https://velog.velcdn.com/images/jan-nabee/post/22b84838-4731-4d23-bbbd-1fd7012aa96f/image.png" alt=""></p>
<hr>
<h2 id="📝-이번에-배운-점">📝 이번에 배운 점</h2>
<ul>
<li><p>Tailwind CSS는 <strong>“디자인 초보도 안전하게 쓸 수 있는 스타일 사전”</strong> 같은 존재다.</p>
</li>
<li><p><strong>Utility-first</strong> 개념 이해: Tailwind는 “작은 유틸리티 클래스 조합”으로 스타일링한다는 철학.</p>
</li>
<li><p>** 모듈성:** 같은 컴포넌트를 다른 페이지에서 재사용할 때도, 별도 CSS 수정 없이 그대로 가져다 쓸 수 있다는 점.</p>
</li>
<li><p>CSS를 따로 작성하지 않아도 되니, 개발 속도가 확실히 빨라진다.</p>
</li>
<li><p>반응형 레이아웃까지 클래스 하나로 해결 가능하다.</p>
</li>
<li><p>Firebase 같은 MVP 개발에서는 Tailwind가 특히 빛을 발한다 ✨</p>
</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[firebase-auth.js 구조 뜯어보기 — 주요 함수와 async/await]]></title>
            <link>https://velog.io/@jan-nabee/firebase-auth.js-%EA%B5%AC%EC%A1%B0-%EB%9C%AF%EC%96%B4%EB%B3%B4%EA%B8%B0-%EC%A3%BC%EC%9A%94-%ED%95%A8%EC%88%98%EC%99%80-asyncawait</link>
            <guid>https://velog.io/@jan-nabee/firebase-auth.js-%EA%B5%AC%EC%A1%B0-%EB%9C%AF%EC%96%B4%EB%B3%B4%EA%B8%B0-%EC%A3%BC%EC%9A%94-%ED%95%A8%EC%88%98%EC%99%80-asyncawait</guid>
            <pubDate>Mon, 01 Sep 2025 08:39:59 GMT</pubDate>
            <description><![CDATA[<p><a href="https://velog.io/@jan-nabee/Firebase-Authentication-%EA%B8%B0%EC%B4%88-%EC%9D%B4%EB%A9%94%EC%9D%BC-%EB%A1%9C%EA%B7%B8%EC%9D%B8-%EC%A0%84-%EA%B3%BC%EC%A0%95-%EC%A7%81%EC%A0%91-%EB%A7%8C%EB%93%A4%EC%96%B4%EB%B3%B4%EA%B8%B0">Firebase Authentication 기초: 이메일 로그인 전 과정 직접 만들어보기</a></p>
<p>포스팅에 이어 <code>firebase-auth.js</code> 구조를 좀 더 뜯어보면서 복습하고자 한다.</p>
<h1 id="firebase-authjs는-무슨-역할을-할까">firebase-auth.js는 무슨 역할을 할까?</h1>
<ul>
<li><code>firebase-init.js</code>에서 Firebase를 연결해두면,
<code>firebase-auth.js</code>는 그 연결된 <code>auth</code> 객체를 기반으로 사용자 인증 관련 기능을 모아둔 파일이다.</li>
<li>즉, init이 &quot;Wi-Fi 연결&quot;, auth.js는 &quot;인터넷 서비스 사용&quot; 단계.</li>
</ul>
<hr>
<h2 id="함수-분류-정리-회원가입--로그인--비밀번호--로그아웃--탈퇴">함수 분류 정리 (회원가입 / 로그인 / 비밀번호 / 로그아웃 / 탈퇴)</h2>
<p><img src="https://velog.velcdn.com/images/jan-nabee/post/c38b3cd1-6a7c-40e4-982c-8fc47c79fe2c/image.png" alt=""></p>
<table>
<thead>
<tr>
<th>카테고리</th>
<th>함수명</th>
<th>설명</th>
</tr>
</thead>
<tbody><tr>
<td>회원가입</td>
<td><code>createUserWithEmailAndPassword</code></td>
<td>이메일+비밀번호로 새 계정 생성</td>
</tr>
<tr>
<td></td>
<td><code>updateProfile</code></td>
<td>프로필(닉네임) 업데이트</td>
</tr>
<tr>
<td></td>
<td><code>sendEmailVerification</code></td>
<td>가입자 이메일로 인증 메일 발송</td>
</tr>
<tr>
<td>로그인</td>
<td><code>signInWithEmailAndPassword</code></td>
<td>이메일+비밀번호 로그인</td>
</tr>
<tr>
<td></td>
<td><code>GoogleAuthProvider</code> / <code>GithubAuthProvider</code></td>
<td>소셜 로그인 Provider</td>
</tr>
<tr>
<td></td>
<td><code>signInWithPopup</code></td>
<td>팝업창으로 소셜 로그인 진행</td>
</tr>
<tr>
<td>비밀번호</td>
<td><code>sendPasswordResetEmail</code></td>
<td>비밀번호 재설정 이메일 보내기</td>
</tr>
<tr>
<td>로그아웃</td>
<td><code>signOut</code></td>
<td>현재 로그인된 사용자 로그아웃</td>
</tr>
<tr>
<td>탈퇴</td>
<td><code>deleteUser</code></td>
<td>계정 삭제</td>
</tr>
<tr>
<td></td>
<td><code>reauthenticateWithCredential</code></td>
<td>이메일/비번으로 재인증</td>
</tr>
<tr>
<td></td>
<td><code>reauthenticateWithPopup</code></td>
<td>소셜 로그인 계정 재인증</td>
</tr>
<tr>
<td></td>
<td><code>EmailAuthProvider</code></td>
<td>이메일/비번 Provider 객체 생성</td>
</tr>
</tbody></table>
<p>✅ Firebase 함수 이름만 봐도 대부분 역할을 직관적으로 알 수 있다.</p>
<hr>
<h2 id="async--await-다시-짚기">async / await 다시 짚기</h2>
<ul>
<li>Firebase 함수들은 서버랑 통신하는 <strong>비동기 작업</strong>이 많음.</li>
<li>그래서 <code>async</code>/<code>await</code>을 붙여야 순서대로 잘 처리 가능.</li>
</ul>
<blockquote>
<ul>
<li>async : &quot;이 함수 안에는 기다려야 하는 작업이 있어요&quot; 라고 표시</li>
</ul>
</blockquote>
<ul>
<li>await : &quot;이 작업이 끝날 때까지 잠깐 멈춰!&quot;
→ 치킨 주문 후, 배달 오기 전까지는 먹을 수 없는 것과 같음.</li>
</ul>
<p><img src="https://velog.velcdn.com/images/jan-nabee/post/2e2a6138-120b-40c3-b631-be0ba0752b5c/image.png" alt=""></p>
<blockquote>
<ul>
<li><code>await</code> 덕분에 &quot;계정 생성 → 프로필 업데이트 → 이메일 발송&quot;이 순차적으로 실행됨.</li>
</ul>
</blockquote>
<ul>
<li>만약 <code>await</code>이 없으면 서버 응답이 오기 전에 다음 코드가 실행되어 에러 발생 가능.</li>
</ul>
<hr>
<h3 id="1️⃣-비동기async라는-말의-뜻">1️⃣ &quot;비동기(async)&quot;라는 말의 뜻</h3>
<ul>
<li><p><strong>동기(Synchronous):</strong> 일이 한 줄로 차례차례 진행되는 것.
👉 예: 편의점에서 계산대 줄 서기. 앞사람이 끝나야 내가 계산 가능.</p>
</li>
<li><p><strong>비동기(Asynchronous):</strong> 동시에 여러 일을 처리할 수 있는 것.
👉 예: 배달 주문하기. 치킨 시키고, 치킨이 올 때까지 공부도 하고 빨래도 할 수 있음. 치킨이 다 와야 먹을 수 있듯이, &quot;결과는 나중에&quot; 옴.</p>
</li>
</ul>
<p>✔️ 자바스크립트에서 서버랑 통신하는 대부분의 작업은 비동기다.
왜냐면 서버 응답이 언제 올지 모르니까, 기다리는 동안 프로그램이 멈추면 안 되기 때문.</p>
<hr>
<h3 id="2️⃣-왜-await라는-단어를-쓸까">2️⃣ 왜 await라는 단어를 쓸까?</h3>
<ul>
<li><code>await</code> 은 &quot;이 비동기 함수가 끝나서 결과를 돌려줄 때까지 멈춰라&quot;라는 의미</li>
<li>그 동안 아래 줄 코드들은 실행되지 않고 기다린다.</li>
<li><code>createUserWithEmailAndPassword</code> 같은 파이어베이스 내장 함수는 실행되고 나면 <strong>Promise(결과 약속)</strong>를 돌려준다. </li>
<li><code>await</code> 덕분에, 이 약속값이 돌아오기 전까지 아랫줄의 코드들은 실행되지 않고 오류를 막을 수 있다.</li>
</ul>
<hr>
<h3 id="3️⃣-trycatch-라는-표현은-왜-쓸까">3️⃣ try/catch 라는 표현은 왜 쓸까?</h3>
<ul>
<li>&quot;에러가 날 수도 있는 코드를 시도해보고, 에러가 나면 그걸 잡아서 처리하겠다&quot;는 의미.</li>
</ul>
<pre><code class="language-js">try {
  const user = await createUserWithEmailAndPassword(auth, email, password);
  console.log(&quot;회원가입 성공:&quot;, user);
} catch (error) {
  console.log(&quot;회원가입 실패:&quot;, error.message);
}</code></pre>
<ul>
<li><code>try</code> = 유저한테 이메일이랑 비밀번호 받아서 회원정보 생성하는 것 시도</li>
<li><code>catch</code> = 만약 정보가 안 오거나, 오류가 생기면 그 상황을 잡아서 알려줘.</li>
<li>*<em>try / catch 구문 덕분에 프로그램이 중간에 뻗어버리고 나머지 코드가 실행 안 되는 상황을 방지할 수 있다. *</em>
<img src="https://velog.velcdn.com/images/jan-nabee/post/77c63095-2281-4920-b41b-453e5c387e5a/image.png" alt=""></li>
</ul>
<hr>
<p>이 js파일에서도 마찬가지로 
임포트를 했으니 익스포트를 한다.</p>
<h2 id="export는-왜-할까">export는 왜 할까?</h2>
<ul>
<li>firebase-auth.js에서 만든 함수를 다른 파일에서 쓸 수 있도록 공개하는 역할.</li>
<li>예시:<pre><code class="language-js">// firebase-auth.js
export const logout = async () =&gt; {
await signOut(auth);
};
</code></pre>
</li>
</ul>
<p>// dashboard.js
import { logout } from &#39;./firebase/firebase-auth.js&#39;;</p>
<pre><code>
👉 **&quot;auth.js에서 정의한 기능을 dashboard.js에서도 재사용 가능&quot;**

---

## 이번에 배운 점 ✨

- Firebase Authentication 함수는 이름만 봐도 역할이 직관적이다.

- 모든 함수가 **비동기(async)**라서 await과 try/catch로 에러 처리를 해주는 게 안정적이다.

- export/import 구조를 활용하면, 인증 관련 코드를 모듈화해서 깔끔하게 관리할 수 있다.
</code></pre>]]></description>
        </item>
        <item>
            <title><![CDATA[Firebase Authentication 기초: 이메일 로그인 전 과정 직접 만들어보기]]></title>
            <link>https://velog.io/@jan-nabee/Firebase-Authentication-%EA%B8%B0%EC%B4%88-%EC%9D%B4%EB%A9%94%EC%9D%BC-%EB%A1%9C%EA%B7%B8%EC%9D%B8-%EC%A0%84-%EA%B3%BC%EC%A0%95-%EC%A7%81%EC%A0%91-%EB%A7%8C%EB%93%A4%EC%96%B4%EB%B3%B4%EA%B8%B0</link>
            <guid>https://velog.io/@jan-nabee/Firebase-Authentication-%EA%B8%B0%EC%B4%88-%EC%9D%B4%EB%A9%94%EC%9D%BC-%EB%A1%9C%EA%B7%B8%EC%9D%B8-%EC%A0%84-%EA%B3%BC%EC%A0%95-%EC%A7%81%EC%A0%91-%EB%A7%8C%EB%93%A4%EC%96%B4%EB%B3%B4%EA%B8%B0</guid>
            <pubDate>Mon, 01 Sep 2025 07:55:20 GMT</pubDate>
            <description><![CDATA[<p><img src="https://velog.velcdn.com/images/jan-nabee/post/38ace97a-f489-41d5-93fd-eed86aeed3ec/image.png" alt=""></p>
<h1 id="🚀-firebase-authentication-기초-다지기">🚀 Firebase Authentication 기초 다지기</h1>
<p>오늘의 공부 주제는 <strong>Firebase</strong>, 그중에서도 <code>Authentication(인증)</code> 기능이었다.
Firebase를 활용하면 별도의 백엔드 서버를 직접 구축하지 않고도 회원가입부터 로그인, 로그아웃까지 <strong>기본적인 사용자 인증 흐름</strong>을 손쉽게 구현할 수 있다.</p>
<hr>
<h2 id="📌-오늘-구현한-인증-워크플로우">📌 오늘 구현한 인증 워크플로우</h2>
<ul>
<li><p><strong>회원가입 (Sign Up)</strong>
이메일·비밀번호로 계정을 생성하고, <code>updateProfile</code>을 이용해 닉네임을 저장했다.</p>
</li>
<li><p><strong>이메일 인증 (Email Verification)</strong>
가입 직후 인증 메일을 발송해 실제 사용자인지 확인.</p>
</li>
<li><p><strong>로그인 (Sign In)</strong>
<code>signInWithEmailAndPassword</code>를 사용해 로그인 처리. 로그인 상태는 <code>onAuthStateChanged</code>로 실시간 감지했다.</p>
</li>
<li><p><strong>로그아웃 (Sign Out)</strong>
<code>signOut(auth)</code> 호출로 세션 종료 후 로그인 페이지로 리다이렉트.</p>
</li>
<li><p><strong>비밀번호 재설정 (Password Reset)</strong>
<code>sendPasswordResetEmail</code>을 통해 비밀번호 재설정 링크를 사용자 이메일로 전송.</p>
</li>
<li><p><strong>회원탈퇴 (Delete User)</strong>
<code>deleteUser</code>를 호출해 현재 로그인한 계정을 삭제하는 기능까지 추가.</p>
</li>
</ul>
<hr>
<p>[회원가입] - [이메일인증] - [로그인] - [로그아웃] - [비밀번호 재설정] - [회원탈퇴]</p>
<p>위 워크플로우를 담고 있는 페이지를 만들어 <a href="https://jan-nabee.github.io/auth-demo/">gitHube로 배포했다
-&gt; 클릭시 배포된 데모사이트로 이동됨</a></p>
<hr>
<h2 id="🔧-firebase-프로젝트-생성">🔧 Firebase 프로젝트 생성</h2>
<p><img src="https://velog.velcdn.com/images/jan-nabee/post/2161455c-a412-4439-8390-7110ff275ea6/image.png" alt=""></p>
<p>Firebase Authentication을 쓰려면 *<em>프로젝트 생성 → 앱 등록 → SDK 설정(init 파일 생성) *</em> 순서가 필요하다.</p>
<p>그다음 <code>firebase-init.js</code>에 <code>initializeApp</code>과 <code>getAuth</code>를 설정해두면, 다른 파일에서 <code>auth</code> 객체를 가져다 쓸 수 있다.</p>
<hr>
<h3 id="firebase-프로젝트-생성-왜-필요한-걸까">Firebase 프로젝트 생성, 왜 필요한 걸까?</h3>
<p>우리가 만든 웹사이트가 Firebase(구글이 제공하는 서버)랑 대화하려면,
먼저 <strong>“내 사이트가 Firebase랑 연결돼 있어요” ** 하고 알려줘야 한다.
이걸 **프로젝트 만들기 + 앱 등록하기</strong>라고 표현하는 것.</p>
<hr>
<h3 id="init-파일firebase-initjs은-뭐야">init 파일(firebase-init.js)은 뭐야?</h3>
<p><code>firebase-init.js</code> 는 쉽게 말하면 <strong>“우리 집 Wi-Fi 비밀번호 메모”</strong> 같은 것이다.</p>
<ul>
<li>Firebase에 접속할 때 필요한 열쇠(설정값들: apiKey, projectId 등)를 적어둔 파일.</li>
<li>그 덕분에 다른 JS 파일에서 그냥 <code>auth</code>라고 불러오면
→ “아, 얘는 이미 Firebase랑 연결돼 있구나!” 하고 바로 로그인/회원가입 기능을 쓸 수 있다.</li>
</ul>
<hr>
<h4 id="코드로보면">코드로보면</h4>
<pre><code class="language-js">// firebase-init.js
import { initializeApp } from &quot;firebase/app&quot;;
import { getAuth } from &quot;firebase/auth&quot;;

const firebaseConfig = {
  apiKey: &quot;열쇠1&quot;,
  authDomain: &quot;열쇠2&quot;,
  projectId: &quot;열쇠3&quot;,
  // ... 등등 Firebase가 준 열쇠들
};

// Firebase랑 연결 시작
const app = initializeApp(firebaseConfig);

// 인증(auth) 기능 꺼내오기
const auth = getAuth(app);

export { auth };</code></pre>
<blockquote>
<ul>
<li><strong>프로젝트 생성</strong> = &quot;내 이름으로 구글 서버(파이어베이스)에 계정 만들기</li>
</ul>
</blockquote>
<ul>
<li><strong>앱 등록</strong> = &quot;내 핸드폰(웹사이트)도 내 계정이랑 연결하기&quot;</li>
<li><strong>firebase-init.js</strong> = “Wi-Fi 비밀번호를 적어둔 메모장”</li>
<li><strong>auth 객체</strong> = “이제 이 비밀번호로 인터넷(Firebase 인증 기능)을 쓸 수 있음”</li>
</ul>
<p>👉 그래서 결론:
<code>firebase-init.js</code> 파일이 있어야, 다른 파일에서 회원가입·로그인 코드를 쓸 때
Firebase가 <strong>“아, 이 앱은 이미 연결돼 있으니까 인증 기능 써도 돼”</strong> 하고 허락해준다.</p>
<hr>
<h3 id="firebase-어디서-뭘-가져오는거지">firebase.. 어디서 뭘 가져오는거지?</h3>
<p><img src="https://velog.velcdn.com/images/jan-nabee/post/3f161d45-4cc9-4a40-8156-77e133857b28/image.png" alt=""></p>
<p><strong>1. <code>from &quot;https://www.gstatic.com/firebasejs/...&quot;</code> 이 주소는 뭐야?</strong></p>
<ul>
<li>이 부분은 Firebase 팀이 제공하는 공식 CDN 주소</li>
<li>CDN(Content Delivery Network) = 인터넷에서 바로 가져다 쓸 수 있는 라이브러리 저장소.</li>
<li>즉, 이 주소에서 <code>firebase-app.js</code>나 <code>firebase-auth.js</code> 같은 파일을 내려받아, 내 코드에서 바로 쓸 수 있다.</li>
</ul>
<p>👉 쉽게 말해:
<strong>“내 컴퓨터에 firebase 라이브러리를 설치하지 않고, 구글이 올려둔 서버 주소에서 직접 가져온다.”</strong></p>
<hr>
<p><strong>2. <code>{ initializeApp }</code>, <code>{ getAuth }</code> 이건 뭐야?</strong></p>
<ul>
<li>이건 Firebase 라이브러리 안에 이미 정의되어 있는 <strong>특정 기능(함수)</strong> 의 이름!</li>
<li><code>initializeApp</code> → Firebase 앱을 시작하는 함수</li>
<li><code>getAuth</code> → 인증 기능(auth 객체)을 꺼내오는 함수</li>
</ul>
<hr>
<h3 id="export--app-auth--의-역할">export { app, auth } 의 역할</h3>
<ul>
<li><p><strong>하는 일:</strong> 현재 파일(<code>firebase-init.js</code>) 밖에서도 <code>app</code>과 <code>auth</code>를 가져다 쓸 수 있게 공개(export) 한다.</p>
</li>
<li><p><strong>왜 필요?</strong> 이 파일에서 만든 걸 다른 파일에서 쓰려면 <strong>export → import</strong>가 필요하다.
(안 내보내면 다른 파일에서 접근 불가)
<img src="https://velog.velcdn.com/images/jan-nabee/post/6f1f98bc-9e33-4492-966a-e09e3f1a9725/image.png" alt=""></p>
</li>
</ul>
<p>다른 파일에서 쓰는 법:</p>
<pre><code class="language-js">// 예: dashboard.js
import { auth } from &#39;./firebase/firebase-init.js&#39;;
import { signInWithEmailAndPassword, signOut } from
  &#39;https://www.gstatic.com/firebasejs/11.2.0/firebase-auth.js&#39;;

await signInWithEmailAndPassword(auth, email, password);
await signOut(auth);
</code></pre>
<p>** 추가로 기억해야 할 점: 
브라우저에서 <code>import/export</code>를 쓰려면 <code>&lt;script type=&quot;module&quot;&gt;</code> 로 로드해야 한다.</p>
<hr>
<h2 id="📝-배운-점">📝 배운 점</h2>
<ul>
<li><p>** Firebase는 서버리스(Serverless) 구조다** → 백엔드 직접 구축 없이 인증, DB, 스토리지 등을 바로 활용 가능.</p>
</li>
<li><p><strong>보안 인식:</strong> API 키는 주소표일 뿐 → 진짜 보안은 Firebase Security Rules에서 관리.</p>
</li>
<li><p><strong>상태 감지:</strong> 로그인 상태는 자동 저장 + <code>onAuthStateChanged</code>로 항상 동기화.</p>
</li>
<li><p>Firebase는 MVP(최소기능제품) 개발에 특히 유용하다.</p>
</li>
<li><p><code>async/await</code>와 <code>try…catch</code> 구문을 적절히 사용해야 안정적인 인증 흐름을 만들 수 있다.</p>
</li>
<li><p><code>onAuthStateChanged</code>를 활용하면 로그인/로그아웃 상태에 따라 UI를 동적으로 제어할 수 있다.</p>
</li>
</ul>
]]></description>
        </item>
    </channel>
</rss>