tikhub-vs-chanmama-comparison.html 41 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336
  1. <!DOCTYPE html>
  2. <html lang="zh-CN">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6. <title>TikHub vs 蝉妈妈 · API 数据能力对比</title>
  7. <style>
  8. @import url('https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&family=Noto+Sans+SC:wght@300;400;500;600;700&display=swap');
  9. :root {
  10. --bg: #0a0a0f;
  11. --bg-card: #111118;
  12. --bg-hover: #1a1a24;
  13. --border: #1e1e2e;
  14. --border-light: #2a2a3a;
  15. --text: #e8e8f0;
  16. --text-secondary: #8888a0;
  17. --text-muted: #555568;
  18. --accent-tikhub: #6366f1;
  19. --accent-tikhub-dim: rgba(99,102,241,0.12);
  20. --accent-chanmama: #f59e0b;
  21. --accent-chanmama-dim: rgba(245,158,11,0.12);
  22. --accent-shared: #10b981;
  23. --accent-shared-dim: rgba(16,185,129,0.12);
  24. --gradient-tikhub: linear-gradient(135deg, #6366f1, #818cf8);
  25. --gradient-chanmama: linear-gradient(135deg, #f59e0b, #fbbf24);
  26. --gradient-shared: linear-gradient(135deg, #10b981, #34d399);
  27. }
  28. * { margin: 0; padding: 0; box-sizing: border-box; }
  29. html {
  30. scroll-behavior: smooth;
  31. scrollbar-width: thin;
  32. scrollbar-color: #2a2a3a #0a0a0f;
  33. }
  34. body {
  35. font-family: 'Inter', 'Noto Sans SC', -apple-system, sans-serif;
  36. background: var(--bg);
  37. color: var(--text);
  38. line-height: 1.7;
  39. -webkit-font-smoothing: antialiased;
  40. overflow-x: hidden;
  41. }
  42. /* ─── Scrollbar ─── */
  43. ::-webkit-scrollbar { width: 6px; }
  44. ::-webkit-scrollbar-track { background: var(--bg); }
  45. ::-webkit-scrollbar-thumb { background: #2a2a3a; border-radius: 3px; }
  46. /* ─── Hero ─── */
  47. .hero {
  48. position: relative;
  49. min-height: 100vh;
  50. display: flex;
  51. flex-direction: column;
  52. align-items: center;
  53. justify-content: center;
  54. padding: 4rem 2rem;
  55. overflow: hidden;
  56. }
  57. .hero::before {
  58. content: '';
  59. position: absolute;
  60. top: -40%;
  61. left: -20%;
  62. width: 60%;
  63. height: 80%;
  64. background: radial-gradient(ellipse, rgba(99,102,241,0.06) 0%, transparent 70%);
  65. pointer-events: none;
  66. }
  67. .hero::after {
  68. content: '';
  69. position: absolute;
  70. top: -20%;
  71. right: -20%;
  72. width: 50%;
  73. height: 70%;
  74. background: radial-gradient(ellipse, rgba(245,158,11,0.04) 0%, transparent 70%);
  75. pointer-events: none;
  76. }
  77. .hero-badge {
  78. display: inline-flex;
  79. align-items: center;
  80. gap: 8px;
  81. padding: 6px 16px;
  82. border: 1px solid var(--border-light);
  83. border-radius: 100px;
  84. font-size: 0.75rem;
  85. font-weight: 500;
  86. color: var(--text-secondary);
  87. letter-spacing: 0.08em;
  88. text-transform: uppercase;
  89. margin-bottom: 2rem;
  90. backdrop-filter: blur(8px);
  91. background: rgba(255,255,255,0.02);
  92. animation: fadeInDown 0.8s ease;
  93. }
  94. .hero-badge .dot {
  95. width: 6px;
  96. height: 6px;
  97. border-radius: 50%;
  98. background: var(--accent-shared);
  99. animation: pulse-dot 2s infinite;
  100. }
  101. @keyframes pulse-dot {
  102. 0%, 100% { opacity: 1; }
  103. 50% { opacity: 0.4; }
  104. }
  105. .hero h1 {
  106. font-size: clamp(2.5rem, 6vw, 4.5rem);
  107. font-weight: 800;
  108. text-align: center;
  109. letter-spacing: -0.03em;
  110. line-height: 1.1;
  111. margin-bottom: 1.5rem;
  112. animation: fadeInUp 0.8s ease 0.1s both;
  113. }
  114. .hero h1 .tikhub { color: #818cf8; }
  115. .hero h1 .vs { color: var(--text-muted); font-weight: 300; padding: 0 0.3em; font-size: 0.6em; vertical-align: middle; }
  116. .hero h1 .chanmama { color: #fbbf24; }
  117. .hero-desc {
  118. font-size: 1.1rem;
  119. color: var(--text-secondary);
  120. text-align: center;
  121. max-width: 680px;
  122. line-height: 1.8;
  123. margin-bottom: 3rem;
  124. animation: fadeInUp 0.8s ease 0.2s both;
  125. }
  126. .hero-stats {
  127. display: grid;
  128. grid-template-columns: repeat(3, 1fr);
  129. gap: 1px;
  130. background: var(--border);
  131. border: 1px solid var(--border);
  132. border-radius: 16px;
  133. overflow: hidden;
  134. max-width: 700px;
  135. width: 100%;
  136. animation: fadeInUp 0.8s ease 0.3s both;
  137. }
  138. .hero-stat {
  139. background: var(--bg-card);
  140. padding: 2rem 1.5rem;
  141. text-align: center;
  142. transition: background 0.3s;
  143. }
  144. .hero-stat:hover { background: var(--bg-hover); }
  145. .hero-stat .num {
  146. font-size: 2.2rem;
  147. font-weight: 700;
  148. letter-spacing: -0.02em;
  149. margin-bottom: 0.3rem;
  150. }
  151. .hero-stat:nth-child(1) .num { color: #818cf8; }
  152. .hero-stat:nth-child(2) .num { color: #fbbf24; }
  153. .hero-stat:nth-child(3) .num { color: #34d399; }
  154. .hero-stat .label {
  155. font-size: 0.78rem;
  156. color: var(--text-muted);
  157. letter-spacing: 0.04em;
  158. }
  159. .scroll-hint {
  160. position: absolute;
  161. bottom: 2rem;
  162. display: flex;
  163. flex-direction: column;
  164. align-items: center;
  165. gap: 8px;
  166. color: var(--text-muted);
  167. font-size: 0.7rem;
  168. letter-spacing: 0.1em;
  169. text-transform: uppercase;
  170. animation: fadeInUp 1s ease 0.6s both;
  171. }
  172. .scroll-hint .line {
  173. width: 1px;
  174. height: 40px;
  175. background: linear-gradient(to bottom, var(--text-muted), transparent);
  176. animation: scrollLine 2s infinite;
  177. }
  178. @keyframes scrollLine {
  179. 0% { opacity: 0; transform: scaleY(0); transform-origin: top; }
  180. 50% { opacity: 1; transform: scaleY(1); }
  181. 100% { opacity: 0; transform: scaleY(1); }
  182. }
  183. /* ─── Navigation ─── */
  184. .nav {
  185. position: sticky;
  186. top: 0;
  187. z-index: 100;
  188. background: rgba(10,10,15,0.85);
  189. backdrop-filter: blur(20px) saturate(1.2);
  190. border-bottom: 1px solid var(--border);
  191. padding: 0 2rem;
  192. transition: box-shadow 0.3s;
  193. }
  194. .nav.scrolled { box-shadow: 0 4px 30px rgba(0,0,0,0.3); }
  195. .nav-inner {
  196. max-width: 1200px;
  197. margin: 0 auto;
  198. display: flex;
  199. align-items: center;
  200. justify-content: center;
  201. gap: 0;
  202. overflow-x: auto;
  203. scrollbar-width: none;
  204. -ms-overflow-style: none;
  205. }
  206. .nav-inner::-webkit-scrollbar { display: none; }
  207. .nav-item {
  208. position: relative;
  209. padding: 1rem 1.5rem;
  210. font-size: 0.82rem;
  211. font-weight: 500;
  212. color: var(--text-muted);
  213. cursor: pointer;
  214. white-space: nowrap;
  215. transition: color 0.3s;
  216. letter-spacing: 0.02em;
  217. }
  218. .nav-item:hover { color: var(--text-secondary); }
  219. .nav-item.active { color: var(--text); }
  220. .nav-item.active::after {
  221. content: '';
  222. position: absolute;
  223. bottom: 0;
  224. left: 1.5rem;
  225. right: 1.5rem;
  226. height: 2px;
  227. background: var(--gradient-tikhub);
  228. border-radius: 1px;
  229. }
  230. /* ─── Sections ─── */
  231. .section {
  232. max-width: 1200px;
  233. margin: 0 auto;
  234. padding: 6rem 2rem;
  235. opacity: 0;
  236. transform: translateY(30px);
  237. transition: opacity 0.6s ease, transform 0.6s ease;
  238. }
  239. .section.visible {
  240. opacity: 1;
  241. transform: translateY(0);
  242. }
  243. .section-header {
  244. margin-bottom: 3rem;
  245. }
  246. .section-label {
  247. display: inline-flex;
  248. align-items: center;
  249. gap: 8px;
  250. font-size: 0.72rem;
  251. font-weight: 600;
  252. letter-spacing: 0.12em;
  253. text-transform: uppercase;
  254. margin-bottom: 1rem;
  255. padding: 5px 14px;
  256. border-radius: 6px;
  257. }
  258. .section-label.tikhub { color: var(--accent-tikhub); background: var(--accent-tikhub-dim); }
  259. .section-label.chanmama { color: var(--accent-chanmama); background: var(--accent-chanmama-dim); }
  260. .section-label.shared { color: var(--accent-shared); background: var(--accent-shared-dim); }
  261. .section-title {
  262. font-size: clamp(1.8rem, 3.5vw, 2.6rem);
  263. font-weight: 700;
  264. letter-spacing: -0.02em;
  265. line-height: 1.2;
  266. margin-bottom: 0.8rem;
  267. }
  268. .section-desc {
  269. font-size: 1rem;
  270. color: var(--text-secondary);
  271. max-width: 600px;
  272. line-height: 1.8;
  273. }
  274. /* ─── Cards Grid ─── */
  275. .cards {
  276. display: grid;
  277. grid-template-columns: repeat(auto-fill, minmax(340px, 1fr));
  278. gap: 1px;
  279. background: var(--border);
  280. border: 1px solid var(--border);
  281. border-radius: 16px;
  282. overflow: hidden;
  283. }
  284. .card {
  285. background: var(--bg-card);
  286. padding: 2rem;
  287. transition: background 0.3s;
  288. cursor: default;
  289. }
  290. .card:hover { background: var(--bg-hover); }
  291. .card-icon {
  292. width: 36px;
  293. height: 36px;
  294. display: flex;
  295. align-items: center;
  296. justify-content: center;
  297. border-radius: 10px;
  298. margin-bottom: 1.2rem;
  299. font-size: 0.85rem;
  300. font-weight: 700;
  301. letter-spacing: 0.02em;
  302. }
  303. .card-icon.tikhub { background: var(--accent-tikhub-dim); color: var(--accent-tikhub); }
  304. .card-icon.chanmama { background: var(--accent-chanmama-dim); color: var(--accent-chanmama); }
  305. .card-icon.shared { background: var(--accent-shared-dim); color: var(--accent-shared); }
  306. .card h3 {
  307. font-size: 1rem;
  308. font-weight: 600;
  309. margin-bottom: 0.6rem;
  310. letter-spacing: -0.01em;
  311. }
  312. .card p {
  313. font-size: 0.85rem;
  314. color: var(--text-secondary);
  315. line-height: 1.7;
  316. }
  317. .card .tags {
  318. display: flex;
  319. flex-wrap: wrap;
  320. gap: 6px;
  321. margin-top: 1rem;
  322. }
  323. .card .tag {
  324. font-size: 0.7rem;
  325. padding: 3px 10px;
  326. border-radius: 4px;
  327. background: rgba(255,255,255,0.04);
  328. color: var(--text-muted);
  329. border: 1px solid var(--border);
  330. letter-spacing: 0.02em;
  331. }
  332. /* ─── Comparison Table ─── */
  333. .comparison-table {
  334. width: 100%;
  335. border-collapse: separate;
  336. border-spacing: 0;
  337. border: 1px solid var(--border);
  338. border-radius: 16px;
  339. overflow: hidden;
  340. font-size: 0.88rem;
  341. }
  342. .comparison-table thead th {
  343. background: var(--bg-card);
  344. padding: 1.2rem 1.5rem;
  345. text-align: left;
  346. font-weight: 600;
  347. font-size: 0.78rem;
  348. letter-spacing: 0.06em;
  349. text-transform: uppercase;
  350. color: var(--text-muted);
  351. border-bottom: 1px solid var(--border);
  352. }
  353. .comparison-table thead th:nth-child(2) { color: var(--accent-tikhub); }
  354. .comparison-table thead th:nth-child(3) { color: var(--accent-chanmama); }
  355. .comparison-table tbody td {
  356. padding: 1rem 1.5rem;
  357. border-bottom: 1px solid var(--border);
  358. vertical-align: top;
  359. transition: background 0.2s;
  360. }
  361. .comparison-table tbody tr:hover td { background: var(--bg-hover); }
  362. .comparison-table tbody tr:last-child td { border-bottom: none; }
  363. .comparison-table .dim-label {
  364. font-weight: 600;
  365. color: var(--text);
  366. }
  367. .comparison-table .check {
  368. display: inline-flex;
  369. align-items: center;
  370. justify-content: center;
  371. width: 22px;
  372. height: 22px;
  373. border-radius: 6px;
  374. font-size: 0.75rem;
  375. }
  376. .check.yes { background: rgba(16,185,129,0.15); color: #34d399; }
  377. .check.no { background: rgba(255,255,255,0.03); color: var(--text-muted); }
  378. .comparison-table .note {
  379. font-size: 0.78rem;
  380. color: var(--text-muted);
  381. margin-top: 4px;
  382. line-height: 1.6;
  383. }
  384. /* ─── Callout ─── */
  385. .callout {
  386. border: 1px solid var(--border);
  387. border-radius: 16px;
  388. padding: 2rem;
  389. margin: 3rem 0;
  390. background: var(--bg-card);
  391. position: relative;
  392. overflow: hidden;
  393. }
  394. .callout::before {
  395. content: '';
  396. position: absolute;
  397. top: 0;
  398. left: 0;
  399. width: 3px;
  400. height: 100%;
  401. }
  402. .callout.warning::before { background: var(--gradient-chanmama); }
  403. .callout.info::before { background: var(--gradient-tikhub); }
  404. .callout-title {
  405. font-size: 0.92rem;
  406. font-weight: 600;
  407. margin-bottom: 0.5rem;
  408. }
  409. .callout-text {
  410. font-size: 0.85rem;
  411. color: var(--text-secondary);
  412. line-height: 1.8;
  413. }
  414. /* ─── Scenario Section ─── */
  415. .scenarios {
  416. display: grid;
  417. grid-template-columns: repeat(2, 1fr);
  418. gap: 1.5rem;
  419. }
  420. .scenario-col {
  421. border: 1px solid var(--border);
  422. border-radius: 16px;
  423. overflow: hidden;
  424. }
  425. .scenario-col-header {
  426. padding: 1.5rem 2rem;
  427. font-weight: 600;
  428. font-size: 0.92rem;
  429. border-bottom: 1px solid var(--border);
  430. display: flex;
  431. align-items: center;
  432. gap: 10px;
  433. }
  434. .scenario-col:first-child .scenario-col-header {
  435. background: var(--accent-tikhub-dim);
  436. color: var(--accent-tikhub);
  437. }
  438. .scenario-col:last-child .scenario-col-header {
  439. background: var(--accent-chanmama-dim);
  440. color: var(--accent-chanmama);
  441. }
  442. .scenario-col-header .indicator {
  443. width: 8px;
  444. height: 8px;
  445. border-radius: 50%;
  446. }
  447. .scenario-col:first-child .indicator { background: var(--accent-tikhub); }
  448. .scenario-col:last-child .indicator { background: var(--accent-chanmama); }
  449. .scenario-list {
  450. list-style: none;
  451. padding: 0.5rem 0;
  452. }
  453. .scenario-list li {
  454. padding: 1rem 2rem;
  455. font-size: 0.88rem;
  456. color: var(--text-secondary);
  457. border-bottom: 1px solid rgba(255,255,255,0.03);
  458. display: flex;
  459. align-items: flex-start;
  460. gap: 12px;
  461. transition: background 0.2s, color 0.2s;
  462. }
  463. .scenario-list li:hover {
  464. background: var(--bg-hover);
  465. color: var(--text);
  466. }
  467. .scenario-list li:last-child { border-bottom: none; }
  468. .scenario-list li .bullet {
  469. width: 5px;
  470. height: 5px;
  471. border-radius: 50%;
  472. margin-top: 8px;
  473. flex-shrink: 0;
  474. }
  475. .scenario-col:first-child .bullet { background: var(--accent-tikhub); }
  476. .scenario-col:last-child .bullet { background: var(--accent-chanmama); }
  477. /* ─── Complementary Table ─── */
  478. .complement-grid {
  479. display: grid;
  480. grid-template-columns: 1fr;
  481. gap: 1px;
  482. background: var(--border);
  483. border: 1px solid var(--border);
  484. border-radius: 16px;
  485. overflow: hidden;
  486. margin-top: 3rem;
  487. }
  488. .complement-row {
  489. display: grid;
  490. grid-template-columns: 160px 1fr 1fr;
  491. background: var(--bg-card);
  492. transition: background 0.2s;
  493. }
  494. .complement-row:hover { background: var(--bg-hover); }
  495. .complement-row.header {
  496. background: rgba(255,255,255,0.02);
  497. }
  498. .complement-cell {
  499. padding: 1rem 1.5rem;
  500. font-size: 0.85rem;
  501. border-right: 1px solid var(--border);
  502. display: flex;
  503. align-items: center;
  504. }
  505. .complement-cell:last-child { border-right: none; }
  506. .complement-cell.label {
  507. font-weight: 600;
  508. color: var(--text);
  509. font-size: 0.82rem;
  510. }
  511. .complement-row.header .complement-cell {
  512. font-size: 0.72rem;
  513. font-weight: 600;
  514. letter-spacing: 0.08em;
  515. text-transform: uppercase;
  516. color: var(--text-muted);
  517. padding: 0.8rem 1.5rem;
  518. }
  519. .complement-row.header .complement-cell:nth-child(2) { color: var(--accent-tikhub); }
  520. .complement-row.header .complement-cell:nth-child(3) { color: var(--accent-chanmama); }
  521. /* ─── Stats Bar ─── */
  522. .stats-section {
  523. display: grid;
  524. grid-template-columns: repeat(2, 1fr);
  525. gap: 1.5rem;
  526. margin-top: 3rem;
  527. }
  528. .stat-block {
  529. border: 1px solid var(--border);
  530. border-radius: 16px;
  531. padding: 2rem;
  532. background: var(--bg-card);
  533. }
  534. .stat-block-title {
  535. font-size: 0.72rem;
  536. font-weight: 600;
  537. letter-spacing: 0.1em;
  538. text-transform: uppercase;
  539. color: var(--text-muted);
  540. margin-bottom: 1.5rem;
  541. }
  542. .stat-bar-group {
  543. display: flex;
  544. flex-direction: column;
  545. gap: 1rem;
  546. }
  547. .stat-bar-item {
  548. display: flex;
  549. align-items: center;
  550. gap: 1rem;
  551. font-size: 0.82rem;
  552. }
  553. .stat-bar-label {
  554. width: 120px;
  555. flex-shrink: 0;
  556. color: var(--text-secondary);
  557. font-size: 0.78rem;
  558. }
  559. .stat-bar-track {
  560. flex: 1;
  561. height: 6px;
  562. background: rgba(255,255,255,0.04);
  563. border-radius: 3px;
  564. overflow: hidden;
  565. }
  566. .stat-bar-fill {
  567. height: 100%;
  568. border-radius: 3px;
  569. transition: width 1.2s cubic-bezier(0.16, 1, 0.3, 1);
  570. width: 0;
  571. }
  572. .stat-bar-fill.tikhub { background: var(--gradient-tikhub); }
  573. .stat-bar-fill.chanmama { background: var(--gradient-chanmama); }
  574. .stat-bar-value {
  575. font-size: 0.78rem;
  576. font-weight: 600;
  577. color: var(--text);
  578. width: 40px;
  579. text-align: right;
  580. }
  581. /* ─── Footer ─── */
  582. .footer {
  583. text-align: center;
  584. padding: 4rem 2rem;
  585. border-top: 1px solid var(--border);
  586. color: var(--text-muted);
  587. font-size: 0.78rem;
  588. }
  589. .footer p { margin-bottom: 0.3rem; }
  590. /* ─── Animations ─── */
  591. @keyframes fadeInUp {
  592. from { opacity: 0; transform: translateY(20px); }
  593. to { opacity: 1; transform: translateY(0); }
  594. }
  595. @keyframes fadeInDown {
  596. from { opacity: 0; transform: translateY(-10px); }
  597. to { opacity: 1; transform: translateY(0); }
  598. }
  599. /* ─── Responsive ─── */
  600. @media (max-width: 768px) {
  601. .cards { grid-template-columns: 1fr; }
  602. .scenarios { grid-template-columns: 1fr; }
  603. .stats-section { grid-template-columns: 1fr; }
  604. .complement-row { grid-template-columns: 120px 1fr 1fr; }
  605. .nav-item { padding: 1rem 1rem; font-size: 0.75rem; }
  606. .section { padding: 4rem 1.2rem; }
  607. }
  608. /* ─── Divider ─── */
  609. .divider {
  610. height: 1px;
  611. background: var(--border);
  612. max-width: 1200px;
  613. margin: 0 auto;
  614. }
  615. </style>
  616. </head>
  617. <body>
  618. <!-- ━━━ Hero ━━━ -->
  619. <section class="hero">
  620. <div class="hero-badge">
  621. <span class="dot"></span>
  622. <span>API Capability Comparison</span>
  623. </div>
  624. <h1>
  625. <span class="tikhub">TikHub</span>
  626. <span class="vs">vs</span>
  627. <span class="chanmama">蝉妈妈</span>
  628. </h1>
  629. <p class="hero-desc">
  630. 两套截然不同的数据体系——原始数据爬取 vs 电商深度分析。<br>
  631. 以下从接口能力、数据维度、适用场景三个层面展开全景对比。
  632. </p>
  633. <div class="hero-stats">
  634. <div class="hero-stat">
  635. <div class="num">300+</div>
  636. <div class="label">TikHub 接口总量</div>
  637. </div>
  638. <div class="hero-stat">
  639. <div class="num">24</div>
  640. <div class="label">蝉妈妈 数据类型</div>
  641. </div>
  642. <div class="hero-stat">
  643. <div class="num">5</div>
  644. <div class="label">核心重叠维度</div>
  645. </div>
  646. </div>
  647. <div class="scroll-hint">
  648. <span>Scroll</span>
  649. <div class="line"></div>
  650. </div>
  651. </section>
  652. <!-- ━━━ Nav ━━━ -->
  653. <nav class="nav" id="nav">
  654. <div class="nav-inner">
  655. <div class="nav-item active" data-target="tikhub-unique">TikHub 独有</div>
  656. <div class="nav-item" data-target="chanmama-unique">蝉妈妈 独有</div>
  657. <div class="nav-item" data-target="overlap">能力重叠</div>
  658. <div class="nav-item" data-target="scenarios">适用场景</div>
  659. <div class="nav-item" data-target="stats">接口统计</div>
  660. </div>
  661. </nav>
  662. <!-- ━━━ TikHub Unique ━━━ -->
  663. <div class="divider"></div>
  664. <section class="section" id="tikhub-unique">
  665. <div class="section-header">
  666. <div class="section-label tikhub">TikHub Exclusive</div>
  667. <h2 class="section-title">TikHub 独有能力</h2>
  668. <p class="section-desc">以原始数据采集为核心,覆盖多平台内容、搜索、互动关系和实时直播等维度。</p>
  669. </div>
  670. <div class="cards">
  671. <div class="card">
  672. <div class="card-icon tikhub">01</div>
  673. <h3>原始内容数据获取</h3>
  674. <p>无水印视频下载、高清播放链接、弹幕原始数据、首页推荐流、相关作品推荐、分类频道内容。</p>
  675. <div class="tags">
  676. <span class="tag">视频 V1/V2/V3</span>
  677. <span class="tag">弹幕数据</span>
  678. <span class="tag">Home Feed</span>
  679. <span class="tag">无水印下载</span>
  680. </div>
  681. </div>
  682. <div class="card">
  683. <div class="card-icon tikhub">02</div>
  684. <h3>TikTok 国际版全量接口</h3>
  685. <p>完整覆盖 TikTok 的 Web、App、Creator、Analytics、Ads、Shop、Interaction 七大模块。蝉妈妈仅覆盖抖音。</p>
  686. <div class="tags">
  687. <span class="tag">TikTok Web</span>
  688. <span class="tag">TikTok App V3</span>
  689. <span class="tag">Creator API</span>
  690. <span class="tag">Analytics</span>
  691. <span class="tag">Ads API</span>
  692. <span class="tag">Shop API</span>
  693. </div>
  694. </div>
  695. <div class="card">
  696. <div class="card-icon tikhub">03</div>
  697. <h3>多平台数据覆盖</h3>
  698. <p>同时支持 Instagram、小红书、快手、B站、微信公众号、Sora2 等多个平台的数据获取。</p>
  699. <div class="tags">
  700. <span class="tag">Instagram</span>
  701. <span class="tag">小红书</span>
  702. <span class="tag">快手</span>
  703. <span class="tag">B站</span>
  704. <span class="tag">微信</span>
  705. </div>
  706. </div>
  707. <div class="card">
  708. <div class="card-icon tikhub">04</div>
  709. <h3>深度搜索能力</h3>
  710. <p>18+ 种搜索接口——综合、视频、用户、话题、图片、图文、直播、音乐、经验、讨论、学校、图像识别搜索。</p>
  711. <div class="tags">
  712. <span class="tag">综合搜索</span>
  713. <span class="tag">图像识别搜索</span>
  714. <span class="tag">多重搜索</span>
  715. <span class="tag">关键词建议</span>
  716. </div>
  717. </div>
  718. <div class="card">
  719. <div class="card-icon tikhub">05</div>
  720. <h3>评论原始数据</h3>
  721. <p>获取完整评论文本、评论者信息、发布时间、点赞数、回复列表,支持 AI 评论关键词分析。</p>
  722. <div class="tags">
  723. <span class="tag">评论列表</span>
  724. <span class="tag">评论回复</span>
  725. <span class="tag">关键词分析</span>
  726. </div>
  727. </div>
  728. <div class="card">
  729. <div class="card-icon tikhub">06</div>
  730. <h3>用户互动关系链</h3>
  731. <p>获取完整的粉丝列表、关注列表、点赞列表、收藏夹内容、转发作品列表。</p>
  732. <div class="tags">
  733. <span class="tag">粉丝列表</span>
  734. <span class="tag">关注列表</span>
  735. <span class="tag">点赞/收藏</span>
  736. <span class="tag">转发</span>
  737. </div>
  738. </div>
  739. <div class="card">
  740. <div class="card-icon tikhub">07</div>
  741. <h3>直播实时数据</h3>
  742. <p>实时弹幕流、WebSocket 连接参数、在线状态检测、礼物列表与排行、直播间商品挂车、每日榜单。</p>
  743. <div class="tags">
  744. <span class="tag">实时弹幕</span>
  745. <span class="tag">在线检测</span>
  746. <span class="tag">礼物排行</span>
  747. <span class="tag">直播商品</span>
  748. </div>
  749. </div>
  750. <div class="card">
  751. <div class="card-icon tikhub">08</div>
  752. <h3>热搜与趋势榜单</h3>
  753. <p>抖音热搜榜、直播热搜榜、音乐榜、品牌热榜、TikTok 每日趋势与热门关键词。</p>
  754. <div class="tags">
  755. <span class="tag">热搜榜</span>
  756. <span class="tag">音乐榜</span>
  757. <span class="tag">品牌热榜</span>
  758. <span class="tag">趋势词</span>
  759. </div>
  760. </div>
  761. <div class="card">
  762. <div class="card-icon tikhub">09</div>
  763. <h3>广告与创作者分析</h3>
  764. <p>TikTok Ads 广告搜索/详情/关键词洞察,Creator API 账号健康/违规/受众分析/视频统计/虚假流量检测。</p>
  765. <div class="tags">
  766. <span class="tag">Ads API</span>
  767. <span class="tag">Creator API</span>
  768. <span class="tag">Analytics</span>
  769. <span class="tag">虚假流量</span>
  770. </div>
  771. </div>
  772. <div class="card">
  773. <div class="card-icon tikhub">10</div>
  774. <h3>工具与自动化</h3>
  775. <p>链接/ID 提取、短链接/二维码生成、加密解密 (XBogus/ABogus/msToken)、设备注册、Cookie 获取、SSO 登录、自动化交互(评论/点赞/关注)。</p>
  776. <div class="tags">
  777. <span class="tag">ID 提取</span>
  778. <span class="tag">加密算法</span>
  779. <span class="tag">设备注册</span>
  780. <span class="tag">Interaction</span>
  781. </div>
  782. </div>
  783. </div>
  784. </section>
  785. <!-- ━━━ ChanMama Unique ━━━ -->
  786. <div class="divider"></div>
  787. <section class="section" id="chanmama-unique">
  788. <div class="section-header">
  789. <div class="section-label chanmama">ChanMama Exclusive</div>
  790. <h2 class="section-title">蝉妈妈独有能力</h2>
  791. <p class="section-desc">以电商销售数据为核心壁垒,提供品牌、小店、达人、商品的全链路深度分析。</p>
  792. </div>
  793. <div class="callout warning">
  794. <div class="callout-title">核心差异 — 销量与销售额数据</div>
  795. <div class="callout-text">
  796. TikHub 完全无法获取销量 (Sales Volume) 和销售额 (GMV) 数据。这是蝉妈妈最核心的数据壁垒,覆盖商品、品牌、小店、达人四个维度的每日/累计销售数据,并支持直播、视频、商品卡三大渠道拆分。
  797. </div>
  798. </div>
  799. <div class="cards">
  800. <div class="card">
  801. <div class="card-icon chanmama">01</div>
  802. <h3>品牌维度全链路分析</h3>
  803. <p>品牌每日销售汇总、品牌关联达人/商品/小店/直播/视频记录、SPU 聚合销售、商品卡渠道销售。</p>
  804. <div class="tags">
  805. <span class="tag">品牌 GMV</span>
  806. <span class="tag">关联达人</span>
  807. <span class="tag">SPU 分析</span>
  808. <span class="tag">渠道拆分</span>
  809. </div>
  810. </div>
  811. <div class="card">
  812. <div class="card-icon chanmama">02</div>
  813. <h3>小店维度运营分析</h3>
  814. <p>店铺每日销售汇总、关联达人记录、商品销售排行、带货直播与视频记录。</p>
  815. <div class="tags">
  816. <span class="tag">店铺 GMV</span>
  817. <span class="tag">商品排行</span>
  818. <span class="tag">达人矩阵</span>
  819. <span class="tag">直播/视频</span>
  820. </div>
  821. </div>
  822. <div class="card">
  823. <div class="card-icon chanmama">03</div>
  824. <h3>达人带货深度分析</h3>
  825. <p>达人带货记录(商品+销量+佣金)、带货口碑分、带货水平评级、直播 GPM/UV 价值、流量结构、每日带货趋势。</p>
  826. <div class="tags">
  827. <span class="tag">带货口碑</span>
  828. <span class="tag">GPM</span>
  829. <span class="tag">UV 价值</span>
  830. <span class="tag">佣金数据</span>
  831. </div>
  832. </div>
  833. <div class="card">
  834. <div class="card-icon chanmama">04</div>
  835. <h3>商品全链路分析</h3>
  836. <p>商品关联达人/直播/视频记录、商品卡独立销售数据、佣金比例、优惠券信息、每日销售趋势。</p>
  837. <div class="tags">
  838. <span class="tag">关联达人</span>
  839. <span class="tag">直播讲解</span>
  840. <span class="tag">视频带货</span>
  841. <span class="tag">商品卡</span>
  842. </div>
  843. </div>
  844. <div class="card">
  845. <div class="card-icon chanmama">05</div>
  846. <h3>受众画像分析</h3>
  847. <p>性别、年龄、地区、城市等级分布,八大消费人群标签(资深中产、新锐白领、精致妈妈等)、消费偏好分析。</p>
  848. <div class="tags">
  849. <span class="tag">人群画像</span>
  850. <span class="tag">城市等级</span>
  851. <span class="tag">消费标签</span>
  852. <span class="tag">年龄分布</span>
  853. </div>
  854. </div>
  855. <div class="card">
  856. <div class="card-icon chanmama">06</div>
  857. <h3>三渠道销售拆分</h3>
  858. <p>将所有销售数据拆分为直播渠道、视频渠道、商品卡渠道三大通路,分别统计销量/销售额/达人数/场次。</p>
  859. <div class="tags">
  860. <span class="tag">直播渠道</span>
  861. <span class="tag">视频渠道</span>
  862. <span class="tag">商品卡渠道</span>
  863. </div>
  864. </div>
  865. <div class="card">
  866. <div class="card-icon chanmama">07</div>
  867. <h3>SPU 聚合分析</h3>
  868. <p>将 SKU 级别商品聚合为 SPU 维度进行分析,获取 SPU 级别的销量/销售额趋势。</p>
  869. <div class="tags">
  870. <span class="tag">SKU→SPU</span>
  871. <span class="tag">SPU 销售额</span>
  872. <span class="tag">SPU 趋势</span>
  873. </div>
  874. </div>
  875. <div class="card">
  876. <div class="card-icon chanmama">08</div>
  877. <h3>品类分类体系</h3>
  878. <p>蝉妈妈自建品类 + 抖音官方品类双分类体系,支持品类层级映射关系和品类市场分析。</p>
  879. <div class="tags">
  880. <span class="tag">蝉妈妈品类</span>
  881. <span class="tag">抖音品类</span>
  882. <span class="tag">双分类映射</span>
  883. </div>
  884. </div>
  885. </div>
  886. </section>
  887. <!-- ━━━ Overlap ━━━ -->
  888. <div class="divider"></div>
  889. <section class="section" id="overlap">
  890. <div class="section-header">
  891. <div class="section-label shared">Overlap Analysis</div>
  892. <h2 class="section-title">能力重叠区域</h2>
  893. <p class="section-desc">两者在用户信息、视频数据、商品信息、评价数据、直播间数据等方面存在重叠,但侧重点截然不同。</p>
  894. </div>
  895. <table class="comparison-table">
  896. <thead>
  897. <tr>
  898. <th style="width:160px">数据维度</th>
  899. <th>TikHub</th>
  900. <th>蝉妈妈</th>
  901. <th>差异说明</th>
  902. </tr>
  903. </thead>
  904. <tbody>
  905. <tr>
  906. <td class="dim-label">用户/达人基础信息</td>
  907. <td>
  908. <span class="check yes">✓</span>
  909. <div class="note">完整原始数据:昵称、头像、签名、粉丝数、关注数、获赞数、认证信息</div>
  910. </td>
  911. <td>
  912. <span class="check yes">✓</span>
  913. <div class="note">精简业务数据:昵称、抖音号、粉丝量级、MCN、认证、带货口碑</div>
  914. </td>
  915. <td class="note">TikHub 更全但偏原始;蝉妈妈增加了带货相关字段</td>
  916. </tr>
  917. <tr>
  918. <td class="dim-label">视频基础数据</td>
  919. <td>
  920. <span class="check yes">✓</span>
  921. <div class="note">完整元数据:标题、描述、播放链接、封面、互动数据、作者、音乐、话题标签</div>
  922. </td>
  923. <td>
  924. <span class="check yes">✓</span>
  925. <div class="note">简要信息 + 销售转化:视频标题、时长、互动数据、销量、销售额</div>
  926. </td>
  927. <td class="note">TikHub 有完整视频元数据;蝉妈妈有销售转化数据</td>
  928. </tr>
  929. <tr>
  930. <td class="dim-label">商品基础信息</td>
  931. <td>
  932. <span class="check yes">✓</span>
  933. <div class="note">商品详情、SKU 列表、价格、评价列表原文</div>
  934. </td>
  935. <td>
  936. <span class="check yes">✓</span>
  937. <div class="note">商品标题/ID/分类/价格/佣金/好评率 + 销量销售额</div>
  938. </td>
  939. <td class="note">TikHub 有 SKU 级别详情;蝉妈妈有佣金和销售数据</td>
  940. </tr>
  941. <tr>
  942. <td class="dim-label">商品评价</td>
  943. <td>
  944. <span class="check yes">✓</span>
  945. <div class="note">评价列表原文、逐条评论文本</div>
  946. </td>
  947. <td>
  948. <span class="check yes">✓</span>
  949. <div class="note">好评率数值(汇总指标)</div>
  950. </td>
  951. <td class="note">TikHub 有评论原文;蝉妈妈只有汇总评分</td>
  952. </tr>
  953. <tr>
  954. <td class="dim-label">直播间数据</td>
  955. <td>
  956. <span class="check yes">✓</span>
  957. <div class="note">直播流、弹幕、商品挂车、礼物、排行、在线检测</div>
  958. </td>
  959. <td>
  960. <span class="check yes">✓</span>
  961. <div class="note">直播标题/时间/观看人次/销量销售额/GPM/UV 价值</div>
  962. </td>
  963. <td class="note">TikHub 偏实时互动;蝉妈妈偏销售效率分析</td>
  964. </tr>
  965. <tr>
  966. <td class="dim-label">话题/标签</td>
  967. <td>
  968. <span class="check yes">✓</span>
  969. <div class="note">话题详情、作品列表、搜索</div>
  970. </td>
  971. <td>
  972. <span class="check no">—</span>
  973. <div class="note">无独立话题接口</div>
  974. </td>
  975. <td class="note">TikHub 独有</td>
  976. </tr>
  977. <tr>
  978. <td class="dim-label">音乐数据</td>
  979. <td>
  980. <span class="check yes">✓</span>
  981. <div class="note">音乐详情、视频列表、搜索、排行榜</div>
  982. </td>
  983. <td>
  984. <span class="check no">—</span>
  985. </td>
  986. <td class="note">TikHub 独有</td>
  987. </tr>
  988. </tbody>
  989. </table>
  990. </section>
  991. <!-- ━━━ Scenarios ━━━ -->
  992. <div class="divider"></div>
  993. <section class="section" id="scenarios">
  994. <div class="section-header">
  995. <div class="section-label shared">Use Cases</div>
  996. <h2 class="section-title">适用场景</h2>
  997. <p class="section-desc">两套 API 的能力互补而非替代,以下是各自最佳适用场景。</p>
  998. </div>
  999. <div class="scenarios">
  1000. <div class="scenario-col">
  1001. <div class="scenario-col-header">
  1002. <div class="indicator"></div>
  1003. 适合 TikHub 的场景
  1004. </div>
  1005. <ul class="scenario-list">
  1006. <li><div class="bullet"></div>内容采集 — 批量获取视频、评论、用户信息等原始数据</li>
  1007. <li><div class="bullet"></div>多平台覆盖 — TikTok 国际版、Instagram、小红书等</li>
  1008. <li><div class="bullet"></div>舆情监控 — 评论采集与分析、弹幕实时监控</li>
  1009. <li><div class="bullet"></div>关键词搜索 — 多维度深度搜索(视频/用户/话题/图片等)</li>
  1010. <li><div class="bullet"></div>广告分析 — TikTok Ads 广告投放数据分析</li>
  1011. <li><div class="bullet"></div>自动化操作 — 自动评论、点赞、关注等</li>
  1012. <li><div class="bullet"></div>技术集成 — 获取原始 API 数据构建自己的分析系统</li>
  1013. </ul>
  1014. </div>
  1015. <div class="scenario-col">
  1016. <div class="scenario-col-header">
  1017. <div class="indicator"></div>
  1018. 适合蝉妈妈的场景
  1019. </div>
  1020. <ul class="scenario-list">
  1021. <li><div class="bullet"></div>销售数据分析 — 商品/品牌/小店/达人的销量和 GMV</li>
  1022. <li><div class="bullet"></div>品牌竞品分析 — 品牌维度的全链路销售分析</li>
  1023. <li><div class="bullet"></div>店铺运营分析 — 小店销售、关联达人、商品表现</li>
  1024. <li><div class="bullet"></div>达人筛选 — 通过带货数据筛选合适的达人合作</li>
  1025. <li><div class="bullet"></div>趋势追踪 — 每日销售趋势、渠道拆分</li>
  1026. <li><div class="bullet"></div>受众画像 — 目标人群分析与消费标签</li>
  1027. <li><div class="bullet"></div>品类研究 — 品类层级体系和市场分析</li>
  1028. </ul>
  1029. </div>
  1030. </div>
  1031. <div class="complement-grid">
  1032. <div class="complement-row header">
  1033. <div class="complement-cell">业务需求</div>
  1034. <div class="complement-cell">TikHub 提供</div>
  1035. <div class="complement-cell">蝉妈妈 提供</div>
  1036. </div>
  1037. <div class="complement-row">
  1038. <div class="complement-cell label">竞品分析</div>
  1039. <div class="complement-cell">竞品视频内容、评论舆情</div>
  1040. <div class="complement-cell">竞品销量、市场份额</div>
  1041. </div>
  1042. <div class="complement-row">
  1043. <div class="complement-cell label">达人合作</div>
  1044. <div class="complement-cell">粉丝画像、内容风格</div>
  1045. <div class="complement-cell">带货数据、佣金、ROI</div>
  1046. </div>
  1047. <div class="complement-row">
  1048. <div class="complement-cell label">商品调研</div>
  1049. <div class="complement-cell">评价原文、SKU 详情</div>
  1050. <div class="complement-cell">销量趋势、渠道表现</div>
  1051. </div>
  1052. <div class="complement-row">
  1053. <div class="complement-cell label">市场洞察</div>
  1054. <div class="complement-cell">热搜趋势、话题热度</div>
  1055. <div class="complement-cell">品牌/品类销售数据</div>
  1056. </div>
  1057. <div class="complement-row">
  1058. <div class="complement-cell label">VOC 分析</div>
  1059. <div class="complement-cell">评论/弹幕原始文本</div>
  1060. <div class="complement-cell">受众画像、消费人群</div>
  1061. </div>
  1062. </div>
  1063. </section>
  1064. <!-- ━━━ Stats ━━━ -->
  1065. <div class="divider"></div>
  1066. <section class="section" id="stats">
  1067. <div class="section-header">
  1068. <div class="section-label shared">Statistics</div>
  1069. <h2 class="section-title">接口数量统计</h2>
  1070. <p class="section-desc">TikHub 按 API endpoint 计数;蝉妈妈按数据表类型计数。两者统计口径不同。</p>
  1071. </div>
  1072. <div class="stats-section">
  1073. <div class="stat-block">
  1074. <div class="stat-block-title">TikHub 各模块接口数</div>
  1075. <div class="stat-bar-group">
  1076. <div class="stat-bar-item">
  1077. <div class="stat-bar-label">TikTok App V3</div>
  1078. <div class="stat-bar-track"><div class="stat-bar-fill tikhub" data-width="93%"></div></div>
  1079. <div class="stat-bar-value">70+</div>
  1080. </div>
  1081. <div class="stat-bar-item">
  1082. <div class="stat-bar-label">抖音 Web</div>
  1083. <div class="stat-bar-track"><div class="stat-bar-fill tikhub" data-width="80%"></div></div>
  1084. <div class="stat-bar-value">60+</div>
  1085. </div>
  1086. <div class="stat-bar-item">
  1087. <div class="stat-bar-label">TikTok Web</div>
  1088. <div class="stat-bar-track"><div class="stat-bar-fill tikhub" data-width="67%"></div></div>
  1089. <div class="stat-bar-value">50+</div>
  1090. </div>
  1091. <div class="stat-bar-item">
  1092. <div class="stat-bar-label">抖音 App V3</div>
  1093. <div class="stat-bar-track"><div class="stat-bar-fill tikhub" data-width="53%"></div></div>
  1094. <div class="stat-bar-value">40+</div>
  1095. </div>
  1096. <div class="stat-bar-item">
  1097. <div class="stat-bar-label">TikTok Ads</div>
  1098. <div class="stat-bar-track"><div class="stat-bar-fill tikhub" data-width="40%"></div></div>
  1099. <div class="stat-bar-value">30+</div>
  1100. </div>
  1101. <div class="stat-bar-item">
  1102. <div class="stat-bar-label">抖音搜索</div>
  1103. <div class="stat-bar-track"><div class="stat-bar-fill tikhub" data-width="24%"></div></div>
  1104. <div class="stat-bar-value">18</div>
  1105. </div>
  1106. <div class="stat-bar-item">
  1107. <div class="stat-bar-label">TikTok Shop</div>
  1108. <div class="stat-bar-track"><div class="stat-bar-fill tikhub" data-width="20%"></div></div>
  1109. <div class="stat-bar-value">15</div>
  1110. </div>
  1111. <div class="stat-bar-item">
  1112. <div class="stat-bar-label">Creator API</div>
  1113. <div class="stat-bar-track"><div class="stat-bar-fill tikhub" data-width="19%"></div></div>
  1114. <div class="stat-bar-value">14</div>
  1115. </div>
  1116. </div>
  1117. </div>
  1118. <div class="stat-block">
  1119. <div class="stat-block-title">蝉妈妈各模块数据表</div>
  1120. <div class="stat-bar-group">
  1121. <div class="stat-bar-item">
  1122. <div class="stat-bar-label">品牌数据</div>
  1123. <div class="stat-bar-track"><div class="stat-bar-fill chanmama" data-width="100%"></div></div>
  1124. <div class="stat-bar-value">8</div>
  1125. </div>
  1126. <div class="stat-bar-item">
  1127. <div class="stat-bar-label">商品数据</div>
  1128. <div class="stat-bar-track"><div class="stat-bar-fill chanmama" data-width="75%"></div></div>
  1129. <div class="stat-bar-value">6</div>
  1130. </div>
  1131. <div class="stat-bar-item">
  1132. <div class="stat-bar-label">达人数据</div>
  1133. <div class="stat-bar-track"><div class="stat-bar-fill chanmama" data-width="63%"></div></div>
  1134. <div class="stat-bar-value">5</div>
  1135. </div>
  1136. <div class="stat-bar-item">
  1137. <div class="stat-bar-label">小店数据</div>
  1138. <div class="stat-bar-track"><div class="stat-bar-fill chanmama" data-width="63%"></div></div>
  1139. <div class="stat-bar-value">5</div>
  1140. </div>
  1141. </div>
  1142. <div class="callout info" style="margin-top: 2rem; padding: 1.2rem 1.5rem;">
  1143. <div class="callout-text">
  1144. 蝉妈妈接口数少但每张数据表字段极其丰富(单表 30-80 个字段),且均为深度加工后的商业分析数据。TikHub 接口数量多但含大量工具类/辅助类接口。
  1145. </div>
  1146. </div>
  1147. </div>
  1148. </div>
  1149. </section>
  1150. <!-- ━━━ Footer ━━━ -->
  1151. <footer class="footer">
  1152. <p>TikHub vs 蝉妈妈 API 数据能力对比分析</p>
  1153. <p style="margin-top: 4px;">基于 TikHub 官方文档 (docs.tikhub.io) 与蝉妈妈本地接口文档生成</p>
  1154. </footer>
  1155. <script>
  1156. // ─── Intersection Observer for sections ───
  1157. const sections = document.querySelectorAll('.section');
  1158. const observer = new IntersectionObserver((entries) => {
  1159. entries.forEach(entry => {
  1160. if (entry.isIntersecting) {
  1161. entry.target.classList.add('visible');
  1162. // Animate stat bars
  1163. entry.target.querySelectorAll('.stat-bar-fill').forEach(bar => {
  1164. bar.style.width = bar.dataset.width;
  1165. });
  1166. }
  1167. });
  1168. }, { threshold: 0.1 });
  1169. sections.forEach(s => observer.observe(s));
  1170. // ─── Sticky nav active state ───
  1171. const nav = document.getElementById('nav');
  1172. const navItems = document.querySelectorAll('.nav-item');
  1173. window.addEventListener('scroll', () => {
  1174. // Add shadow when scrolled
  1175. nav.classList.toggle('scrolled', window.scrollY > 100);
  1176. // Update active nav item
  1177. let current = '';
  1178. sections.forEach(s => {
  1179. const top = s.offsetTop - 120;
  1180. if (window.scrollY >= top) current = s.id;
  1181. });
  1182. navItems.forEach(item => {
  1183. item.classList.toggle('active', item.dataset.target === current);
  1184. });
  1185. });
  1186. // ─── Nav click scroll ───
  1187. navItems.forEach(item => {
  1188. item.addEventListener('click', () => {
  1189. const target = document.getElementById(item.dataset.target);
  1190. if (target) {
  1191. window.scrollTo({ top: target.offsetTop - 60, behavior: 'smooth' });
  1192. }
  1193. });
  1194. });
  1195. </script>
  1196. </body>
  1197. </html>