메뉴

Gemini 노트북과 AI로 리서치 자료 정리하기

오빠두엑셀 · 2026. 11. 1. 고침

Gemini 노트북과 AI 도구로 리서치 자료의 근거를 정리하고, 제품 리뷰와 유튜브 영상·채널을 분석합니다.

1. 유튜브·Gemini 노트북 - 북마클릿 준비하기

  • 유튜브 링크 복사 북마클릿을 준비합니다.
    javascript:(async function(){const onlyViewport = false;const isSearch = location.pathname === '/results';const seg = location.pathname.split('/')[1];const isChannel = seg.startsWith('@') || ['channel','c','user'].includes(seg);const listId = new URLSearchParams(location.search).get('list');const links = new Set();const cards = document.querySelectorAll(isSearch ? 'ytd-search #primary ytd-item-section-renderer > #contents > ytd-video-renderer' : isChannel ? 'ytd-browse[page-subtype="channels"] ytd-rich-grid-renderer > #contents > ytd-rich-item-renderer' : 'ytd-playlist-video-list-renderer ytd-playlist-video-renderer, ytd-playlist-panel-renderer ytd-playlist-panel-video-renderer');if(!isSearch && !cards.length){alert(isChannel ? '채널의 [동영상] 탭을 연 뒤 다시 실행해 주세요.' : '유튜브 검색 결과, 재생목록, 채널 [동영상] 탭에서 실행해 주세요.');return;}for(const card of cards){if(card.closest('[hidden],[aria-hidden="true"],ytd-shelf-renderer,ytd-reel-shelf-renderer,ytd-ad-slot-renderer')) continue;const a = isSearch ? card.querySelector('a#video-title') : (card.querySelector('a#video-title[href]') || card.querySelector('a#wc-endpoint[href]') || card.querySelector('a[href*="/watch?"]'));if(!a || !a.checkVisibility({visibilityProperty:true,opacityProperty:true})) continue;if(card.querySelector('a#thumbnail[href*="/shorts/"],[overlay-style="SHORTS"]')) continue;if(onlyViewport){const r = card.getBoundingClientRect();if(r.bottom <= 0 || r.top >= innerHeight || r.right <= 0 || r.left >= innerWidth) continue;}const url = new URL(a.href,location.href);const id = url.searchParams.get('v');if(url.hostname !== location.hostname || url.pathname !== '/watch' || !id || !/^[A-Za-z0-9_-]{11}$/.test(id)) continue;if(isChannel && url.searchParams.has('list')) continue;if(!isSearch && listId && url.searchParams.has('list') && url.searchParams.get('list') !== listId) continue;links.add('https://www.youtube.com/watch?v=' + id);}if(!links.size){alert(isSearch ? '복사할 일반 영상을 찾지 못했습니다. 검색 결과가 표시된 뒤 다시 실행해 주세요.' : isChannel ? '복사할 일반 영상을 찾지 못했습니다. 채널의 [동영상] 탭에서 영상 목록이 표시된 뒤 다시 실행해 주세요.' : '복사할 재생목록 영상을 찾지 못했습니다. 재생목록을 펼치고 영상 목록이 표시된 뒤 다시 실행해 주세요.');return;}try{await navigator.clipboard.writeText([...links].join('\n'));alert((isSearch ? '검색 결과' : isChannel ? '채널' : '재생목록') + '의 일반 영상 URL을 복사했습니다! (총 ' + links.size + '개)');}catch(error){alert('클립보드 복사가 차단되었습니다. 브라우저의 이 사이트 클립보드 권한을 확인해 주세요.');}})();
  • Gemini 노트북 소스 추출 북마클릿을 준비합니다.
    javascript:(function()%7Bvar%20NB_RE%20%3D%20%2F%5C%2Fnotebook%5C%2F(%5B0-9a-f-%5D%7B36%7D)%2F%3B%0Avar%20HOST_ID%20%3D%20'nbt-host'%3B%0Avar%20RPC_PATH%20%3D%20'%2F_%2FLabsTailwindUi%2Fdata%2Fbatchexecute'%3B%0Avar%20WORKERS%20%3D%203%3B%0Avar%20old%20%3D%20document.getElementById(HOST_ID)%3B%0Aif%20(old)%20old.remove()%3B%0Avar%20host%20%3D%20document.createElement('div')%3B%0Ahost.id%20%3D%20HOST_ID%3B%0Ahost.style.cssText%20%3D%20'position%3Afixed%3Btop%3A16px%3Bright%3A16px%3Bz-index%3A2147483647%3B'%3B%0Adocument.body.appendChild(host)%3B%0Avar%20root%20%3D%20host.attachShadow(%7B%20mode%3A%20'open'%20%7D)%3B%0Afunction%20el(tag%2C%20cls%2C%20text)%20%7B%0A%20%20%20%20var%20e%20%3D%20document.createElement(tag)%3B%0A%20%20%20%20if%20(cls)%20e.className%20%3D%20cls%3B%0A%20%20%20%20if%20(text%20!%3D%20null)%20e.textContent%20%3D%20text%3B%0A%20%20%20%20return%20e%3B%0A%7D%0Avar%20css%20%3D%20el('style')%3B%0Acss.textContent%20%3D%20%5B%0A%20%20%20%20'%3Ahost%7Ball%3Ainitial%7D'%2C%0A%20%20%20%20'.panel%7Bbox-sizing%3Aborder-box%3Bwidth%3A420px%3Bmax-width%3Acalc(100vw%20-%2032px)%3Bmax-height%3Acalc(100vh%20-%2032px)%3Boverflow%3Aauto%3B'%2C%0A%20%20%20%20'background%3A%23FFFFFF%3Bcolor%3A%2315191C%3Bborder%3A1px%20solid%20%23E1E5E7%3Bborder-radius%3A8px%3Bbox-shadow%3A0%208px%2024px%20rgba(21%2C25%2C28%2C.16)%3B'%2C%0A%20%20%20%20'font%3A14px%2F1.6%20Pretendard%2C%22Apple%20SD%20Gothic%20Neo%22%2C%22Malgun%20Gothic%22%2Csystem-ui%2Csans-serif%3Bpadding%3A16px%3Bdisplay%3Agrid%3Bgap%3A10px%7D'%2C%0A%20%20%20%20'.head%7Bdisplay%3Aflex%3Balign-items%3Acenter%3Bjustify-content%3Aspace-between%3Bgap%3A8px%7D'%2C%0A%20%20%20%20'.ttl%7Bfont-size%3A15px%3Bfont-weight%3A700%7D'%2C%0A%20%20%20%20'button%7Bfont%3Ainherit%3Bfont-size%3A13px%3Bline-height%3A1.4%3Bpadding%3A6px%2012px%3Bborder-radius%3A6px%3Bborder%3A1px%20solid%20%23E1E5E7%3B'%2C%0A%20%20%20%20'background%3A%23FFFFFF%3Bcolor%3A%2315191C%3Bcursor%3Apointer%3Bwhite-space%3Anowrap%7D'%2C%0A%20%20%20%20'button%3Ahover%7Bborder-color%3A%238A939A%7D'%2C%0A%20%20%20%20'button.go%7Bbackground%3A%23059669%3Bborder-color%3A%23059669%3Bcolor%3A%23FFFFFF%3Bfont-weight%3A600%7D'%2C%0A%20%20%20%20'button%3Adisabled%7Bopacity%3A.45%3Bcursor%3Adefault%7D'%2C%0A%20%20%20%20'button%3Afocus-visible%7Boutline%3A2px%20solid%20%23059669%3Boutline-offset%3A2px%7D'%2C%0A%20%20%20%20'input%5Btype%3Dcheckbox%5D%7Bflex%3Anone%3Bwidth%3A14px%3Bheight%3A14px%3Bmargin%3A0%3Baccent-color%3A%23059669%3Bcursor%3Apointer%7D'%2C%0A%20%20%20%20'.nb%7Bmargin%3A0%3Bfont-weight%3A600%3Bword-break%3Akeep-all%7D'%2C%0A%20%20%20%20'.msg%7Bmargin%3A0%3Bcolor%3A%2348515A%7D'%2C%0A%20%20%20%20'.msg.bad%7Bcolor%3A%23B42318%7D'%2C%0A%20%20%20%20'.list%7Bmargin%3A0%3Blist-style%3Anone%3Bdisplay%3Agrid%3Bgap%3A2px%3Bmax-height%3A220px%3Boverflow%3Aauto%3Bborder%3A1px%20solid%20%23E1E5E7%3Bborder-radius%3A6px%3Bpadding%3A6px%208px%7D'%2C%0A%20%20%20%20'.list%20li%7Bdisplay%3Aflex%3Bgap%3A8px%3Balign-items%3Acenter%3Bfont-size%3A12.5px%3Bmin-width%3A0%7D'%2C%0A%20%20%20%20'.it%7Bdisplay%3Aflex%3Bgap%3A6px%3Balign-items%3Acenter%3Bflex%3A1%3Bmin-width%3A0%3Bcursor%3Apointer%7D'%2C%0A%20%20%20%20'.list%20li.off%20.t%7Bcolor%3A%238A939A%7D'%2C%0A%20%20%20%20'.list%20li.off%20.ic%7Bopacity%3A.5%7D'%2C%0A%20%20%20%20'.ic%7Bflex%3Anone%3Bdisplay%3Ainline-flex%3Balign-items%3Acenter%3Bjustify-content%3Acenter%3Bwidth%3A16px%3Bheight%3A16px%3Bcolor%3A%236F7880%7D'%2C%0A%20%20%20%20'.ic%20svg%7Bdisplay%3Ablock%7D'%2C%0A%20%20%20%20'.st%7Bflex%3Anone%3Bwidth%3A4.6em%3Bfont-weight%3A600%3Bcolor%3A%236F7880%7D'%2C%0A%20%20%20%20'.st.ok%7Bcolor%3A%23047857%7D.st.fail%7Bcolor%3A%23B42318%7D.st.load%7Bcolor%3A%235146C9%7D'%2C%0A%20%20%20%20'.t%7Bmin-width%3A0%3Boverflow%3Ahidden%3Btext-overflow%3Aellipsis%3Bwhite-space%3Anowrap%7D'%2C%0A%20%20%20%20'.pick%7Bdisplay%3Aflex%3Bgap%3A6px%2014px%3Bflex-wrap%3Awrap%3Balign-items%3Acenter%7D'%2C%0A%20%20%20%20'.grp%7Bdisplay%3Ainline-flex%3Bgap%3A6px%3Balign-items%3Acenter%3Bfont-size%3A13px%3Bcolor%3A%2348515A%3Bcursor%3Apointer%7D'%2C%0A%20%20%20%20'.out%7Bdisplay%3Agrid%3Bgap%3A8px%7D'%2C%0A%20%20%20%20'textarea%7Bbox-sizing%3Aborder-box%3Bwidth%3A100%25%3Bheight%3A180px%3Bresize%3Avertical%3Bfont%3A12px%2F1.5%20ui-monospace%2CConsolas%2Cmonospace%3B'%2C%0A%20%20%20%20'border%3A1px%20solid%20%23E1E5E7%3Bborder-radius%3A6px%3Bpadding%3A8px%3Bcolor%3A%2315191C%3Bbackground%3A%23F4F6F6%7D'%2C%0A%20%20%20%20'.row%7Bdisplay%3Aflex%3Bgap%3A8px%3Bflex-wrap%3Awrap%3Balign-items%3Acenter%7D'%2C%0A%20%20%20%20'select%7Bfont%3Ainherit%3Bfont-size%3A13px%3Bline-height%3A1.4%3Bpadding%3A5px%208px%3Bborder-radius%3A6px%3Bborder%3A1px%20solid%20%23E1E5E7%3Bbackground%3A%23FFFFFF%3Bcolor%3A%2315191C%3Bcursor%3Apointer%7D'%2C%0A%20%20%20%20'select%3Afocus-visible%7Boutline%3A2px%20solid%20%23059669%3Boutline-offset%3A2px%7D'%2C%0A%20%20%20%20'.sum%7Bfont-size%3A12.5px%3Bcolor%3A%2348515A%7D'%2C%0A%20%20%20%20'.note%7Bmargin%3A0%3Bfont-size%3A12.5px%3Bcolor%3A%2348515A%7D'%0A%5D.join('')%3B%0Aroot.appendChild(css)%3B%0Avar%20panel%20%3D%20el('div'%2C%20'panel')%3B%0Aroot.appendChild(panel)%3B%0Avar%20head%20%3D%20el('div'%2C%20'head')%3B%0Ahead.appendChild(el('strong'%2C%20'ttl'%2C%20'%EB%85%B8%ED%8A%B8%EB%B6%81%20%EC%A0%84%EC%82%AC%20%EB%B0%9B%EA%B8%B0'))%3B%0Avar%20closeBtn%20%3D%20el('button'%2C%20''%2C%20'%EB%8B%AB%EA%B8%B0')%3B%0AcloseBtn.type%20%3D%20'button'%3B%0AcloseBtn.onclick%20%3D%20function%20()%20%7B%20host.remove()%3B%20%7D%3B%0Ahead.appendChild(closeBtn)%3B%0Avar%20nbLine%20%3D%20el('p'%2C%20'nb'%2C%20'')%3B%0Avar%20msg%20%3D%20el('p'%2C%20'msg'%2C%20'%EB%85%B8%ED%8A%B8%EB%B6%81%20%EC%A0%95%EB%B3%B4%EB%A5%BC%20%EC%9D%BD%EB%8A%94%20%EC%A4%91%E2%80%A6')%3B%0Avar%20list%20%3D%20el('ol'%2C%20'list')%3B%0Avar%20pick%20%3D%20el('div'%2C%20'pick')%3B%0Avar%20out%20%3D%20el('div'%2C%20'out')%3B%0Apanel.appendChild(head)%3B%0Apanel.appendChild(nbLine)%3B%0Apanel.appendChild(msg)%3B%0Apanel.appendChild(list)%3B%0Apanel.appendChild(out)%3B%0Avar%20m%20%3D%20location.pathname.match(NB_RE)%3B%0Avar%20W%20%3D%20window.WIZ_global_data%20%7C%7C%20%7B%7D%3B%0Aif%20(!m%20%7C%7C%20!W.SNlM0e)%20%7B%0A%20%20%20%20msg.textContent%20%3D%20'%EB%85%B8%ED%8A%B8%EB%B6%81%20%ED%99%94%EB%A9%B4(notebook.google.com%2Fnotebook%2F%E2%80%A6)%EC%97%90%EC%84%9C%20%EB%88%8C%EB%9F%AC%20%EC%A3%BC%EC%84%B8%EC%9A%94.%20%EA%B7%B8%20%ED%99%94%EB%A9%B4%EC%9D%B8%EB%8D%B0%EB%8F%84%20%EC%9D%B4%20%EA%B8%80%EC%9D%B4%20%EB%B3%B4%EC%9D%B4%EB%A9%B4%20%EC%83%88%EB%A1%9C%EA%B3%A0%EC%B9%A8%ED%95%9C%20%EB%92%A4%20%EB%8B%A4%EC%8B%9C%20%EB%88%8C%EB%9F%AC%20%EC%A3%BC%EC%84%B8%EC%9A%94.'%3B%0A%20%20%20%20msg.className%20%3D%20'msg%20bad'%3B%0A%20%20%20%20list.remove()%3B%0A%20%20%20%20return%3B%0A%7D%0Avar%20NB%20%3D%20m%5B1%5D%3B%0Avar%20reqSeq%20%3D%20100000%20%2B%20Math.floor(Math.random()%20*%20800000)%3B%0Avar%20AUTHUSER%20%3D%20new%20URLSearchParams(location.search).get('authuser')%20%7C%7C%20(%2F%5E%5Cd%7B1%2C2%7D%24%2F.test(String(W.QrtxK))%20%3F%20String(W.QrtxK)%20%3A%20'')%3B%0Aasync%20function%20rpc(id%2C%20args)%20%7B%0A%20%20%20%20reqSeq%20%2B%3D%201%3B%0A%20%20%20%20var%20params%20%3D%20%7B%0A%20%20%20%20%20%20%20%20rpcids%3A%20id%2C%0A%20%20%20%20%20%20%20%20'source-path'%3A%20'%2Fnotebook%2F'%20%2B%20NB%2C%0A%20%20%20%20%20%20%20%20bl%3A%20W.cfb2h%20%7C%7C%20''%2C%0A%20%20%20%20%20%20%20%20'f.sid'%3A%20W.FdrFJe%20%7C%7C%20''%2C%0A%20%20%20%20%20%20%20%20hl%3A%20document.documentElement.lang%20%7C%7C%20'ko'%2C%0A%20%20%20%20%20%20%20%20_reqid%3A%20String(reqSeq)%2C%0A%20%20%20%20%20%20%20%20rt%3A%20'c'%0A%20%20%20%20%7D%3B%0A%20%20%20%20if%20(AUTHUSER)%20params.authuser%20%3D%20AUTHUSER%3B%0A%20%20%20%20var%20qs%20%3D%20new%20URLSearchParams(params)%3B%0A%20%20%20%20var%20body%20%3D%20new%20URLSearchParams(%7B%20'f.req'%3A%20JSON.stringify(%5B%5B%5Bid%2C%20JSON.stringify(args)%2C%20null%2C%20'generic'%5D%5D%5D)%2C%20at%3A%20W.SNlM0e%20%7D)%3B%0A%20%20%20%20var%20res%20%3D%20await%20fetch(RPC_PATH%20%2B%20'%3F'%20%2B%20qs.toString()%2C%20%7B%0A%20%20%20%20%20%20%20%20method%3A%20'POST'%2C%0A%20%20%20%20%20%20%20%20credentials%3A%20'include'%2C%0A%20%20%20%20%20%20%20%20headers%3A%20%7B%20'Content-Type'%3A%20'application%2Fx-www-form-urlencoded%3Bcharset%3DUTF-8'%2C%20'X-Same-Domain'%3A%20'1'%20%7D%2C%0A%20%20%20%20%20%20%20%20body%3A%20body%0A%20%20%20%20%7D)%3B%0A%20%20%20%20var%20text%20%3D%20await%20res.text()%3B%0A%20%20%20%20if%20(!res.ok)%20throw%20new%20Error('HTTP%20'%20%2B%20res.status)%3B%0A%20%20%20%20var%20lines%20%3D%20text.split('%5Cn')%3B%0A%20%20%20%20for%20(var%20i%20%3D%200%3B%20i%20%3C%20lines.length%3B%20i%2B%2B)%20%7B%0A%20%20%20%20%20%20%20%20if%20(lines%5Bi%5D.indexOf('%5B%5B')%20!%3D%3D%200)%20continue%3B%0A%20%20%20%20%20%20%20%20var%20arr%3B%0A%20%20%20%20%20%20%20%20try%20%7B%20arr%20%3D%20JSON.parse(lines%5Bi%5D)%3B%20%7D%20catch%20(e)%20%7B%20continue%3B%20%7D%0A%20%20%20%20%20%20%20%20for%20(var%20j%20%3D%200%3B%20j%20%3C%20arr.length%3B%20j%2B%2B)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20var%20it%20%3D%20arr%5Bj%5D%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(it%20%26%26%20it%5B0%5D%20%3D%3D%3D%20'wrb.fr'%20%26%26%20it%5B1%5D%20%3D%3D%3D%20id)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20(!it%5B2%5D)%20throw%20new%20Error('%EB%B9%88%20%EC%9D%91%EB%8B%B5')%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%20JSON.parse(it%5B2%5D)%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20throw%20new%20Error('%EC%9D%91%EB%8B%B5%EC%9D%84%20%EC%9D%BD%EC%A7%80%20%EB%AA%BB%ED%95%A8')%3B%0A%7D%0Afunction%20findUrl(x%2C%20depth)%20%7B%0A%20%20%20%20if%20(typeof%20x%20%3D%3D%3D%20'string')%20return%20%2F%5Ehttps%3F%3A%5C%2F%5C%2F%2F.test(x)%20%3F%20x%20%3A%20''%3B%0A%20%20%20%20if%20(!Array.isArray(x)%20%7C%7C%20depth%20%3E%203)%20return%20''%3B%0A%20%20%20%20for%20(var%20i%20%3D%200%3B%20i%20%3C%20x.length%3B%20i%2B%2B)%20%7B%0A%20%20%20%20%20%20%20%20var%20u%20%3D%20findUrl(x%5Bi%5D%2C%20depth%20%2B%201)%3B%0A%20%20%20%20%20%20%20%20if%20(u)%20return%20u%3B%0A%20%20%20%20%7D%0A%20%20%20%20return%20''%3B%0A%7D%0Afunction%20readNotebook(data)%20%7B%0A%20%20%20%20var%20top%20%3D%20(data%20%26%26%20data%5B0%5D)%20%7C%7C%20%5B%5D%3B%0A%20%20%20%20var%20raw%20%3D%20Array.isArray(top%5B1%5D)%20%3F%20top%5B1%5D%20%3A%20%5B%5D%3B%0A%20%20%20%20var%20sources%20%3D%20%5B%5D%3B%0A%20%20%20%20raw.forEach(function%20(s)%20%7B%0A%20%20%20%20%20%20%20%20var%20id%20%3D%20s%20%26%26%20s%5B0%5D%20%26%26%20s%5B0%5D%5B0%5D%3B%0A%20%20%20%20%20%20%20%20if%20(!id)%20return%3B%0A%20%20%20%20%20%20%20%20var%20meta%20%3D%20Array.isArray(s%5B2%5D)%20%3F%20s%5B2%5D%20%3A%20%5B%5D%3B%0A%20%20%20%20%20%20%20%20var%20yt%20%3D%20Array.isArray(meta%5B5%5D)%20%26%26%20typeof%20meta%5B5%5D%5B0%5D%20%3D%3D%3D%20'string'%20%26%26%20%2Fyoutu%2F.test(meta%5B5%5D%5B0%5D)%20%3F%20meta%5B5%5D%20%3A%20null%3B%0A%20%20%20%20%20%20%20%20var%20url%20%3D%20yt%20%3F%20yt%5B0%5D%20%3A%20findUrl(meta%2C%200)%3B%0A%20%20%20%20%20%20%20%20var%20kind%20%3D%20yt%20%3F%20'yt'%20%3A%20meta%5B4%5D%20%3D%3D%3D%203%20%3F%20'pdf'%20%3A%20url%20%3F%20'web'%20%3A%20'doc'%3B%0A%20%20%20%20%20%20%20%20sources.push(%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20id%3A%20id%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20title%3A%20s%5B1%5D%20%7C%7C%20'(%EC%A0%9C%EB%AA%A9%20%EC%97%86%EC%9D%8C)'%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20url%3A%20url%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20channel%3A%20yt%20%3F%20(yt%5B2%5D%20%7C%7C%20'')%20%3A%20''%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20kind%3A%20kind%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20group%3A%20kind%20%3D%3D%3D%20'yt'%20%7C%7C%20kind%20%3D%3D%3D%20'web'%20%3F%20kind%20%3A%20'file'%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20sel%3A%20true%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20''%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20clean%3A%20''%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20guide%3A%20null%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20gstate%3A%20'wait'%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20state%3A%20'wait'%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20err%3A%20''%0A%20%20%20%20%20%20%20%20%7D)%3B%0A%20%20%20%20%7D)%3B%0A%20%20%20%20return%20%7B%20title%3A%20top%5B0%5D%20%7C%7C%20'%EC%A0%9C%EB%AA%A9%20%EC%97%86%EB%8A%94%20%EB%85%B8%ED%8A%B8%EB%B6%81'%2C%20sources%3A%20sources%20%7D%3B%0A%7D%0Afunction%20collect(x%2C%20acc)%20%7B%0A%20%20%20%20if%20(typeof%20x%20%3D%3D%3D%20'string')%20acc.push(x)%3B%0A%20%20%20%20else%20if%20(Array.isArray(x))%20for%20(var%20i%20%3D%200%3B%20i%20%3C%20x.length%3B%20i%2B%2B)%20collect(x%5Bi%5D%2C%20acc)%3B%0A%20%20%20%20return%20acc%3B%0A%7D%0Afunction%20wait(ms)%20%7B%20return%20new%20Promise(function%20(r)%20%7B%20setTimeout(r%2C%20ms)%3B%20%7D)%3B%20%7D%0Avar%20TIDY%20%3D%20(function%20()%20%7B%0A%20%20%20%20var%20LINK_ONLY%20%3D%20%2F%5E(%3F%3A(%3F%3Ahttps%3F%3A%5C%2F%5C%2F%7Cmailto%3A%7Ctel%3A)%5CS*%7Cjavascript%3A.*)%24%2Fi%3B%0A%20%20%20%20var%20CITE_ONLY%20%3D%20%2F%5E%5Cd%7B1%2C3%7D(%3F%3A(%3F%3A%5Cs*%2C%5Cs%2B%7C%5Cs*%5B-%E2%80%93%5D%5Cs*)%5Cd%7B1%2C3%7D)*%24%2F%3B%0A%20%20%20%20var%20CJK_GAP%20%3D%20%2F(%5B%E3%81%80-%E3%83%BF%E3%90%80-%E9%BF%BF%5D)%20(%3F%3D%5B%E3%81%80-%E3%83%BF%E3%90%80-%E9%BF%BF%5D)%2Fg%3B%0A%20%20%20%20var%20LO%20%3D%20400%3B%0A%20%20%20%20var%20HI%20%3D%20600%3B%0A%20%20%20%20function%20paras(t)%20%7B%0A%20%20%20%20%20%20%20%20return%20t.split(%2F%5Cn%7B2%2C%7D%2F).map(function%20(p)%20%7B%20return%20p.trim()%3B%20%7D).filter(Boolean)%3B%0A%20%20%20%20%7D%0A%20%20%20%20function%20web(t)%20%7B%0A%20%20%20%20%20%20%20%20var%20seen%20%3D%20new%20Set()%3B%0A%20%20%20%20%20%20%20%20return%20paras(t).filter(function%20(p)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(LINK_ONLY.test(p)%20%7C%7C%20seen.has(p))%20return%20false%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20seen.add(p)%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20true%3B%0A%20%20%20%20%20%20%20%20%7D).join('%5Cn%5Cn')%3B%0A%20%20%20%20%7D%0A%20%20%20%20function%20lastEnd(s%2C%20re)%20%7B%0A%20%20%20%20%20%20%20%20var%20at%20%3D%20-1%3B%0A%20%20%20%20%20%20%20%20var%20m%3B%0A%20%20%20%20%20%20%20%20while%20((m%20%3D%20re.exec(s)))%20at%20%3D%20m.index%20%2B%20m%5B0%5D.length%3B%0A%20%20%20%20%20%20%20%20return%20at%3B%0A%20%20%20%20%7D%0A%20%20%20%20function%20cutAt(s)%20%7B%0A%20%20%20%20%20%20%20%20var%20w%20%3D%20s.slice(LO%2C%20HI)%3B%0A%20%20%20%20%20%20%20%20var%20at%20%3D%20lastEnd(w%2C%20%2F%5B.!%3F%E3%80%82%EF%BC%81%EF%BC%9F%5D%5B%22'%E2%80%9D%E2%80%99%E3%80%8D%E3%80%8F)%5D*%5Cs%2Fg)%3B%0A%20%20%20%20%20%20%20%20if%20(at%20%3C%200)%20at%20%3D%20lastEnd(w%2C%20%2F(%3F%3A%EB%8B%88%EB%8B%A4%7C%EC%96%B4%EC%9A%94%7C%EC%95%84%EC%9A%94%7C%EC%97%90%EC%9A%94%7C%EC%98%88%EC%9A%94%7C%EC%84%B8%EC%9A%94%7C%EB%84%A4%EC%9A%94%7C%EA%B5%B0%EC%9A%94%7C%EC%A3%A0%7C%EA%B9%8C%EC%9A%94)%5Cs%2Fg)%3B%0A%20%20%20%20%20%20%20%20if%20(at%20%3C%200)%20at%20%3D%20lastEnd(w%2C%20%2F%5B%EB%8B%A4%EC%9A%94%5D%5Cs%2Fg)%3B%0A%20%20%20%20%20%20%20%20if%20(at%20%3C%200)%20at%20%3D%20lastEnd(w%2C%20%2F%5Cs%2Fg)%3B%0A%20%20%20%20%20%20%20%20return%20at%20%3C%200%20%3F%20HI%20%3A%20LO%20%2B%20at%3B%0A%20%20%20%20%7D%0A%20%20%20%20function%20yt(t)%20%7B%0A%20%20%20%20%20%20%20%20var%20s%20%3D%20t.replace(CJK_GAP%2C%20'%241').replace(%2F%5Cs%2B%2Fg%2C%20'%20').trim()%3B%0A%20%20%20%20%20%20%20%20var%20out%20%3D%20%5B%5D%3B%0A%20%20%20%20%20%20%20%20while%20(s.length%20%3E%20HI)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20var%20at%20%3D%20cutAt(s)%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20out.push(s.slice(0%2C%20at).trim())%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20s%20%3D%20s.slice(at).trim()%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20if%20(s)%20out.push(s)%3B%0A%20%20%20%20%20%20%20%20return%20out.join('%5Cn%5Cn')%3B%0A%20%20%20%20%7D%0A%20%20%20%20function%20doc(t)%20%7B%0A%20%20%20%20%20%20%20%20var%20out%20%3D%20%5B%5D%3B%0A%20%20%20%20%20%20%20%20var%20cut%20%3D%20false%3B%0A%20%20%20%20%20%20%20%20paras(t).forEach(function%20(p)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(CITE_ONLY.test(p))%20%7B%20cut%20%3D%20true%3B%20return%3B%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(cut%20%26%26%20out.length%20%26%26%20%2F%5E%5B.%2C!%3F%3B%3A)%5C%5D%E3%80%8D%E3%80%8F%E2%80%99%E2%80%9D%5D%2F.test(p))%20out%5Bout.length%20-%201%5D%20%2B%3D%20p%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20else%20out.push(p)%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20cut%20%3D%20false%3B%0A%20%20%20%20%20%20%20%20%7D)%3B%0A%20%20%20%20%20%20%20%20return%20out.join('%5Cn%5Cn')%3B%0A%20%20%20%20%7D%0A%20%20%20%20return%20%7B%0A%20%20%20%20%20%20%20%20text%3A%20function%20(kind%2C%20t)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20var%20r%20%3D%20kind%20%3D%3D%3D%20'web'%20%3F%20web(t)%20%3A%20kind%20%3D%3D%3D%20'yt'%20%3F%20yt(t)%20%3A%20kind%20%3D%3D%3D%20'doc'%20%3F%20doc(t)%20%3A%20t%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20r%20%7C%7C%20t%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%3B%0A%7D)()%3B%0Aasync%20function%20loadOne(s)%20%7B%0A%20%20%20%20var%20args%20%3D%20%5B%5Bs.id%5D%2C%20%5B2%5D%2C%20%5B2%2C%20null%2C%20%5B1%5D%2C%20%5B1%2C%20null%2C%20null%2C%20null%2C%20null%2C%20null%2C%20null%2C%20null%2C%20null%2C%20null%2C%20%5B1%2C%203%5D%5D%5D%5D%3B%0A%20%20%20%20for%20(var%20attempt%20%3D%200%3B%20attempt%20%3C%202%3B%20attempt%2B%2B)%20%7B%0A%20%20%20%20%20%20%20%20try%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20var%20d%20%3D%20await%20rpc('hizoJc'%2C%20args)%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20s.text%20%3D%20collect(d%20%26%26%20d%5B3%5D%2C%20%5B%5D).join('%5Cn%5Cn').trim()%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20s.clean%20%3D%20s.text%20%3F%20TIDY.text(s.kind%2C%20s.text)%20%3A%20''%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20s.state%20%3D%20s.text%20%3F%20'ok'%20%3A%20'empty'%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20s.err%20%3D%20''%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20return%3B%0A%20%20%20%20%20%20%20%20%7D%20catch%20(e)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20s.err%20%3D%20(e%20%26%26%20e.message)%20%7C%7C%20String(e)%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(attempt%20%3D%3D%3D%200)%20await%20wait(1500)%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20s.state%20%3D%20'fail'%3B%0A%7D%0Aasync%20function%20loadGuide(s)%20%7B%0A%20%20%20%20for%20(var%20attempt%20%3D%200%3B%20attempt%20%3C%202%3B%20attempt%2B%2B)%20%7B%0A%20%20%20%20%20%20%20%20try%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20var%20d%20%3D%20await%20rpc('tr032e'%2C%20%5B%5B%5B%5Bs.id%5D%5D%5D%5D)%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20var%20g%20%3D%20d%20%26%26%20d%5B0%5D%20%26%26%20d%5B0%5D%5B0%5D%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20s.guide%20%3D%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20summary%3A%20g%20%26%26%20Array.isArray(g%5B1%5D)%20%26%26%20typeof%20g%5B1%5D%5B0%5D%20%3D%3D%3D%20'string'%20%3F%20g%5B1%5D%5B0%5D.trim()%20%3A%20''%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20topics%3A%20g%20%26%26%20Array.isArray(g%5B2%5D)%20%26%26%20Array.isArray(g%5B2%5D%5B0%5D)%20%3F%20g%5B2%5D%5B0%5D.filter(function%20(x)%20%7B%20return%20typeof%20x%20%3D%3D%3D%20'string'%3B%20%7D)%20%3A%20%5B%5D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20s.gstate%20%3D%20s.guide.summary%20%7C%7C%20s.guide.topics.length%20%3F%20'ok'%20%3A%20'empty'%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20return%3B%0A%20%20%20%20%20%20%20%20%7D%20catch%20(e)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(attempt%20%3D%3D%3D%200)%20await%20wait(1500)%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20s.gstate%20%3D%20'fail'%3B%0A%7D%0Avar%20LABEL%20%3D%7B%20wait%3A%20'%EB%8C%80%EA%B8%B0'%2C%20load%3A%20'%EB%B0%9B%EB%8A%94%20%EC%A4%91'%2C%20ok%3A%20'%EC%99%84%EB%A3%8C'%2C%20empty%3A%20'%EB%B3%B8%EB%AC%B8%20%EC%97%86%EC%9D%8C'%2C%20fail%3A%20'%EC%8B%A4%ED%8C%A8'%20%7D%3B%0Avar%20SVG_NS%20%3D%20'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3B%0Avar%20LINE%20%3D%20%7B%20fill%3A%20'none'%2C%20stroke%3A%20'currentColor'%2C%20'stroke-width'%3A%20'1.75'%2C%20'stroke-linecap'%3A%20'round'%2C%20'stroke-linejoin'%3A%20'round'%20%7D%3B%0Avar%20ICONS%20%3D%20%7B%0A%20%20%20%20yt%3A%20%7B%20label%3A%20'%EC%9C%A0%ED%8A%9C%EB%B8%8C'%2C%20box%3A%20'0%200%2028.57%2020'%2C%20w%3A%2016%2C%20h%3A%2012%2C%20parts%3A%20%5B%0A%20%20%20%20%20%20%20%20%5B'path'%2C%20%7B%20fill%3A%20'%23FF0000'%2C%20d%3A%20'M27.9727%203.12324C27.6435%201.89323%2026.6768%200.926623%2025.4468%200.597366C23.2197%202.24288e-07%2014.285%200%2014.285%200C14.285%200%205.35042%202.24288e-07%203.12323%200.597366C1.89323%200.926623%200.926623%201.89323%200.597366%203.12324C2.24288e-07%205.35042%200%2010%200%2010C0%2010%202.24288e-07%2014.6496%200.597366%2016.8768C0.926623%2018.1068%201.89323%2019.0734%203.12323%2019.4026C5.35042%2020%2014.285%2020%2014.285%2020C14.285%2020%2023.2197%2020%2025.4468%2019.4026C26.6768%2019.0734%2027.6435%2018.1068%2027.9727%2016.8768C28.5701%2014.6496%2028.5701%2010%2028.5701%2010C28.5701%2010%2028.5677%205.35042%2027.9727%203.12324Z'%20%7D%5D%2C%0A%20%20%20%20%20%20%20%20%5B'path'%2C%20%7B%20fill%3A%20'%23FFFFFF'%2C%20d%3A%20'M11.4253%2014.2854L18.8477%2010.0004L11.4253%205.71533V14.2854Z'%20%7D%5D%0A%20%20%20%20%5D%20%7D%2C%0A%20%20%20%20pdf%3A%20%7B%20label%3A%20'PDF'%2C%20box%3A%20'0%200%20512%20512'%2C%20w%3A%2016%2C%20h%3A%2016%2C%20parts%3A%20%5B%0A%20%20%20%20%20%20%20%20%5B'path'%2C%20%7B%20fill%3A%20'%23E2E5E7'%2C%20d%3A%20'M128%2C0c-17.6%2C0-32%2C14.4-32%2C32v448c0%2C17.6%2C14.4%2C32%2C32%2C32h320c17.6%2C0%2C32-14.4%2C32-32V128L352%2C0H128z'%20%7D%5D%2C%0A%20%20%20%20%20%20%20%20%5B'path'%2C%20%7B%20fill%3A%20'%23B0B7BD'%2C%20d%3A%20'M384%2C128h96L352%2C0v96C352%2C113.6%2C366.4%2C128%2C384%2C128z'%20%7D%5D%2C%0A%20%20%20%20%20%20%20%20%5B'polygon'%2C%20%7B%20fill%3A%20'%23CAD1D8'%2C%20points%3A%20'480%2C224%20384%2C128%20480%2C128'%20%7D%5D%2C%0A%20%20%20%20%20%20%20%20%5B'path'%2C%20%7B%20fill%3A%20'%23F15642'%2C%20d%3A%20'M416%2C416c0%2C8.8-7.2%2C16-16%2C16H48c-8.8%2C0-16-7.2-16-16V256c0-8.8%2C7.2-16%2C16-16h352c8.8%2C0%2C16%2C7.2%2C16%2C16V416z'%20%7D%5D%2C%0A%20%20%20%20%20%20%20%20%5B'path'%2C%20%7B%20fill%3A%20'%23FFFFFF'%2C%20d%3A%20'M101.744%2C303.152c0-4.224%2C3.328-8.832%2C8.688-8.832h29.552c16.64%2C0%2C31.616%2C11.136%2C31.616%2C32.48c0%2C20.224-14.976%2C31.488-31.616%2C31.488h-21.36v16.896c0%2C5.632-3.584%2C8.816-8.192%2C8.816c-4.224%2C0-8.688-3.184-8.688-8.816V303.152z%20M118.624%2C310.432v31.872h21.36c8.576%2C0%2C15.36-7.568%2C15.36-15.504c0-8.944-6.784-16.368-15.36-16.368H118.624z'%20%7D%5D%2C%0A%20%20%20%20%20%20%20%20%5B'path'%2C%20%7B%20fill%3A%20'%23FFFFFF'%2C%20d%3A%20'M196.656%2C384c-4.224%2C0-8.832-2.304-8.832-7.92v-72.672c0-4.592%2C4.608-7.936%2C8.832-7.936h29.296c58.464%2C0%2C57.184%2C88.528%2C1.152%2C88.528H196.656z%20M204.72%2C311.088V368.4h21.232c34.544%2C0%2C36.08-57.312%2C0-57.312H204.72z'%20%7D%5D%2C%0A%20%20%20%20%20%20%20%20%5B'path'%2C%20%7B%20fill%3A%20'%23FFFFFF'%2C%20d%3A%20'M303.872%2C312.112v20.336h32.624c4.608%2C0%2C9.216%2C4.608%2C9.216%2C9.072c0%2C4.224-4.608%2C7.68-9.216%2C7.68h-32.624v26.864c0%2C4.48-3.184%2C7.92-7.664%2C7.92c-5.632%2C0-9.072-3.44-9.072-7.92v-72.672c0-4.592%2C3.456-7.936%2C9.072-7.936h44.912c5.632%2C0%2C8.96%2C3.344%2C8.96%2C7.936c0%2C4.096-3.328%2C8.704-8.96%2C8.704h-37.248V312.112z'%20%7D%5D%2C%0A%20%20%20%20%20%20%20%20%5B'path'%2C%20%7B%20fill%3A%20'%23CAD1D8'%2C%20d%3A%20'M400%2C432H96v16h304c8.8%2C0%2C16-7.2%2C16-16v-16C416%2C424.8%2C408.8%2C432%2C400%2C432z'%20%7D%5D%0A%20%20%20%20%5D%20%7D%2C%0A%20%20%20%20web%3A%20%7B%20label%3A%20'%EC%9B%B9%EC%82%AC%EC%9D%B4%ED%8A%B8'%2C%20box%3A%20'0%200%2024%2024'%2C%20w%3A%2016%2C%20h%3A%2016%2C%20line%3A%20true%2C%20parts%3A%20%5B%0A%20%20%20%20%20%20%20%20%5B'circle'%2C%20%7B%20cx%3A%20'12'%2C%20cy%3A%20'12'%2C%20r%3A%20'10'%20%7D%5D%2C%0A%20%20%20%20%20%20%20%20%5B'path'%2C%20%7B%20d%3A%20'M12%202a14.5%2014.5%200%200%200%200%2020%2014.5%2014.5%200%200%200%200-20'%20%7D%5D%2C%0A%20%20%20%20%20%20%20%20%5B'path'%2C%20%7B%20d%3A%20'M2%2012h20'%20%7D%5D%0A%20%20%20%20%5D%20%7D%2C%0A%20%20%20%20doc%3A%20%7B%20label%3A%20'%EA%B8%80'%2C%20box%3A%20'0%200%2024%2024'%2C%20w%3A%2016%2C%20h%3A%2016%2C%20line%3A%20true%2C%20parts%3A%20%5B%0A%20%20%20%20%20%20%20%20%5B'path'%2C%20%7B%20d%3A%20'M6%2022a2%202%200%200%201-2-2V4a2%202%200%200%201%202-2h8a2.4%202.4%200%200%201%201.704.706l3.588%203.588A2.4%202.4%200%200%201%2020%208v12a2%202%200%200%201-2%202z'%20%7D%5D%2C%0A%20%20%20%20%20%20%20%20%5B'path'%2C%20%7B%20d%3A%20'M14%202v5a1%201%200%200%200%201%201h5'%20%7D%5D%2C%0A%20%20%20%20%20%20%20%20%5B'path'%2C%20%7B%20d%3A%20'M10%209H8'%20%7D%5D%2C%0A%20%20%20%20%20%20%20%20%5B'path'%2C%20%7B%20d%3A%20'M16%2013H8'%20%7D%5D%2C%0A%20%20%20%20%20%20%20%20%5B'path'%2C%20%7B%20d%3A%20'M16%2017H8'%20%7D%5D%0A%20%20%20%20%5D%20%7D%0A%7D%3B%0Afunction%20svgEl(tag%2C%20attrs)%20%7B%0A%20%20%20%20var%20e%20%3D%20document.createElementNS(SVG_NS%2C%20tag)%3B%0A%20%20%20%20Object.keys(attrs).forEach(function%20(k)%20%7B%20e.setAttribute(k%2C%20attrs%5Bk%5D)%3B%20%7D)%3B%0A%20%20%20%20return%20e%3B%0A%7D%0Afunction%20icon(kind)%20%7B%0A%20%20%20%20var%20ic%20%3D%20ICONS%5Bkind%5D%20%7C%7C%20ICONS.doc%3B%0A%20%20%20%20var%20svg%20%3D%20svgEl('svg'%2C%20%7B%20viewBox%3A%20ic.box%2C%20width%3A%20String(ic.w)%2C%20height%3A%20String(ic.h)%2C%20'aria-hidden'%3A%20'true'%2C%20focusable%3A%20'false'%20%7D)%3B%0A%20%20%20%20if%20(ic.line)%20Object.keys(LINE).forEach(function%20(k)%20%7B%20svg.setAttribute(k%2C%20LINE%5Bk%5D)%3B%20%7D)%3B%0A%20%20%20%20ic.parts.forEach(function%20(p)%20%7B%20svg.appendChild(svgEl(p%5B0%5D%2C%20p%5B1%5D))%3B%20%7D)%3B%0A%20%20%20%20var%20box%20%3D%20el('span'%2C%20'ic')%3B%0A%20%20%20%20box.title%20%3D%20ic.label%3B%0A%20%20%20%20box.setAttribute('role'%2C%20'img')%3B%0A%20%20%20%20box.setAttribute('aria-label'%2C%20ic.label)%3B%0A%20%20%20%20box.appendChild(svg)%3B%0A%20%20%20%20return%20box%3B%0A%7D%0Avar%20GROUPS%20%3D%20%5B%5B'yt'%2C%20'%EC%9C%A0%ED%8A%9C%EB%B8%8C'%5D%2C%20%5B'web'%2C%20'%EC%9B%B9%EC%82%AC%EC%9D%B4%ED%8A%B8'%5D%2C%20%5B'file'%2C%20'%ED%8C%8C%EC%9D%BC'%5D%5D%3B%0Avar%20nb%20%3D%20null%3B%0Avar%20view%20%3D%20null%3B%0Avar%20tidy%20%3D%20true%3B%0Avar%20MODES%20%3D%20%5B'both'%2C%20'body'%2C%20'guide'%5D%3B%0Avar%20MODE_LABEL%20%3D%20%7B%20both%3A%20'%EB%B3%B8%EB%AC%B8%20%2B%20%EC%86%8C%EC%8A%A4%20%EA%B0%80%EC%9D%B4%EB%93%9C'%2C%20body%3A%20'%EB%B3%B8%EB%AC%B8%EB%A7%8C'%2C%20guide%3A%20'%EC%86%8C%EC%8A%A4%20%EA%B0%80%EC%9D%B4%EB%93%9C%EB%A7%8C'%20%7D%3B%0Avar%20mode%20%3D%20'both'%3B%0Avar%20bdone%20%3D%200%3B%0Avar%20gdone%20%3D%200%3B%0Avar%20doneMsg%20%3D%20''%3B%0Avar%20redrawTimer%20%3D%200%3B%0Avar%20groupBoxes%20%3D%20%5B%5D%3B%0Avar%20allBtn%20%3D%20el('button'%2C%20''%2C%20'%EB%AA%A8%EB%91%90%20%ED%95%B4%EC%A0%9C')%3B%0AallBtn.type%20%3D%20'button'%3B%0Afunction%20addRow(s)%20%7B%0A%20%20%20%20var%20li%20%3D%20el('li')%3B%0A%20%20%20%20s.st%20%3D%20el('span'%2C%20'st'%2C%20LABEL.wait)%3B%0A%20%20%20%20var%20lab%20%3D%20el('label'%2C%20'it')%3B%0A%20%20%20%20s.cb%20%3D%20el('input')%3B%0A%20%20%20%20s.cb.type%20%3D%20'checkbox'%3B%0A%20%20%20%20s.cb.onchange%20%3D%20function%20()%20%7B%20s.sel%20%3D%20s.cb.checked%3B%20changed()%3B%20%7D%3B%0A%20%20%20%20lab.appendChild(s.cb)%3B%0A%20%20%20%20lab.appendChild(icon(s.kind))%3B%0A%20%20%20%20lab.appendChild(el('span'%2C%20't'%2C%20s.title))%3B%0A%20%20%20%20li.title%20%3D%20s.title%3B%0A%20%20%20%20li.appendChild(s.st)%3B%0A%20%20%20%20li.appendChild(lab)%3B%0A%20%20%20%20list.appendChild(li)%3B%0A%20%20%20%20s.li%20%3D%20li%3B%0A%7D%0Afunction%20buildPick()%20%7B%0A%20%20%20%20allBtn.onclick%20%3D%20function%20()%20%7B%0A%20%20%20%20%20%20%20%20var%20on%20%3D%20!nb.sources.every(function%20(s)%20%7B%20return%20s.sel%3B%20%7D)%3B%0A%20%20%20%20%20%20%20%20nb.sources.forEach(function%20(s)%20%7B%20s.sel%20%3D%20on%3B%20%7D)%3B%0A%20%20%20%20%20%20%20%20changed()%3B%0A%20%20%20%20%7D%3B%0A%20%20%20%20pick.appendChild(allBtn)%3B%0A%20%20%20%20GROUPS.forEach(function%20(g)%20%7B%0A%20%20%20%20%20%20%20%20var%20members%20%3D%20nb.sources.filter(function%20(s)%20%7B%20return%20s.group%20%3D%3D%3D%20g%5B0%5D%3B%20%7D)%3B%0A%20%20%20%20%20%20%20%20if%20(!members.length%20%7C%7C%20members.length%20%3D%3D%3D%20nb.sources.length)%20return%3B%0A%20%20%20%20%20%20%20%20var%20lab%20%3D%20el('label'%2C%20'grp')%3B%0A%20%20%20%20%20%20%20%20var%20cb%20%3D%20el('input')%3B%0A%20%20%20%20%20%20%20%20cb.type%20%3D%20'checkbox'%3B%0A%20%20%20%20%20%20%20%20cb.onchange%20%3D%20function%20()%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20var%20on%20%3D%20!members.every(function%20(s)%20%7B%20return%20s.sel%3B%20%7D)%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20members.forEach(function%20(s)%20%7B%20s.sel%20%3D%20on%3B%20%7D)%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20changed()%3B%0A%20%20%20%20%20%20%20%20%7D%3B%0A%20%20%20%20%20%20%20%20lab.appendChild(cb)%3B%0A%20%20%20%20%20%20%20%20lab.appendChild(document.createTextNode(g%5B1%5D%20%2B%20'%20'%20%2B%20members.length%20%2B%20'%EA%B0%9C'))%3B%0A%20%20%20%20%20%20%20%20pick.appendChild(lab)%3B%0A%20%20%20%20%20%20%20%20groupBoxes.push(%7B%20cb%3A%20cb%2C%20members%3A%20members%20%7D)%3B%0A%20%20%20%20%7D)%3B%0A%20%20%20%20panel.insertBefore(pick%2C%20out)%3B%0A%20%20%20%20sync()%3B%0A%7D%0Afunction%20sync()%20%7B%0A%20%20%20%20var%20n%20%3D%200%3B%0A%20%20%20%20nb.sources.forEach(function%20(s)%20%7B%0A%20%20%20%20%20%20%20%20s.cb.checked%20%3D%20s.sel%3B%0A%20%20%20%20%20%20%20%20s.li.className%20%3D%20s.sel%20%3F%20''%20%3A%20'off'%3B%0A%20%20%20%20%20%20%20%20if%20(s.sel)%20n%20%2B%3D%201%3B%0A%20%20%20%20%7D)%3B%0A%20%20%20%20allBtn.textContent%20%3D%20n%20%3D%3D%3D%20nb.sources.length%20%3F%20'%EB%AA%A8%EB%91%90%20%ED%95%B4%EC%A0%9C'%20%3A%20'%EB%AA%A8%EB%91%90%20%EC%84%A0%ED%83%9D'%3B%0A%20%20%20%20groupBoxes.forEach(function%20(g)%20%7B%0A%20%20%20%20%20%20%20%20var%20k%20%3D%20g.members.filter(function%20(s)%20%7B%20return%20s.sel%3B%20%7D).length%3B%0A%20%20%20%20%20%20%20%20g.cb.checked%20%3D%20k%20%3D%3D%3D%20g.members.length%3B%0A%20%20%20%20%20%20%20%20g.cb.indeterminate%20%3D%20k%20%3E%200%20%26%26%20k%20%3C%20g.members.length%3B%0A%20%20%20%20%7D)%3B%0A%20%20%20%20if%20(view)%20view.redraw()%3B%0A%7D%0Afunction%20changed()%20%7B%0A%20%20%20%20if%20(view)%20view.note.textContent%20%3D%20''%3B%0A%20%20%20%20sync()%3B%0A%7D%0Afunction%20paint(s)%20%7B%0A%20%20%20%20s.st.textContent%20%3D%20LABEL%5Bs.state%5D%20%7C%7C%20s.state%3B%0A%20%20%20%20s.st.className%20%3D%20'st%20'%20%2B%20s.state%3B%0A%20%20%20%20if%20(s.state%20%3D%3D%3D%20'fail'%20%26%26%20s.err)%20s.li.title%20%3D%20s.title%20%2B%20'%20%E2%80%94%20'%20%2B%20s.err%3B%0A%7D%0Afunction%20pad(n)%20%7B%20return%20(n%20%3C%2010%20%3F%20'0'%20%3A%20'')%20%2B%20n%3B%20%7D%0Afunction%20stamp(d)%20%7B%20return%20d.getFullYear()%20%2B%20'-'%20%2B%20pad(d.getMonth()%20%2B%201)%20%2B%20'-'%20%2B%20pad(d.getDate())%20%2B%20'%20'%20%2B%20pad(d.getHours())%20%2B%20'%3A'%20%2B%20pad(d.getMinutes())%3B%20%7D%0Afunction%20num(n)%20%7B%20return%20n.toLocaleString('ko-KR')%3B%20%7D%0Afunction%20chosen()%20%7B%20return%20nb.sources.filter(function%20(s)%20%7B%20return%20s.sel%20%26%26%20s.state%20%3D%3D%3D%20'ok'%3B%20%7D)%3B%20%7D%0Afunction%20bodyOf(s)%20%7B%20return%20tidy%20%3F%20s.clean%20%3A%20s.text%3B%20%7D%0Afunction%20guideOf(s)%20%7B%0A%20%20%20%20if%20(s.gstate%20%3D%3D%3D%20'ok')%20%7B%0A%20%20%20%20%20%20%20%20var%20g%20%3D%20%5Bs.guide.summary%5D%3B%0A%20%20%20%20%20%20%20%20if%20(s.guide.topics.length)%20g.push(''%2C%20'-%20%ED%95%B5%EC%8B%AC%20%EC%A3%BC%EC%A0%9C%3A%20'%20%2B%20s.guide.topics.join('%20%C2%B7%20'))%3B%0A%20%20%20%20%20%20%20%20return%20g.join('%5Cn').trim()%3B%0A%20%20%20%20%7D%0A%20%20%20%20if%20(s.gstate%20%3D%3D%3D%20'empty')%20return%20'(%EC%86%8C%EC%8A%A4%20%EA%B0%80%EC%9D%B4%EB%93%9C%20%EC%97%86%EC%9D%8C)'%3B%0A%20%20%20%20if%20(s.gstate%20%3D%3D%3D%20'fail')%20return%20'(%EC%86%8C%EC%8A%A4%20%EA%B0%80%EC%9D%B4%EB%93%9C%EB%A5%BC%20%EB%B0%9B%EC%A7%80%20%EB%AA%BB%ED%96%88%EC%8A%B5%EB%8B%88%EB%8B%A4)'%3B%0A%20%20%20%20return%20'(%EC%86%8C%EC%8A%A4%20%EA%B0%80%EC%9D%B4%EB%93%9C%EB%A5%BC%20%EB%B0%9B%EB%8A%94%20%EC%A4%91%EC%9E%85%EB%8B%88%EB%8B%A4%20%E2%80%94%20%EB%8B%A4%20%EB%B0%9B%EC%9D%80%20%EB%92%A4%20%EB%8B%A4%EC%8B%9C%20%EC%A0%80%EC%9E%A5%ED%95%98%EC%84%B8%EC%9A%94)'%3B%0A%7D%0Afunction%20charsOf(list)%20%7B%0A%20%20%20%20return%20list.reduce(function%20(a%2C%20s)%20%7B%0A%20%20%20%20%20%20%20%20return%20a%20%2B%20(mode%20!%3D%3D%20'guide'%20%3F%20bodyOf(s).length%20%3A%200)%20%2B%20(mode%20!%3D%3D%20'body'%20%3F%20guideOf(s).length%20%3A%200)%3B%0A%20%20%20%20%7D%2C%200)%3B%0A%7D%0Avar%20TIDY_NOTE%20%3D%20'%EC%BC%AC%20%E2%80%94%20%EC%9B%B9%EC%9D%80%20%EC%A3%BC%EC%86%8C%20%C2%B7%20%EB%B0%98%EB%B3%B5%20%EC%A4%84%EC%9D%84%20%EB%B9%BC%EA%B3%A0%2C%20%EC%9C%A0%ED%8A%9C%EB%B8%8C%EB%8A%94%20%EB%AC%B8%EB%8B%A8%EC%9D%84%20%EB%82%98%EB%88%84%EA%B3%A0%2C%20%EA%B8%80%EC%9D%80%20%EC%9D%B8%EC%9A%A9%20%EB%B2%88%ED%98%B8%EB%A5%BC%20%EB%BA%90%EC%8A%B5%EB%8B%88%EB%8B%A4(PDF%20%EB%8A%94%20%EA%B7%B8%EB%8C%80%EB%A1%9C)'%3B%0Afunction%20compose(when)%20%7B%0A%20%20%20%20var%20picked%20%3D%20chosen()%3B%0A%20%20%20%20var%20L%20%3D%20%5B'%23%20'%20%2B%20nb.title%2C%20''%2C%20'-%20%EB%B0%9B%EC%9D%80%20%EB%82%A0%3A%20'%20%2B%20stamp(when)%2C%20'-%20%EC%86%8C%EC%8A%A4%3A%20'%20%2B%20picked.length%20%2B%20'%EA%B0%9C%20%C2%B7%20%EA%B8%80%EC%9E%90%20'%20%2B%20num(charsOf(picked))%20%2B%20'%EC%9E%90'%2C%20'-%20%EB%8B%B4%EC%9D%80%20%EA%B2%83%3A%20'%20%2B%20MODE_LABEL%5Bmode%5D%5D%3B%0A%20%20%20%20if%20(mode%20!%3D%3D%20'guide')%20L.push('-%20%EC%A0%95%EB%A6%AC%3A%20'%20%2B%20(tidy%20%3F%20TIDY_NOTE%20%3A%20'%EB%81%94%20%E2%80%94%20%EB%85%B8%ED%8A%B8%EB%B6%81%EC%9D%B4%20%EC%A4%80%20%EA%B8%80%20%EA%B7%B8%EB%8C%80%EB%A1%9C'))%3B%0A%20%20%20%20L.push('-%20%EB%85%B8%ED%8A%B8%EB%B6%81%3A%20'%20%2B%20location.origin%20%2B%20'%2Fnotebook%2F'%20%2B%20NB%20%2B%20(AUTHUSER%20%26%26%20AUTHUSER%20!%3D%3D%20'0'%20%3F%20'%3Fauthuser%3D'%20%2B%20AUTHUSER%20%3A%20'')%2C%20'')%3B%0A%20%20%20%20picked.forEach(function%20(s%2C%20i)%20%7B%0A%20%20%20%20%20%20%20%20var%20t%20%3D%20bodyOf(s)%3B%0A%20%20%20%20%20%20%20%20L.push('---'%2C%20''%2C%20'%23%23%20'%20%2B%20(i%20%2B%201)%20%2B%20'.%20'%20%2B%20s.title%2C%20'')%3B%0A%20%20%20%20%20%20%20%20L.push('-%20%EC%A2%85%EB%A5%98%3A%20'%20%2B%20(ICONS%5Bs.kind%5D%20%7C%7C%20ICONS.doc).label)%3B%0A%20%20%20%20%20%20%20%20if%20(s.channel)%20L.push('-%20%EC%B1%84%EB%84%90%3A%20'%20%2B%20s.channel)%3B%0A%20%20%20%20%20%20%20%20if%20(s.url)%20L.push('-%20%EC%A3%BC%EC%86%8C%3A%20'%20%2B%20s.url)%3B%0A%20%20%20%20%20%20%20%20L.push((mode%20%3D%3D%3D%20'guide'%20%3F%20'-%20%EB%B3%B8%EB%AC%B8%20%EA%B8%80%EC%9E%90(%EB%8B%B4%EC%A7%80%20%EC%95%8A%EC%9D%8C)%3A%20'%20%3A%20'-%20%EA%B8%80%EC%9E%90%3A%20')%20%2B%20num(t.length)%20%2B%20'%EC%9E%90'%2C%20'')%3B%0A%20%20%20%20%20%20%20%20if%20(mode%20!%3D%3D%20'body')%20L.push('%23%23%23%20%EC%86%8C%EC%8A%A4%20%EA%B0%80%EC%9D%B4%EB%93%9C'%2C%20''%2C%20guideOf(s)%2C%20'')%3B%0A%20%20%20%20%20%20%20%20if%20(mode%20%3D%3D%3D%20'both')%20L.push('%23%23%23%20%EB%B3%B8%EB%AC%B8'%2C%20'')%3B%0A%20%20%20%20%20%20%20%20if%20(mode%20!%3D%3D%20'guide')%20L.push(t%2C%20'')%3B%0A%20%20%20%20%7D)%3B%0A%20%20%20%20var%20missed%20%3D%20nb.sources.filter(function%20(s)%20%7B%20return%20s.sel%20%26%26%20s.state%20!%3D%3D%20'ok'%3B%20%7D)%3B%0A%20%20%20%20if%20(missed.length)%20%7B%0A%20%20%20%20%20%20%20%20L.push('---'%2C%20''%2C%20'%23%23%20%EB%B0%9B%EC%A7%80%20%EB%AA%BB%ED%95%9C%20%EC%86%8C%EC%8A%A4'%2C%20'')%3B%0A%20%20%20%20%20%20%20%20missed.forEach(function%20(s)%20%7B%20L.push('-%20'%20%2B%20s.title%20%2B%20'%20%E2%80%94%20'%20%2B%20(s.state%20%3D%3D%3D%20'empty'%20%3F%20'%EB%B3%B8%EB%AC%B8%20%EC%97%86%EC%9D%8C'%20%3A%20(s.err%20%7C%7C%20'%EC%8B%A4%ED%8C%A8')))%3B%20%7D)%3B%0A%20%20%20%20%20%20%20%20L.push('')%3B%0A%20%20%20%20%7D%0A%20%20%20%20return%20L.join('%5Cn')%3B%0A%7D%0Afunction%20fileName(title%2C%20when)%20%7B%0A%20%20%20%20var%20safe%20%3D%20String(title).replace(%2F%5B%5C%5C%2F%3A*%3F%22%3C%3E%7C%5Cr%5Cn%5Ct%5D%2B%2Fg%2C%20'%20').replace(%2F%5Cs%2B%2Fg%2C%20'%20').trim().slice(0%2C%2060)%20%7C%7C%20'%EB%85%B8%ED%8A%B8%EB%B6%81'%3B%0A%20%20%20%20return%20safe%20%2B%20'_%EC%A0%84%EC%82%AC_'%20%2B%20when.getFullYear()%20%2B%20pad(when.getMonth()%20%2B%201)%20%2B%20pad(when.getDate())%20%2B%20'.md'%3B%0A%7D%0Afunction%20finish()%20%7B%0A%20%20%20%20var%20when%20%3D%20new%20Date()%3B%0A%20%20%20%20var%20ok%20%3D%20nb.sources.filter(function%20(s)%20%7B%20return%20s.state%20%3D%3D%3D%20'ok'%3B%20%7D)%3B%0A%20%20%20%20var%20bad%20%3D%20nb.sources.length%20-%20ok.length%3B%0A%20%20%20%20var%20total%20%3D%20ok.reduce(function%20(a%2C%20s)%20%7B%20return%20a%20%2B%20s.text.length%3B%20%7D%2C%200)%3B%0A%20%20%20%20doneMsg%20%3D%20nb.sources.length%20%2B%20'%EA%B0%9C%20%EC%A4%91%20'%20%2B%20ok.length%20%2B%20'%EA%B0%9C%20%EB%B0%9B%EC%9D%8C%20%C2%B7%20%EA%B8%80%EC%9E%90%20'%20%2B%20num(total)%20%2B%20'%EC%9E%90'%20%2B%20(bad%20%3F%20'%20%C2%B7%20%EB%B0%9B%EC%A7%80%20%EB%AA%BB%ED%95%9C%20%EC%86%8C%EC%8A%A4%20'%20%2B%20bad%20%2B%20'%EA%B0%9C(%EB%AA%A9%EB%A1%9D%EC%97%90%20%ED%91%9C%EC%8B%9C)'%20%3A%20'')%3B%0A%20%20%20%20msg.className%20%3D%20bad%20%3F%20'msg%20bad'%20%3A%20'msg'%3B%0A%20%20%20%20showStatus()%3B%0A%20%20%20%20var%20ta%20%3D%20el('textarea')%3B%0A%20%20%20%20ta.readOnly%20%3D%20true%3B%0A%20%20%20%20ta.setAttribute('aria-label'%2C%20'%EB%B0%9B%EC%9D%80%20%EA%B8%80')%3B%0A%20%20%20%20var%20row%20%3D%20el('div'%2C%20'row')%3B%0A%20%20%20%20var%20saveBtn%20%3D%20el('button'%2C%20'go'%2C%20'%ED%8C%8C%EC%9D%BC%EB%A1%9C%20%EC%A0%80%EC%9E%A5')%3B%0A%20%20%20%20saveBtn.type%20%3D%20'button'%3B%0A%20%20%20%20var%20copyBtn%20%3D%20el('button'%2C%20''%2C%20'%EB%B3%B5%EC%82%AC')%3B%0A%20%20%20%20copyBtn.type%20%3D%20'button'%3B%0A%20%20%20%20var%20sum%20%3D%20el('span'%2C%20'sum'%2C%20'')%3B%0A%20%20%20%20var%20note%20%3D%20el('p'%2C%20'note'%2C%20'')%3B%0A%20%20%20%20saveBtn.onclick%20%3D%20function%20()%20%7B%0A%20%20%20%20%20%20%20%20var%20name%20%3D%20fileName(nb.title%2C%20when)%3B%0A%20%20%20%20%20%20%20%20var%20blob%20%3D%20new%20Blob(%5Bta.value%5D%2C%20%7B%20type%3A%20'text%2Fmarkdown%3Bcharset%3Dutf-8'%20%7D)%3B%0A%20%20%20%20%20%20%20%20var%20a%20%3D%20document.createElement('a')%3B%0A%20%20%20%20%20%20%20%20a.href%20%3D%20URL.createObjectURL(blob)%3B%0A%20%20%20%20%20%20%20%20a.download%20%3D%20name%3B%0A%20%20%20%20%20%20%20%20root.appendChild(a)%3B%0A%20%20%20%20%20%20%20%20a.click()%3B%0A%20%20%20%20%20%20%20%20a.remove()%3B%0A%20%20%20%20%20%20%20%20setTimeout(function%20()%20%7B%20URL.revokeObjectURL(a.href)%3B%20%7D%2C%2030000)%3B%0A%20%20%20%20%20%20%20%20note.textContent%20%3D%20'%EC%A0%80%EC%9E%A5%ED%96%88%EC%8A%B5%EB%8B%88%EB%8B%A4%20%E2%80%94%20'%20%2B%20name%3B%0A%20%20%20%20%7D%3B%0A%20%20%20%20copyBtn.onclick%20%3D%20function%20()%20%7B%0A%20%20%20%20%20%20%20%20var%20t%20%3D%20ta.value%3B%0A%20%20%20%20%20%20%20%20var%20fallback%20%3D%20function%20()%20%7B%20ta.focus()%3B%20ta.select()%3B%20note.textContent%20%3D%20'%EA%B8%80%EC%9D%84%20%EB%AA%A8%EB%91%90%20%EC%84%A0%ED%83%9D%ED%95%B4%20%EB%91%90%EC%97%88%EC%8A%B5%EB%8B%88%EB%8B%A4.%20Ctrl%2BC%20%EB%A1%9C%20%EB%B3%B5%EC%82%AC%ED%95%98%EC%84%B8%EC%9A%94.'%3B%20%7D%3B%0A%20%20%20%20%20%20%20%20try%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20navigator.clipboard.writeText(t).then(function%20()%20%7B%20note.textContent%20%3D%20'%EB%B3%B5%EC%82%AC%ED%96%88%EC%8A%B5%EB%8B%88%EB%8B%A4%20('%20%2B%20num(t.length)%20%2B%20'%EC%9E%90).'%3B%20%7D%2C%20fallback)%3B%0A%20%20%20%20%20%20%20%20%7D%20catch%20(e)%20%7B%20fallback()%3B%20%7D%0A%20%20%20%20%7D%3B%0A%20%20%20%20var%20tidyLab%20%3D%20el('label'%2C%20'grp')%3B%0A%20%20%20%20var%20tidyBox%20%3D%20el('input')%3B%0A%20%20%20%20tidyBox.type%20%3D%20'checkbox'%3B%0A%20%20%20%20tidyBox.checked%20%3D%20true%3B%0A%20%20%20%20tidyBox.onchange%20%3D%20function%20()%20%7B%20tidy%20%3D%20tidyBox.checked%3B%20changed()%3B%20%7D%3B%0A%20%20%20%20tidyLab.title%20%3D%20'%EC%9B%B9%3A%20%EC%A3%BC%EC%86%8C%EB%A7%8C%20%EC%9E%88%EB%8A%94%20%EC%A4%84%20%C2%B7%20%EB%B0%98%EB%B3%B5%20%EC%A4%84%20%EB%B9%BC%EA%B8%B0%20%2F%20%EC%9C%A0%ED%8A%9C%EB%B8%8C%3A%20%ED%95%9C%EC%9E%90%20%EB%9D%84%EC%96%B4%EC%93%B0%EA%B8%B0%20%EC%A7%80%EC%9A%B0%EA%B8%B0%20%C2%B7%20%EB%AC%B8%EB%8B%A8%20%EB%82%98%EB%88%84%EA%B8%B0%20%2F%20%EA%B8%80%3A%20%EC%9D%B8%EC%9A%A9%20%EB%B2%88%ED%98%B8%20%EB%B9%BC%EA%B8%B0%20%2F%20PDF%3A%20%EA%B7%B8%EB%8C%80%EB%A1%9C'%3B%0A%20%20%20%20tidyLab.appendChild(tidyBox)%3B%0A%20%20%20%20tidyLab.appendChild(document.createTextNode('%EC%A0%95%EB%A6%AC%ED%95%B4%EC%84%9C%20%EB%B0%9B%EA%B8%B0'))%3B%0A%20%20%20%20var%20modeSel%20%3D%20el('select')%3B%0A%20%20%20%20modeSel.setAttribute('aria-label'%2C%20'%EB%8B%B4%EC%9D%84%20%EB%82%B4%EC%9A%A9')%3B%0A%20%20%20%20MODES.forEach(function%20(k)%20%7B%0A%20%20%20%20%20%20%20%20var%20o%20%3D%20el('option'%2C%20''%2C%20MODE_LABEL%5Bk%5D)%3B%0A%20%20%20%20%20%20%20%20o.value%20%3D%20k%3B%0A%20%20%20%20%20%20%20%20modeSel.appendChild(o)%3B%0A%20%20%20%20%7D)%3B%0A%20%20%20%20modeSel.value%20%3D%20mode%3B%0A%20%20%20%20modeSel.onchange%20%3D%20function%20()%20%7B%20mode%20%3D%20modeSel.value%3B%20changed()%3B%20%7D%3B%0A%20%20%20%20row.appendChild(saveBtn)%3B%0A%20%20%20%20row.appendChild(copyBtn)%3B%0A%20%20%20%20row.appendChild(modeSel)%3B%0A%20%20%20%20row.appendChild(tidyLab)%3B%0A%20%20%20%20row.appendChild(sum)%3B%0A%20%20%20%20out.appendChild(row)%3B%0A%20%20%20%20out.appendChild(note)%3B%0A%20%20%20%20out.appendChild(ta)%3B%0A%20%20%20%20view%20%3D%20%7B%0A%20%20%20%20%20%20%20%20note%3A%20note%2C%0A%20%20%20%20%20%20%20%20redraw%3A%20function%20()%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20var%20picked%20%3D%20chosen()%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20ta.value%20%3D%20compose(when)%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20sum.textContent%20%3D%20'%EC%84%A0%ED%83%9D%20'%20%2B%20picked.length%20%2B%20'%EA%B0%9C%20%C2%B7%20%EA%B8%80%EC%9E%90%20'%20%2B%20num(charsOf(picked))%20%2B%20'%EC%9E%90'%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20saveBtn.disabled%20%3D%20copyBtn.disabled%20%3D%20!picked.length%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%3B%0A%20%20%20%20view.redraw()%3B%0A%7D%0Aasync%20function%20main()%20%7B%0A%20%20%20%20nb%20%3D%20readNotebook(await%20rpc('rLM1Ne'%2C%20%5BNB%5D))%3B%0A%20%20%20%20nbLine.textContent%20%3D%20nb.title%20%2B%20'%20%C2%B7%20%EC%86%8C%EC%8A%A4%20'%20%2B%20nb.sources.length%20%2B%20'%EA%B0%9C'%3B%0A%20%20%20%20if%20(!nb.sources.length)%20%7B%0A%20%20%20%20%20%20%20%20msg.textContent%20%3D%20'%EC%9D%B4%20%EB%85%B8%ED%8A%B8%EB%B6%81%EC%97%90%EB%8A%94%20%EC%86%8C%EC%8A%A4%EA%B0%80%20%EC%97%86%EC%8A%B5%EB%8B%88%EB%8B%A4.'%3B%0A%20%20%20%20%20%20%20%20list.remove()%3B%0A%20%20%20%20%20%20%20%20return%3B%0A%20%20%20%20%7D%0A%20%20%20%20nb.sources.forEach(addRow)%3B%0A%20%20%20%20buildPick()%3B%0A%20%20%20%20var%20next%20%3D%200%3B%0A%20%20%20%20var%20gnext%20%3D%200%3B%0A%20%20%20%20showStatus()%3B%0A%20%20%20%20async%20function%20worker()%20%7B%0A%20%20%20%20%20%20%20%20while%20(next%20%3C%20nb.sources.length)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20var%20s%20%3D%20nb.sources%5Bnext%2B%2B%5D%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20s.state%20%3D%20'load'%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20paint(s)%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20await%20loadOne(s)%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20bdone%20%2B%3D%201%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20paint(s)%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20showStatus()%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20async%20function%20gworker()%20%7B%0A%20%20%20%20%20%20%20%20while%20(gnext%20%3C%20nb.sources.length)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20var%20s%20%3D%20nb.sources%5Bgnext%2B%2B%5D%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20await%20loadGuide(s)%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20gdone%20%2B%3D%201%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20guideArrived()%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20var%20ws%20%3D%20%5B%5D%3B%0A%20%20%20%20var%20gs%20%3D%20%5B%5D%3B%0A%20%20%20%20for%20(var%20k%20%3D%200%3B%20k%20%3C%20Math.min(WORKERS%2C%20nb.sources.length)%3B%20k%2B%2B)%20%7B%0A%20%20%20%20%20%20%20%20ws.push(worker())%3B%0A%20%20%20%20%20%20%20%20gs.push(gworker())%3B%0A%20%20%20%20%7D%0A%20%20%20%20await%20Promise.all(ws)%3B%0A%20%20%20%20finish()%3B%0A%20%20%20%20await%20Promise.all(gs)%3B%0A%7D%0Afunction%20showStatus()%20%7B%0A%20%20%20%20var%20n%20%3D%20nb.sources.length%3B%0A%20%20%20%20var%20gok%20%3D%20nb.sources.filter(function%20(s)%20%7B%20return%20s.gstate%20%3D%3D%3D%20'ok'%3B%20%7D).length%3B%0A%20%20%20%20var%20g%20%3D%20gdone%20%3C%20n%20%3F%20'%20%C2%B7%20%EC%86%8C%EC%8A%A4%20%EA%B0%80%EC%9D%B4%EB%93%9C%20'%20%2B%20gdone%20%2B%20'%2F'%20%2B%20n%20%2B%20'%20%EB%B0%9B%EB%8A%94%20%EC%A4%91'%20%3A%20'%20%C2%B7%20%EC%86%8C%EC%8A%A4%20%EA%B0%80%EC%9D%B4%EB%93%9C%20'%20%2B%20gok%20%2B%20'%EA%B0%9C'%3B%0A%20%20%20%20msg.textContent%20%3D%20(doneMsg%20%7C%7C%20n%20%2B%20'%EA%B0%9C%20%EC%A4%91%20'%20%2B%20bdone%20%2B%20'%EA%B0%9C%20%EB%B0%9B%EC%9D%8C%E2%80%A6')%20%2B%20g%3B%0A%7D%0Afunction%20guideArrived()%20%7B%0A%20%20%20%20showStatus()%3B%0A%20%20%20%20if%20(!view)%20return%3B%0A%20%20%20%20if%20(gdone%20%3E%3D%20nb.sources.length)%20%7B%0A%20%20%20%20%20%20%20%20clearTimeout(redrawTimer)%3B%0A%20%20%20%20%20%20%20%20redrawTimer%20%3D%200%3B%0A%20%20%20%20%20%20%20%20view.redraw()%3B%0A%20%20%20%20%20%20%20%20return%3B%0A%20%20%20%20%7D%0A%20%20%20%20if%20(!redrawTimer)%20redrawTimer%20%3D%20setTimeout(function%20()%20%7B%20redrawTimer%20%3D%200%3B%20view.redraw()%3B%20%7D%2C%20500)%3B%0A%7D%0Amain().catch(function%20(e)%20%7B%0A%20%20%20%20msg.textContent%20%3D%20'%EB%B0%9B%EC%A7%80%20%EB%AA%BB%ED%96%88%EC%8A%B5%EB%8B%88%EB%8B%A4%3A%20'%20%2B%20((e%20%26%26%20e.message)%20%7C%7C%20e)%20%2B%20'%20%E2%80%94%20%ED%8E%98%EC%9D%B4%EC%A7%80%EB%A5%BC%20%EC%83%88%EB%A1%9C%EA%B3%A0%EC%B9%A8%ED%95%9C%20%EB%92%A4%20%EB%8B%A4%EC%8B%9C%20%EB%88%8C%EB%9F%AC%20%EC%A3%BC%EC%84%B8%EC%9A%94.'%3B%0A%20%20%20%20msg.className%20%3D%20'msg%20bad'%3B%0A%7D)%3B%7D)()%3Bvoid%200%3B

2. Gemini 노트북·AI 채팅 - 근거표와 영상 아이디어 정리하기

  1. Gemini 노트북 리서치로 주제를 검색합니다.예: 유럽 시위
    image
  2. 소스를 검토합니다.
    첨부된 소스들을 검토하고 정보의 누락된 부분이 있는지 분석해.특히, 이 주제를 온전히 이해하기 위해 필수적이나,현재 소스에서 누락된 핵심 정보나 맥락이 무엇인지 검토 후 구체적으로 정리해.그리고나서 웹에서 관련 자료 찾은 후, 소스에 바로 추가할 수 있게 실행해.
  3. 누락된 소스를 추가합니다.
  4. (선택 사항) 불필요한 소스를 걸러냅니다.
    업로드된 소스 전체를 하나도 빠짐없이 검토해서 즉시 제거해야 할 불필요한 소스를 골라내.[검토 프로세스 - 반드시 지킬 것]모든 소스를 하나씩 확인하며, 단순 메뉴/태그/링크가 아닌 '실제 본문 텍스트'가 존재하는지 철저히 확인해라.본문이 있다면 그 핵심 내용을 1문장으로 요약해 보고, 아래 제거 기준에 부합하는지 엄격하게 판단해라.[즉시 제거 기준]* 실제 본문 텍스트는 없고 웹사이트 메뉴, 태그, 다른 기사 링크 등만 수집된 깡통 소스
    * 라벨 주제와 명확히 엇나가는 소스
    * 다른 소스와 실제 내용이 핵심적으로 중복되는 소스
    * 제목과 본문 내용이 완전히 달라 검색 정확도를 떨어뜨리는 소스
    
    [답변 형식] 즉시 제거해야 할 소스만 아래 표 형식으로 출력해.\
    유지하거나 애매한 소스는 쓰지 마.\
    소스 번호 | 제목 | 확인된 실제 본문 요약 (또는 누락 상태 묘사) | 불필요 이유
    
    [작성 규칙]
    
    * 제목이 아닌 실제 내용만을 기준으로 판단할 것.
    * 불필요 이유는 짧고 구체적으로 작성할 것.
  5. ChatGPT, Claude 또는 Gemini 채팅에서 엑셀로 정리할 근거표를 만듭니다.
    [xxxx] 라는 주제로 유튜브 콘텐츠를 제작하려고 합니다.
    첨부한 자료에서 숫자가 있는 근거를 모두 뽑아 엑셀 파일로 정리합니다.
    - 「근거표」 시트: 필터 단추가 있는 엑셀 표로 번호 · 주제 · 핵심 내용 · 숫자 · 단위 · 기준 시점 · 소스 번호 · 소스 제목 · 주소 · 원문 인용
    - 「요약」 시트: 주제별 근거 개수와 데이터 막대
    - 「영상 아이디어」 시트: 근거 번호를 단 영상 기획 15개
    결과물은 .xlsx 파일로 주세요.

3. 유튜브·AI - 제품 리뷰 객관적으로 분석하기

  1. 유튜브에서 특정 제품의 리뷰를 검색합니다.예: 아이폰 듀오
    image

  1. 유튜브 링크 복사 북마클릿으로 링크를 복사합니다.
    image
  2. Gemini 노트북 소스 추출 북마클릿으로 소스를 추출합니다.
  3. 추출한 소스와 아래 프롬프트를 AI에 전달해 분석을 요청합니다.
    (※이부분은 빼도 됩니다.)
    저는 IT 초보자를 위한 리뷰 유튜브 채널을 운영합니다. 누구나 알기 쉽게, 솔직하고 정직하게 소개하는 것이 채널의 원칙입니다.
    첨부한 리뷰 영상과 글을 바탕으로, 다음 영상을 만들 때 쓸 비교 보고서를 만들어 주세요.
    
    [보고서 구성]
    1. 한눈에 보기: 초보자에게 먼저 권할 도구와 그 이유를 3줄로
    2. 도구 비교표: 도구 · 가격 · 무료로 쓸 수 있는 범위 · 주요 기능 · 장점 · 단점 · 추천 대상. 가격과 무료 범위에는 자료의 기준 시점도 함께
    3. 논쟁거리와 시사점 (가장 자세히): 가격 인상 · 무료 범위 축소 · 개인정보 · 성능 논란처럼 최근 말이 많은 부분. 항목마다 무슨 일인지 · 누가 어떤 근거로 무엇을 말하는지 · 초보자에게 어떤 의미인지
    4. 자료끼리 다른 말: 표로 항목 · 자료 A의 말 · 자료 B의 말 · 차이가 생긴 이유(추정)
    5. 영상 제작 인사이트: 초보자가 헷갈려할 부분 · 솔직하게 짚어야 할 단점 · 영상 아이디어 5개(제목안 · 핵심 메시지 · 근거 번호) · 촬영 전에 직접 확인할 것
    부록. 소스 목록: 번호 · 제목 · 종류(영상/글) · 올린 날짜 · 협찬 표시 여부. 이 번호를 보고서 전체의 근거 번호로 써 주세요.
    
    [지킬 것]
    - 쉽게 참고할 수 있도록 표의 칸마다, 각 주장의 근거 소스 번호를 [1], [2], ..로 달아 주세요.
    - 자료끼리 말이 다르면 한쪽을 고르지 말고 둘 다 적어 주세요. 표 칸에서는 「월 2만 원 [1] / 월 2만 5천 원 [3]」처럼 써 주세요.
    - 자료에 없는 내용은 지어내지 말고 「자료에 없음」이라고 써 주세요.
    - 가격 · 기능 같은 사실과 리뷰어의 평가를 구분해 주세요.
    - 가격과 무료 범위는 자주 바뀌니, 6개월 넘은 자료에서 온 값에는 「확인 필요」를 붙여 주세요.
    - 쉬운 한국어로 써 주세요. 전문 용어는 처음 나올 때 한 줄로 풀어 주세요.
    
    결과 보고서는 Claude라면 아티팩트, ChatGPT · Gemini라면 캔버스에 생성합니다.

4. 유튜브 - 주제별 인기 영상 분석하기

  • 아래 프롬프트로 같은 주제의 인기 유튜브 영상을 분석합니다.
    첨부한 .md 는 같은 주제 유튜브 영상 17개의 전사 글입니다(시각은 없습니다). 분석해서 웹페이지로 만들어 주세요.
    ① 영상 표: 유형 · 다루는 도구 · 언어(외국어 제목은 번역)
    ② 첫마디(훅) 모음과 많이 쓰인 훅 유형
    ③ 영상들이 공통으로 밟는 구성
    ④ 자주 나온 기능 · 팁 순위(몇 개 영상이 다뤘는지)
    ⑤ 한국 영상과 해외 영상의 차이
    ⑥ 아무도 제대로 안 다룬 빈틈
    ⑦ 내 다음 영상 기획: 제목안 5개 · 첫 30초 대본 · 구성안
    주장마다 근거 영상 번호를 붙여 주세요.

5. 유튜브 - 특정 주제의 전문 인기 채널 분석하기

  • 아래 프롬프트로 특정 주제를 전문적으로 다루는 인기 유튜브 채널을 분석합니다.
    이 자료는 유튜브 채널 「(채널 이름)」의 인기 영상입니다. 이 영상을 분석해, 실제로 유튜브를 운영하는 사람이 바로 써먹을 수 있는 리포트를 만들어 주세요.
    결과물은 '캔버스 or 아티팩트'로 정리합니다.
    
    [내 상황]
    - 내 채널 주제: (예: 직장인 엑셀 팁 / 아직 못 정함)
    - 지금 상황: (예: 영상 0개 / 구독자 3천 명인데 조회수가 늘지 않음)
    - 가장 알고 싶은 것: 
    
    [리포트 구성]
    1. 한눈에 보기: 이 채널이 잘되는 이유 3가지와 내가 가장 먼저 따라 할 한 가지
    2. 이 채널만의 특징: 누구를 위한 채널인지 · 시청자가 얻는 것 · 진행자의 말투와 캐릭터 · 다른 채널과 다른 점
    3. 반복되는 성공 공식: 주제 고르기 · 제목 · 도입부 · 설명 방식(예시 · 비유 · 숫자) · 마무리. 공식마다 이름을 붙이고 대표 영상 2개와 짧은 원문 인용을 함께. 조회수 자료가 있으면 잘된 영상과 덜 된 영상의 차이도 비교
    4. 따라 하면 좋은 점: 「새로 시작하는 사람」과 「운영 중인 사람」으로 나눠 5개씩, 바로 쓸 수 있는 제목 틀 · 첫 문장 틀 · 구성 틀로
    5. 따라 하지 말아야 할 점: 진행자의 경력 · 인지도처럼 이 채널이라서 통하는 것과, 그대로 베끼면 문제가 되는 것
    6. 개선점과 빈틈: 설명이 부족했거나 아쉬운 부분, 시청자가 더 궁금해할 만한데 다루지 않은 주제 → 내가 파고들 기회
    7. 영상 아이디어 15개: 표로 번호 · 제목안 · 한 줄 기획 · 빌려 온 공식(3번에서 붙인 이름) · 근거 소스 번호 · 도입부 첫 문장. 이 채널 영상과 주제가 겹치지 않게, 내 채널 주제가 있으면 그 주제로
    8. 다음 4주 실행 계획: 주마다 할 일 한 줄
    부록. 영상별 분석표: 소스 번호 · 제목 · 시청자의 고민 · 도입부 첫 문장(원문) · 전개 순서 · 마무리 방식
    
    [지킬 것]
    - 모든 분석에 근거가 된 소스 번호를 달아 주세요(부록 표의 번호와 같게).
    - 자료에서 확인한 내용과 추측을 나누고, 추측에는 「(추정)」을 붙여 주세요.
    - 조회수 · 구독자 수 · 올린 날짜는 자료에 있을 때만 쓰고, 없으면 짐작하지 마세요.
    - 「꾸준히 올리세요」처럼 누구에게나 하는 말은 빼고, 이 채널 영상에서 찾은 구체적인 예로 써 주세요.
    - 자막이 부족해 분석하지 못한 영상은 리포트 끝에 따로 적어 주세요.
    - 쉬운 한국어로 결론부터 써 주세요. 본문은 A4 6쪽 안팎으로.
    

로그인

처음이면 카카오·네이버로 계속하면 바로 가입돼요

또는
비밀번호 찾기
Caps Lock이 켜져 있습니다
스크랩 완료