ワンクリックで
naver-blog-crosspost
Cross-post to Naver Blog via logged-in Windows Chrome and repair Smart Editor state.
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
メニュー
Cross-post to Naver Blog via logged-in Windows Chrome and repair Smart Editor state.
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
SOC 職業分類に基づく
| name | naver-blog-crosspost |
| description | Cross-post to Naver Blog via logged-in Windows Chrome and repair Smart Editor state. |
Use this skill to turn an existing published article page into a Naver Blog post through the user's logged-in browser. When the user asks to use the already-open Windows Chrome, do exactly that; do not substitute WSL/Linux Chrome or a fresh automation-only browser unless the user changes the requirement.
Confirm the boundary.
발행 or use 저장.Attach to the correct browser.
target="node", node="WindowsBrowserHost", profile="user".driver: existing-session, transport: chrome-mcp, running: true, cdpReady: true, pageReady: true, and detected C:\Program Files\Google\Chrome\Application\chrome.exe.pageReady is false, call browser action="start" with the same target/node/profile to reattach.act rejects a stable handle like t13 with action targetId must match request targetId, retry with that tab's raw targetId from tabs.node scripts/chrome_cdp_endpoint.mjs --url to read DevToolsActivePort and construct it./json/version or /json/list is 404, do not treat that alone as fatal. Chrome may still be reachable via the two-line DevToolsActivePort file.Collect source content.
Compose in Naver Smart Editor.
글쓰기, or use an already-open write tab.Verify and repair Smart Editor's internal model before publishing.
SmartEditor._editors.<id> inside the write-page iframe.const w = document.querySelector('iframe').contentWindow;
const ed = w.SmartEditor._editors[Object.keys(w.SmartEditor._editors)[0]];
const data = ed.getDocumentData();
const title = ed.getDocumentTitle();
const text = ed.getContentText();
const images = ed.getComponentsByCtype ? ed.getComponentsByCtype('image') : [];
발행 button does nothing, suspect internal model drift instead of repeatedly clicking.data.document.components and call ed.setDocumentData(data). Use this only for authorized content and never to bypass login, captcha, account protections, or consent.v; restore a dropped first character; remove duplicated trailing title text; add or move source attribution; verify image components remain present.Add tags.
scripts/normalize_naver_tags.py on compact/source tags.태그 입력, committing with Space or Enter.Publish.
발행 panel.발행 inside the panel, not the toolbar 발행 that merely opens the panel.beforeunload dialog appears after final publish, accept only when it is part of confirmed publish navigation or after state is verified.Windows Node (DESKTOP-HK1F7D6) cannot expose browser.proxy, file.fetch, or node_exec, switch the automation route to WindowsBrowserHost before asking the user to restart Chrome.Use the bundled helper when the logged-in Chrome has remote debugging enabled and you need a browser-level CDP WebSocket URL:
node scripts/chrome_cdp_endpoint.mjs --url
The helper first honors CHROME_CDP_WS_URL. Otherwise it reads DevToolsActivePort from CHROME_USER_DATA_DIR, or from Chrome's default user-data directory. On Windows, the default is %LOCALAPPDATA%\Google\Chrome\User Data, so the workflow does not hardcode a username. Use CHROME_CDP_HOST when the endpoint host is not 127.0.0.1.
Before reporting success, verify the public post:
Useful published-post check:
const root = document.querySelector('iframe')?.contentDocument || document;
const text = root.body.innerText;
const imgs = Array.from(root.querySelectorAll('img')).filter(img =>
img.naturalWidth > 100 && img.naturalHeight > 100 &&
!/profile|banner|promo|logo|spc|static\/blog/i.test(img.currentSrc || img.src || '')
);
({
titlePresent: text.includes(expectedTitle),
bodyStartsClean: text.includes(expectedFirstSentence) && !text.includes('v' + expectedFirstSentence),
duplicateTitlePair: text.includes(expectedTitle + expectedTitle),
sourcePresent: text.includes(sourceUrl),
imageCount: imgs.length,
tagCount: (text.match(/#\S+/g) || []).length
});
python3 scripts/normalize_naver_tags.py 'LLM#Coding-Agent#Reinforcement-Learning#Reward-Design#Verification#Qwen'
The helper removes leading #, removes hyphens, de-duplicates tags, and prints a space-separated sequence suitable for Naver tag entry.