bing ์›น๋งˆ์Šคํ„ฐํˆด์— ์ž๋™์œผ๋กœ ํ‹ฐ์Šคํ† ๋ฆฌ ๋“ฑ๋กํ•˜๊ธฐ, bing webmaster api, bing ์„œ์น˜ ์ฝ˜์†”
๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๋””์ง€ํ„ธ ๊ฟ€ํŒ

bing ์›น๋งˆ์Šคํ„ฐํˆด์— ์ž๋™์œผ๋กœ ํ‹ฐ์Šคํ† ๋ฆฌ ๋“ฑ๋กํ•˜๊ธฐ, bing webmaster api, bing ์„œ์น˜ ์ฝ˜์†”

by ์ผ์ƒ์„ ๊ณต์œ ํ•ฉ๋‹ˆ๋‹ค 2023. 11. 8.

๊ตฌ๊ธ€ ์„œ์น˜ ์ฝ˜์†”, ๋„ค์ด๋ฒ„ ์„œ์น˜ ์–ด๋“œ๋ฐ”์ด์ €์ฒ˜๋Ÿผ ๋น™์—๋„ ๋น™ ์›น๋งˆ์Šคํ„ฐ(bing webmaster)๋ผ๋Š” ๊ฒƒ์ด ์žˆ๋‹ต๋‹ˆ๋‹ค. ์ˆ˜๋™์œผ๋กœ ํ‹ฐ์Šคํ† ๋ฆฌ ๊ฒŒ์‹œ๊ธ€๋“ค์„ ๋“ฑ๋กํ•˜๋‹ค ๊ท€์ฐฎ์•„์ ธ์„œ ์ด๋ฒˆ์— bing api๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ผ๊ด„ ๋“ฑ๋ก์„ ํ•ด๋ณด์•˜์Šต๋‹ˆ๋‹ค. ์•„๋ž˜ ๋งํฌ๋ฅผ ๋ณด์‹œ๋ฉด ํ•ด๋‹น ๋‚ด์šฉ์€ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ˜„์žฌ ์ž‘์„ฑํ•œ ๊ฒŒ์‹œ๊ธ€์€ 1700~800๊ฐœ ๊ทธ ์–ด๋””์ฏค์ธ๊ฐ€ ์ธ๋ฐ ํ•˜๋ฃจ์— 100๊ฐœ ๋“ฑ๋ก์œผ๋กœ ์ œํ•œ์ด ์žˆ์–ด ์ „์ฒด ์ ์šฉ์€ ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๊ฒฐ๊ตญ ๋ฐ˜์€ ์ˆ˜๋™์œผ๋กœ ์ง„ํ–‰ํ•ด์•ผ ํ•  ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์—ฌํ•˜ํŠผ ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ๊ณต์œ ํ•ด ๋ด…๋‹ˆ๋‹ค.

 

 

 

๋ธ”๋กœ๊ทธ, ํ‹ฐ์Šคํ† ๋ฆฌ ๊ธ€ ์ž‘์„ฑ ํ›„ ๊ฒ€์ƒ‰ ์‚ฌ์ดํŠธ, ๊ฒ€์ƒ‰ ์—”์ง„์— ๋…ธ์ถœ ๋˜๋Š” ๋ฐฉ๋ฒ•

Google ๊ตฌ๊ธ€ google search console ์‚ฌ์ดํŠธ ์ ‘์†ํ•˜์—ฌ ์›น์‚ฌ์ดํŠธ ๋“ฑ๋ก ํ›„ ๊ฒŒ์‹œ๊ธ€ ๋“ฑ๋กํ•˜๊ธฐ ๊ตฌ๊ธ€ ๊ฒ€์ƒ‰ ์‹œ ์ž‘์„ฑํ•œ ๊ธ€์ด ๋…ธ์ถœ ๋  ์ˆ˜ ์žˆ๋„๋ก URL์„ ๋“ฑ๋กํ•˜๋Š” ์‚ฌ์ดํŠธ ๋งํฌ : https://search.google.com/search-console Bing ๋น™

odaily.tistory.com

 

Bing Webmaster Tool Api key ๋ฐœ๊ธ‰๋ฐฉ๋ฒ•

๋น™ ์›น๋งˆ์Šคํ„ฐ์— ๊ฐ€์ž…์„ ํ•˜์—ฌ ์‚ฌ์ดํŠธ๋ฅผ ๋“ฑ๋กํ•˜์…จ๋‹ค๋ฉด api key๋ฅผ ๋ฐœ๊ธ‰๋ฐ›์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋ฐœ๊ธ‰ํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์›น๋งˆ์Šคํ„ฐํŽ˜์ด์ง€ ์ƒ๋‹จ์— ๋ณด๋ฉด ํ†ฑ๋‹ˆ๋ฐ”ํ€ด ๋ชจ์–‘์˜ ์•„์ด์ฝ˜์ด ์žˆ์Šต๋‹ˆ๋‹ค. ํด๋ฆญํ•˜๋ฉด API ์•ก์„ธ์Šค ๊ถŒํ•œ์ด๋ผ๋Š” ๋ฉ”๋‰ด๊ฐ€ ๋‚˜์˜ต๋‹ˆ๋‹ค. ํด๋ฆญํ•˜์—ฌ ๋“ค์–ด๊ฐ€ ๋‘ ๋ฒˆ์งธ API ํ‚ค ๋ฉ”๋‰ด๋ฅผ ๋ˆŒ๋Ÿฌ ๋ฐœ๊ธ‰ํ•˜๋ฉด ๋ฐ”๋กœ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค.

 

 

ํ‹ฐ์Šคํ† ๋ฆฌ API ํ‚ค ๋ฐœ๊ธ‰ ํ›„ access token๊นŒ์ง€ 

์ผ์ „์— ํ‹ฐ์Šคํ† ๋ฆฌ ๊ฒŒ์‹œ๊ธ€ ๋“ฑ๋กํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์•ก์„ธ์Šค ํ† ํฐ ๋ฐœ๊ธ‰๊นŒ์ง€๋Š” ๊ทธ๋ƒฅ ์ง€๋‚˜๊ฐ€๊ฒ ์Šต๋‹ˆ๋‹ค. ์•„๋ž˜ ๋งํฌ๋ฅผ ์ฐธ์กฐํ•˜์—ฌ access ํ† ํฐ์„ ๋ฐœ๊ธ‰๋ฐ›์œผ์‹œ๊ธธ ๋ฐ”๋ž๋‹ˆ๋‹ค. 

 

 

[google app script] ํ‹ฐ์Šคํ† ๋ฆฌ OPEN API๋กœ ๊ฒŒ์‹œ๊ธ€ ๋ฐœํ–‰ ๋ฐฉ๋ฒ•

์ง€๋‚œ๋ฒˆ์—๋Š” wiki ๋ฐฑ๊ณผ api๋กœ ๋ฐ์ดํ„ฐ ๋ถˆ๋Ÿฌ์˜ค๋Š” ๊ฒƒ์„ ์ž๋™ํ™”ํ–ˆ์—ˆ๋Š”๋ฐ์š”. ์ด๋ฒˆ์—๋Š” ํ‹ฐ์Šคํ† ๋ฆฌ ๊ฒŒ์‹œ๊ธ€์„ ์ž๋™์œผ๋กœ ๋ฐœํ–‰ํ•ด๋ณด๋ ค๊ณ  API๋ฅผ ํ†ตํ•ด ๊ฒŒ์‹œ๊ธ€ ์ž‘์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค. ์šฐ์„  ์ง€๋‚œ๋ฒˆ ์ž๋™๋ฐœํ–‰

odaily.tistory.com

 

 

Bing webmast Tool API ์ด์šฉํ•˜๊ธฐ

ํ‹ฐ์Šคํ† ๋ฆฌ ์•ก์„ธ์Šคํ† ํฐ๊ณผ bing api key๋ฅผ ์ž…๋ ฅํ•˜์—ฌ ์•„๋ž˜ ์†Œ์Šค๋ฅผ ์‹คํ–‰ํ•˜์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค. ๋‹จ, ์•„๋ž˜ ์†Œ์Šค๋Š” ํ‹ฐ์Šคํ† ๋ฆฌ์— ๋“ฑ๋ก๋œ ์ „์ฒด ๊ธ€ URL ๋งํฌ๋ฅผ ๊ฐ€์ ธ์™€ ํ•œ๋ฒˆ์— ์ผ๊ด„๋กœ bing ์›น๋งˆ์Šคํ„ฐ ๋‘˜์— ๋“ฑ๋กํ•˜๋Š” ์†Œ์Šค์ž…๋‹ˆ๋‹ค. ํ•˜๋ฃจ 100๊ฐœ ์ œํ•œ์ด๊ธฐ 100๊ฐœ ์ด์ƒ url์ด ์žˆ๋‹ค๋ฉด, ๊ฒฐ๊ณผ๋Š” ์˜ค๋ฅ˜๋กœ ๋‚ฉ๋‹ˆ๋‹ค. ํ‹ฐ์Šคํ† ๋ฆฌ๋Š” ๊ธ€ ๋ชฉ๋ก ์กฐํšŒ ์‹œ ํŽ˜์ด์ง€ ๊ฐœ๋…์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ 10๊ฐœ์”ฉ ๋ฐ›์•„์˜ค๊ธฐ ๋•Œ๋ฌธ์— ํŽ˜์ด์ง€ ๋ฒˆํ˜ธ๋ฅผ ๋‹ค์‹œ ๋„ฃ์–ด ๋ฆฌ์ŠคํŠธ๋ฅผ ๋ฐ›์•„์™€์•ผ ํ•ฉ๋‹ˆ๋‹ค.

 

ํ‹ฐ์Šคํ† ๋ฆฌ ๋ชฉ๋ก ์กฐํšŒ API ๊ฐ€์ด๋“œ ๋งํฌ : https://tistory.github.io/document-tistory-apis/apis/v1/post/list.html

 

import requests
import json

# ํ‹ฐ์Šคํ† ๋ฆฌ ๋ธ”๋กœ๊ทธ ์ด๋ฆ„ ๋“ฑ๋ก๋œ ๋„๋ฉ”์ธ ์ฃผ์†Œ ๋งจ ์•ž
blog_name = 'odaily'
# ๋ฐœ๊ธ‰๋ฐ›์€ ํ‹ฐ์Šคํ† ๋ฆฌ ์•ก์„ธ์Šค ํ† ํฐ
access_token = 'ํ‹ฐ์Šคํ† ๋ฆฌ ์•ก์„ธ์Šค ํ† ํฐ์„ ์ž…๋ ฅํ•˜์‹œ๊ธธ ๋ฐ”๋ž๋‹ˆ๋‹ค'
# ๋น™ ์›น๋งˆ์Šคํ„ฐ ๋„๊ตฌ์—์„œ ๋ฐœ๊ธ‰๋ฐ›์€ API ํ‚ค
api_key = '๋น™ ์›น๋งˆ์Šคํ„ฐ ๋„๊ตฌ์—์„œ api๋ฅผ ๋ฐœ๊ธ‰ ๋ฐ›์•„ ๊ธฐ์ž…ํ•ด์ฃผ์„ธ์š”.'
# ์ œ์ถœํ•  URL
real_list = []
page_idx = 1

def submit_url_to_bing_webmaster(url, api_key):
    endpoint = "https://ssl.bing.com/webmaster/api.svc/json/SubmitUrlbatch?apikey=" + api_key
    headers = {
        "Host": "ssl.bing.com",
        "Content-Type": "application/json; charset=utf-8",
    }
    payload = {
        "siteUrl":"https://odaily.tistory.com",
        "urlList": url    
    }
    
    response = requests.post(endpoint,json=payload)
    print(response.status_code)
    print("์ด์œ ", response.text)
    
    if response.status_code == 200:
        return "URL์ด ์„ฑ๊ณต์ ์œผ๋กœ ์ œ์ถœ๋˜์—ˆ์Šต๋‹ˆ๋‹ค."
    else:
        return "URL ์ œ์ถœ์— ์‹คํŒจํ•˜์˜€์Šต๋‹ˆ๋‹ค."


def get_tistory_post_list(idx, blog_name, access_token):
    api_url = f'https://www.tistory.com/apis/post/list?output=json&blogName={blog_name}&access_token={access_token}&page={idx}'
    response = requests.get(api_url)
    
    if response.status_code == 200:
        post_list_data = response.json()
        return post_list_data['tistory']['item']
    else:
        return None


while True :
    
    post_list = get_tistory_post_list(page_idx, blog_name, access_token)
    write_list = post_list['posts']
    allPage = int( int(post_list['totalCount']) / 10 + 1)

    if page_idx == allPage :
        break

    if post_list:
            for write in write_list:
            
            	# ์ œ๋ชฉ๊ณผ URL ๋ณด๊ณ ์‹ถ์„ ๋•Œ ์ถœ๋ ฅํ•˜๊ธฐ
                # print(f"์ œ๋ชฉ: {write['title']}")
                # print(f"URL: {write['postUrl']} \n")
                
                real_list.append(write['postUrl'])
    else:
        print("๊ธ€ ๋ชฉ๋ก์„ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.")

    print(page_idx, " ๋ฒˆ์งธ\n")
    page_idx = page_idx + 1

print("๋ฆฌ์ŠคํŠธ : ", real_list ,"\n")
print("์ˆ˜" , len(real_list) ,"\n")


result = submit_url_to_bing_webmaster(real_list, api_key)
print(result)

 

๋งˆ์ง€๋ง‰์— ๋ฆฌ์ŠคํŠธ๋ฅผ ์ถœ๋ ฅํ•˜๋ฉด ํŒŒ์ด์ฌ ์ฝ”๋“œ ์‚ฌ์šฉํ•œ ์ฝ˜์†”์ฐฝ์— ์•„๋ž˜์™€ ๊ฐ™์ด ์ถœ๋ ฅ๋ฉ๋‹ˆ๋‹ค. ์ € ๊ฐ™์€ ๊ฒฝ์šฐ๋Š” submit_url_to_bing_webmaster๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  text ํŒŒ์ผ๋กœ ์ถœ๋ ฅํ•˜์—ฌ์„œ ๋ฆฌ์ŠคํŠธ ๊ด€๋ฆฌ๋ฅผ ๋ณ„๋„๋กœ ํ•˜์—ฌ ์›น๋งˆ์Šคํ„ฐ์— ๋“ฑ๋กํ•˜๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ ์ƒ๊ฐํ•˜์˜€์Šต๋‹ˆ๋‹ค.

 

๊ฐ€์ ธ์˜จ ๋ฆฌ์ŠคํŠธ ๋ชฉ๋ก์„ ํŒŒ์ผ๋กœ ์ €์žฅํ•˜๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. ํ˜น์‹œ๋‚˜ ํ•„์š”ํ•˜์‹  ๋ถ„ ์žˆ์œผ์‹œ๋ฉด ์œ„ ์†Œ์Šค์—์„œ ๋งˆ์ง€๋ง‰ 2์ค„์€ ์ฃผ์„ ์ฒ˜๋ฆฌ ํ•˜์—ฌ ์•„๋ž˜ ์†Œ์Šค๋ฅผ ํ™œ์šฉํ•˜์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค. ์•„๋ž˜ ์†Œ์Šค๋Š” ํ‹ฐ์Šคํ† ๋ฆฌ์—์„œ ๊ธ€ ๋ชฉ๋ก์„ ์ „์ฒด ์กฐํšŒ ํ•œ ๋ฆฌ์ŠคํŠธ๋ฅผ ํŒŒ์ผ๋กœ ์ €์žฅํ•˜๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.

text_data = "\n".join(real_list)  

# ๊ฒฐ๊ณผ๋ฅผ ํŒŒ์ผ๋กœ ์ €์žฅ
with open('result.txt', 'w', encoding='utf-8') as file:
    file.write(text_data)

print("๊ฒฐ๊ณผ๊ฐ€ result.txt ํŒŒ์ผ๋กœ ์ €์žฅ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.")

 

 

์ด๋ฏธ ๋Šฆ์—ˆ์ง€๋งŒ, ๋‚ด์ผ๋ถ€ํ„ฐ๋Š” ๊พธ์ค€ํžˆ 100๊ฐœ์”ฉ ๋“ฑ๋กํ•ด์„œ 17์ผ ๋งŒ์— bing์—๋„ ์ œ ์ฝ˜ํ…์ธ ๋ฅผ ๋‹ค ๋“ฑ๋กํ•˜์—ฌ ์œ ์ž…๋  ์ˆ˜ ์žˆ๋„๋ก ํ•ด์•ผ๊ฒ ์Šต๋‹ˆ๋‹ค. 9์›”๋ณด๋‹ค. 10์›”์— ๋…ธ์ถœ์ˆ˜๊ฐ€ ์ฆ๊ฐ€ํ•˜๋‹ค ๋ณด๋‹ˆ 11์›”์—๋„ ๊ฒ€์ƒ‰์—”์ง„์—์„œ ๋…ธ์ถœ๋˜๋Š” ์ˆœ์œ„๊ฐ€ ์ ์  ์˜ฌ๋ผ๊ฐ€๊ณ  ์• ๋“œ์„ผ์Šค ๋ฐ ์• ๋“œํ”ฝ ์ˆ˜์ต์ด ๋Š๋Š” ํšจ๊ณผ๊ฐ€ ์žˆ๋Š” ๊ฒƒ ๊ฐ™์•„ ์˜์š•์ด ์ƒ๊น๋‹ˆ๋‹ค. ๊ทธ๋ ‡๊ฒŒ ๋งŽ์€ ์ˆ˜์ต์€ ์•„๋‹ˆ์ง€๋งŒ ํ‹ฐ๋Œ ๋ชจ์•„ ํƒœ์‚ฐ์ด ๋˜๋Š” ์ˆ˜์ต์„ ๋งŒ๋“ค์–ด ๋ณด๋„๋ก ๋…ธ๋ ฅํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๋‹ค๋“ค ์ฆ๊ฑฐ์šด ํฌ์ŠคํŒ… ํ•˜์„ธ์š”.

 

๋Œ“๊ธ€