{"url_pattern":"^https?://juejin\\.cn/.*$","site_name":"juejin","allowed_domains":null,"tools":[{"name":"insert_article","description":"Insert content into Juejin (掘金) article editor","inputSchema":{"type":"object","properties":{"title":{"type":"string","description":"Article title"},"content":{"type":"string","description":"Article content (Markdown)"}},"required":["content"]},"handler":"(params) => {\n  // Set title\n  if (params.title) {\n    const titleInput = document.querySelector('.title-input input') || document.querySelector('input[placeholder*=\"标题\"]');\n    if (titleInput) {\n      const setter = Object.getOwnPropertyDescriptor(window.HTMLInputElement.prototype, 'value').set;\n      setter.call(titleInput, params.title);\n      titleInput.dispatchEvent(new Event('input', { bubbles: true }));\n    }\n  }\n  // Find editor (Juejin uses CodeMirror)\n  const editor = document.querySelector('.CodeMirror-code') || document.querySelector('.bytemd-body textarea') || document.querySelector('[contenteditable=\"true\"]');\n  if (!editor) {\n    return { success: false, message: 'Editor not found. Open juejin.cn/editor/drafts/new first' };\n  }\n  // For CodeMirror, we need to use the CM instance\n  const cmElement = document.querySelector('.CodeMirror');\n  if (cmElement && cmElement.CodeMirror) {\n    cmElement.CodeMirror.setValue(params.content);\n    return { success: true, message: 'Content inserted into Juejin editor' };\n  }\n  // Fallback\n  if (editor.tagName === 'TEXTAREA') {\n    editor.value = params.content;\n  } else {\n    editor.textContent = params.content;\n  }\n  editor.dispatchEvent(new Event('input', { bubbles: true }));\n  return { success: true, message: 'Content inserted into Juejin editor' };\n}"},{"name":"open_editor","description":"Navigate to Juejin article editor","inputSchema":{"type":"object","properties":{},"required":null},"handler":"() => {\n  window.location.href = 'https://juejin.cn/editor/drafts/new';\n  return { success: true, message: 'Opening Juejin editor...' };\n}"}]}