{"id":991534,"date":"2026-08-24T23:18:48","date_gmt":"2026-08-24T16:18:48","guid":{"rendered":"https:\/\/5id.vn\/seo-website-content-automation\/"},"modified":"2026-08-25T02:02:17","modified_gmt":"2026-08-24T19:02:17","slug":"seo-website-content-automation","status":"publish","type":"page","link":"https:\/\/5id.vn\/vi\/seo-website-content-automation\/","title":{"rendered":"SEO Website Content Automation &#8211; 5ID Technology"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"991534\" class=\"elementor elementor-991534 elementor-bc-flex-widget\" data-elementor-post-type=\"page\">\n\t\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-cf881e1 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"cf881e1\" data-element_type=\"section\" data-e-type=\"section\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-c127834\" data-id=\"c127834\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-a6f3412 elementor-widget elementor-widget-html\" data-id=\"a6f3412\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\n<link href=\"https:\/\/fonts.googleapis.com\/css2?family=Material+Symbols+Outlined:wght,FILL@100..700,0..1&display=swap\" rel=\"stylesheet\">\n<link href=\"https:\/\/fonts.googleapis.com\/css2?family=Inter:wght@400;500;600;700&display=swap\" rel=\"stylesheet\">\n<style>\n  body.page-id-991534 .entry-title,\n  body.page-id-991534 .page-title,\n  body.page-id-991534 .post-title,\n  body.page-id-991534 .page-header,\n  body.page-id-991534 .td-page-header,\n  body.page-id-991534 .main-title,\n  body.page-id-991534 h1.page-title,\n  body.page-id-991534 h1.entry-title,\n  body.page-id-991534 .n8n-lang-switcher {\n    display: none !important;\n  }\n\n  .st5-dashboard {\n    --surface: #fbf9fb;\n    --surface-low: #f5f3f5;\n    --surface-card: #ffffff;\n    --surface-soft: #efedef;\n    --surface-high: #eae7ea;\n    --surface-highest: #e4e2e4;\n    --ink: #1b1b1d;\n    --text-soft: #44474d;\n    --muted: #75777e;\n    --line: #c5c6cd;\n    --primary: #0d1c32;\n    --blue: #0070ea;\n    --blue-dark: #0059bb;\n    --blue-soft: #d8e2ff;\n    --green: #137333;\n    width: 100%;\n    margin: 0;\n    padding: 32px 0 96px;\n    background: var(--surface-low);\n    color: var(--ink);\n    font-family: Inter, Arial, sans-serif;\n    position: relative;\n    z-index: 0;\n  }\n\n  .st5-dashboard,\n  .st5-dashboard * {\n    box-sizing: border-box;\n  }\n\n  .st5-dashboard .material-symbols-outlined {\n    font-family: \"Material Symbols Outlined\";\n    font-weight: normal;\n    font-style: normal;\n    font-size: 22px;\n    line-height: 1;\n    letter-spacing: normal;\n    text-transform: none;\n    display: inline-block;\n    white-space: nowrap;\n    word-wrap: normal;\n    direction: ltr;\n    font-feature-settings: \"liga\";\n    -webkit-font-feature-settings: \"liga\";\n    -webkit-font-smoothing: antialiased;\n    vertical-align: middle;\n  }\n\n  .st5-main {\n    width: min(1280px, calc(100% - 48px));\n    margin: 0 auto;\n    display: flex;\n    flex-direction: column;\n    gap: 32px;\n  }\n\n  .st5-section {\n    display: flex;\n    flex-direction: column;\n    gap: 24px;\n  }\n\n  .st5-section-title h2,\n  .st5-card-title {\n    margin: 0;\n    color: var(--primary);\n    font-size: 30px;\n    line-height: 1.3;\n    font-weight: 700;\n    letter-spacing: 0;\n  }\n\n  .st5-section-title p,\n  .st5-card-subtitle {\n    margin: 4px 0 0;\n    color: var(--text-soft);\n    font-size: 16px;\n    line-height: 1.6;\n  }\n\n  .st5-bot-grid {\n    display: grid;\n    grid-template-columns: repeat(3, minmax(0, 1fr));\n    gap: 24px;\n  }\n\n  .st5-card {\n    border: 1px solid var(--line);\n    border-radius: 12px;\n    background: var(--surface-card);\n    box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.04), 0 2px 4px -1px rgba(0, 0, 0, 0.02);\n  }\n\n  .st5-soft-hover {\n    transition: transform .2s ease, box-shadow .2s ease;\n  }\n\n  .st5-soft-hover:hover {\n    transform: translateY(-1px);\n    box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.06), 0 4px 6px -2px rgba(0, 0, 0, 0.03);\n  }\n\n  .st5-bot-card {\n    min-height: 184px;\n    padding: 24px;\n    display: flex;\n    flex-direction: column;\n    gap: 16px;\n    cursor: pointer;\n  }\n\n  .st5-bot-card.active {\n    border-color: var(--blue);\n    box-shadow: 0 0 0 2px var(--blue), 0 0 0 4px var(--surface-low), 0 4px 6px -1px rgba(0,0,0,.04);\n  }\n\n  .st5-bot-card .st5-button {\n    margin-top: auto;\n  }\n\n  .st5-bot-top {\n    display: flex;\n    justify-content: space-between;\n    align-items: flex-start;\n    gap: 12px;\n  }\n\n  .st5-bot-icon,\n  .st5-round-icon {\n    width: 48px;\n    height: 48px;\n    border-radius: 999px;\n    display: grid;\n    place-items: center;\n    background: var(--blue-soft);\n    color: var(--blue);\n    flex: 0 0 auto;\n  }\n\n  .st5-bot-icon .material-symbols-outlined {\n    font-variation-settings: \"FILL\" 1, \"wght\" 500, \"GRAD\" 0, \"opsz\" 24;\n  }\n\n  .st5-status {\n    display: inline-flex;\n    align-items: center;\n    gap: 6px;\n    padding: 5px 8px;\n    border-radius: 6px;\n    background: #e6f4ea;\n    color: var(--green);\n    font-size: 12px;\n    line-height: 1.4;\n    font-weight: 600;\n    white-space: nowrap;\n  }\n\n  .st5-status i {\n    width: 8px;\n    height: 8px;\n    border-radius: 999px;\n    background: var(--green);\n  }\n\n  .st5-bot-card h3 {\n    margin: 0;\n    color: var(--primary);\n    font-size: 18px;\n    line-height: 1.6;\n    font-weight: 700;\n  }\n\n  .st5-bot-card p {\n    min-height: 40px;\n    margin: 4px 0 0;\n    color: var(--text-soft);\n    font-size: 12px;\n    line-height: 1.4;\n    font-weight: 500;\n  }\n\n  .st5-button {\n    width: 100%;\n    min-height: 40px;\n    display: inline-flex;\n    justify-content: center;\n    align-items: center;\n    gap: 8px;\n    border: 0;\n    border-radius: 8px;\n    background: var(--blue);\n    color: #fff !important;\n    font-size: 14px;\n    line-height: 1.2;\n    font-weight: 700;\n    letter-spacing: 0.05em;\n    text-decoration: none;\n    cursor: pointer;\n    transition: background .2s ease, transform .2s ease;\n  }\n\n  .st5-button:hover {\n    background: var(--blue-dark);\n  }\n\n  .st5-placeholder {\n    min-height: 184px;\n    padding: 24px;\n    display: flex;\n    flex-direction: column;\n    justify-content: center;\n    align-items: center;\n    gap: 12px;\n    border: 1px dashed var(--line);\n    border-radius: 12px;\n    background: var(--surface-soft);\n    color: var(--muted);\n    opacity: .65;\n  }\n\n  .st5-placeholder .st5-round-icon {\n    background: var(--surface-highest);\n    color: var(--muted);\n  }\n\n  .st5-placeholder span:last-child {\n    color: var(--muted);\n    font-size: 14px;\n    line-height: 1.2;\n    font-weight: 700;\n    letter-spacing: 0.05em;\n  }\n\n  .st5-websites {\n    padding: 24px;\n    display: flex;\n    flex-direction: column;\n    gap: 24px;\n  }\n\n  .st5-card-head {\n    display: flex;\n    align-items: center;\n    justify-content: space-between;\n    gap: 16px;\n  }\n\n  .st5-card-title {\n    font-size: 24px;\n    line-height: 1.4;\n    font-weight: 700;\n  }\n\n  .st5-add-btn {\n    width: auto;\n    min-height: 38px;\n    padding: 8px 14px;\n    border-radius: 8px;\n    white-space: nowrap;\n  }\n\n  .st5-table-wrap {\n    width: 100%;\n    overflow-x: auto;\n    -webkit-overflow-scrolling: touch;\n  }\n\n  .st5-table {\n    width: 100%;\n    min-width: 520px;\n    border-collapse: collapse;\n    text-align: left;\n  }\n\n  .st5-table th {\n    padding: 12px 16px;\n    border-bottom: 1px solid var(--surface-high);\n    color: var(--text-soft);\n    font-size: 14px;\n    line-height: 1.2;\n    font-weight: 700;\n    letter-spacing: 0.05em;\n  }\n\n  .st5-table td {\n    padding: 16px;\n    border-bottom: 1px solid var(--surface-high);\n    color: var(--text-soft);\n    font-size: 16px;\n    line-height: 1.6;\n    vertical-align: middle;\n  }\n\n  .st5-table tr:hover {\n    background: var(--surface-low);\n  }\n\n  .st5-site-name {\n    display: flex;\n    align-items: center;\n    gap: 8px;\n    color: var(--primary) !important;\n    font-weight: 600;\n  }\n\n  .st5-site-name .material-symbols-outlined {\n    color: var(--blue);\n    font-size: 20px;\n  }\n\n  .st5-pill {\n    display: inline-flex;\n    align-items: center;\n    padding: 4px 8px;\n    border-radius: 6px;\n    background: #e6f4ea;\n    color: var(--green);\n    font-size: 12px;\n    line-height: 1.4;\n    font-weight: 600;\n    white-space: nowrap;\n  }\n\n  .st5-actions {\n    display: flex;\n    justify-content: flex-end;\n    gap: 12px;\n  }\n\n  .st5-link-btn {\n    border: 0;\n    background: transparent;\n    color: var(--muted);\n    font-size: 14px;\n    line-height: 1.2;\n    font-weight: 700;\n    cursor: pointer;\n  }\n\n  .st5-link-btn.primary {\n    color: var(--blue);\n  }\n\n  .st5-workspace-grid {\n    display: grid;\n    grid-template-columns: minmax(0, 8fr) minmax(300px, 4fr);\n    gap: 32px;\n    align-items: start;\n  }\n\n  .st5-chat {\n    height: 700px;\n    display: flex;\n    flex-direction: column;\n    overflow: hidden;\n  }\n\n  .st5-chat-header {\n    flex: 0 0 auto;\n    display: flex;\n    justify-content: space-between;\n    align-items: center;\n    gap: 16px;\n    padding: 16px;\n    border-bottom: 1px solid var(--line);\n    background: var(--surface-low);\n  }\n\n  .st5-chat-identity {\n    display: flex;\n    align-items: center;\n    gap: 12px;\n  }\n\n  .st5-chat-identity .st5-bot-icon {\n    width: 40px;\n    height: 40px;\n    background: var(--blue);\n    color: #fff;\n  }\n\n  .st5-chat-identity h3 {\n    margin: 0;\n    color: var(--primary);\n    font-size: 18px;\n    line-height: 1.2;\n    font-weight: 800;\n  }\n\n  .st5-chat-identity p {\n    display: flex;\n    align-items: center;\n    gap: 6px;\n    margin: 2px 0 0;\n    color: var(--text-soft);\n    font-size: 12px;\n    line-height: 1.4;\n    font-weight: 500;\n  }\n\n  .st5-green-dot {\n    width: 8px;\n    height: 8px;\n    border-radius: 999px;\n    background: var(--green);\n  }\n\n  .st5-icon-btn {\n    width: 38px;\n    height: 38px;\n    display: grid;\n    place-items: center;\n    border: 0;\n    border-radius: 8px;\n    background: transparent;\n    color: var(--muted);\n    cursor: pointer;\n  }\n\n  .st5-icon-btn:hover {\n    background: var(--surface-soft);\n    color: var(--primary);\n  }\n\n  .st5-icon-btn:disabled {\n    opacity: .45;\n    cursor: not-allowed;\n  }\n\n  .st5-chat-body {\n    flex: 1 1 auto;\n    min-height: 0;\n    padding: 24px;\n    overflow-y: auto;\n    background: rgba(251, 249, 251, .5);\n    display: flex;\n    flex-direction: column;\n    gap: 24px;\n  }\n\n  .st5-day {\n    display: flex;\n    justify-content: center;\n  }\n\n  .st5-day span {\n    padding: 4px 12px;\n    border-radius: 999px;\n    background: var(--surface-soft);\n    color: var(--text-soft);\n    font-size: 12px;\n    line-height: 1.4;\n    font-weight: 500;\n  }\n\n  .st5-user-message {\n    display: flex;\n    justify-content: flex-end;\n  }\n\n  .st5-user-bubble {\n    max-width: 80%;\n    padding: 16px;\n    border-radius: 12px 12px 0 12px;\n    background: var(--blue);\n    color: #fff;\n    box-shadow: 0 1px 2px rgba(15, 23, 42, .08);\n  }\n\n  .st5-user-bubble p,\n  .st5-bot-bubble p {\n    margin: 0;\n    font-size: 16px;\n    line-height: 1.6;\n  }\n\n  .st5-message-attachments {\n    display: grid;\n    grid-template-columns: repeat(auto-fit, minmax(92px, 1fr));\n    gap: 8px;\n    margin-top: 12px;\n  }\n\n  .st5-message-attachments img {\n    width: 100%;\n    aspect-ratio: 4 \/ 3;\n    display: block;\n    object-fit: cover;\n    border-radius: 8px;\n    background: rgba(255, 255, 255, .18);\n  }\n\n  .st5-bot-message {\n    display: flex;\n    justify-content: flex-start;\n    gap: 12px;\n  }\n\n  .st5-small-avatar {\n    width: 32px;\n    height: 32px;\n    margin-top: 4px;\n    flex: 0 0 auto;\n    display: grid;\n    place-items: center;\n    border-radius: 999px;\n    background: var(--blue);\n    color: #fff;\n  }\n\n  .st5-small-avatar .material-symbols-outlined {\n    font-size: 16px;\n  }\n\n  .st5-bot-bubble {\n    max-width: 80%;\n    padding: 20px;\n    border: 1px solid var(--line);\n    border-radius: 12px 12px 12px 0;\n    background: var(--surface-card);\n    box-shadow: 0 1px 2px rgba(15, 23, 42, .06);\n  }\n\n  .st5-draft-card {\n    margin-top: 16px;\n    padding: 16px;\n    border: 1px solid var(--line);\n    border-radius: 8px;\n    background: var(--surface-low);\n  }\n\n  .st5-draft-status {\n    display: flex;\n    align-items: center;\n    gap: 8px;\n    margin-bottom: 8px;\n    color: var(--blue);\n    font-size: 14px;\n    font-weight: 800;\n  }\n\n  .st5-draft-card p {\n    color: var(--text-soft);\n  }\n\n  .st5-draft-actions {\n    display: flex;\n    gap: 8px;\n    margin-top: 12px;\n  }\n\n  .st5-draft-actions button {\n    border: 0;\n    background: transparent;\n    color: var(--muted);\n    font-size: 12px;\n    line-height: 1.4;\n    font-weight: 800;\n    cursor: pointer;\n  }\n\n  .st5-draft-actions button:first-child {\n    color: var(--blue);\n  }\n\n  .st5-chat-input {\n    flex: 0 0 auto;\n    padding: 24px;\n    border-top: 1px solid var(--line);\n    background: var(--surface-card);\n  }\n\n  .st5-attachment-tray {\n    display: flex;\n    flex-wrap: wrap;\n    gap: 10px;\n    margin: 0 0 12px;\n  }\n\n  .st5-attachment-tray[hidden] {\n    display: none;\n  }\n\n  .st5-attachment-chip {\n    width: 132px;\n    min-width: 0;\n    display: grid;\n    grid-template-columns: 42px minmax(0, 1fr) 24px;\n    gap: 8px;\n    align-items: center;\n    padding: 6px;\n    border: 1px solid var(--line);\n    border-radius: 8px;\n    background: var(--surface-low);\n  }\n\n  .st5-attachment-chip img {\n    width: 42px;\n    height: 42px;\n    display: block;\n    object-fit: cover;\n    border-radius: 6px;\n    background: var(--surface-soft);\n  }\n\n  .st5-attachment-chip span {\n    min-width: 0;\n    overflow: hidden;\n    color: var(--text-soft);\n    font-size: 11px;\n    line-height: 1.3;\n    font-weight: 700;\n    text-overflow: ellipsis;\n    white-space: nowrap;\n  }\n\n  .st5-attachment-chip button {\n    width: 24px;\n    height: 24px;\n    display: grid;\n    place-items: center;\n    border: 0;\n    border-radius: 6px;\n    background: transparent;\n    color: var(--muted);\n    cursor: pointer;\n  }\n\n  .st5-attachment-chip button:hover {\n    background: var(--surface-soft);\n    color: var(--primary);\n  }\n\n  .st5-attachment-chip .material-symbols-outlined {\n    font-size: 17px;\n  }\n\n  .st5-attach-note {\n    min-height: 16px;\n    margin: 8px 2px 0;\n    color: var(--text-soft);\n    font-size: 12px;\n    line-height: 1.35;\n  }\n\n  .st5-attach-note.error {\n    color: #b42318;\n  }\n\n  .st5-input-shell {\n    display: grid;\n    grid-template-columns: minmax(0, 1fr) auto;\n    align-items: flex-end;\n    gap: 12px;\n    padding: 12px;\n    border: 1px solid var(--line);\n    border-radius: 12px;\n    background: var(--surface-low);\n    transition: border-color .2s ease, box-shadow .2s ease;\n  }\n\n  .st5-input-shell:focus-within {\n    border-color: var(--blue);\n    box-shadow: 0 0 0 1px var(--blue);\n  }\n\n  .st5-input-shell textarea {\n    width: 100%;\n    min-width: 0;\n    max-height: 180px;\n    min-height: 38px;\n    padding: 8px;\n    overflow-y: hidden;\n    border: 0;\n    outline: 0;\n    background: transparent;\n    color: var(--ink);\n    font-family: Inter, Arial, sans-serif;\n    font-size: 16px;\n    line-height: 1.6;\n    resize: none;\n    box-shadow: none !important;\n  }\n\n  .st5-input-actions {\n    display: flex;\n    align-items: center;\n    gap: 8px;\n  }\n\n  .st5-file-input {\n    display: none !important;\n  }\n\n  .st5-send {\n    width: 40px;\n    height: 40px;\n    display: grid;\n    place-items: center;\n    border: 0;\n    border-radius: 8px;\n    background: var(--blue);\n    color: #fff;\n    box-shadow: 0 3px 8px rgba(0, 112, 234, .22);\n    cursor: pointer;\n  }\n\n  .st5-publish {\n    align-self: start;\n    position: sticky;\n    top: 90px;\n    padding: 24px;\n    display: flex;\n    flex-direction: column;\n    gap: 24px;\n  }\n\n  .st5-publish-title {\n    padding-bottom: 16px;\n    border-bottom: 1px solid var(--surface-high);\n  }\n\n  .st5-publish-title h3 {\n    display: flex;\n    align-items: center;\n    gap: 8px;\n    margin: 0;\n    color: var(--primary);\n    font-size: 24px;\n    line-height: 1.4;\n    font-weight: 800;\n  }\n\n  .st5-publish-title .material-symbols-outlined {\n    color: var(--blue);\n  }\n\n  .st5-publish-title p {\n    margin: 4px 0 0;\n    color: var(--text-soft);\n    font-size: 12px;\n    line-height: 1.4;\n  }\n\n  .st5-field-stack {\n    display: flex;\n    flex-direction: column;\n    gap: 20px;\n  }\n\n  .st5-field {\n    display: flex;\n    flex-direction: column;\n    gap: 8px;\n  }\n\n  .st5-field label {\n    display: flex;\n    justify-content: space-between;\n    gap: 8px;\n    color: var(--text-soft);\n    font-size: 14px;\n    line-height: 1.2;\n    font-weight: 800;\n    letter-spacing: 0.05em;\n  }\n\n  .st5-field label span {\n    color: var(--blue);\n    font-size: 10px;\n    white-space: nowrap;\n  }\n\n  .st5-field select {\n    width: 100%;\n    min-height: 44px;\n    padding: 10px 12px;\n    border: 1px solid var(--line);\n    border-radius: 8px;\n    background: var(--surface);\n    color: var(--ink);\n    font-family: Inter, Arial, sans-serif;\n    font-size: 16px;\n    line-height: 1.6;\n    outline: none;\n  }\n\n  .st5-segment {\n    display: grid;\n    grid-template-columns: repeat(2, minmax(0, 1fr));\n    gap: 4px;\n    padding: 4px;\n    border: 1px solid var(--line);\n    border-radius: 8px;\n    background: var(--surface-soft);\n  }\n\n  .st5-segment button {\n    min-height: 38px;\n    border: 0;\n    border-radius: 6px;\n    background: transparent;\n    color: var(--text-soft);\n    font-size: 14px;\n    line-height: 1.2;\n    font-weight: 800;\n    cursor: pointer;\n  }\n\n  .st5-segment button.active {\n    background: var(--surface-card);\n    color: var(--blue);\n    box-shadow: 0 1px 2px rgba(15, 23, 42, .08);\n  }\n\n  .st5-publish-footer,\n  .st5-annotation {\n    min-height: 42px;\n    border-top: 1px solid var(--surface-high);\n  }\n\n  .st5-annotation {\n    border: 1px solid rgba(13, 28, 50, .10);\n    border-radius: 8px;\n    background: rgba(13, 28, 50, .03);\n  }\n\n  body.page-id-991534 .st5-dashboard h2,\n  body.page-id-991534 .st5-dashboard h3,\n  body.page-id-991534 .st5-dashboard p {\n    letter-spacing: 0 !important;\n  }\n\n  body.page-id-991534 .st5-dashboard .st5-section-title h2 {\n    margin: 0 !important;\n    color: var(--primary) !important;\n    font-size: 30px !important;\n    line-height: 1.3 !important;\n    font-weight: 700 !important;\n  }\n\n  body.page-id-991534 .st5-dashboard .st5-card-title {\n    margin: 0 !important;\n    color: var(--primary) !important;\n    font-size: 24px !important;\n    line-height: 1.4 !important;\n    font-weight: 700 !important;\n  }\n\n  body.page-id-991534 .st5-dashboard .st5-bot-card h3,\n  body.page-id-991534 .st5-dashboard .st5-chat-identity h3 {\n    color: var(--primary) !important;\n    font-size: 18px !important;\n    line-height: 1.2 !important;\n    font-weight: 800 !important;\n  }\n\n  body.page-id-991534 .st5-dashboard .st5-publish-title h3 {\n    margin: 0 !important;\n    color: var(--primary) !important;\n    font-size: 24px !important;\n    line-height: 1.4 !important;\n    font-weight: 800 !important;\n  }\n\n  body.page-id-991534 .st5-dashboard button {\n    box-shadow: none;\n    text-transform: none;\n    letter-spacing: 0;\n    font-family: Inter, Arial, sans-serif;\n  }\n\n  body.page-id-991534 .st5-dashboard .st5-button {\n    min-height: 40px !important;\n    padding: 8px 14px !important;\n    border: 0 !important;\n    border-radius: 8px !important;\n    background: var(--blue) !important;\n    color: #fff !important;\n    font-size: 14px !important;\n    line-height: 1.2 !important;\n    font-weight: 700 !important;\n    letter-spacing: 0.05em !important;\n  }\n\n  body.page-id-991534 .st5-dashboard .st5-link-btn {\n    width: auto !important;\n    min-width: 0 !important;\n    min-height: 0 !important;\n    padding: 0 !important;\n    border: 0 !important;\n    border-radius: 0 !important;\n    background: transparent !important;\n    color: var(--muted) !important;\n    font-size: 14px !important;\n    line-height: 1.2 !important;\n    font-weight: 700 !important;\n  }\n\n  body.page-id-991534 .st5-dashboard .st5-link-btn.primary {\n    color: var(--blue) !important;\n  }\n\n  body.page-id-991534 .st5-dashboard .st5-icon-btn {\n    width: 38px !important;\n    min-width: 38px !important;\n    height: 38px !important;\n    min-height: 38px !important;\n    padding: 0 !important;\n    border: 0 !important;\n    border-radius: 8px !important;\n    background: transparent !important;\n    color: var(--muted) !important;\n  }\n\n  body.page-id-991534 .st5-dashboard .st5-send {\n    width: 40px !important;\n    min-width: 40px !important;\n    height: 40px !important;\n    min-height: 40px !important;\n    padding: 0 !important;\n    border: 0 !important;\n    border-radius: 8px !important;\n    background: var(--blue) !important;\n    color: #fff !important;\n  }\n\n  body.page-id-991534 .st5-dashboard .st5-segment button {\n    min-height: 38px !important;\n    padding: 0 8px !important;\n    border: 0 !important;\n    border-radius: 6px !important;\n    background: transparent !important;\n    color: var(--text-soft) !important;\n    font-size: 14px !important;\n    line-height: 1.2 !important;\n    font-weight: 800 !important;\n  }\n\n  body.page-id-991534 .st5-dashboard .st5-segment button.active {\n    background: var(--surface-card) !important;\n    color: var(--blue) !important;\n    box-shadow: 0 1px 2px rgba(15, 23, 42, .08) !important;\n  }\n\n  @media (max-width: 1024px) {\n    .st5-bot-grid,\n    .st5-workspace-grid {\n      grid-template-columns: 1fr;\n    }\n\n    .st5-chat {\n      height: auto;\n      min-height: 640px;\n    }\n\n    .st5-publish {\n      position: static;\n    }\n  }\n\n  @media (max-width: 720px) {\n    .st5-dashboard {\n      padding: 24px 0 72px;\n      margin-bottom: 0;\n    }\n\n    .st5-main {\n      width: min(100% - 32px, 560px);\n      gap: 28px;\n    }\n\n    .st5-section-title h2 {\n      font-size: 26px;\n    }\n\n    .st5-card-head,\n    .st5-chat-header {\n      align-items: flex-start;\n      flex-direction: column;\n    }\n\n    .st5-add-btn {\n      width: 100%;\n    }\n\n    .st5-chat-body,\n    .st5-chat-input,\n    .st5-bot-card,\n    .st5-websites,\n    .st5-publish {\n      padding: 18px;\n    }\n\n    .st5-user-bubble,\n    .st5-bot-bubble {\n      max-width: 100%;\n    }\n\n    .st5-bot-message {\n      gap: 10px;\n    }\n\n    .st5-input-shell {\n      align-items: stretch;\n      grid-template-columns: 1fr;\n    }\n\n    .st5-input-actions {\n      justify-content: flex-end;\n    }\n\n    .st5-attachment-chip {\n      width: min(150px, 100%);\n    }\n  }\n<\/style>\n\n<section class=\"st5-dashboard\">\n  <main class=\"st5-main\">\n    <section class=\"st5-section\">\n      <div class=\"st5-section-title\">\n        <h2>Bot Automation<\/h2>\n        <p>Choose an AI assistant to start a content request.<\/p>\n      <\/div>\n\n      <div class=\"st5-bot-grid\" id=\"st5-bot-grid\" aria-live=\"polite\"><\/div>\n    <\/section>\n\n    <section class=\"st5-card st5-websites st5-soft-hover\">\n      <div class=\"st5-card-head\">\n        <div>\n          <h2 class=\"st5-card-title\">Connected Websites<\/h2>\n          <p class=\"st5-card-subtitle\">Manage the destinations where content will be prepared.<\/p>\n        <\/div>\n        <button class=\"st5-button st5-add-btn\" type=\"button\"><span class=\"material-symbols-outlined\">add_link<\/span> Add website<\/button>\n      <\/div>\n\n      <div class=\"st5-table-wrap\">\n        <table class=\"st5-table\">\n          <thead>\n            <tr>\n              <th>Website<\/th>\n              <th>Status<\/th>\n              <th style=\"text-align:right;\">Actions<\/th>\n            <\/tr>\n          <\/thead>\n          <tbody id=\"st5-sites-tbody\"><\/tbody>\n        <\/table>\n      <\/div>\n    <\/section>\n\n    <div class=\"st5-workspace-grid\">\n      <section class=\"st5-card st5-chat st5-soft-hover\">\n        <div class=\"st5-chat-header\">\n          <div class=\"st5-chat-identity\">\n            <div class=\"st5-bot-icon\"><span class=\"material-symbols-outlined\">smart_toy<\/span><\/div>\n            <div>\n              <h3 id=\"st5-workspace-title\">Workspace: Staff-AI<\/h3>\n              <p id=\"st5-workspace-status\"><span class=\"st5-green-dot\"><\/span> Ready to process content<\/p>\n            <\/div>\n          <\/div>\n          <div>\n            <button class=\"st5-icon-btn\" type=\"button\"><span class=\"material-symbols-outlined\">history<\/span><\/button>\n            <button class=\"st5-icon-btn\" type=\"button\"><span class=\"material-symbols-outlined\">settings<\/span><\/button>\n          <\/div>\n        <\/div>\n\n        <div class=\"st5-chat-body\" id=\"st5-chat-body\"><\/div>\n\n        <div class=\"st5-chat-input\">\n          <div class=\"st5-attachment-tray\" id=\"st5-attachment-tray\" hidden><\/div>\n          <div class=\"st5-input-shell\">\n            <textarea id=\"st5-message\" rows=\"1\" placeholder=\"Send a request or content link to Staff-AI...\"><\/textarea>\n            <div class=\"st5-input-actions\">\n              <input class=\"st5-file-input\" id=\"st5-file-input\" type=\"file\" accept=\"image\/*\" multiple>\n              <button class=\"st5-icon-btn\" id=\"st5-attach\" type=\"button\" aria-label=\"Attach images\" title=\"Attach images\"><span class=\"material-symbols-outlined\">attach_file<\/span><\/button>\n              <button class=\"st5-send\" id=\"st5-send\" type=\"button\"><span class=\"material-symbols-outlined\">send<\/span><\/button>\n            <\/div>\n          <\/div>\n          <div class=\"st5-attach-note\" id=\"st5-attach-note\" aria-live=\"polite\"><\/div>\n        <\/div>\n      <\/section>\n\n      <section class=\"st5-card st5-publish st5-soft-hover\">\n        <div class=\"st5-publish-title\">\n          <h3><span class=\"material-symbols-outlined\">publish<\/span> Content Delivery<\/h3>\n          <p>Configure the destination for the current request.<\/p>\n        <\/div>\n\n        <div class=\"st5-field-stack\">\n          <div class=\"st5-field\">\n            <label>Select website <span>ACTIVE TARGET<\/span><\/label>\n            <select id=\"st5-target-site\"><\/select>\n          <\/div>\n\n          <div class=\"st5-field\">\n            <label>Publishing mode<\/label>\n            <div class=\"st5-segment\" id=\"st5-publish-mode\">\n              <button class=\"active\" type=\"button\" data-publish-status=\"draft\">Draft<\/button>\n              <button type=\"button\" data-publish-status=\"publish\">Publish<\/button>\n            <\/div>\n          <\/div>\n        <\/div>\n\n        <div class=\"st5-publish-footer\"><\/div>\n        <div class=\"st5-annotation\"><\/div>\n      <\/section>\n    <\/div>\n  <\/main>\n<\/section>\n\n<script>\n(function () {\n  var webhookUrl = \"https:\/\/support.xbookvn.com\/webhook\/93bd2daf-f0a4-4fa2-9c49-007a62b1761c\";\n  var statusWebhookUrl = \"https:\/\/support.xbookvn.com\/webhook\/b413a6a6-a7b8-4354-99fa-5a3ff7bf0500\";\n  var sites = [\n    {\n      key: \"5id\",\n      domain: \"5id.vn\",\n      label: \"5ID Technology\",\n      bot: \"Staff-AI\",\n      description: \"Create website articles for 5ID from requests sent in the web chat.\",\n      target: \"5 pages\"\n    },\n    {\n      key: \"xbookvn\",\n      domain: \"xbookvn.com\",\n      label: \"xBook Knowledge\",\n      bot: \"AI-Staff-Xbook-Blog\",\n      description: \"Prepare education blog content and learning-resource articles.\",\n      target: \"12 posts\"\n    },\n    {\n      key: \"tutbrand\",\n      domain: \"tutbrand.vn\",\n      label: \"TUT Brand\",\n      bot: \"AI-Staff-tut-Blog\",\n      description: \"Write content about branding, marketing and design.\",\n      target: \"Blog posts\"\n    },\n    {\n      key: \"jai\",\n      domain: \"jai.vn\",\n      label: \"JAI Branding\",\n      bot: \"AI-Staff-JAI-Blog\",\n      description: \"Prepare articles about branding and digital transformation.\",\n      target: \"Blog posts\"\n    },\n    {\n      key: \"artgraphicstock\",\n      domain: \"artgraphicstock.com\",\n      label: \"Artgraphicstock\",\n      bot: \"AI-Staff-artgraphicstock-Blog\",\n      description: \"Draft articles about art, design and creative resources.\",\n      target: \"Blog posts\"\n    }\n  ];\n  var selectedSiteKey = \"5id\";\n  var selectedAttachments = [];\n  var attachmentSeq = 0;\n  var maxAttachments = 4;\n  var maxAttachmentBytes = 1800000;\n\n  function byId(id) {\n    return document.getElementById(id);\n  }\n\n  function currentSite() {\n    return sites.find(function (site) { return site.key === selectedSiteKey; }) || sites[0];\n  }\n\n  function iconHtml(name) {\n    return '<span class=\"material-symbols-outlined\">' + name + '<\/span>';\n  }\n\n  function setText(id, text) {\n    var el = byId(id);\n    if (el) el.textContent = text;\n  }\n\n  function renderBots() {\n    var grid = byId(\"st5-bot-grid\");\n    if (!grid) return;\n    grid.innerHTML = \"\";\n    sites.forEach(function (site) {\n      var card = document.createElement(\"article\");\n      card.className = \"st5-card st5-bot-card st5-soft-hover\" + (site.key === selectedSiteKey ? \" active\" : \"\");\n      card.tabIndex = 0;\n      card.setAttribute(\"role\", \"button\");\n      card.setAttribute(\"aria-pressed\", site.key === selectedSiteKey ? \"true\" : \"false\");\n      card.dataset.site = site.key;\n      card.innerHTML =\n        '<div class=\"st5-bot-top\">' +\n          '<div class=\"st5-bot-icon\">' + iconHtml(\"smart_toy\") + '<\/div>' +\n          '<span class=\"st5-status\"><i aria-hidden=\"true\"><\/i> Active<\/span>' +\n        '<\/div>' +\n        '<div>' +\n          '<h3>' + site.bot + '<\/h3>' +\n          '<p>' + site.description + '<\/p>' +\n        '<\/div>' +\n        '<button class=\"st5-button\" type=\"button\">' +\n          (site.key === selectedSiteKey ? 'Working ' + iconHtml(\"check\") : 'Select bot') +\n        '<\/button>';\n      card.addEventListener(\"click\", function () {\n        selectSite(site.key);\n      });\n      card.addEventListener(\"keydown\", function (event) {\n        if (event.key === \"Enter\" || event.key === \" \") {\n          event.preventDefault();\n          selectSite(site.key);\n        }\n      });\n      grid.appendChild(card);\n    });\n  }\n\n  function renderTable() {\n    var tbody = byId(\"st5-sites-tbody\");\n    if (!tbody) return;\n    tbody.innerHTML = \"\";\n    sites.forEach(function (site) {\n      var active = site.key === selectedSiteKey;\n      var tr = document.createElement(\"tr\");\n      tr.innerHTML =\n        '<td><span class=\"st5-site-name\">' + iconHtml(\"language\") + ' ' + site.domain + '<\/span><\/td>' +\n        '<td><span class=\"st5-pill\">Connected<\/span><\/td>' +\n        '<td><div class=\"st5-actions\">' +\n          '<button class=\"st5-link-btn' + (active ? ' primary' : '') + '\" type=\"button\" data-site=\"' + site.key + '\">' + (active ? 'Default' : 'Set default') + '<\/button>' +\n          '<button class=\"st5-link-btn\" type=\"button\" data-site=\"' + site.key + '\">Manage<\/button>' +\n        '<\/div><\/td>';\n      tr.querySelectorAll(\"button\").forEach(function (button) {\n        button.addEventListener(\"click\", function () {\n          selectSite(site.key);\n        });\n      });\n      tbody.appendChild(tr);\n    });\n  }\n\n  function renderSelect() {\n    var select = byId(\"st5-target-site\");\n    if (!select) return;\n    select.innerHTML = \"\";\n    sites.forEach(function (site) {\n      var option = document.createElement(\"option\");\n      option.value = site.key;\n      option.textContent = site.domain + \" - \" + site.bot;\n      select.appendChild(option);\n    });\n    select.value = selectedSiteKey;\n    select.addEventListener(\"change\", function () {\n      selectSite(select.value);\n    });\n  }\n\n  function selectSite(siteKey) {\n    selectedSiteKey = sites.some(function (site) { return site.key === siteKey; }) ? siteKey : \"5id\";\n    var site = currentSite();\n    setText(\"st5-workspace-title\", \"Workspace: \" + site.bot);\n    var status = byId(\"st5-workspace-status\");\n    if (status) status.innerHTML = '<span class=\"st5-green-dot\"><\/span> Ready to process content for ' + site.domain;\n    var input = byId(\"st5-message\");\n    if (input) input.placeholder = \"Send a request or content link to \" + site.bot + \"...\";\n    var select = byId(\"st5-target-site\");\n    if (select && select.value !== selectedSiteKey) select.value = selectedSiteKey;\n    renderBots();\n    renderTable();\n  }\n\n  function appendMessage(kind, text, attachments) {\n    var body = byId(\"st5-chat-body\");\n    if (!body) return;\n    var wrapper = document.createElement(\"div\");\n    wrapper.className = kind === \"user\" ? \"st5-user-message\" : \"st5-bot-message\";\n\n    if (kind !== \"user\") {\n      var avatar = document.createElement(\"div\");\n      avatar.className = \"st5-small-avatar\";\n      avatar.innerHTML = '<span class=\"material-symbols-outlined\">smart_toy<\/span>';\n      wrapper.appendChild(avatar);\n    }\n\n    var bubble = document.createElement(\"div\");\n    bubble.className = kind === \"user\" ? \"st5-user-bubble\" : \"st5-bot-bubble\";\n    if (text) {\n      var p = document.createElement(\"p\");\n      p.textContent = text;\n      bubble.appendChild(p);\n    }\n    if (attachments && attachments.length) {\n      var gallery = document.createElement(\"div\");\n      gallery.className = \"st5-message-attachments\";\n      attachments.forEach(function (attachment) {\n        var img = document.createElement(\"img\");\n        img.src = attachment.data_url;\n        img.alt = attachment.name || \"Attached image\";\n        gallery.appendChild(img);\n      });\n      bubble.appendChild(gallery);\n    }\n    wrapper.appendChild(bubble);\n    body.appendChild(wrapper);\n    wrapper.scrollIntoView({ behavior: \"smooth\", block: \"nearest\" });\n  }\n\n  function appendDoneCard(site, record) {\n    var body = byId(\"st5-chat-body\");\n    if (!body) return;\n    var wrapper = document.createElement(\"div\");\n    wrapper.className = \"st5-bot-message\";\n\n    var avatar = document.createElement(\"div\");\n    avatar.className = \"st5-small-avatar\";\n    avatar.innerHTML = iconHtml(\"smart_toy\");\n    wrapper.appendChild(avatar);\n\n    var bubble = document.createElement(\"div\");\n    bubble.className = \"st5-bot-bubble\";\n    var link = record.postLink || record.post_link || record.link || \"\";\n    var title = record.title || \"Draft is ready\";\n    bubble.innerHTML =\n      '<p>Draft completed for ' + site.domain + '.<\/p>' +\n      '<div class=\"st5-draft-card st5-done-card\">' +\n        '<div class=\"st5-draft-status\"><span class=\"material-symbols-outlined\">done_all<\/span> Done: Draft ready<\/div>' +\n        '<p><strong>' + title + '<\/strong><\/p>' +\n        (link ? '<div class=\"st5-draft-actions\"><a href=\"' + link + '\" target=\"_blank\" rel=\"noopener\">Open draft<\/a><\/div>' : '') +\n      '<\/div>';\n    wrapper.appendChild(bubble);\n    body.appendChild(wrapper);\n    wrapper.scrollIntoView({ behavior: \"smooth\", block: \"nearest\" });\n  }\n\n  function sessionId() {\n    try {\n      var key = \"st5_web_dashboard_session\";\n      var existing = window.sessionStorage.getItem(key);\n      if (existing) return existing;\n      var created = \"st5_\" + Date.now() + \"_\" + Math.random().toString(16).slice(2);\n      window.sessionStorage.setItem(key, created);\n      return created;\n    } catch (error) {\n      return \"st5_\" + Date.now();\n    }\n  }\n\n  function publishStatus() {\n    var active = document.querySelector(\"#st5-publish-mode button.active\");\n    return active ? active.getAttribute(\"data-publish-status\") || \"draft\" : \"draft\";\n  }\n\n  function setAttachNote(text, isError) {\n    var note = byId(\"st5-attach-note\");\n    if (!note) return;\n    note.textContent = text || \"\";\n    note.classList.toggle(\"error\", Boolean(isError));\n  }\n\n  function payloadSizeFromDataUrl(dataUrl) {\n    var base64 = String(dataUrl || \"\").split(\",\")[1] || \"\";\n    return Math.round((base64.length * 3) \/ 4);\n  }\n\n  function fileLabel(name) {\n    var value = String(name || \"image\").trim();\n    return value.length > 24 ? value.slice(0, 10) + \"...\" + value.slice(-10) : value;\n  }\n\n  function renderAttachmentTray() {\n    var tray = byId(\"st5-attachment-tray\");\n    if (!tray) return;\n    tray.innerHTML = \"\";\n    tray.hidden = selectedAttachments.length === 0;\n    selectedAttachments.forEach(function (attachment) {\n      var chip = document.createElement(\"div\");\n      chip.className = \"st5-attachment-chip\";\n\n      var image = document.createElement(\"img\");\n      image.src = attachment.data_url;\n      image.alt = attachment.name || \"Attached image\";\n\n      var label = document.createElement(\"span\");\n      label.textContent = fileLabel(attachment.name);\n      label.title = attachment.name || \"Attached image\";\n\n      var remove = document.createElement(\"button\");\n      remove.type = \"button\";\n      remove.setAttribute(\"aria-label\", \"Remove image\");\n      remove.innerHTML = iconHtml(\"close\");\n      remove.addEventListener(\"click\", function () {\n        selectedAttachments = selectedAttachments.filter(function (item) { return item.id !== attachment.id; });\n        renderAttachmentTray();\n        setAttachNote(selectedAttachments.length ? selectedAttachments.length + \"\/\" + maxAttachments + \" images selected.\" : \"\", false);\n      });\n\n      chip.appendChild(image);\n      chip.appendChild(label);\n      chip.appendChild(remove);\n      tray.appendChild(chip);\n    });\n  }\n\n  function readFileAsDataUrl(file) {\n    return new Promise(function (resolve, reject) {\n      var reader = new FileReader();\n      reader.onload = function () { resolve(String(reader.result || \"\")); };\n      reader.onerror = reject;\n      reader.readAsDataURL(file);\n    });\n  }\n\n  function loadImage(dataUrl) {\n    return new Promise(function (resolve, reject) {\n      var image = new Image();\n      image.onload = function () { resolve(image); };\n      image.onerror = reject;\n      image.src = dataUrl;\n    });\n  }\n\n  function compressImage(file, dataUrl) {\n    return loadImage(dataUrl).then(function (image) {\n      var maxSide = 1600;\n      var width = image.naturalWidth || image.width || 1;\n      var height = image.naturalHeight || image.height || 1;\n      var scale = Math.min(1, maxSide \/ Math.max(width, height));\n      var targetWidth = Math.max(1, Math.round(width * scale));\n      var targetHeight = Math.max(1, Math.round(height * scale));\n\n      var canvas = document.createElement(\"canvas\");\n      canvas.width = targetWidth;\n      canvas.height = targetHeight;\n      var ctx = canvas.getContext(\"2d\");\n      ctx.fillStyle = \"#ffffff\";\n      ctx.fillRect(0, 0, targetWidth, targetHeight);\n      ctx.drawImage(image, 0, 0, targetWidth, targetHeight);\n\n      var output = dataUrl;\n      var mimeType = \/^image\\\/(png|webp|jpeg|jpg)$\/i.test(file.type) ? file.type.toLowerCase().replace(\"image\/jpg\", \"image\/jpeg\") : \"image\/jpeg\";\n      if (payloadSizeFromDataUrl(output) > maxAttachmentBytes || scale < 1 || mimeType === \"image\/png\") {\n        [0.84, 0.74, 0.64].some(function (quality) {\n          output = canvas.toDataURL(\"image\/jpeg\", quality);\n          mimeType = \"image\/jpeg\";\n          return payloadSizeFromDataUrl(output) <= maxAttachmentBytes;\n        });\n      }\n\n      return {\n        id: \"att_\" + (++attachmentSeq) + \"_\" + Date.now(),\n        type: \"image\",\n        name: file.name || (\"image-\" + attachmentSeq + \".jpg\"),\n        mime_type: mimeType,\n        size: payloadSizeFromDataUrl(output),\n        width: targetWidth,\n        height: targetHeight,\n        data_url: output,\n        base64: String(output).split(\",\")[1] || \"\"\n      };\n    });\n  }\n\n  function addFiles(files) {\n    var list = Array.prototype.slice.call(files || []).filter(function (file) {\n      return file && \/^image\\\/\/i.test(file.type || \"\");\n    });\n    if (!list.length) return;\n\n    var room = Math.max(0, maxAttachments - selectedAttachments.length);\n    if (!room) {\n      setAttachNote(\"You can attach up to \" + maxAttachments + \" images per request.\", true);\n      return;\n    }\n\n    setAttachNote(\"Preparing images...\", false);\n    Promise.all(list.slice(0, room).map(function (file) {\n      return readFileAsDataUrl(file).then(function (dataUrl) {\n        return compressImage(file, dataUrl);\n      });\n    })).then(function (attachments) {\n      selectedAttachments = selectedAttachments.concat(attachments);\n      renderAttachmentTray();\n      setAttachNote(selectedAttachments.length + \"\/\" + maxAttachments + \" images selected.\", false);\n    }).catch(function () {\n      setAttachNote(\"Could not read this image. Try another JPG, PNG or WebP file.\", true);\n    });\n  }\n\n  function payload(site, text, attachments) {\n    var now = Date.now();\n    return {\n      source: \"5id_web_dashboard\",\n      source_channel: \"web_dashboard\",\n      request_id: \"web_\" + now + \"_\" + Math.random().toString(16).slice(2),\n      session_id: sessionId(),\n      site_key: site.key,\n      domain: site.domain,\n      website: site.domain,\n      website_label: site.label,\n      bot_name: site.bot,\n      message: text,\n      attachments: attachments || [],\n      image_count: (attachments || []).length,\n      publish_status: publishStatus(),\n      page_url: window.location.href,\n      created_at: new Date(now).toISOString()\n    };\n  }\n\n  function sendToN8n(data) {\n    return fetch(webhookUrl, {\n      method: \"POST\",\n      headers: { \"Content-Type\": \"text\/plain;charset=UTF-8\" },\n      body: JSON.stringify(data)\n    });\n  }\n\n  function readStatus(requestId) {\n    return fetch(statusWebhookUrl, {\n      method: \"POST\",\n      headers: { \"Content-Type\": \"text\/plain;charset=UTF-8\" },\n      body: JSON.stringify({ request_id: requestId, source: \"5id_web_dashboard\" })\n    }).then(function (response) {\n      if (!response.ok) throw new Error(\"HTTP \" + response.status);\n      return response.json();\n    });\n  }\n\n  function pollDone(requestId, site, attempt) {\n    var nextAttempt = attempt || 0;\n    if (!requestId || nextAttempt > 120) return;\n    window.setTimeout(function () {\n      readStatus(requestId)\n        .then(function (status) {\n          if (status && status.status === \"done\") {\n            appendDoneCard(site, status);\n            return;\n          }\n          pollDone(requestId, site, nextAttempt + 1);\n        })\n        .catch(function () {\n          pollDone(requestId, site, nextAttempt + 1);\n        });\n    }, nextAttempt < 3 ? 3000 : 5000);\n  }\n\n  var mode = byId(\"st5-publish-mode\");\n  if (mode) {\n    mode.querySelectorAll(\"button\").forEach(function (button) {\n      button.addEventListener(\"click\", function () {\n        mode.querySelectorAll(\"button\").forEach(function (item) { item.classList.remove(\"active\"); });\n        button.classList.add(\"active\");\n      });\n    });\n  }\n\n  var send = byId(\"st5-send\");\n  var input = byId(\"st5-message\");\n  var attach = byId(\"st5-attach\");\n  var fileInput = byId(\"st5-file-input\");\n  if (send && input) {\n    function resizeInput() {\n      input.style.height = \"auto\";\n      input.style.height = Math.min(input.scrollHeight, 180) + \"px\";\n      input.style.overflowY = input.scrollHeight > 180 ? \"auto\" : \"hidden\";\n    }\n\n    function submitMessage() {\n      var text = input.value.trim();\n      var attachments = selectedAttachments.map(function (attachment) {\n        return {\n          id: attachment.id,\n          type: attachment.type,\n          name: attachment.name,\n          mime_type: attachment.mime_type,\n          size: attachment.size,\n          width: attachment.width,\n          height: attachment.height,\n          data_url: attachment.data_url,\n          base64: attachment.base64\n        };\n      });\n      if (!text && !attachments.length) return;\n      var site = currentSite();\n      appendMessage(\"user\", text || \"Sent image attachment.\", attachments);\n      input.value = \"\";\n      resizeInput();\n      selectedAttachments = [];\n      renderAttachmentTray();\n      setAttachNote(\"\", false);\n      send.disabled = true;\n      send.setAttribute(\"aria-busy\", \"true\");\n      if (attach) attach.disabled = true;\n\n      var data = payload(site, text, attachments);\n      sendToN8n(data)\n        .then(function (response) {\n          if (!response.ok) throw new Error(\"HTTP \" + response.status);\n        })\n        .then(function () {\n          var modeText = publishStatus() === \"publish\" ? \"a published article\" : \"a draft\";\n          appendMessage(\"bot\", \"Request received for \" + site.domain + \". \" + site.bot + \" will prepare \" + modeText + \" for team review.\");\n          pollDone(data.request_id, site, 0);\n        })\n        .catch(function () {\n          appendMessage(\"bot\", \"The request could not be sent. Please try again or contact 5ID.\");\n        })\n        .finally(function () {\n          send.disabled = false;\n          send.removeAttribute(\"aria-busy\");\n          if (attach) attach.disabled = false;\n        });\n    }\n\n    send.addEventListener(\"click\", submitMessage);\n    input.addEventListener(\"input\", resizeInput);\n    input.addEventListener(\"keydown\", function (event) {\n      if (event.key === \"Enter\" && !event.shiftKey) {\n        event.preventDefault();\n        submitMessage();\n      }\n    });\n    input.addEventListener(\"paste\", function (event) {\n      var items = event.clipboardData && event.clipboardData.items ? Array.prototype.slice.call(event.clipboardData.items) : [];\n      var files = items.map(function (item) {\n        return item.kind === \"file\" ? item.getAsFile() : null;\n      }).filter(Boolean);\n      if (files.length) addFiles(files);\n    });\n    resizeInput();\n  }\n\n  if (attach && fileInput) {\n    attach.addEventListener(\"click\", function () {\n      fileInput.click();\n    });\n    fileInput.addEventListener(\"change\", function () {\n      addFiles(fileInput.files);\n      fileInput.value = \"\";\n    });\n  }\n\n  renderSelect();\n  selectSite(selectedSiteKey);\n})();\n<\/script>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"","protected":false},"author":16,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-991534","page","type-page","status-publish","hentry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.5 (Yoast SEO v27.5) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>SEO Website Content Automation - 5ID Technology - 5ID<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/5id.vn\/vi\/seo-website-content-automation\/\" \/>\n<meta property=\"og:locale\" content=\"vi_VN\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"SEO Website Content Automation - 5ID Technology\" \/>\n<meta property=\"og:url\" content=\"https:\/\/5id.vn\/vi\/seo-website-content-automation\/\" \/>\n<meta property=\"og:site_name\" content=\"5ID\" \/>\n<meta property=\"article:modified_time\" content=\"2026-08-24T19:02:17+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/5id.vn\\\/seo-website-content-automation\\\/\",\"url\":\"https:\\\/\\\/5id.vn\\\/seo-website-content-automation\\\/\",\"name\":\"SEO Website Content Automation - 5ID Technology - 5ID\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/5id.vn\\\/#website\"},\"datePublished\":\"2026-08-24T16:18:48+00:00\",\"dateModified\":\"2026-08-24T19:02:17+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/5id.vn\\\/seo-website-content-automation\\\/#breadcrumb\"},\"inLanguage\":\"vi\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/5id.vn\\\/seo-website-content-automation\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/5id.vn\\\/seo-website-content-automation\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/5id.vn\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"SEO Website Content Automation &#8211; 5ID Technology\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/5id.vn\\\/#website\",\"url\":\"https:\\\/\\\/5id.vn\\\/\",\"name\":\"5ID\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/5id.vn\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/5id.vn\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"vi\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/5id.vn\\\/#organization\",\"name\":\"5ID\",\"url\":\"https:\\\/\\\/5id.vn\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"vi\",\"@id\":\"https:\\\/\\\/5id.vn\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/5id.vn\\\/wp-content\\\/uploads\\\/2023\\\/03\\\/5IDLOGO.svg\",\"contentUrl\":\"https:\\\/\\\/5id.vn\\\/wp-content\\\/uploads\\\/2023\\\/03\\\/5IDLOGO.svg\",\"width\":579,\"height\":185,\"caption\":\"5ID\"},\"image\":{\"@id\":\"https:\\\/\\\/5id.vn\\\/#\\\/schema\\\/logo\\\/image\\\/\"}}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"SEO Website Content Automation - 5ID Technology - 5ID","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/5id.vn\/vi\/seo-website-content-automation\/","og_locale":"vi_VN","og_type":"article","og_title":"SEO Website Content Automation - 5ID Technology","og_url":"https:\/\/5id.vn\/vi\/seo-website-content-automation\/","og_site_name":"5ID","article_modified_time":"2026-08-24T19:02:17+00:00","twitter_card":"summary_large_image","schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/5id.vn\/seo-website-content-automation\/","url":"https:\/\/5id.vn\/seo-website-content-automation\/","name":"SEO Website Content Automation - 5ID Technology - 5ID","isPartOf":{"@id":"https:\/\/5id.vn\/#website"},"datePublished":"2026-08-24T16:18:48+00:00","dateModified":"2026-08-24T19:02:17+00:00","breadcrumb":{"@id":"https:\/\/5id.vn\/seo-website-content-automation\/#breadcrumb"},"inLanguage":"vi","potentialAction":[{"@type":"ReadAction","target":["https:\/\/5id.vn\/seo-website-content-automation\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/5id.vn\/seo-website-content-automation\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/5id.vn\/"},{"@type":"ListItem","position":2,"name":"SEO Website Content Automation &#8211; 5ID Technology"}]},{"@type":"WebSite","@id":"https:\/\/5id.vn\/#website","url":"https:\/\/5id.vn\/","name":"5ID","description":"","publisher":{"@id":"https:\/\/5id.vn\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/5id.vn\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"vi"},{"@type":"Organization","@id":"https:\/\/5id.vn\/#organization","name":"5ID","url":"https:\/\/5id.vn\/","logo":{"@type":"ImageObject","inLanguage":"vi","@id":"https:\/\/5id.vn\/#\/schema\/logo\/image\/","url":"https:\/\/5id.vn\/wp-content\/uploads\/2023\/03\/5IDLOGO.svg","contentUrl":"https:\/\/5id.vn\/wp-content\/uploads\/2023\/03\/5IDLOGO.svg","width":579,"height":185,"caption":"5ID"},"image":{"@id":"https:\/\/5id.vn\/#\/schema\/logo\/image\/"}}]}},"_links":{"self":[{"href":"https:\/\/5id.vn\/vi\/wp-json\/wp\/v2\/pages\/991534","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/5id.vn\/vi\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/5id.vn\/vi\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/5id.vn\/vi\/wp-json\/wp\/v2\/users\/16"}],"replies":[{"embeddable":true,"href":"https:\/\/5id.vn\/vi\/wp-json\/wp\/v2\/comments?post=991534"}],"version-history":[{"count":1,"href":"https:\/\/5id.vn\/vi\/wp-json\/wp\/v2\/pages\/991534\/revisions"}],"predecessor-version":[{"id":991535,"href":"https:\/\/5id.vn\/vi\/wp-json\/wp\/v2\/pages\/991534\/revisions\/991535"}],"wp:attachment":[{"href":"https:\/\/5id.vn\/vi\/wp-json\/wp\/v2\/media?parent=991534"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}