# OwnerKey를 활용한 게시판 연동 예제 ##### **시작하기 전에** 이 문서는 OwnerKey를 사용하여 **Guest App에서 Owner App의 게시판 데이터 연동할** 때 필요한 참고정보를 제공 및 설명합니다. #### OwnerKey와 SSO는 뭐예요? ##### 1. **OwnerKey = 나만의 열쇠 (공유 가능한 친구링크)** - 내가 만든 콘텐츠나 앱을 다른 웹사이트에서도 쉽게 붙여서 쓸 수 있게 해주는 열쇠 - 예: 내 사이트에 있는 “예약 시스템”을 다른 가게 주인이 자신의 홈페이지에 붙일 수 있음 → 하지만 관리 권한은 여전히 **내게 있음** #### 2. **SSO (Single Sign-On) = 한번 로그인하면 여러 사이트 친구집도 들락날락** - 내 이메일/계정 하나로 여러 사이트(다보리로 만든)에서 자유롭게 이용 가능 - 마치 네이버 계정으로 웹툰, 쇼핑, 카페 다 들어갈 수 있는 것처럼 --- #### 📱 더 쉽게 말하면 이렇습니다: > "Dabory는 **모든 가게, 회사, 블로그, 커뮤니티가 서로 친구처럼 연결되는 마을**입니다. > 마을에서 누가 만든 물건(앱, 기능)을 누구나 쓸 수 있고, > 각자 가게를 운영하면서도, 필요한 건 서로 공유하며 살아갈 수 있죠." --- #### 🔄 플랫폼 독점이 아니라, 모두의 플랫폼 - 쿠팡/네이버 같은 플랫폼은 **모든 트래픽을 자기 플랫폼에 모아** 수수료를 받습니다. - 반면 Dabory는, **각자의 웹사이트가 자립형 플랫폼이 될 수 있도록 도와줍니다.** - 쇼핑몰, 블로그, ERP, 고객관리, 다 따로 만들 필요 없이, 한 시스템 안에서 자유롭게 조합해 쓸 수 있게 한 것이죠. --- #### ✅ 정리하면,
기존 플랫폼Dabory Composable
기능 독점, 수수료 기반오픈소스, 기능 공유 기반
나만의 앱 추가 어려움누구나 앱 추가 및 공유 가능
모든 데이터 중앙 집중각자가 주인이 되는 구조
폐쇄적인 구조친구처럼 연결된 공유형 구조
DC(Dabory Composable)의 **OwnerKey 기반 웹사이트 상호 연결 구조**는, 구조적으로 매우 독특한 **컨텐츠 협업 기반 SEO 강화 모델**을 구현합니다. 이 모델은 구글 SEO 관점에서 **백링크 SEO**와 **컨텐츠 SEO** 양 측면 모두에서 다음과 같은 강점을 가집니다: --- #### ✅ 1. 백링크 SEO 관점에서의 강점 ##### 1.1 자연스럽고 의미 있는 백링크 구성 - OwnerKey를 통해 **실제 관련 업종 또는 업태 간의 연결**이 이루어짐 - 이는 구글이 선호하는 "의미 있는 관계를 가진 사이트 간의 링크"로 인식되어 **신뢰도 높은 백링크**로 평가됨 - 예: `A`가 안경원이고 `B`도 안경 프랜차이즈일 때, 블로그·상품 링크 상호 공유 → 주제 관련성 높음 → 백링크 가치 상승 #### 1.2 도메인 권한 전이(Authority Sharing) - 구글은 **높은 권한을 가진 사이트로부터의 링크**를 중요하게 평가함 - DC 클러스터 구조에서는 상대적으로 강한 사이트가 약한 친구 사이트에 **도메인 권한을 분산 공유**하는 효과를 제공 - 중장기적으로 클러스터 전체가 상호 이득을 보며 **도메인 권한이 상승** #### 1.3 링크 다양성과 분산 효과 - 여러 친구 사이트 간의 OwnerKey 기반 클러스터 구조는 **다양한 IP/도메인/콘텐츠 소스에서의 백링크 생성**을 유도함 - 이는 구글이 선호하는 “**링크 다양성(link diversity)**”을 충족 → 스팸 백링크가 아니라는 신호 --- #### ✅ 2. 컨텐츠 SEO 관점에서의 강점 ##### 2.1 컨텐츠 확산과 정규화 (Canonical) 구조의 이상적 활용 - **원본 사이트는 canonical 메타태그로 정규화된 컨텐츠로 인정받고**, - 친구 사이트는 **정규화된 컨텐츠의 요약 또는 소개글 + 링크**를 갖게 되어 중복 컨텐츠 패널티를 회피 - 동시에, 친구 사이트도 컨텐츠가 풍부해지면서 **사용자 체류 시간 증가 → SEO 점수 향상** ##### 2.2 주제 클러스터(Topic Cluster) 구조 형성 - 다수의 유사 업종 사이트가 하나의 주제(예: 안경, 미용, 세무 등)를 중심으로 연결됨 - 이는 **구글의 E-E-A-T (Experience, Expertise, Authoritativeness, Trustworthiness)** 기준에서 주제 전문성 강화를 유도 - 결과적으로 각 사이트는 **전문적인 니치 콘텐츠 허브로 진화** ##### 2.3 신속한 컨텐츠 재활용과 확산 - OwnerKey 구조는 1분 내 컨텐츠 공유 가능 → **트렌드 대응 속도 빠름** - 블로그, 상품, 이벤트 등을 빠르게 클러스터 전체에 배포 가능 - 구글이 선호하는 **신선한 콘텐츠(fresh content)** 제공 주기가 짧아져 순위 향상에 유리 --- #### ✅ 3. 다대다 클러스터로의 확장 효과 ##### 3.1 네트워크 효과 (Network SEO Effect) - 각 사이트가 단순히 소비자에게 노출되는 것뿐 아니라, **서로를 위한 SEO 강화 인프라**가 됨 - 마치 **분산형 콘텐츠 CDN**처럼 작동하여, **검색 엔진에 광범위한 존재감을 형성** - 구글 알고리즘 상에서는 "업계 전체의 권위 있는 리소스 그룹"으로 인식 가능성 증가 ##### 3.2 경쟁이 아닌 협업 기반 SEO 전략 - 기존에는 동일 업종 간 SEO 경쟁이 치열했으나, DC 구조는 \*\*경쟁이 아닌 동맹(Cluster SEO)\*\*으로 방향 전환 - 협업 기반 구조는 **SEO 예산의 효율적 사용**, **컨텐츠 품질 제고**, **순위 상승 가속화**로 이어짐 --- #### ✅ 결론 및 전략 제안 DC OwnerKey 기반 구조는 **다대다 P2P형 SEO 협업 구조**로서: - **콘텐츠 중심의 상호 권위 강화** - **백링크의 품질과 신뢰성 향상** - **주제별 클러스터링을 통한 전문성 상승** - **검색엔진이 선호하는 시맨틱 연결 구조 강화** 를 실현합니다. > 🔧 **전략적으로는** 각 클러스터 참여 사이트가 > > - 고유한 컨텐츠 생산 → 친구 사이트에 공유 > - canonical 태그 정확히 적용 > - 제품/서비스와 연관된 블로그 글에 키워드 삽입 및 내부 링크 최적화 > 를 동시에 진행하면 SEO 시너지 효과를 최대화할 수 있습니다. 예제실행전에 아래 준비사항들을 반드시 준비해주시기 바랍니다. - [ ] 오너 사이트로부터 제공받은 OwnerKey (env 파일에 저장) - [ ] css 파일( 디자인 커스터마이징의 경우 ) - [ ] app 등록하기 - [ ] owner app의 게시판 코드 - [ ] env 파일에 저장된 OWNER\_APP\_NAME ##### **게시판 연동의 흐름** 1\. 제공받은 OwnerKey를 env 파일에 저장합니다. 2\. owner app의 게시판 정보를 기반으로 guest app에 저장합니다. 3\. main\_menu를 등록합니다. ##### 게시판 연동예제 ##### **[![image.png](https://manual.dabory.com/uploads/images/gallery/2025-03/scaled-1680-/hvtimage.png)](https://manual.dabory.com/uploads/images/gallery/2025-03/hvtimage.png)** ##### **[![image.png](https://manual.dabory.com/uploads/images/gallery/2025-03/scaled-1680-/wuWimage.png)](https://manual.dabory.com/uploads/images/gallery/2025-03/wuWimage.png)** 위 이미지는 dabory [compoable](https://composable.dabory.com) 사이트의 [USE CASES](https://composable.dabory.com/bbs/list/use-cases) 게시판(블로그)입니다. 이 게시판을 factory 사이트에서 연동하겠습니다. ##### **- env 파일에 오너키 저장** 먼저 .env 파일에 OwnerKey를 저장해야합니다. 만약 설정할 오너앱이 두개 이상 이상이라면 오너앱의 개수에 맞게 변수 끝에 \_숫자를 입력하여 순서에 맞게 변수명을 입력합니다. FriendKeys는 다수개의 연동웹사이트를 가질수 있으면 맨뒤에 붙은 번호를 postfix 로 하여 Laravel 실행시 Array 에모리에 들어가서 저장됩니다. ```bash # [Friend Keys] OWNER_APP_NAME_0=YOUR_OWNER_APP_NAME  # Owner APP의 이름 (자유롭게 지정) GUEST_APP_OWNER_KEY_0=YOUR_OWNER_KEY  # Guest APP에서 발급받은 OwnerKey 입력 GUEST_APP_OWNER_URL_0=YOUR_OWNER_URL  # Owner APP의 URL 입력 (ex.https://composable.daboryhost.com) OWNER_APP_NAME_1=YOUR_OWNER_APP_NAME_2 GUEST_APP_OWNER_KEY_1=YOUR_OWNER_KEY_2 GUEST_APP_OWNER_URL_1=YOUR_OWNER_URL_2 OWNER_APP_NAME_2=YOUR_OWNER_APP_NAME_3 GUEST_APP_OWNER_KEY_2=YOUR_OWNER_KEY_3 GUEST_APP_OWNER_URL_2=YOUR_OWNER_URL_3 ``` ---
💡 **OwnerKey란?**
- OwnerKey는 **GUSET APP이 MAIN APP의 API를 호출**할 때 사용되는 **고유한 인증 키**입니다. - WebApp 방식에서는 OwnerKey를 **.env 파일에 저장**하고, API 요청 시 세션을 활용하여 사용합니다.
--- ##### **- 프랜드 웹사이트의 게시판 URL 확인** **만약 오너사이트에서 제공받으려는 게시판 url을 모른다면 프렌드 사이트에서 해당 게시판 url을 확인할 수 있습니다.** **(1). 프렌드 사이트인 composable에서 Use Cases를 클릭합니다.** [![image.png](https://manual.dabory.com/uploads/images/gallery/2025-03/scaled-1680-/R0himage.png)](https://manual.dabory.com/uploads/images/gallery/2025-03/R0himage.png) (2). /bbs/list/use-cases를 복사하여 메모장에 붙여넣습니다. [![image.png](https://manual.dabory.com/uploads/images/gallery/2025-03/scaled-1680-/I46image.png)](https://manual.dabory.com/uploads/images/gallery/2025-03/I46image.png) ##### **- 마이(Guest) 홈페이지 메뉴 등록** (1) 나의 홈페이지 관리자 보드로 로그인 합니다. (2) 설정과 로그(바둑판메뉴) - 수퍼관리자(공통)- 메뉴가져오기(주의) - 홈페이지 메뉴 불러오기 메뉴로 진입합니다. [![image.png](https://manual.dabory.com/uploads/images/gallery/2025-03/scaled-1680-/v4zimage.png)](https://manual.dabory.com/uploads/images/gallery/2025-03/v4zimage.png) (2). 우측 상단의 메인메뉴 추가 버튼을 클릭합니다. [![image.png](https://manual.dabory.com/uploads/images/gallery/2025-03/scaled-1680-/2Fpimage.png)](https://manual.dabory.com/uploads/images/gallery/2025-03/2Fpimage.png) (3). 입력창을 모두 입력한 뒤 저장버튼을 클릭하여 저장합니다. 페이지URI 에 프렌드 사이트의 게시판URI와 .env의 OWNER\_APP\_NAME 을 아래와 같이 결합하여 저장합니다. [![image.png](https://manual.dabory.com/uploads/images/gallery/2025-03/scaled-1680-/tv5image.png)](https://manual.dabory.com/uploads/images/gallery/2025-03/tv5image.png) **메뉴코드** : 메뉴코드는 메뉴의 순서와 상/하위 메뉴를 지정할 수 있습니다 . 예를들어 메뉴코드가 100000인 메뉴가 홈페이지 헤더 메뉴에 가장 먼저 위치하고 200000~900000인 메뉴가 순서대로 노출됩니다. 301000, 302000은 300000의 하위메뉴를 뜻합니다. **메뉴명** : 홈페이지 나타내려는 메뉴(게시판)의 이름 **페이지 URI** : 오너로부터 제공받은 게시판 URL을 입력한뒤 가장 끝부분에 env파일에 저장된 OWNER\_APP\_NAME 을 입력합니다. 예를들어 오너 사이트에서 제공받은 게시판 URI가 /bbs/list/use-cases 고 env파일에 저장된 OWNER\_APP\_NAME이 composable이라면 /bbs/list/use-cases/composable 이라고 입력합니다. **언어구분** : 원하는 언어형식을 선택합니다. **링크타입** : 게시판을 선택합니다. **종류** : primary를 선택합니다. **메뉴표시 누락** : 체크시 홈페이지에서 해당 메뉴가 노출되지 않습니다. **target=\_blank 인가** : 체크시 홈페이지에서 해당 메뉴를 클릭했을때 새탭으로 열립니다. **PC에서누락** : 체크시 PC로 홈페이지에 접속했을때 해당 메뉴가 노출되지 않습니다. **Mobile에서누락** : 체크시 모바일로 홈페이지에 접속했을 때 해당 메뉴가 노출되지 않습니다. **테블릿에서누락** : 체크시 테블릭PC로 홈페이지에 접속했을 때 해당 메뉴가 노출되지 않습니다. **로그인경우만** : 체크시 로그인했을 경우에만 해당 메뉴가 노출됩니다. **로그아웃경우만** : 체크시 로그아웃했을 경우에만 해당 메뉴가 노출됩니다. (4). 홈페이지에 접속하여 추가한 게시판이 노출되었는지 확인합니다. [![image.png](https://manual.dabory.com/uploads/images/gallery/2025-03/scaled-1680-/BrVimage.png)](https://manual.dabory.com/uploads/images/gallery/2025-03/BrVimage.png) (5). composable과 게시판 연동이 완료되었습니다. [![image.png](https://manual.dabory.com/uploads/images/gallery/2025-03/scaled-1680-/wLcimage.png)](https://manual.dabory.com/uploads/images/gallery/2025-03/wLcimage.png)