diff --git a/workspace/zioinfo-web/frontend/index.html b/workspace/zioinfo-web/frontend/index.html
index fe3b9bc5..28db22e3 100644
--- a/workspace/zioinfo-web/frontend/index.html
+++ b/workspace/zioinfo-web/frontend/index.html
@@ -3,13 +3,87 @@
-
-
-
-
+
+
+ (주)지오정보기술 — AI 기반 인프라 자율 운영 플랫폼 GUARDiA ITSM
+
+
+
+
+
+
+
- (주)지오정보기술
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/workspace/zioinfo-web/frontend/public/robots.txt b/workspace/zioinfo-web/frontend/public/robots.txt
new file mode 100644
index 00000000..9c2c00cc
--- /dev/null
+++ b/workspace/zioinfo-web/frontend/public/robots.txt
@@ -0,0 +1,24 @@
+# robots.txt — (주)지오정보기술
+# https://zioinfo.co.kr
+
+User-agent: *
+Allow: /
+
+# 관리자 페이지 크롤링 차단
+Disallow: /admin/
+Disallow: /api/
+
+# 크롤러별 개별 설정
+User-agent: Googlebot
+Allow: /
+Crawl-delay: 1
+
+User-agent: Yeti
+Allow: /
+Crawl-delay: 1
+
+User-agent: Baiduspider
+Disallow: /
+
+# 사이트맵 위치
+Sitemap: https://zioinfo.co.kr/sitemap.xml
diff --git a/workspace/zioinfo-web/frontend/public/sitemap.xml b/workspace/zioinfo-web/frontend/public/sitemap.xml
new file mode 100644
index 00000000..22315104
--- /dev/null
+++ b/workspace/zioinfo-web/frontend/public/sitemap.xml
@@ -0,0 +1,165 @@
+
+
+
+
+
+ https://zioinfo.co.kr/
+ 2026-05-31
+ weekly
+ 1.0
+
+
+
+
+ https://zioinfo.co.kr/solution/guardia
+ 2026-05-31
+ monthly
+ 0.9
+
+
+ https://zioinfo.co.kr/solution/erp
+ 2026-05-31
+ monthly
+ 0.7
+
+
+ https://zioinfo.co.kr/solution/crm
+ 2026-05-31
+ monthly
+ 0.7
+
+
+ https://zioinfo.co.kr/solution/bi
+ 2026-05-31
+ monthly
+ 0.7
+
+
+
+
+ https://zioinfo.co.kr/company/greeting
+ 2026-05-31
+ yearly
+ 0.8
+
+
+ https://zioinfo.co.kr/company/history
+ 2026-05-31
+ yearly
+ 0.6
+
+
+ https://zioinfo.co.kr/company/organization
+ 2026-05-31
+ yearly
+ 0.5
+
+
+ https://zioinfo.co.kr/company/ci
+ 2026-05-31
+ yearly
+ 0.5
+
+
+ https://zioinfo.co.kr/company/location
+ 2026-05-31
+ yearly
+ 0.7
+
+
+
+
+ https://zioinfo.co.kr/business/reference
+ 2026-05-31
+ monthly
+ 0.7
+
+
+ https://zioinfo.co.kr/business/partner
+ 2026-05-31
+ monthly
+ 0.6
+
+
+
+
+ https://zioinfo.co.kr/support/notice
+ 2026-05-31
+ weekly
+ 0.7
+
+
+ https://zioinfo.co.kr/support/faq
+ 2026-05-31
+ monthly
+ 0.7
+
+
+ https://zioinfo.co.kr/support/catalog
+ 2026-05-31
+ monthly
+ 0.6
+
+
+ https://zioinfo.co.kr/support/contact
+ 2026-05-31
+ monthly
+ 0.8
+
+
+
+
+ https://zioinfo.co.kr/recruit/jobs
+ 2026-05-31
+ weekly
+ 0.7
+
+
+ https://zioinfo.co.kr/recruit/welfare
+ 2026-05-31
+ yearly
+ 0.5
+
+
+ https://zioinfo.co.kr/recruit/apply
+ 2026-05-31
+ monthly
+ 0.6
+
+
+
+
+ https://zioinfo.co.kr/news/newsroom
+ 2026-05-31
+ weekly
+ 0.7
+
+
+ https://zioinfo.co.kr/news/blog
+ 2026-05-31
+ weekly
+ 0.6
+
+
+
+
+ https://zioinfo.co.kr/privacy
+ 2026-05-31
+ yearly
+ 0.4
+
+
+ https://zioinfo.co.kr/terms
+ 2026-05-31
+ yearly
+ 0.4
+
+
+ https://zioinfo.co.kr/sitemap
+ 2026-05-31
+ monthly
+ 0.3
+
+
+
diff --git a/workspace/zioinfo-web/frontend/src/hooks/useSeoMeta.js b/workspace/zioinfo-web/frontend/src/hooks/useSeoMeta.js
new file mode 100644
index 00000000..854a7d10
--- /dev/null
+++ b/workspace/zioinfo-web/frontend/src/hooks/useSeoMeta.js
@@ -0,0 +1,60 @@
+import { useEffect } from 'react';
+
+const BASE = 'https://zioinfo.co.kr';
+const SITE = '(주)지오정보기술';
+
+/**
+ * 페이지별 SEO 메타태그 동적 업데이트.
+ * @param {Object} opts
+ * @param {string} opts.title 페이지 제목 (| 사이트명 자동 추가)
+ * @param {string} opts.description 페이지 설명 (160자 이내 권장)
+ * @param {string} [opts.path] 정규 URL 경로 (예: '/solution/guardia')
+ * @param {string} [opts.image] OG 이미지 URL
+ * @param {string} [opts.keywords] 추가 키워드 (콤마 구분)
+ */
+export function useSeoMeta({ title, description, path = '', image = '/logo.png', keywords = '' }) {
+ useEffect(() => {
+ const fullTitle = title ? `${title} | ${SITE}` : SITE;
+ const canonical = `${BASE}${path}`;
+ const ogImage = image.startsWith('http') ? image : `${BASE}${image}`;
+
+ // title
+ document.title = fullTitle;
+
+ // 메타 업데이트 헬퍼
+ const set = (selector, attr, value) => {
+ let el = document.querySelector(selector);
+ if (!el) {
+ el = document.createElement('meta');
+ const [k, v] = selector.replace('meta[', '').replace(']', '').split('=');
+ el.setAttribute(k, v.replace(/"/g, ''));
+ document.head.appendChild(el);
+ }
+ el.setAttribute(attr, value);
+ };
+
+ // canonical
+ let canonical_el = document.querySelector('link[rel="canonical"]');
+ if (!canonical_el) {
+ canonical_el = document.createElement('link');
+ canonical_el.rel = 'canonical';
+ document.head.appendChild(canonical_el);
+ }
+ canonical_el.href = canonical;
+
+ // 기본
+ set('meta[name="description"]', 'content', description);
+ if (keywords) set('meta[name="keywords"]', 'content', keywords);
+
+ // OG
+ set('meta[property="og:title"]', 'content', fullTitle);
+ set('meta[property="og:description"]', 'content', description);
+ set('meta[property="og:url"]', 'content', canonical);
+ set('meta[property="og:image"]', 'content', ogImage);
+
+ // Twitter
+ set('meta[name="twitter:title"]', 'content', fullTitle);
+ set('meta[name="twitter:description"]', 'content', description);
+ set('meta[name="twitter:image"]', 'content', ogImage);
+ }, [title, description, path, image, keywords]);
+}
diff --git a/workspace/zioinfo-web/frontend/src/pages/Company.jsx b/workspace/zioinfo-web/frontend/src/pages/Company.jsx
index b18c88e4..96a329be 100644
--- a/workspace/zioinfo-web/frontend/src/pages/Company.jsx
+++ b/workspace/zioinfo-web/frontend/src/pages/Company.jsx
@@ -2,6 +2,7 @@ import React from 'react';
import { Routes, Route, NavLink, useNavigate } from 'react-router-dom';
import './Common.css';
import './Company.css';
+import { useSeoMeta } from '../hooks/useSeoMeta';
/* ── 서브 네비 ── */
const SUB_NAV = [
@@ -37,6 +38,7 @@ function SubNav({ title }) {
/* ── CEO 인사말 ── */
function Greeting() {
+ useSeoMeta({ title: 'CEO 인사말 — 홍영택 대표이사', description: '(주)지오정보기술 홍영택 대표이사의 인사말. 20년 이상 공공기관 IT 전문 서비스 기업으로 성장한 지오정보기술의 비전을 소개합니다.', path: '/company/greeting' });
return (
@@ -359,6 +361,7 @@ function CI() {
/* ── 오시는 길 ── */
function Location() {
+ useSeoMeta({ title: '오시는 길 — 경기도 안산시 단원구', description: '(주)지오정보기술 찾아오시는 방법. 경기도 안산시 단원구 광덕4로 220 오피스브이 578호. 전화: 031-483-1766', path: '/company/location', keywords: '지오정보기술 주소, 지오정보기술 위치, 안산 IT기업' });
return (
diff --git a/workspace/zioinfo-web/frontend/src/pages/GuardiaDetail.jsx b/workspace/zioinfo-web/frontend/src/pages/GuardiaDetail.jsx
index c464d271..e002eee0 100644
--- a/workspace/zioinfo-web/frontend/src/pages/GuardiaDetail.jsx
+++ b/workspace/zioinfo-web/frontend/src/pages/GuardiaDetail.jsx
@@ -1,6 +1,7 @@
import React, { useState } from 'react';
import { Link } from 'react-router-dom';
import './GuardiaDetail.css';
+import { useSeoMeta } from '../hooks/useSeoMeta';
const FEATURES = [
{ icon:'🤖', title:'AI 에이전트 자동화',
@@ -89,6 +90,13 @@ const TECH_STACK = [
];
export default function GuardiaDetail() {
+ useSeoMeta({
+ title: 'GUARDiA ITSM — AI 기반 레거시 인프라 자율 운영 플랫폼',
+ description: 'GUARDiA ITSM은 메신저 한 줄 명령으로 공공기관 레거시 서버를 자동 운영합니다. 에이전트 설치 없이 SSH/SFTP로 배포·장애·보안 운영을 완전 자동화.',
+ path: '/solution/guardia',
+ keywords: 'GUARDiA ITSM, AI ITSM, 공공기관 인프라 자동화, ChatOps, 에이전트리스, 레거시 서버 자동화',
+ image: '/screenshots/01_dashboard.png',
+ });
const [activeTab, setActiveTab] = useState('features');
return (
diff --git a/workspace/zioinfo-web/frontend/src/pages/Home.jsx b/workspace/zioinfo-web/frontend/src/pages/Home.jsx
index 2b4eb47e..a0ab617a 100644
--- a/workspace/zioinfo-web/frontend/src/pages/Home.jsx
+++ b/workspace/zioinfo-web/frontend/src/pages/Home.jsx
@@ -2,6 +2,7 @@ import React, { useState, useEffect, useRef } from 'react';
import { Link } from 'react-router-dom';
import axios from 'axios';
import './Home.css';
+import { useSeoMeta } from '../hooks/useSeoMeta';
/* ── 히어로 슬라이드 데이터 ─────────────────────────────── */
const SLIDES = [
@@ -70,6 +71,13 @@ const KPIS = [
];
export default function Home() {
+ useSeoMeta({
+ title: 'AI 기반 인프라 자율 운영 플랫폼 GUARDiA ITSM',
+ description: '(주)지오정보기술은 메신저 한 줄 명령으로 공공기관 레거시 IT 인프라를 자동 운영하는 GUARDiA ITSM을 개발합니다. 에이전트 설치 없이 SSH/SFTP로 1,000개 기관 운영 자동화.',
+ path: '/',
+ keywords: '지오정보기술, GUARDiA ITSM, 공공기관 인프라 자동화, AI 운영, ChatOps',
+ });
+
const [slide, setSlide] = useState(0);
const [paused, setPaused] = useState(false);
const [news, setNews] = useState([]);
diff --git a/workspace/zioinfo-web/frontend/src/pages/Privacy.jsx b/workspace/zioinfo-web/frontend/src/pages/Privacy.jsx
index 7a2d1518..85639f52 100644
--- a/workspace/zioinfo-web/frontend/src/pages/Privacy.jsx
+++ b/workspace/zioinfo-web/frontend/src/pages/Privacy.jsx
@@ -1,8 +1,10 @@
import React from 'react';
import { Link } from 'react-router-dom';
import './Common.css';
+import { useSeoMeta } from '../hooks/useSeoMeta';
export default function Privacy() {
+ useSeoMeta({ title: '개인정보처리방침', description: '(주)지오정보기술 개인정보처리방침. 수집 항목, 보유 기간, 이용자 권리, 개인정보 보호책임자 안내.', path: '/privacy' });
return (
diff --git a/workspace/zioinfo-web/frontend/src/pages/Sitemap.jsx b/workspace/zioinfo-web/frontend/src/pages/Sitemap.jsx
index 5023b4dc..e0b83e56 100644
--- a/workspace/zioinfo-web/frontend/src/pages/Sitemap.jsx
+++ b/workspace/zioinfo-web/frontend/src/pages/Sitemap.jsx
@@ -1,6 +1,7 @@
import React from 'react';
import { Link } from 'react-router-dom';
import './Common.css';
+import { useSeoMeta } from '../hooks/useSeoMeta';
const MAP = [
{
@@ -74,6 +75,7 @@ const MAP = [
];
export default function Sitemap() {
+ useSeoMeta({ title: '사이트맵', description: '(주)지오정보기술 홈페이지 전체 메뉴 안내. 회사소개, 솔루션, 사업실적, 고객지원, 채용, 뉴스 등 모든 페이지를 확인하세요.', path: '/sitemap' });
return (
diff --git a/workspace/zioinfo-web/frontend/src/pages/Terms.jsx b/workspace/zioinfo-web/frontend/src/pages/Terms.jsx
index 41056603..57b831b3 100644
--- a/workspace/zioinfo-web/frontend/src/pages/Terms.jsx
+++ b/workspace/zioinfo-web/frontend/src/pages/Terms.jsx
@@ -1,7 +1,9 @@
import React from 'react';
import './Common.css';
+import { useSeoMeta } from '../hooks/useSeoMeta';
export default function Terms() {
+ useSeoMeta({ title: '이용약관', description: '(주)지오정보기술 이용약관. 서비스 이용 목적, 권리의무, 면책조항 등을 안내합니다.', path: '/terms' });
return (