rssany 0.1.1 → 0.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.env.example +1 -1
- package/README.md +5 -1
- package/app/plugins/builtin/rss.rssany.js +107 -24
- package/app/plugins/site.rssany.js +1 -1
- package/dist/index.js +986 -266
- package/dist/index.js.map +1 -1
- package/{config.examples.json → init/config.json} +7 -1
- package/init/sources.json +353 -0
- package/package.json +4 -6
- package/statics/401.html +1 -1
- package/statics/README.md +1 -1
- package/webui/build/200.html +16 -18
- package/webui/build/_app/immutable/assets/0.C6Q_nuW9.css +1 -0
- package/webui/build/_app/immutable/assets/10.Dj8_pmut.css +1 -0
- package/webui/build/_app/immutable/assets/11.qYZMiTb0.css +1 -0
- package/webui/build/_app/immutable/assets/12.Ct59LCqW.css +1 -0
- package/webui/build/_app/immutable/assets/13.BhO9zvFi.css +1 -0
- package/webui/build/_app/immutable/assets/14.CujIhjQK.css +1 -0
- package/webui/build/_app/immutable/assets/15.nNGjXhCQ.css +1 -0
- package/webui/build/_app/immutable/assets/16.PP9XLDf7.css +1 -0
- package/webui/build/_app/immutable/assets/4.9wPHhVwv.css +1 -0
- package/webui/build/_app/immutable/assets/6.DSJfjJwx.css +1 -0
- package/webui/build/_app/immutable/assets/7.CrNxmd8B.css +1 -0
- package/webui/build/_app/immutable/assets/8.Ba5_jYIY.css +1 -0
- package/webui/build/_app/immutable/assets/{9.BZheTlzZ.css → 9.m-LCx_kl.css} +1 -1
- package/webui/build/_app/immutable/assets/BackToParentRoute.DGk-X5ow.css +1 -0
- package/webui/build/_app/immutable/assets/SourcesList.yTBBi3_m.css +1 -0
- package/webui/build/_app/immutable/assets/homeFeedPanelStore.BopJZtHu.css +1 -0
- package/webui/build/_app/immutable/chunks/{V2-VOe88.js → B-OsL1Ct.js} +1 -1
- package/webui/build/_app/immutable/chunks/B2Q1a1-H.js +2 -0
- package/webui/build/_app/immutable/chunks/BK3WtZwv.js +1 -0
- package/webui/build/_app/immutable/chunks/BQqoDzLx.js +1 -0
- package/webui/build/_app/immutable/chunks/BXCWEhUd.js +1 -0
- package/webui/build/_app/immutable/chunks/BbWUOQ_m.js +1 -0
- package/webui/build/_app/immutable/chunks/Bp63qm3L.js +1 -0
- package/webui/build/_app/immutable/chunks/CVzlFH44.js +1 -0
- package/webui/build/_app/immutable/chunks/CWNeClHp.js +6 -0
- package/webui/build/_app/immutable/chunks/Cihqbfi5.js +1 -0
- package/webui/build/_app/immutable/chunks/CkUAV0m0.js +41 -0
- package/webui/build/_app/immutable/chunks/CtijX1u3.js +31 -0
- package/webui/build/_app/immutable/chunks/D5GvRCv7.js +1 -0
- package/webui/build/_app/immutable/chunks/DEDI7Ecm.js +1 -0
- package/webui/build/_app/immutable/chunks/DFuhmi31.js +1 -0
- package/webui/build/_app/immutable/chunks/DMWEh-Ek.js +2 -0
- package/webui/build/_app/immutable/chunks/{CZDFXKiF.js → DcAshVxe.js} +1 -1
- package/webui/build/_app/immutable/chunks/DjNLq3TF.js +1 -0
- package/webui/build/_app/immutable/chunks/Dt2CddFe.js +1 -0
- package/webui/build/_app/immutable/chunks/Dw782Tjs.js +1 -0
- package/webui/build/_app/immutable/chunks/EIZIMsXK.js +1 -0
- package/webui/build/_app/immutable/chunks/Xy_fhzQq.js +1 -0
- package/webui/build/_app/immutable/chunks/lk5LaiqA.js +1 -0
- package/webui/build/_app/immutable/chunks/mW5RwvnK.js +13 -0
- package/webui/build/_app/immutable/chunks/{CtHRh_pJ.js → tB7QMF3U.js} +1 -1
- package/webui/build/_app/immutable/chunks/xtNWTdbD.js +1 -0
- package/webui/build/_app/immutable/entry/app.DdgnooOk.js +2 -0
- package/webui/build/_app/immutable/entry/start.DhJaJZhR.js +1 -0
- package/webui/build/_app/immutable/nodes/0.BE05Cuc4.js +11 -0
- package/webui/build/_app/immutable/nodes/1.5DFDaT4c.js +1 -0
- package/webui/build/_app/immutable/nodes/10.OVK4i9XE.js +1 -0
- package/webui/build/_app/immutable/nodes/11.Dhn_rO4A.js +1 -0
- package/webui/build/_app/immutable/nodes/12.Cg8AeCSH.js +1 -0
- package/webui/build/_app/immutable/nodes/13.nT3SOzEB.js +1 -0
- package/webui/build/_app/immutable/nodes/14.B_KpJLxn.js +1 -0
- package/webui/build/_app/immutable/nodes/15.RaWaA-0I.js +1 -0
- package/webui/build/_app/immutable/nodes/{12.CMcby_lY.js → 16.DSUgqolV.js} +15 -15
- package/webui/build/_app/immutable/nodes/2.BYWOpaxy.js +1 -0
- package/webui/build/_app/immutable/nodes/3.wQvGs9w-.js +1 -0
- package/webui/build/_app/immutable/nodes/4.DTSxpKm7.js +2 -0
- package/webui/build/_app/immutable/nodes/5.CCtn90c0.js +1 -0
- package/webui/build/_app/immutable/nodes/6.C2_mjW1u.js +1 -0
- package/webui/build/_app/immutable/nodes/7.Dwz6W7A1.js +1 -0
- package/webui/build/_app/immutable/nodes/8.DzkEw6rx.js +1 -0
- package/webui/build/_app/immutable/nodes/9.DtlXEwe1.js +1 -0
- package/webui/build/_app/version.json +1 -1
- package/sources.example.json +0 -562
- package/webui/build/_app/immutable/assets/0.BUAXpTm6.css +0 -1
- package/webui/build/_app/immutable/assets/10.I1OuCLrU.css +0 -1
- package/webui/build/_app/immutable/assets/11.CrO9xaki.css +0 -1
- package/webui/build/_app/immutable/assets/12.BEi6fInA.css +0 -1
- package/webui/build/_app/immutable/assets/14.Ctlgn1LZ.css +0 -1
- package/webui/build/_app/immutable/assets/2.eJ80XOGm.css +0 -1
- package/webui/build/_app/immutable/assets/4.B8-jYAVj.css +0 -1
- package/webui/build/_app/immutable/assets/6.Drn-0DON.css +0 -1
- package/webui/build/_app/immutable/assets/7.ms2diq_q.css +0 -1
- package/webui/build/_app/immutable/assets/8.DKymkjjs.css +0 -1
- package/webui/build/_app/immutable/assets/SourcesList.BhtYlRsQ.css +0 -1
- package/webui/build/_app/immutable/chunks/BUngiKFg.js +0 -1
- package/webui/build/_app/immutable/chunks/Bt0fzibd.js +0 -1
- package/webui/build/_app/immutable/chunks/BxHqDcpw.js +0 -1
- package/webui/build/_app/immutable/chunks/ByQRbEUX.js +0 -1
- package/webui/build/_app/immutable/chunks/C12mHcUp.js +0 -6
- package/webui/build/_app/immutable/chunks/C1kQ4pHy.js +0 -1
- package/webui/build/_app/immutable/chunks/C74gbb4Q.js +0 -1
- package/webui/build/_app/immutable/chunks/CAtemnMo.js +0 -1
- package/webui/build/_app/immutable/chunks/CVjCNJia.js +0 -1
- package/webui/build/_app/immutable/chunks/CjQQ9_Q2.js +0 -2
- package/webui/build/_app/immutable/chunks/D-6mYMI1.js +0 -1
- package/webui/build/_app/immutable/chunks/D1Gs8-g3.js +0 -1
- package/webui/build/_app/immutable/chunks/D9dRVKgL.js +0 -1
- package/webui/build/_app/immutable/chunks/DCEY1XiC.js +0 -1
- package/webui/build/_app/immutable/chunks/DI-t-G_K.js +0 -2
- package/webui/build/_app/immutable/chunks/DTUxjyWL.js +0 -1
- package/webui/build/_app/immutable/chunks/DWJZOHke.js +0 -1
- package/webui/build/_app/immutable/chunks/Dgs6d7X5.js +0 -1
- package/webui/build/_app/immutable/chunks/DjpPK99f.js +0 -71
- package/webui/build/_app/immutable/chunks/DjzVVxpy.js +0 -1
- package/webui/build/_app/immutable/chunks/DvtNA-3X.js +0 -1
- package/webui/build/_app/immutable/chunks/LQVMBmDN.js +0 -1
- package/webui/build/_app/immutable/chunks/Qw0Qgx6J.js +0 -1
- package/webui/build/_app/immutable/chunks/bohabpgg.js +0 -1
- package/webui/build/_app/immutable/chunks/c-YfbAB_.js +0 -8
- package/webui/build/_app/immutable/chunks/tpTQfoNn.js +0 -1
- package/webui/build/_app/immutable/entry/app.Cra5Zsz4.js +0 -2
- package/webui/build/_app/immutable/entry/start.ToY0Qh0_.js +0 -1
- package/webui/build/_app/immutable/nodes/0.D2-xzG_8.js +0 -11
- package/webui/build/_app/immutable/nodes/1.CFixzRR6.js +0 -1
- package/webui/build/_app/immutable/nodes/10.ayxWydPr.js +0 -1
- package/webui/build/_app/immutable/nodes/11.B0JS3E2j.js +0 -1
- package/webui/build/_app/immutable/nodes/13.DRpZV72T.js +0 -1
- package/webui/build/_app/immutable/nodes/14.DVeJW6bd.js +0 -1
- package/webui/build/_app/immutable/nodes/2.DIZ4IPNm.js +0 -1
- package/webui/build/_app/immutable/nodes/3.BFSNf0FK.js +0 -1
- package/webui/build/_app/immutable/nodes/4.BSsIjejE.js +0 -2
- package/webui/build/_app/immutable/nodes/5.COxRT9Oe.js +0 -1
- package/webui/build/_app/immutable/nodes/6.CBgQ4YzB.js +0 -1
- package/webui/build/_app/immutable/nodes/7.BbzWOL0V.js +0 -6
- package/webui/build/_app/immutable/nodes/8.C8120200.js +0 -1
- package/webui/build/_app/immutable/nodes/9.BH_BGQQ4.js +0 -1
- /package/webui/build/_app/immutable/nodes/{15.BtYZF6FM.js → 17.BtYZF6FM.js} +0 -0
- /package/webui/build/_app/immutable/nodes/{16.Ba_qJjp6.js → 18.Ba_qJjp6.js} +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{c as m,a as f}from"../chunks/BK3WtZwv.js";import"../chunks/lk5LaiqA.js";import{f as n}from"../chunks/BbWUOQ_m.js";import{s as p}from"../chunks/B-OsL1Ct.js";function d(t,a){var o=m(),r=n(o);p(r,a,"default",{}),f(t,o)}export{d as component};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{a as t,f as r}from"../chunks/BK3WtZwv.js";import"../chunks/lk5LaiqA.js";import{d as m,$ as s}from"../chunks/BbWUOQ_m.js";import{h as p}from"../chunks/DEDI7Ecm.js";import{S as n}from"../chunks/CkUAV0m0.js";import{P as f}from"../chunks/B2Q1a1-H.js";var i=r('<meta name="description" content="Subscribed sources: labels, counts, pull and manage feeds."/>');function S(e){p("1uha8ag",o=>{var a=i();m(()=>{s.title=`Sources — ${f}`}),t(o,a)}),n(e,{})}export{S as component};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{a as u,f as p}from"../chunks/BK3WtZwv.js";import"../chunks/lk5LaiqA.js";import{o as V,a as W}from"../chunks/Bp63qm3L.js";import{at as Z,au as ee,d as te,$ as se,av as a,aw as v,i as r,ax as t,ay as ae,az as $,a5 as z,z as re,u as P,aA as Y,aB as le}from"../chunks/BbWUOQ_m.js";import{s as j}from"../chunks/DMWEh-Ek.js";import{i as ie}from"../chunks/Dt2CddFe.js";import{e as y,i as D}from"../chunks/BQqoDzLx.js";import{h as ne}from"../chunks/DEDI7Ecm.js";import{P as oe,s as ce,a as de}from"../chunks/B2Q1a1-H.js";import{i as ve}from"../chunks/CVzlFH44.js";import{a as fe}from"../chunks/CBY2biv-.js";var ue=p("<span></span>"),pe=p('<div class="scheduler-row svelte-1jef3w8"><div class="scheduler-left svelte-1jef3w8"><span class="scheduler-name svelte-1jef3w8"> </span> <span class="scheduler-meta svelte-1jef3w8"> </span></div> <div class="scheduler-slots svelte-1jef3w8"></div></div>'),me=p('<section class="scheduler-section svelte-1jef3w8"><h3 class="section-title svelte-1jef3w8">调度任务</h3> <div class="scheduler-card svelte-1jef3w8"></div></section>'),he=p('<a class="card svelte-1jef3w8"><div class="card-main svelte-1jef3w8"><span class="card-label svelte-1jef3w8"> </span> <span class="card-desc svelte-1jef3w8"> </span></div> <span class="card-arrow svelte-1jef3w8">›</span></a>'),_e=p('<section class="links-section svelte-1jef3w8"><h3 class="section-title svelte-1jef3w8"> </h3> <div class="links svelte-1jef3w8"></div></section>'),we=p('<div class="feed-wrap svelte-1jef3w8"><div class="feed-col svelte-1jef3w8"><div class="settings-toolbar-block svelte-1jef3w8"><div class="feed-header svelte-1jef3w8"><h2 class="svelte-1jef3w8">设置</h2> <p class="sub svelte-1jef3w8">管理入口与调试工具</p></div></div> <div class="settings-body-scroll svelte-1jef3w8"><div class="body svelte-1jef3w8"><!> <!></div></div></div></div>');function Ne(U,q){Z(q,!1);function B(l){if(l===void 0)return"";if(l===0)return"· 正在执行";if(l===-1)return"· 无定时任务";const e=new Date(l),o=Date.now(),i=l-o;if(i<=0)return"· 即将执行";if(i<6e4)return`· 约 ${Math.round(i/1e3)} 秒后`;if(i<36e5)return`· 约 ${Math.round(i/6e4)} 分钟后`;const d=e.toLocaleTimeString("zh-CN",{hour:"2-digit",minute:"2-digit"}),n=new Date(o),m=e.getDate()===n.getDate()&&e.getMonth()===n.getMonth()&&e.getFullYear()===n.getFullYear(),s=new Date(n);s.setDate(s.getDate()+1);const c=e.getDate()===s.getDate()&&e.getMonth()===s.getMonth()&&e.getFullYear()===s.getFullYear();return m?`· 下次 ${d}`:c?`· 下次 明天 ${d}`:`· 下次 ${e.toLocaleDateString("zh-CN",{month:"numeric",day:"numeric"})} ${d}`}const E=[{title:"管理",links:[{href:"/admin/tags",label:"标签",desc:"系统标签库,新入库条目由 LLM 自动匹配打标签"},{href:"/admin/pipeline",label:"Pipeline",desc:"入库前处理(打标签、翻译),支持顺序与开关"}]},{title:"集成",links:[{href:"/admin/llm",label:"LLM",desc:"OpenAI 兼容 API(解析、Pipeline、标签与翻译);可替代 .env 中的 OPENAI_*"},{href:"/admin/proxy",label:"代理",desc:"全局 HTTP(S) 代理;单源在 sources.json 或插件中配置的代理优先"},{href:"/admin/deliver",label:"投递",desc:"配置下游 URL 与可选 Bearer 令牌;非空 URL 时在写库与 Pipeline 后额外 POST 条目"}]},{title:"调试",links:[{href:"/admin/parse",label:"Parse",desc:"从列表页解析条目,返回 JSON"}]}];let g=re({}),M=null;async function L(){try{const e=await(await fe("/api/scheduler/stats")).text();z(g,e.trim()?JSON.parse(e):{})}catch{z(g,{})}}V(()=>{L(),M=setInterval(L,2e3)}),W(()=>{M&&clearInterval(M)});const J=5;ve();var S=we();ne("1jef3w8",l=>{te(()=>{se.title=`设置 - ${oe}`})});var O=a(S),N=v(a(O),2),k=a(N),A=a(k);{var H=l=>{var e=me(),o=v(a(e),2);y(o,5,()=>Object.entries(r(g)),D,(i,d)=>{var n=Y(()=>le(r(d),2));let m=()=>r(n)[0],s=()=>r(n)[1];const c=P(()=>s().running),b=P(()=>s().completedCount??0),h=P(()=>Math.min(s().concurrency,J));var _=pe(),f=a(_),w=a(f),G=a(w,!0);t(w);var C=v(w,2),K=a(C);t(C),t(f);var T=v(f,2);y(T,5,()=>Array(r(h)),D,(x,je,Q)=>{var F=ue();let I;$(()=>I=de(F,1,"slot svelte-1jef3w8",null,I,{filled:Q<r(c)})),u(x,F)}),t(T),t(_),$(x=>{j(G,m()),j(K,`执行中 ${r(c)??""}/${s().concurrency??""} · 排队 ${s().queued??""} · 定时 ${s().scheduledCount??""} · 已完成 ${r(b)??""}
|
|
2
|
+
${x??""}`)},[()=>B(s().nextRunTime)]),u(i,_)}),t(o),t(e),u(l,e)},R=Y(()=>Object.keys(r(g)).length>0);ie(A,l=>{r(R)&&l(H)})}var X=v(A,2);y(X,1,()=>E,D,(l,e)=>{var o=_e(),i=a(o),d=a(i,!0);t(i);var n=v(i,2);y(n,5,()=>r(e).links,D,(m,s)=>{var c=he(),b=a(c),h=a(b),_=a(h,!0);t(h);var f=v(h,2),w=a(f,!0);t(f),t(b),ae(2),t(c),$(()=>{ce(c,"href",r(s).href),j(_,r(s).label),j(w,r(s).desc)}),u(m,c)}),t(n),t(o),$(()=>j(d,r(e).title)),u(l,o)}),t(k),t(N),t(O),t(S),u(U,S),ee()}export{Ne as component};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{a as p,f as u}from"../chunks/BK3WtZwv.js";import"../chunks/lk5LaiqA.js";import{o as V}from"../chunks/Bp63qm3L.js";import{at as W,az as X,au as Y,d as Z,i as s,z as h,av as r,aw as c,$ as ee,ax as i,a5 as a,f as U,ay as z}from"../chunks/BbWUOQ_m.js";import{e as A,s as B}from"../chunks/DMWEh-Ek.js";import{i as E}from"../chunks/Dt2CddFe.js";import{h as te}from"../chunks/DEDI7Ecm.js";import{P as se,r as J}from"../chunks/B2Q1a1-H.js";import{b as L}from"../chunks/Dw782Tjs.js";import{i as ae}from"../chunks/CVzlFH44.js";import{B as oe}from"../chunks/EIZIMsXK.js";import{b as x}from"../chunks/CBY2biv-.js";import{s as m}from"../chunks/tB7QMF3U.js";var re=u('<p class="hint svelte-bhaf7m">加载中…</p>'),ie=u('<input type="url" class="url-input svelte-bhaf7m" placeholder="https://downstream.example.com/ingest"/> <p class="hint svelte-bhaf7m">保存后生效;测试会发送一条示例条目,不写本地库。</p>',1),ne=u('<p class="hint svelte-bhaf7m">加载中…</p>'),le=u('<input type="password" class="url-input svelte-bhaf7m" placeholder="与下游 token.txt 内容一致,留空则不发送 Authorization" autocomplete="off"/> <p class="hint svelte-bhaf7m">非空时出站请求携带 Bearer;清空并保存可从配置中移除 token 字段。</p>',1),ce=u('<div class="feed-wrap svelte-bhaf7m"><div class="feed-col svelte-bhaf7m"><div class="body svelte-bhaf7m"><!> <p class="intro svelte-bhaf7m">非空时,在<strong>正常入库与 Pipeline 完成之后</strong>,会<strong>额外</strong>将本批条目以 JSON POST 到该 URL(请求体含 <code class="svelte-bhaf7m">sourceRef</code>、<code class="svelte-bhaf7m">items</code>)。下游若为 AGI Daily 等 Gateway(<code class="svelte-bhaf7m">POST /api/gateway/items</code>),可在下方填写与对端 <code class="svelte-bhaf7m">data/token.txt</code> 一致的令牌,请求将带 <code class="svelte-bhaf7m">Authorization: Bearer …</code>。留空 URL 则不投递;投递<strong>不改变</strong>本地是否写库。</p> <section class="form-section svelte-bhaf7m"><h3 class="section-title svelte-bhaf7m">投递目标 URL</h3> <!></section> <section class="form-section svelte-bhaf7m"><h3 class="section-title svelte-bhaf7m">Gateway 令牌(可选)</h3> <!></section> <section class="form-section svelte-bhaf7m"><div class="btn-row svelte-bhaf7m"><button type="button" class="btn btn-primary svelte-bhaf7m"> </button> <button type="button" class="btn btn-secondary svelte-bhaf7m"> </button></div></section></div></div></div>');function xe(N,C){W(C,!1);let o=h(""),n=h(""),l=h(!0),b=h(!1),d=h(!1);async function G(){a(l,!0);try{const e=await x("/api/deliver");a(o,(e==null?void 0:e.url)??""),a(n,(e==null?void 0:e.token)??"")}catch{a(o,""),a(n,"")}finally{a(l,!1)}}async function j(){a(b,!0);try{const e=await x("/api/deliver",{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({url:s(o).trim(),token:s(n).trim()})});if(!(e!=null&&e.ok))throw new Error((e==null?void 0:e.message)??"保存失败");a(o,(e==null?void 0:e.url)??s(o)),a(n,(e==null?void 0:e.token)??s(n)),m("已保存","success")}catch(e){m("保存失败: "+(e instanceof Error?e.message:String(e)),"error")}finally{a(b,!1)}}async function D(){const e=s(o).trim();if(!e){m("请先填写投递 URL","error");return}a(d,!0);try{const t=await x("/api/deliver/test",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({url:e,token:s(n).trim()})});t!=null&&t.ok?m("投递测试成功","success"):m("投递测试失败: "+((t==null?void 0:t.message)??"未知错误"),"error")}catch(t){m("测试失败: "+(t instanceof Error?t.message:String(t)),"error")}finally{a(d,!1)}}V(G),ae();var y=ce();te("bhaf7m",e=>{Z(()=>{ee.title=`投递 - ${se}`})});var T=r(y),P=r(T),S=r(P);oe(S,{});var g=c(S,4),M=c(r(g),2);{var F=e=>{var t=re();p(e,t)},I=e=>{var t=ie(),v=U(t);J(v),z(2),L(v,()=>s(o),w=>a(o,w)),p(e,t)};E(M,e=>{s(l)?e(F):e(I,-1)})}i(g);var k=c(g,2),$=c(r(k),2);{var q=e=>{var t=ne();p(e,t)},H=e=>{var t=le(),v=U(t);J(v),z(2),L(v,()=>s(n),w=>a(n,w)),p(e,t)};E($,e=>{s(l)?e(q):e(H,-1)})}i(k);var O=c(k,2),R=r(O),f=r(R),K=r(f,!0);i(f);var _=c(f,2),Q=r(_,!0);i(_),i(R),i(O),i(P),i(T),i(y),X(e=>{f.disabled=s(b)||s(l),B(K,s(b)?"保存中…":"保存"),_.disabled=e,B(Q,s(d)?"测试中…":"测试投递")},[()=>s(d)||s(l)||!s(o).trim()]),A("click",f,j),A("click",_,D),p(N,y),Y()}export{xe as component};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{a as v,f as p,t as ve}from"../chunks/BK3WtZwv.js";import"../chunks/lk5LaiqA.js";import{o as ce}from"../chunks/Bp63qm3L.js";import{at as pe,az as R,au as me,d as fe,av as i,aw as n,$ as de,i as o,ax as l,a5 as s,z as c,f as ue,ay as j}from"../chunks/BbWUOQ_m.js";import{e as z,s as $}from"../chunks/DMWEh-Ek.js";import{i as b}from"../chunks/Dt2CddFe.js";import{h as ge}from"../chunks/DEDI7Ecm.js";import{P as _e,r as U,s as E}from"../chunks/B2Q1a1-H.js";import{b as O}from"../chunks/Dw782Tjs.js";import{i as ye}from"../chunks/CVzlFH44.js";import{B as he}from"../chunks/EIZIMsXK.js";import{b as C}from"../chunks/CBY2biv-.js";import{s as w}from"../chunks/tB7QMF3U.js";var be=p('<p class="hint svelte-1a0dvmg">加载中…</p>'),we=p('<input type="url" class="text-input svelte-1a0dvmg" placeholder="https://api.openai.com/v1" autocomplete="off"/>'),xe=p('<input type="text" class="text-input svelte-1a0dvmg" placeholder="gpt-4o-mini" autocomplete="off"/>'),Ke=p('<p class="hint svelte-1a0dvmg">加载中…</p>'),Pe=p("当前<strong>可用</strong>(文件或环境变量)。",1),Ae=p("未检测到 Key,请填写或设置 <code>OPENAI_API_KEY</code>。",1),Ie=p('<input type="password" class="text-input svelte-1a0dvmg" autocomplete="new-password"/> <p class="hint svelte-1a0dvmg"><!> <!></p>',1),ke=p('<div class="feed-wrap svelte-1a0dvmg"><div class="feed-col svelte-1a0dvmg"><div class="body svelte-1a0dvmg"><!> <p class="intro svelte-1a0dvmg">与 OpenAI 兼容的 Chat Completions API,用于列表解析、正文提取、Pipeline 打标签与翻译等。</p> <section class="form-section svelte-1a0dvmg"><h3 class="section-title svelte-1a0dvmg">API Base URL</h3> <!></section> <section class="form-section svelte-1a0dvmg"><h3 class="section-title svelte-1a0dvmg">模型</h3> <!></section> <section class="form-section svelte-1a0dvmg"><h3 class="section-title svelte-1a0dvmg">API Key</h3> <!></section> <section class="form-section svelte-1a0dvmg"><div class="btn-row svelte-1a0dvmg"><button type="button" class="btn btn-primary svelte-1a0dvmg"> </button> <button type="button" class="btn btn-secondary svelte-1a0dvmg"> </button></div></section></div></div></div>');function je(D,Y){pe(Y,!1);let m=c(""),f=c(""),u=c(""),g=c(!1),_=c(!1),d=c(!0),x=c(!1),K=c(!1);async function q(){s(d,!0);try{const e=await C("/api/llm");s(m,(e==null?void 0:e.baseUrl)??""),s(f,(e==null?void 0:e.model)??""),s(g,!!(e!=null&&e.hasApiKey)),s(_,!!(e!=null&&e.apiKeyInFile)),s(u,"")}catch{s(m,""),s(f,""),s(g,!1),s(_,!1)}finally{s(d,!1)}}async function G(){s(x,!0);try{const e={baseUrl:o(m).trim(),model:o(f).trim()},a=o(u).trim();a&&(e.apiKey=a);const t=await C("/api/llm",{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)});if(!(t!=null&&t.ok))throw new Error((t==null?void 0:t.message)??"保存失败");s(m,(t==null?void 0:t.baseUrl)??o(m)),s(f,(t==null?void 0:t.model)??o(f)),s(g,!!(t!=null&&t.hasApiKey)),s(_,!!(t!=null&&t.apiKeyInFile)),s(u,""),w("已保存","success")}catch(e){w("保存失败: "+(e instanceof Error?e.message:String(e)),"error")}finally{s(x,!1)}}async function H(){s(K,!0);try{const e=await C("/api/llm/test",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({})});if(e!=null&&e.ok){const a=typeof e.reply=="string"?e.reply.trim():"";w(a?`连接成功:${a.slice(0,120)}${a.length>120?"…":""}`:"连接成功","success")}else w("测试失败: "+((e==null?void 0:e.message)??"未知错误"),"error")}catch(e){w("测试失败: "+(e instanceof Error?e.message:String(e)),"error")}finally{s(K,!1)}}ce(q),ye();var A=ke();ge("1a0dvmg",e=>{fe(()=>{de.title=`LLM - ${_e}`})});var S=i(A),F=i(S),N=i(F);he(N,{});var I=n(N,4),Q=n(i(I),2);{var V=e=>{var a=be();v(e,a)},W=e=>{var a=we();U(a),O(a,()=>o(m),t=>s(m,t)),v(e,a)};b(Q,e=>{o(d)?e(V):e(W,-1)})}l(I);var k=n(I,2),X=n(i(k),2);{var Z=e=>{var a=xe();U(a),E(a,"spellcheck",!1),O(a,()=>o(f),t=>s(f,t)),v(e,a)};b(X,e=>{o(d)||e(Z)})}l(k);var T=n(k,2),ee=n(i(T),2);{var te=e=>{var a=Ke();v(e,a)},se=e=>{var a=Ie(),t=ue(a);U(t),E(t,"spellcheck",!1);var L=n(t,2),M=i(L);{var re=r=>{var h=Pe();j(2),v(r,h)},ie=r=>{var h=Ae();j(2),v(r,h)};b(M,r=>{o(g)?r(re):r(ie,-1)})}var le=n(M,2);{var ne=r=>{var h=ve("已写入配置文件。");v(r,h)};b(le,r=>{o(_)&&r(ne)})}l(L),R(()=>E(t,"placeholder",o(_)?"已保存在配置中,留空表示不修改":"sk-...")),O(t,()=>o(u),r=>s(u,r)),v(e,a)};b(ee,e=>{o(d)?e(te):e(se,-1)})}l(T);var B=n(T,2),J=i(B),y=i(J),ae=i(y,!0);l(y);var P=n(y,2),oe=i(P,!0);l(P),l(J),l(B),l(F),l(S),l(A),R(()=>{y.disabled=o(x)||o(d),$(ae,o(x)?"保存中…":"保存"),P.disabled=o(K)||o(d)||!o(g),$(oe,o(K)?"测试中…":"测试连接")}),z("click",y,G),z("click",P,H),v(D,A),me()}export{je as component};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{a as e,f as m}from"../chunks/BK3WtZwv.js";import"../chunks/lk5LaiqA.js";import{o as i}from"../chunks/Bp63qm3L.js";import{at as f,au as n}from"../chunks/BbWUOQ_m.js";import{s as l,a as u}from"../chunks/DjNLq3TF.js";import{i as c}from"../chunks/CVzlFH44.js";import{g}from"../chunks/BXCWEhUd.js";import{p as $}from"../chunks/DcAshVxe.js";var v=m('<p class="muted svelte-1w6l7vk">正在跳转…</p>');function b(o,t){f(t,!1);const a=()=>u($,"$page",r),[r,s]=l();i(()=>{g("/logs"+a().url.search,{replaceState:!0})}),c();var p=v();e(o,p),n(),s()}export{b as component};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{a as w,f as O}from"../chunks/BK3WtZwv.js";import"../chunks/lk5LaiqA.js";import{at as M,az as T,i as s,au as W,d as X,av as t,a5 as o,z as d,$ as Y,ay as I,ax as r,aw as v}from"../chunks/BbWUOQ_m.js";import{e as F,s as S}from"../chunks/DMWEh-Ek.js";import{i as J}from"../chunks/Dt2CddFe.js";import{h as G}from"../chunks/DEDI7Ecm.js";import{P as K,r as q}from"../chunks/B2Q1a1-H.js";import{b as C}from"../chunks/Dw782Tjs.js";import{p as Q}from"../chunks/Bfc47y5P.js";import{i as V}from"../chunks/CVzlFH44.js";import{B as Z}from"../chunks/EIZIMsXK.js";var ee=O('<div class="result-error svelte-1x680s0" role="alert"> </div>'),se=O('<div class="result-wrap svelte-1x680s0"><p class="result-label svelte-1x680s0">解析结果(与下方接口一致)</p> <pre class="result-json svelte-1x680s0"> </pre></div>'),te=O('<div class="feed-wrap svelte-1x680s0"><div class="feed-col svelte-1x680s0"><div class="feed-header svelte-1x680s0"><!> <h2 class="svelte-1x680s0">Parse</h2> <p class="page-desc svelte-1x680s0">从列表页解析条目结构,返回 JSON,用于调试插件 Parser 规则</p></div> <div class="body svelte-1x680s0"><form><div class="url-row svelte-1x680s0"><input type="url" placeholder="输入列表页地址…" required="" autocomplete="url" class="svelte-1x680s0"/> <button type="submit" class="svelte-1x680s0"> </button></div> <div class="proxy-row svelte-1x680s0"><input type="text" placeholder="代理(可选),如 http://127.0.0.1:7890 — 覆盖信源与 HTTP_PROXY" autocomplete="off" spellcheck="false" class="svelte-1x680s0"/></div></form> <!> <!> <div class="info-box svelte-1x680s0"><p class="svelte-1x680s0">抓取在<strong>服务端</strong>执行,默认<strong>有头</strong> Chrome(与信源同一套 Puppeteer),会弹出可见窗口;本页 <code class="svelte-1x680s0">fetch</code> 仅用于展示 JSON。需要无头时在 URL 加 <code class="svelte-1x680s0">?headless=true</code>。</p> <p class="info-note svelte-1x680s0">返回中的 <code class="svelte-1x680s0">effectiveProxy</code> 为本次抓取实际选用的代理。若需在看得到的窗口里验证出口 IP,请在该 Puppeteer 窗口内打开 <code class="svelte-1x680s0">api.ipify.org</code> 等(勿用本机普通浏览器标签测代理)。</p></div></div></div></div>');function ue(z,B){M(B,!1);let i=d(""),m=d(""),n=d(!1),c=d(""),p=d("");async function D(){if(s(i).trim()){o(n,!0),o(c,""),o(p,"");try{const e=s(i).startsWith("http")?s(i):"https://"+s(i),a=new URLSearchParams,l=s(m).trim();l&&a.set("proxy",l);const u=a.toString(),b=await fetch("/admin/parse/"+encodeURIComponent(e)+(u?"?"+u:""),{credentials:"include"}),P=await b.text();if(!b.ok){o(c,P||`HTTP ${b.status}`);return}try{o(p,JSON.stringify(JSON.parse(P),null,2))}catch{o(p,P)}}catch(e){o(c,e instanceof Error?e.message:String(e))}finally{o(n,!1)}}}V();var x=te();G("1x680s0",e=>{X(()=>{Y.title=`Parse - ${K}`})});var R=t(x),_=t(R),E=t(_);Z(E,{}),I(4),r(_);var $=v(_,2),f=t($),h=t(f),g=t(h);q(g);var y=v(g,2),H=t(y,!0);r(y),r(h);var N=v(h,2),U=t(N);q(U),r(N),r(f);var k=v(f,2);{var L=e=>{var a=ee(),l=t(a,!0);r(a),T(()=>S(l,s(c))),w(e,a)};J(k,e=>{s(c)&&e(L)})}var j=v(k,2);{var A=e=>{var a=se(),l=v(t(a),2),u=t(l,!0);r(l),r(a),T(()=>S(u,s(p))),w(e,a)};J(j,e=>{s(p)&&e(A)})}I(2),r($),r(R),r(x),T(()=>{y.disabled=s(n),S(H,s(n)?"解析中…":"解析")}),C(g,()=>s(i),e=>o(i,e)),C(U,()=>s(m),e=>o(m,e)),F("submit",f,Q(D)),w(z,x),W()}export{ue as component};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{a as u,f as g}from"../chunks/BK3WtZwv.js";import"../chunks/lk5LaiqA.js";import{o as se}from"../chunks/Bp63qm3L.js";import{at as te,au as re,d as le,av as o,$ as ie,ay as B,ax as i,aw as c,i as a,a5 as r,z as b,az as T,aA as oe}from"../chunks/BbWUOQ_m.js";import{s as I,e as f}from"../chunks/DMWEh-Ek.js";import{i as O}from"../chunks/Dt2CddFe.js";import{e as ne,i as de}from"../chunks/BQqoDzLx.js";import{h as ve}from"../chunks/DEDI7Ecm.js";import{P as ce,r as fe,a as pe,b as me}from"../chunks/B2Q1a1-H.js";import{i as ue}from"../chunks/CVzlFH44.js";import{B as be}from"../chunks/EIZIMsXK.js";import{b as $}from"../chunks/CBY2biv-.js";import{s as z}from"../chunks/tB7QMF3U.js";var ge=g('<div class="state svelte-jqd85f">加载中…</div>'),_e=g('<div role="listitem" draggable="true"><span class="drag-handle svelte-jqd85f" title="拖拽排序">⋮⋮</span> <label class="toggle-wrap svelte-jqd85f"><input type="checkbox" class="svelte-jqd85f"/> <span class="toggle-slider svelte-jqd85f"></span></label> <span class="step-label svelte-jqd85f"> </span></div>'),he=g('<button type="button" class="btn-add svelte-jqd85f">+ 添加步骤</button>'),je=g('<div class="body svelte-jqd85f"><section class="pipeline-section svelte-jqd85f"><h3 class="section-title svelte-jqd85f">Pipeline(入库前)</h3> <p class="hint svelte-jqd85f">对每条新入库条目执行,顺序由上到下。</p> <div class="step-list svelte-jqd85f" role="list"></div> <!></section> <div class="save-row svelte-jqd85f"><button type="button" class="btn btn-primary svelte-jqd85f"> </button></div></div>'),qe=g('<div class="feed-wrap svelte-jqd85f"><div class="feed-col svelte-jqd85f"><div class="feed-header svelte-jqd85f"><!> <h2 class="svelte-jqd85f">Pipeline</h2> <p class="page-desc svelte-jqd85f">入库前处理(打标签、翻译),可调整顺序与开关。</p></div> <!></div></div>');function $e(C,F){te(F,!1);const J={qualityFilter:"质量过滤",tagger:"打标签",translator:"翻译"};let t=b([]),_=b([]),q=b(!0),p=b(!1),m=b(null);async function L(){r(q,!0);try{const e=await $("/api/pipeline");r(t,(e==null?void 0:e.steps)??[]),r(_,(e==null?void 0:e.availableIds)??[])}catch{r(t,[]),r(_,[])}finally{r(q,!1)}}async function M(){r(p,!0);try{const e=await $("/api/pipeline",{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({steps:a(t)})});if(!(e!=null&&e.ok))throw new Error((e==null?void 0:e.message)??"保存失败");r(t,(e==null?void 0:e.steps)??a(t)),z("已保存","success")}catch(e){z("保存失败: "+(e instanceof Error?e.message:String(e)),"error")}finally{r(p,!1)}}function N(e){r(t,a(t).map((s,l)=>l===e?{...s,enabled:!s.enabled}:s))}function R(e){r(m,e)}function U(e){e.preventDefault(),e.dataTransfer&&(e.dataTransfer.dropEffect="move")}function G(e){if(a(m)==null)return;const s=[...a(t)],[l]=s.splice(a(m),1);s.splice(e,0,l),r(t,s),r(m,null)}function H(){const e=new Set(a(t).map(l=>l.id)),s=a(_).find(l=>!e.has(l));s&&r(t,[...a(t),{id:s,enabled:!1}])}se(L),ue();var y=qe();ve("jqd85f",e=>{le(()=>{ie.title=`Pipeline - ${ce}`})});var k=o(y),w=o(k),K=o(w);be(K,{}),B(4),i(w);var Q=c(w,2);{var V=e=>{var s=ge();u(e,s)},W=e=>{var s=je(),l=o(s),x=c(o(l),4);ne(x,5,()=>a(t),de,(d,n,j)=>{var v=_e();let D;var P=c(o(v),2),S=o(P);fe(S),B(2),i(P);var A=c(P,2),ae=o(A,!0);i(A),i(v),T(()=>{D=pe(v,1,"step-row svelte-jqd85f",null,D,{dragging:a(m)===j}),me(S,a(n).enabled),I(ae,J[a(n).id]??a(n).id)}),f("change",S,()=>N(j)),f("dragstart",v,()=>R(j)),f("dragover",v,U),f("drop",v,()=>G(j)),u(d,v)}),i(x);var X=c(x,2);{var Y=d=>{var n=he();T(()=>n.disabled=a(p)),f("click",n,H),u(d,n)},Z=oe(()=>a(_).some(d=>!a(t).some(n=>n.id===d)));O(X,d=>{a(Z)&&d(Y)})}i(l);var E=c(l,2),h=o(E),ee=o(h,!0);i(h),i(E),i(s),T(()=>{h.disabled=a(p),I(ee,a(p)?"保存中…":"保存")}),f("click",h,M),u(e,s)};O(Q,e=>{a(q)?e(V):e(W,-1)})}i(k),i(y),u(C,y),re()}export{$e as component};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":"
|
|
1
|
+
{"version":"1775806756267"}
|
package/sources.example.json
DELETED
|
@@ -1,562 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"sources": [
|
|
3
|
-
{
|
|
4
|
-
"ref": "https://www.theinformation.com/",
|
|
5
|
-
"label": "The Information",
|
|
6
|
-
"description": "科技商业深度报道",
|
|
7
|
-
"refresh": "1h"
|
|
8
|
-
},
|
|
9
|
-
{
|
|
10
|
-
"ref": "https://techcrunch.com/category/artificial-intelligence/",
|
|
11
|
-
"label": "TechCrunch AI",
|
|
12
|
-
"description": "AI 创业与产品资讯",
|
|
13
|
-
"refresh": "1h"
|
|
14
|
-
},
|
|
15
|
-
{
|
|
16
|
-
"ref": "https://www.technologyreview.com/",
|
|
17
|
-
"label": "MIT Technology Review",
|
|
18
|
-
"description": "MIT 科技评论",
|
|
19
|
-
"refresh": "1h"
|
|
20
|
-
},
|
|
21
|
-
{
|
|
22
|
-
"ref": "https://venturebeat.com/",
|
|
23
|
-
"label": "VentureBeat",
|
|
24
|
-
"description": "科技与创投新闻",
|
|
25
|
-
"refresh": "1h"
|
|
26
|
-
},
|
|
27
|
-
{
|
|
28
|
-
"ref": "https://slashdot.org/",
|
|
29
|
-
"label": "Slashdot",
|
|
30
|
-
"description": "科技新闻聚合",
|
|
31
|
-
"refresh": "1h"
|
|
32
|
-
},
|
|
33
|
-
{
|
|
34
|
-
"ref": "https://news.ycombinator.com/newest",
|
|
35
|
-
"label": "HN newest",
|
|
36
|
-
"description": "Hacker News 最新",
|
|
37
|
-
"refresh": "30min"
|
|
38
|
-
},
|
|
39
|
-
{
|
|
40
|
-
"ref": "https://x.com/elonmusk",
|
|
41
|
-
"label": "elonmusk",
|
|
42
|
-
"description": "Elon Musk 推文",
|
|
43
|
-
"refresh": "1h"
|
|
44
|
-
},
|
|
45
|
-
{
|
|
46
|
-
"ref": "https://x.com/AIatMeta",
|
|
47
|
-
"label": "Meta AI",
|
|
48
|
-
"description": "Meta AI 官方",
|
|
49
|
-
"refresh": "1h"
|
|
50
|
-
},
|
|
51
|
-
{
|
|
52
|
-
"ref": "https://x.com/OpenAI",
|
|
53
|
-
"label": "OpenAI",
|
|
54
|
-
"description": "OpenAI 官方",
|
|
55
|
-
"refresh": "1h"
|
|
56
|
-
},
|
|
57
|
-
{
|
|
58
|
-
"ref": "https://x.com/GoogleAI",
|
|
59
|
-
"label": "Google",
|
|
60
|
-
"description": "Google AI 官方",
|
|
61
|
-
"refresh": "1h"
|
|
62
|
-
},
|
|
63
|
-
{
|
|
64
|
-
"ref": "https://x.com/Anthropic",
|
|
65
|
-
"label": "Anthropic",
|
|
66
|
-
"description": "Anthropic 官方",
|
|
67
|
-
"refresh": "1h"
|
|
68
|
-
},
|
|
69
|
-
{
|
|
70
|
-
"ref": "https://x.com/Tesla",
|
|
71
|
-
"label": "Tesla",
|
|
72
|
-
"description": "特斯拉官方",
|
|
73
|
-
"refresh": "1h"
|
|
74
|
-
},
|
|
75
|
-
{
|
|
76
|
-
"ref": "https://x.com/Microsoft",
|
|
77
|
-
"label": "Microsoft",
|
|
78
|
-
"description": "微软官方",
|
|
79
|
-
"refresh": "1h"
|
|
80
|
-
},
|
|
81
|
-
{
|
|
82
|
-
"ref": "https://x.com/NVIDIA",
|
|
83
|
-
"label": "NVIDIA",
|
|
84
|
-
"description": "英伟达官方",
|
|
85
|
-
"refresh": "1h"
|
|
86
|
-
},
|
|
87
|
-
{
|
|
88
|
-
"ref": "https://x.com/NVIDIARobotics",
|
|
89
|
-
"label": "NVIDIA Robotics",
|
|
90
|
-
"description": "NVIDIA 机器人",
|
|
91
|
-
"refresh": "1h"
|
|
92
|
-
},
|
|
93
|
-
{
|
|
94
|
-
"ref": "https://x.com/BostonDynamics",
|
|
95
|
-
"label": "Boston Dynamics",
|
|
96
|
-
"description": "波士顿动力",
|
|
97
|
-
"refresh": "1h"
|
|
98
|
-
},
|
|
99
|
-
{
|
|
100
|
-
"ref": "https://x.com/xai",
|
|
101
|
-
"label": "xAI",
|
|
102
|
-
"description": "xAI 官方",
|
|
103
|
-
"refresh": "1h"
|
|
104
|
-
},
|
|
105
|
-
{
|
|
106
|
-
"ref": "https://x.com/Figure_robot",
|
|
107
|
-
"label": "Figure AI",
|
|
108
|
-
"description": "Figure 人形机器人",
|
|
109
|
-
"refresh": "1h"
|
|
110
|
-
},
|
|
111
|
-
{
|
|
112
|
-
"ref": "https://rss.arxiv.org/rss/cs.CL",
|
|
113
|
-
"label": "arxiv cs.CL (NLP/LLM)",
|
|
114
|
-
"description": "NLP/大模型论文",
|
|
115
|
-
"refresh": "1day"
|
|
116
|
-
},
|
|
117
|
-
{
|
|
118
|
-
"ref": "https://rss.arxiv.org/rss/cs.LG",
|
|
119
|
-
"label": "arxiv cs.LG (Machine Learning)",
|
|
120
|
-
"description": "机器学习论文",
|
|
121
|
-
"refresh": "1day"
|
|
122
|
-
},
|
|
123
|
-
{
|
|
124
|
-
"ref": "https://x.com/turingcom",
|
|
125
|
-
"label": "Turing",
|
|
126
|
-
"description": "Turing 数据标注",
|
|
127
|
-
"refresh": "1h"
|
|
128
|
-
},
|
|
129
|
-
{
|
|
130
|
-
"ref": "https://x.com/scale_ai",
|
|
131
|
-
"label": "Scale AI",
|
|
132
|
-
"description": "Scale AI 数据标注",
|
|
133
|
-
"refresh": "1h"
|
|
134
|
-
},
|
|
135
|
-
{
|
|
136
|
-
"ref": "https://x.com/HelloSurgeAI",
|
|
137
|
-
"label": "Surge AI",
|
|
138
|
-
"description": "Surge AI 数据标注",
|
|
139
|
-
"refresh": "1h"
|
|
140
|
-
},
|
|
141
|
-
{
|
|
142
|
-
"ref": "https://x.com/labelbox",
|
|
143
|
-
"label": "Labelbox",
|
|
144
|
-
"description": "Labelbox 数据标注平台",
|
|
145
|
-
"refresh": "1h"
|
|
146
|
-
},
|
|
147
|
-
{
|
|
148
|
-
"ref": "https://x.com/V7Labs",
|
|
149
|
-
"label": "V7Labs",
|
|
150
|
-
"description": "V7 数据标注",
|
|
151
|
-
"refresh": "1h"
|
|
152
|
-
},
|
|
153
|
-
{
|
|
154
|
-
"ref": "https://supervisely.com/blog/",
|
|
155
|
-
"label": "Supervisely",
|
|
156
|
-
"description": "计算机视觉标注平台",
|
|
157
|
-
"refresh": "1h"
|
|
158
|
-
},
|
|
159
|
-
{
|
|
160
|
-
"ref": "https://x.com/crowdgenbyappen",
|
|
161
|
-
"label": "Appen",
|
|
162
|
-
"description": "Appen 数据标注",
|
|
163
|
-
"refresh": "1h"
|
|
164
|
-
},
|
|
165
|
-
{
|
|
166
|
-
"ref": "https://x.com/SegmentsAI",
|
|
167
|
-
"label": "Segments.ai",
|
|
168
|
-
"description": "Segments 数据标注",
|
|
169
|
-
"refresh": "1h"
|
|
170
|
-
},
|
|
171
|
-
{
|
|
172
|
-
"ref": "https://www.kognic.com/articles",
|
|
173
|
-
"label": "Kognic",
|
|
174
|
-
"description": "自动驾驶数据标注",
|
|
175
|
-
"refresh": "1h"
|
|
176
|
-
},
|
|
177
|
-
{
|
|
178
|
-
"ref": "https://x.com/yoshuabengio",
|
|
179
|
-
"label": "Yoshua Bengio",
|
|
180
|
-
"description": "图灵奖得主,深度学习先驱",
|
|
181
|
-
"refresh": "1h"
|
|
182
|
-
},
|
|
183
|
-
{
|
|
184
|
-
"ref": "https://x.com/ylecun",
|
|
185
|
-
"label": "Yann LeCun",
|
|
186
|
-
"description": "图灵奖得主,卷积网络发明者",
|
|
187
|
-
"refresh": "1h"
|
|
188
|
-
},
|
|
189
|
-
{
|
|
190
|
-
"ref": "https://x.com/geoffreyhinton",
|
|
191
|
-
"label": "Geoffrey Hinton",
|
|
192
|
-
"description": "图灵奖得主,深度学习教父",
|
|
193
|
-
"refresh": "1h"
|
|
194
|
-
},
|
|
195
|
-
{
|
|
196
|
-
"ref": "https://x.com/AndrewYNg",
|
|
197
|
-
"label": "Andrew Ng",
|
|
198
|
-
"description": "Coursera 创始人,AI 教育",
|
|
199
|
-
"refresh": "1h"
|
|
200
|
-
},
|
|
201
|
-
{
|
|
202
|
-
"ref": "https://x.com/drfeifei",
|
|
203
|
-
"label": "李飞飞",
|
|
204
|
-
"description": "斯坦福 AI 实验室主任",
|
|
205
|
-
"refresh": "1h"
|
|
206
|
-
},
|
|
207
|
-
{
|
|
208
|
-
"ref": "https://x.com/percyliang",
|
|
209
|
-
"label": "Percy Liang",
|
|
210
|
-
"description": "斯坦福 CRFM 主任",
|
|
211
|
-
"refresh": "1h"
|
|
212
|
-
},
|
|
213
|
-
{
|
|
214
|
-
"ref": "https://x.com/ilyasut",
|
|
215
|
-
"label": "Ilya Sutskever",
|
|
216
|
-
"description": "OpenAI 联合创始人",
|
|
217
|
-
"refresh": "1h"
|
|
218
|
-
},
|
|
219
|
-
{
|
|
220
|
-
"ref": "https://x.com/timbrooks",
|
|
221
|
-
"label": "Tim Brooks",
|
|
222
|
-
"description": "OpenAI 研究员",
|
|
223
|
-
"refresh": "1h"
|
|
224
|
-
},
|
|
225
|
-
{
|
|
226
|
-
"ref": "https://x.com/stuartj_russell",
|
|
227
|
-
"label": "Stuart Russell",
|
|
228
|
-
"description": "《人工智能》教材作者",
|
|
229
|
-
"refresh": "1h"
|
|
230
|
-
},
|
|
231
|
-
{
|
|
232
|
-
"ref": "https://x.com/songhan_mit",
|
|
233
|
-
"label": "Song Han",
|
|
234
|
-
"description": "MIT 高效深度学习",
|
|
235
|
-
"refresh": "1h"
|
|
236
|
-
},
|
|
237
|
-
{
|
|
238
|
-
"ref": "https://x.com/lm_zheng",
|
|
239
|
-
"label": "郑海涛",
|
|
240
|
-
"description": "AI 研究者",
|
|
241
|
-
"refresh": "1h"
|
|
242
|
-
},
|
|
243
|
-
{
|
|
244
|
-
"ref": "https://x.com/chenkaidev",
|
|
245
|
-
"label": "陈恺",
|
|
246
|
-
"description": "AI 开发者",
|
|
247
|
-
"refresh": "1h"
|
|
248
|
-
},
|
|
249
|
-
{
|
|
250
|
-
"ref": "https://www.zhipuai.cn/zh/research",
|
|
251
|
-
"label": "智谱研究",
|
|
252
|
-
"description": "智谱 AI 研究院",
|
|
253
|
-
"refresh": "1day"
|
|
254
|
-
},
|
|
255
|
-
{
|
|
256
|
-
"ref": "https://www.worldlabs.ai/blog",
|
|
257
|
-
"label": "World Labs",
|
|
258
|
-
"description": "World Labs 博客",
|
|
259
|
-
"refresh": "1day"
|
|
260
|
-
},
|
|
261
|
-
{
|
|
262
|
-
"ref": "https://www.tesla.com/AI",
|
|
263
|
-
"label": "Tesla AI",
|
|
264
|
-
"description": "特斯拉 AI 与 FSD",
|
|
265
|
-
"refresh": "1day"
|
|
266
|
-
},
|
|
267
|
-
{
|
|
268
|
-
"ref": "https://www.sensetime.com/cn/technology-achievements",
|
|
269
|
-
"label": "商汤研究院",
|
|
270
|
-
"description": "商汤技术成果",
|
|
271
|
-
"refresh": "1day"
|
|
272
|
-
},
|
|
273
|
-
{
|
|
274
|
-
"ref": "https://www.selectdataset.com/",
|
|
275
|
-
"label": "Select Dataset",
|
|
276
|
-
"description": "数据集检索平台",
|
|
277
|
-
"refresh": "1day"
|
|
278
|
-
},
|
|
279
|
-
{
|
|
280
|
-
"ref": "https://www.moonshot.ai/",
|
|
281
|
-
"label": "Moonshot",
|
|
282
|
-
"description": "月之暗面",
|
|
283
|
-
"refresh": "1day"
|
|
284
|
-
},
|
|
285
|
-
{
|
|
286
|
-
"ref": "https://www.microsoft.com/en-us/research/blog/",
|
|
287
|
-
"label": "Microsoft Research",
|
|
288
|
-
"description": "微软研究院博客",
|
|
289
|
-
"refresh": "1day"
|
|
290
|
-
},
|
|
291
|
-
{
|
|
292
|
-
"ref": "https://www.csail.mit.edu/research",
|
|
293
|
-
"label": "MIT CSAIL",
|
|
294
|
-
"description": "MIT 计算机与 AI 实验室",
|
|
295
|
-
"refresh": "1day"
|
|
296
|
-
},
|
|
297
|
-
{
|
|
298
|
-
"ref": "https://www.appen.com/resources",
|
|
299
|
-
"label": "Appen Resources",
|
|
300
|
-
"description": "Appen 资源与白皮书",
|
|
301
|
-
"refresh": "1day"
|
|
302
|
-
},
|
|
303
|
-
{
|
|
304
|
-
"ref": "https://www.anthropic.com/research",
|
|
305
|
-
"label": "Anthropic Research",
|
|
306
|
-
"description": "Anthropic 研究论文",
|
|
307
|
-
"refresh": "1day"
|
|
308
|
-
},
|
|
309
|
-
{
|
|
310
|
-
"ref": "https://www.amii.ca/research-talent",
|
|
311
|
-
"label": "AMII",
|
|
312
|
-
"description": "加拿大 AI 研究所",
|
|
313
|
-
"refresh": "1day"
|
|
314
|
-
},
|
|
315
|
-
{
|
|
316
|
-
"ref": "https://www.5radar.com",
|
|
317
|
-
"label": "5radar",
|
|
318
|
-
"description": "AI 资讯聚合",
|
|
319
|
-
"refresh": "1h"
|
|
320
|
-
},
|
|
321
|
-
{
|
|
322
|
-
"ref": "https://trendshift.io/",
|
|
323
|
-
"label": "Trendshift",
|
|
324
|
-
"description": "AI 趋势追踪",
|
|
325
|
-
"refresh": "1h"
|
|
326
|
-
},
|
|
327
|
-
{
|
|
328
|
-
"ref": "https://tech.meituan.com/",
|
|
329
|
-
"label": "美团技术",
|
|
330
|
-
"description": "美团技术博客",
|
|
331
|
-
"refresh": "1day"
|
|
332
|
-
},
|
|
333
|
-
{
|
|
334
|
-
"ref": "https://research.google/",
|
|
335
|
-
"label": "Google Research",
|
|
336
|
-
"description": "Google 研究院",
|
|
337
|
-
"refresh": "1day"
|
|
338
|
-
},
|
|
339
|
-
{
|
|
340
|
-
"ref": "https://research.google/resources/datasets/",
|
|
341
|
-
"label": "Google Datasets",
|
|
342
|
-
"description": "Google 公开数据集",
|
|
343
|
-
"refresh": "1day"
|
|
344
|
-
},
|
|
345
|
-
{
|
|
346
|
-
"ref": "https://research.baidu.com/",
|
|
347
|
-
"label": "百度研究院",
|
|
348
|
-
"description": "百度 AI 研究院",
|
|
349
|
-
"refresh": "1day"
|
|
350
|
-
},
|
|
351
|
-
{
|
|
352
|
-
"ref": "https://pjlab-adg.github.io/publications/",
|
|
353
|
-
"label": "PJLab",
|
|
354
|
-
"description": "浦江实验室自动驾驶",
|
|
355
|
-
"refresh": "1day"
|
|
356
|
-
},
|
|
357
|
-
{
|
|
358
|
-
"ref": "https://paperswithcode.co/",
|
|
359
|
-
"label": "Papers with Code",
|
|
360
|
-
"description": "论文与代码检索",
|
|
361
|
-
"refresh": "1day"
|
|
362
|
-
},
|
|
363
|
-
{
|
|
364
|
-
"ref": "https://opendrivelab.com/EmbodiedAI",
|
|
365
|
-
"label": "OpenDriveLab Embodied",
|
|
366
|
-
"description": "具身智能与自动驾驶",
|
|
367
|
-
"refresh": "1day"
|
|
368
|
-
},
|
|
369
|
-
{
|
|
370
|
-
"ref": "https://opendrivelab.com/",
|
|
371
|
-
"label": "OpenDriveLab",
|
|
372
|
-
"description": "上海 AI 实验室自动驾驶",
|
|
373
|
-
"refresh": "1day"
|
|
374
|
-
},
|
|
375
|
-
{
|
|
376
|
-
"ref": "https://opendatalab.org.cn",
|
|
377
|
-
"label": "OpenDataLab",
|
|
378
|
-
"description": "开放数据平台",
|
|
379
|
-
"refresh": "1day"
|
|
380
|
-
},
|
|
381
|
-
{
|
|
382
|
-
"ref": "https://opencompass.org.cn/home",
|
|
383
|
-
"label": "OpenCompass",
|
|
384
|
-
"description": "大模型评测平台",
|
|
385
|
-
"refresh": "1day"
|
|
386
|
-
},
|
|
387
|
-
{
|
|
388
|
-
"ref": "https://openai.com/research/index/",
|
|
389
|
-
"label": "OpenAI Research",
|
|
390
|
-
"description": "OpenAI 研究论文",
|
|
391
|
-
"refresh": "1day"
|
|
392
|
-
},
|
|
393
|
-
{
|
|
394
|
-
"ref": "https://mlcommons.org/research/",
|
|
395
|
-
"label": "MLCommons",
|
|
396
|
-
"description": "MLCommons 基准与研究",
|
|
397
|
-
"refresh": "1day"
|
|
398
|
-
},
|
|
399
|
-
{
|
|
400
|
-
"ref": "https://mila.quebec/en",
|
|
401
|
-
"label": "Mila Quebec",
|
|
402
|
-
"description": "蒙特利尔 AI 研究所",
|
|
403
|
-
"refresh": "1day"
|
|
404
|
-
},
|
|
405
|
-
{
|
|
406
|
-
"ref": "https://lmsys.org/projects/",
|
|
407
|
-
"label": "LMSys",
|
|
408
|
-
"description": "大模型排行榜",
|
|
409
|
-
"refresh": "1day"
|
|
410
|
-
},
|
|
411
|
-
{
|
|
412
|
-
"ref": "https://intl.cloud.tencent.com/zh/dynamic/blogs/",
|
|
413
|
-
"label": "腾讯云博客",
|
|
414
|
-
"description": "腾讯云技术博客",
|
|
415
|
-
"refresh": "1day"
|
|
416
|
-
},
|
|
417
|
-
{
|
|
418
|
-
"ref": "https://huggingface.co/blog",
|
|
419
|
-
"label": "Hugging Face Blog",
|
|
420
|
-
"description": "Hugging Face 官方博客",
|
|
421
|
-
"refresh": "1day"
|
|
422
|
-
},
|
|
423
|
-
{
|
|
424
|
-
"ref": "https://github.com/deepseek-ai",
|
|
425
|
-
"label": "DeepSeek",
|
|
426
|
-
"description": "DeepSeek 开源项目",
|
|
427
|
-
"refresh": "1day"
|
|
428
|
-
},
|
|
429
|
-
{
|
|
430
|
-
"ref": "https://github.com/BAAI-WuDao/Paper-Article",
|
|
431
|
-
"label": "BAAI WuDao",
|
|
432
|
-
"description": "智源悟道论文",
|
|
433
|
-
"refresh": "1day"
|
|
434
|
-
},
|
|
435
|
-
{
|
|
436
|
-
"ref": "https://flageval.baai.ac.cn/#/news",
|
|
437
|
-
"label": "FlagEval",
|
|
438
|
-
"description": "智源大模型评测",
|
|
439
|
-
"refresh": "1day"
|
|
440
|
-
},
|
|
441
|
-
{
|
|
442
|
-
"ref": "https://deepmind.google/research/",
|
|
443
|
-
"label": "DeepMind Research",
|
|
444
|
-
"description": "DeepMind 研究",
|
|
445
|
-
"refresh": "1day"
|
|
446
|
-
},
|
|
447
|
-
{
|
|
448
|
-
"ref": "https://dataverse.harvard.edu",
|
|
449
|
-
"label": "Harvard Dataverse",
|
|
450
|
-
"description": "哈佛学术数据集",
|
|
451
|
-
"refresh": "1day"
|
|
452
|
-
},
|
|
453
|
-
{
|
|
454
|
-
"ref": "https://datahub.com/blog/",
|
|
455
|
-
"label": "DataHub",
|
|
456
|
-
"description": "数据工程博客",
|
|
457
|
-
"refresh": "1day"
|
|
458
|
-
},
|
|
459
|
-
{
|
|
460
|
-
"ref": "https://damo.alibaba.com/research-areas?language=en",
|
|
461
|
-
"label": "阿里达摩院",
|
|
462
|
-
"description": "阿里巴巴达摩院",
|
|
463
|
-
"refresh": "1day"
|
|
464
|
-
},
|
|
465
|
-
{
|
|
466
|
-
"ref": "https://crfm.stanford.edu",
|
|
467
|
-
"label": "Stanford CRFM",
|
|
468
|
-
"description": "斯坦福基础模型中心",
|
|
469
|
-
"refresh": "1day"
|
|
470
|
-
},
|
|
471
|
-
{
|
|
472
|
-
"ref": "https://brightdata.com/blog",
|
|
473
|
-
"label": "Bright Data",
|
|
474
|
-
"description": "数据采集与代理",
|
|
475
|
-
"refresh": "1day"
|
|
476
|
-
},
|
|
477
|
-
{
|
|
478
|
-
"ref": "https://bbs.huaweicloud.com/blogs",
|
|
479
|
-
"label": "华为云博客",
|
|
480
|
-
"description": "华为云技术博客",
|
|
481
|
-
"refresh": "1day"
|
|
482
|
-
},
|
|
483
|
-
{
|
|
484
|
-
"ref": "https://bair.berkeley.edu/blog/",
|
|
485
|
-
"label": "Berkeley BAIR",
|
|
486
|
-
"description": "伯克利 AI 研究院",
|
|
487
|
-
"refresh": "1day"
|
|
488
|
-
},
|
|
489
|
-
{
|
|
490
|
-
"ref": "https://arena.ai/blog/leaderboard-changelog/",
|
|
491
|
-
"label": "Arena.ai",
|
|
492
|
-
"description": "大模型竞技场更新",
|
|
493
|
-
"refresh": "1day"
|
|
494
|
-
},
|
|
495
|
-
{
|
|
496
|
-
"ref": "https://archive.ics.uci.edu",
|
|
497
|
-
"label": "UCI ML Repository",
|
|
498
|
-
"description": "UCI 机器学习数据集",
|
|
499
|
-
"refresh": "1day"
|
|
500
|
-
},
|
|
501
|
-
{
|
|
502
|
-
"ref": "https://amilabs.ai/research",
|
|
503
|
-
"label": "AMI Labs",
|
|
504
|
-
"description": "AMI 研究院",
|
|
505
|
-
"refresh": "1day"
|
|
506
|
-
},
|
|
507
|
-
{
|
|
508
|
-
"ref": "https://allenai.org",
|
|
509
|
-
"label": "Allen AI",
|
|
510
|
-
"description": "艾伦 AI 研究所",
|
|
511
|
-
"refresh": "1day"
|
|
512
|
-
},
|
|
513
|
-
{
|
|
514
|
-
"ref": "https://aizstar.com/",
|
|
515
|
-
"label": "AIzstar",
|
|
516
|
-
"description": "AI 资讯",
|
|
517
|
-
"refresh": "1h"
|
|
518
|
-
},
|
|
519
|
-
{
|
|
520
|
-
"ref": "https://ailab.tencent.com/ailab/en/paper/",
|
|
521
|
-
"label": "腾讯 AI Lab",
|
|
522
|
-
"description": "腾讯 AI Lab 论文",
|
|
523
|
-
"refresh": "1day"
|
|
524
|
-
},
|
|
525
|
-
{
|
|
526
|
-
"ref": "https://ai.meta.com/results/?content_types%5B0%5D=publication",
|
|
527
|
-
"label": "Meta AI Publications",
|
|
528
|
-
"description": "Meta AI 论文",
|
|
529
|
-
"refresh": "1day"
|
|
530
|
-
},
|
|
531
|
-
{
|
|
532
|
-
"ref": "https://agi-eval.org/evaluation/home",
|
|
533
|
-
"label": "AGI Eval",
|
|
534
|
-
"description": "AGI 评测",
|
|
535
|
-
"refresh": "1day"
|
|
536
|
-
},
|
|
537
|
-
{
|
|
538
|
-
"ref": "http://dev3.noahlab.com.hk/research.html",
|
|
539
|
-
"label": "Noah Lab",
|
|
540
|
-
"description": "香港 Noah 实验室",
|
|
541
|
-
"refresh": "1day"
|
|
542
|
-
},
|
|
543
|
-
{
|
|
544
|
-
"ref": "https://seed.bytedance.com/zh/research",
|
|
545
|
-
"label": "字节种子实验室",
|
|
546
|
-
"description": "字节跳动 AI 研究",
|
|
547
|
-
"refresh": "1day"
|
|
548
|
-
},
|
|
549
|
-
{
|
|
550
|
-
"ref": "lingowhale://articles?app_id=app_91458c33f7ecc4f666edd52fb8333806&app_secret=secret_81f1b8b073298fd7b49f737521be8dbfef93ae86b173b1a34f5e9e810ef927f7",
|
|
551
|
-
"label": "语鲸推荐文章",
|
|
552
|
-
"description": "语鲸推荐文章流",
|
|
553
|
-
"refresh": "1h"
|
|
554
|
-
},
|
|
555
|
-
{
|
|
556
|
-
"ref": "lingowhale://today?app_id=app_91458c33f7ecc4f666edd52fb8333806&app_secret=secret_81f1b8b073298fd7b49f737521be8dbfef93ae86b173b1a34f5e9e810ef927f7",
|
|
557
|
-
"label": "语鲸今日文章",
|
|
558
|
-
"description": "语鲸今日精选",
|
|
559
|
-
"refresh": "1h"
|
|
560
|
-
}
|
|
561
|
-
]
|
|
562
|
-
}
|