본 글은 Google Search Console에 도메인을 등록하는 내용을 다루지 않습니다.

구글은 정기적으로 웹을 탐색하여 웹사이트와 관련된 페이지들을 찾아서 검색 엔진에 인덱싱하는데요, 웹사이트 운영자들은 인덱싱 작업을 돕기 위해 사이트맵을 웹 마스터에 제공합니다. 하지만 인덱싱 주기는 페이지마다 다르고 변경된 콘텐츠가 빠르게 인덱싱될 것이라는 보장은 없습니다.

이번 글에서는 GitHub Actions를 활용해서 Google 검색 콘솔에 사이트맵을 갱신하는 방법에 대해 알아보겠습니다.


쉘 스크립트 생성

사이트맵이 업데이트되었다는 것을 Google 검색 콘솔에 알리기 위해 쉘 스크립트를 만들어보겠습니다.

"/scripts" 폴더에 다음과 같이 스크립트를 작성합니다.

ping_google_search_console.sh
1echo "running shell script"
2curl "https://google.com/ping?sitemap=https://[도메인]/sitemap.xml"
3echo "request sent to google"

위 스크립트는 구글의 사이트맵 알림 서비스 URL로 GET 요청을 보내 사이트맵 업데이트를 알립니다. 사이트맵을 robots.txt에 포함시켜 검색 엔진에게 웹 사이트의 구성을 알려주는 데 도움을 줄 수 있지만 ping 요청을 통해 "새로운 콘텐츠가 있으니 인덱싱 해달라"고 새로 알릴 수도 있습니다. 쉘 스크립트를 실행하지 않고 직접 브라우저에서 해당 url로 요청을 보내더라도 사이트맵 접수가 가능한데요, 요청을 보내보면 대기열에 추가되었다고 알려줍니다.


ping google

1.1 ping google


Github Actions Workflow 생성

쉘 스크립트를 생성한 후, Pull Request가 main 브랜치에 머지될 때마다 해당 스크립트가 실행되도록 Workflow를 구축해 보겠습니다.

ping-google.yml
1name: post merge workflow
2
3on:
4  pull_request:
5    branches:
6      - main
7    types: [closed]
8
9jobs:
10  post-merge-job:
11    # merge 후
12    if: github.event.pull_request.merged == true
13    runs-on: ubuntu-latest
14    steps:
15        # 코드 베이스에 접근할 수 있도록 가상 환경 생성
16      - name: Checkout Repository
17        uses: actions/checkout@v2
18
19        # 쉘 스크립트 실행
20      - name: Run Ping Google Script
21        run: sh scripts/ping_google_search_console.sh
22
23        # 기타 명령 수행

위 Workflow는 main 브랜치로 Pull Request가 닫힐 때 정의된 작업들을 실행하게 되는데요, "ping_google_search_console.sh" 스크립트를 실행해 Google에 사이트맵이 업데이트되었음을 알립니다.

main 브랜치나 pull request나 아닌 다른 작업을 감지해 실행하고자하는 경우 해당 조건에 맞게 설정합니다.


결과 확인

main 브랜치 업데이트 후, Actions 탭에서 Workflow가 성공적으로 실행되었는지 확인합니다.


github actions workflow

1.2 post merge workflow


성공적으로 실행됐으면 검색 콘솔은 sitemap을 다시 크롤링하도록 대기열에 추가합니다.


색인 생성 결과

1.3 색인 결과


다만 너무 잦은 "pinging"은 구글에서 악성 요청으로 간주하거나 정책에 위반될 수 있기 때문에 이 점 유의해 주세요.

참고 : Google Ping Sitemap URL Tool