# 🤝 Agent Meeting: Threads → InsuWiki Daily/My UX 허들 개선

**날짜**: 2026-02-23 22:58  
**주제**: Threads에서 InsuWiki로 콘텐츠 저장 시 UX 마찰 제거  
**참석자**: PM, UX, Frontend, Backend, Data, QA, Legal, Planner, Reflect (9명 전원)  
**회의 형식**: 문제 정의 → 현황 진단 → 솔루션 브레인스토밍 → 우선순위 결정

---

## 📋 안건 브리핑 (PM)

**PM**: 오너로부터 다음과 같은 문제 제기가 있었습니다.

> "Threads에서 좋은 컨텐츠를 발견하면 InsuWiki의 daily/my에 저장하고 싶은데, 앱을 실행해서 저장하기까지 UX 스텝이 너무 많아서 결국 카톡 나에게 보내기로 임시 저장하고 있다. 나중에는 찾기도 힘들다."

**현재 사용자 저장 플로우 (Pain Flow)**:

```
Threads에서 콘텐츠 발견
  → 공유/URL 복사
  → 카톡 "나에게 보내기"
  → 나중에 카톡에서 다시 꺼내기 (잘 잊어버림)
  → InsuWiki 앱 실행
  → 로그인 확인
  → Daily 또는 My 탭 이동
  → 새 문서 또는 오늘 Daily 오픈
  → 수동으로 링크 붙여넣기 및 메모 작성
```

**목표**: Threads → InsuWiki 저장 플로우를 **3스텝 이내**로 줄이기

---

## 1️⃣ UX 에이전트 발언

**UX**: 현재 플로우의 핵심 마찰 포인트를 분석했습니다.

### 현재 마찰 분석

| 마찰 포인트 | 원인 | 심각도 |
|-----------|------|--------|
| 앱을 별도로 열어야 함 | OS 레벨 연동 없음 | ⬛⬛⬛⬛⬛ |
| 로그인 상태 확인 | 세션 만료 가능성 | ⬛⬛⬛ |
| Daily/My 탭 이동 | 기본 탭이 wiki | ⬛⬛ |
| 오늘 Daily 찾아 열기 | 날짜 선택 필요 | ⬛⬛⬛ |
| 링크 + 메모 직접 입력 | 복사/붙여넣기 수동 | ⬛⬛⬛⬛ |

### 추천 UX 방향: **"Web Share Target API"**

모바일 브라우저에서 PWA(Progressive Web App)로 등록하면 OS의 공유 시트에 InsuWiki가 나타납니다.

**목표 플로우 (개선 후)**:
```
Threads에서 콘텐츠 발견
  → 공유 버튼 → "InsuWiki에 저장" 선택
  → InsuWiki Quick-Save 팝업 (URL + 메모입력)
  → 저장 완료 → Daily에 자동 저장
```

→ **3스텝, 약 10초** 달성 가능

---

## 2️⃣ Planner 에이전트 발언

**Planner**: UX의 방향에 동의합니다. 구체적인 구현 옵션을 4가지로 정리합니다.

### Option A: PWA + Web Share Target (★ 최우선 추천)

- **핵심**: `manifest.json`에 `share_target` 추가
- **트리거**: 모바일 OS의 공유 시트에서 InsuWiki 선택
- **구현**: `/api/share-target` POST 엔드포인트 → URL + title → Daily 자동 추가
- **장점**: 추가 앱 설치 불필요, iOS Safari / Android Chrome 모두 지원
- **단점**: PWA 설치 필요 (최초 1회), iOS 일부 제한

### Option B: Shortcuts 앱 / iOS 단축어

- iOS Shortcuts로 "InsuWiki에 공유" 자동화
- Firebase Auth 토큰을 Shortcuts에 저장하여 API 직접 호출
- **단점**: 설정이 복잡, Android 미지원

### Option C: 클립보드 AI 감지 (앱 포어그라운드 시)

- 앱이 포어그라운드로 올 때 클립보드에 URL이 있으면 자동으로 "Quick-Save" 팝업
- 별도 설치 불필요, 완전한 모바일 지원
- **단점**: 클립보드 권한 이슈 (iOS 14+)

### Option D: Chrome Extension (PC 보조)

- 크롬 확장 → InsuWiki 저장 버튼
- PC에서 읽을 때 유용
- **단점**: 모바일만 사용하는 경우 효과 없음

### 우선순위 제안:
1. **Option A (PWA Share Target)** - 최우선 구현
2. **Option C (클립보드 감지)** - 빠른 보조 수단
3. **Option D (Chrome Extension)** - PC 보완

---

## 3️⃣ Frontend 에이전트 발언

**Frontend**: PWA Share Target 구현 기술 스택을 검토했습니다.

### PWA 구현 현황 체크

현재 Next.js 앱에 PWA 설정이 있는지 확인이 필요합니다.

### 구현 필요 파일

```
nextapp/
├── public/
│   ├── manifest.json          ← share_target 추가
│   └── sw.js                  ← Service Worker
├── src/app/
│   ├── share-target/
│   │   └── page.tsx           ← Quick-Save UI 페이지
│   └── api/
│       └── share-target/
│           └── route.ts       ← POST handler
└── src/components/
    └── QuickSaveModal.tsx     ← 저장 팝업 컴포넌트
```

### manifest.json 추가 내용

```json
"share_target": {
  "action": "/share-target",
  "method": "POST",
  "enctype": "multipart/form-data",
  "params": {
    "title": "title",
    "text": "text",
    "url": "url"
  }
}
```

### QuickSaveModal 설계

- **URL 미리보기**: OG 이미지/제목 자동 fetch
- **메모 입력**: 한 줄 메모 (옵션)
- **저장 위치 선택**: Today's Daily (기본) / My 탭 선택
- **태그 추가**: #태그 입력 (옵션)
- **저장 버튼**: 클릭 1번으로 완료

---

## 4️⃣ Backend 에이전트 발언

**Backend**: API 엔드포인트 설계를 제안합니다.

### `/api/share-target` 엔드포인트

```typescript
// POST /api/share-target
// Body: { title, text, url, saveTarget: 'daily' | 'my', memo, tags }

export async function POST(req: NextRequest) {
  // 1. Auth 확인 (세션 토큰)
  // 2. OG 메타데이터 fetch (url에서 제목, 미리보기 추출)
  // 3. Daily 문서 확인/생성 (오늘 날짜)
  // 4. 문서에 링크 블록 append
  // 5. Firestore 저장
  return NextResponse.json({ success: true, docId })
}
```

### Daily 자동 생성 로직

오늘 Daily 문서가 없으면:
1. `{YYYY-MM-DD}` 제목으로 자동 생성
2. Firestore에 owner UID로 생성
3. 링크 블록을 첫 항목으로 추가

이미 있으면:
1. 기존 Daily 문서에 링크 블록 append

### 링크 저장 포맷 (Tiptap JSON)

```json
{
  "type": "paragraph",
  "content": [
    { "type": "text", "text": "📎 " },
    { "type": "text", "text": "[Threads] " },
    { 
      "type": "text", 
      "marks": [{"type": "link", "attrs": {"href": "https://..."}}],
      "text": "{OG Title}"
    },
    { "type": "text", "text": " — {메모}" }
  ]
}
```

### 인증 처리

- Share Target은 PWA 내부 페이지이므로 기존 로그인 세션 사용
- 로그아웃 상태면 `/login?redirect=/share-target` 리다이렉트
- 로그인 후 자동으로 share-target 파라미터로 복귀

---

## 5️⃣ Data 에이전트 발언

**Data**: 저장된 링크의 활용성을 높이기 위한 데이터 구조를 제안합니다.

### 링크 메타데이터 스키마

```typescript
interface SavedLink {
  id: string;
  url: string;
  sourceTitle: string;       // OG title
  sourceImage?: string;      // OG image
  sourceDomain: string;      // "threads.net"
  memo?: string;             // 사용자 메모
  tags: string[];            // ["threads", "보험", ...]
  savedAt: Timestamp;
  ownerUid: string;
  targetDoc: 'daily' | 'my';
  docId: string;             // 저장된 Daily/My 문서 ID
}
```

### Firestore 저장 위치

```
users/{uid}/savedLinks/{linkId}   ← 링크 인덱스
documents/{docId}                  ← 실제 편집 가능한 문서
```

### 활용 방안 (향후)

- Daily 탭에서 "오늘 저장한 링크" 빠른 조회
- 태그별 링크 모아보기
- AI 요약: 링크 URL → 자동 요약 텍스트 생성 후 Daily에 삽입

---

## 6️⃣ Reflect 에이전트 발언

**Reflect**: 지식 관리 관점에서 이 기능의 가치를 평가합니다.

### 현재 문제

카톡 "나에게 보내기"로 임시 저장된 링크들은:
- 검색 불가 (카톡 내 검색은 제한적)
- Wiki 연결 불가 (백링크 없음)
- 맥락 소실 (왜 저장했는지 기억 못함)
- 누적되면 노이즈가 됨

### InsuWiki 내 저장 시 이점

- **검색 가능**: AI IntelliSearch로 "Threads에서 저장한 보험 관련 링크" 쿼리 가능
- **백링크 연결**: 링크 내용이 특정 Wiki 문서와 연결 가능
- **맥락 보존**: 메모와 태그로 저장 당시 생각 기록
- **Daily → Weekly → 지식화**: Reflect 흐름 완성

### 추천: 자동 태깅

저장 시 URL을 분석하여 자동 태그 제안:
- `threads.net` → `#threads`
- 보험 키워드 포함 → `#보험`
- 사용자가 반복 저장하는 도메인 → 자동 인식

---

## 7️⃣ QA 에이전트 발언

**QA**: 구현 시 고려해야 할 엣지 케이스를 정리합니다.

### 테스트 시나리오

| 시나리오 | 처리 방법 |
|---------|---------|
| 로그아웃 상태에서 공유 | 로그인 후 리다이렉트, 파라미터 유지 |
| 잘못된 URL (비공개 Threads 게시물) | OG fetch 실패 시 URL만 저장 |
| 오늘 Daily 미생성 상태 | 자동 생성 후 저장 |
| 동일 URL 중복 저장 | 중복 감지 후 경고 (선택: 덮어쓰기 / 취소) |
| 오프라인 상태 | Service Worker 큐에 저장 후 온라인 시 동기화 |
| iOS Safari PWA 제한 | Web Share Target 미지원 시 클립보드 폴백 |

### 성능 기준

- Share Target 페이지 로드: **< 2초**
- OG fetch: **< 1초** (실패 시 즉시 폴백)
- Firestore 저장: **< 500ms**

---

## 8️⃣ Legal 에이전트 발언

**Legal**: 외부 콘텐츠 저장 관련 법적 검토입니다.

### 검토 사항

1. **저작권**: 사용자가 개인 메모 목적으로 URL + 제목을 저장하는 것은 사적 이용 범위 내 허용
2. **OG 이미지**: 미리보기용 캐싱은 기술적 중간 저장으로 허용되나, 장기 저장 시 주의
3. **Threads 이용약관**: 공개 게시물 URL 공유는 Threads가 장려하는 기능 범위
4. **개인정보**: 저장 링크는 사용자 개인 데이터이므로 Firestore 보안 규칙으로 uid 기반 보호 필수

### 권장 사항

- OG 이미지는 원본 URL 참조 방식 사용 (직접 저장 지양)
- 저장된 링크는 본인만 열람 가능하도록 Firestore Rules 확인
- 완성된 v1에 개인정보처리방침 내 "외부 링크 저장 기능" 문항 추가

---

## 9️⃣ PM 에이전트 최종 정리

**PM**: 전체 논의를 정리하고 구현 우선순위를 결정합니다.

### 합의된 솔루션 스택

```
Phase 1 (즉시 구현 - 1~2주):
  ✅ PWA manifest.json Share Target 설정
  ✅ /share-target 페이지 (QuickSaveModal)
  ✅ /api/share-target POST 엔드포인트
  ✅ Daily 자동 생성 + 링크 append 로직
  ✅ 로그아웃 상태 처리 (로그인 후 복귀)

Phase 2 (후속 - 2~4주):
  🔲 클립보드 감지 폴백 (앱 포어그라운드)
  🔲 OG 메타데이터 자동 fetch (제목, 이미지)
  🔲 자동 태깅 (도메인 기반)
  🔲 중복 URL 감지

Phase 3 (장기):
  🔲 Chrome Extension (PC 지원)
  🔲 AI 자동 요약 (링크 내용 → 한 줄 요약)
  🔲 Weekly Digest: 이번 주 저장 링크 요약
```

### 최종 목표 플로우

```
Before (현재):
Threads → URL복사 → 카톡 나에게 보내기 → 나중에 InsuWiki 수동 입력
(약 8스텝, 2분+, 자주 잊어버림)

After (Phase 1):
Threads → 공유 → InsuWiki 선택 → 메모 입력 → 저장
(약 4스텝, 15초, Daily에 자동 저장)

After (Phase 2+):
Threads → 공유 → InsuWiki 선택 → [자동 OG 추출+태그] → 저장
(약 3스텝, 10초)
```

### Action Items

| 담당 | 작업 | 기한 |
|-----|------|------|
| Frontend | PWA manifest.json `share_target` 추가 | Week 1 |
| Frontend | `/share-target/page.tsx` QuickSaveModal 구현 | Week 1 |
| Backend | `/api/share-target` POST 엔드포인트 구현 | Week 1 |
| Backend | Daily 자동 생성 로직 (기존 DailyNoteButton 로직 재활용) | Week 1 |
| QA | 로그아웃 리다이렉트, 중복 URL, 오프라인 시나리오 테스트 | Week 2 |
| Data | savedLinks 컬렉션 Firestore Rules 업데이트 | Week 1 |
| Legal | Privacy Policy 항목 추가 | Week 2 |
| UX | QuickSaveModal UI 와이어프레임 최종 승인 | Week 1 |

---

## 📌 미팅 결론

> **"Threads에서 InsuWiki로, 클릭 3번이면 Daily에 저장"**
>
> PWA Web Share Target이 핵심 솔루션. 별도 앱 설치 없이 OS 공유 시트에서 바로 InsuWiki로 연결.  
> Phase 1 구현 후 오너 피드백을 받아 Phase 2를 결정한다.

---

**다음 단계**: 오너의 Phase 1 구현 승인 후 `/dev-workflow` 시작
