149 lines
7.2 KiB
HTML
149 lines
7.2 KiB
HTML
<!doctype html>
|
||
<html lang="zh-CN">
|
||
<head>
|
||
<meta charset="UTF-8" />
|
||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||
<title>{{ app_name }}</title>
|
||
<link rel="icon" type="image/svg+xml" href="/static/favicon.svg?v=20260406a" />
|
||
<link rel="stylesheet" href="/static/style.css?v=20260410d" />
|
||
</head>
|
||
<body>
|
||
<header class="topbar">
|
||
<div class="brand">
|
||
<h1>{{ app_name }}</h1>
|
||
<p class="muted">从原文到公众号草稿,一页完成编辑、封面和发布。</p>
|
||
</div>
|
||
<div class="topbar-actions">
|
||
<div class="wechat-account-switch" title="草稿发布、封面上传均使用此处选中的公众号">
|
||
<label for="wechatAccountSelect" class="wechat-account-label">发表主体</label>
|
||
<select id="wechatAccountSelect" class="topbar-select" aria-label="切换公众号"></select>
|
||
<span id="wechatAccountStatus" class="muted small wechat-account-status" aria-live="polite"></span>
|
||
</div>
|
||
<a class="subtle-link" href="/settings">公众号设置</a>
|
||
<button id="logoutBtn" class="subtle-btn topbar-btn" type="button">退出登录</button>
|
||
</div>
|
||
</header>
|
||
|
||
<main class="layout">
|
||
<section class="panel input-panel">
|
||
<div class="panel-head">
|
||
<h2>内容输入</h2>
|
||
</div>
|
||
|
||
<div class="field-head">
|
||
<label>内容</label>
|
||
<span id="sourceCount" class="meta">0 字</span>
|
||
</div>
|
||
<textarea id="sourceText" rows="9" placeholder="粘贴原文(长帖、线程、摘录均可),洗稿会围绕原文主题展开…"></textarea>
|
||
|
||
<div class="grid2">
|
||
<div>
|
||
<label>标题提示</label>
|
||
<input id="titleHint" type="text" placeholder="如:AI Agent 商业化路径" />
|
||
</div>
|
||
<div class="multi-field">
|
||
<div class="field-head">
|
||
<label>目标读者</label>
|
||
<span class="meta">下拉多选</span>
|
||
</div>
|
||
<details class="multi-dropdown" id="audienceDetails">
|
||
<summary>
|
||
<span class="multi-dropdown-text" id="audienceSummary"></span>
|
||
</summary>
|
||
<div class="multi-dropdown-body" role="group" aria-label="目标读者选项">
|
||
<label class="multi-dropdown-option"><input type="checkbox" name="audienceChip" value="公众号运营者" checked />公众号运营者</label>
|
||
<label class="multi-dropdown-option"><input type="checkbox" name="audienceChip" value="产品经理" checked />产品经理</label>
|
||
<label class="multi-dropdown-option"><input type="checkbox" name="audienceChip" value="技术开发者" />技术开发者</label>
|
||
<label class="multi-dropdown-option"><input type="checkbox" name="audienceChip" value="创业者" />创业者</label>
|
||
<label class="multi-dropdown-option"><input type="checkbox" name="audienceChip" value="学生与研究者" />学生与研究者</label>
|
||
<label class="multi-dropdown-option"><input type="checkbox" name="audienceChip" value="普通读者" />普通读者</label>
|
||
</div>
|
||
</details>
|
||
<input id="audienceExtra" type="text" class="multi-extra" placeholder="其他补充(可选)" />
|
||
</div>
|
||
</div>
|
||
|
||
<div class="grid2">
|
||
<div class="multi-field">
|
||
<div class="field-head">
|
||
<label>语气风格</label>
|
||
<span class="meta">下拉多选</span>
|
||
</div>
|
||
<details class="multi-dropdown" id="toneDetails">
|
||
<summary>
|
||
<span class="multi-dropdown-text" id="toneSummary"></span>
|
||
</summary>
|
||
<div class="multi-dropdown-body" role="group" aria-label="语气风格选项">
|
||
<label class="multi-dropdown-option"><input type="checkbox" name="toneChip" value="专业严谨" checked />专业严谨</label>
|
||
<label class="multi-dropdown-option"><input type="checkbox" name="toneChip" value="有观点" checked />有观点</label>
|
||
<label class="multi-dropdown-option"><input type="checkbox" name="toneChip" value="口语自然" checked />口语自然</label>
|
||
<label class="multi-dropdown-option"><input type="checkbox" name="toneChip" value="轻松幽默" />轻松幽默</label>
|
||
<label class="multi-dropdown-option"><input type="checkbox" name="toneChip" value="故事化叙事" />故事化叙事</label>
|
||
<label class="multi-dropdown-option"><input type="checkbox" name="toneChip" value="科普解读" />科普解读</label>
|
||
<label class="multi-dropdown-option"><input type="checkbox" name="toneChip" value="理性克制" />理性克制</label>
|
||
</div>
|
||
</details>
|
||
<input id="toneExtra" type="text" class="multi-extra" placeholder="其他补充(可选)" />
|
||
</div>
|
||
<div>
|
||
<label>避免词汇</label>
|
||
<input id="avoidWords" type="text" placeholder="如:颠覆、闭环、赋能" />
|
||
</div>
|
||
</div>
|
||
|
||
<label>必须保留观点</label>
|
||
<input id="keepPoints" type="text" placeholder="逗号分隔" />
|
||
|
||
<button id="rewriteBtn" class="primary">改写并排版</button>
|
||
<p id="status" class="status"></p>
|
||
</section>
|
||
|
||
<section class="panel output-panel">
|
||
<div class="panel-head">
|
||
<h2>发布内容</h2>
|
||
</div>
|
||
|
||
<label>标题</label>
|
||
<input id="title" type="text" />
|
||
|
||
<div class="field-head">
|
||
<label>摘要</label>
|
||
<span id="summaryCount" class="meta">0 字</span>
|
||
</div>
|
||
<textarea id="summary" rows="2"></textarea>
|
||
|
||
<label>公众号封面(可选上传)</label>
|
||
<div class="cover-tools">
|
||
<input id="coverFile" type="file" accept="image/png,image/jpeg,image/jpg,image/webp" />
|
||
<button id="coverUploadBtn" class="subtle-btn" type="button">上传封面并绑定</button>
|
||
</div>
|
||
<input id="thumbMediaId" type="text" placeholder="thumb_media_id(上传后自动填充,也可手动粘贴)" />
|
||
<p id="coverHint" class="muted small">未上传时将使用后端默认封面策略。</p>
|
||
|
||
<div class="field-head">
|
||
<label>正文(5 自然段,建议 ≤500 字)</label>
|
||
<span id="bodyCount" class="meta">0 字</span>
|
||
</div>
|
||
<div class="body-split">
|
||
<textarea id="body" rows="7" placeholder="五段之间空一行;无需 # 标题"></textarea>
|
||
<div class="preview-panel">
|
||
<div class="field-head">
|
||
<label>排版预览</label>
|
||
<span class="meta">实时同步</span>
|
||
</div>
|
||
<div id="bodyPreview" class="markdown-preview"></div>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="actions">
|
||
<button id="wechatBtn" class="primary">发布到公众号草稿箱</button>
|
||
<button id="imBtn" class="secondary">发送到 IM</button>
|
||
</div>
|
||
</section>
|
||
</main>
|
||
|
||
<script src="https://cdn.jsdelivr.net/npm/marked/marked.min.js"></script>
|
||
<script src="/static/app.js?v=20260410d"></script>
|
||
</body>
|
||
</html>
|