x-ai-topic-selector
npx skills add https://github.com/vigorx777/x-ai-topic-selector --skill x-ai-topic-selector
Agent 安装分布
Skill 文档
â ï¸ é»è®¤è¡ä¸º (Default Behavior)
éè¦: å½ç¨æ·ç´æ¥è°ç¨ /x-ai-topic-selector è䏿å®åå½ä»¤æ¶ï¼Agent å¿
é¡»èªå¨å¯å¨ /select-topics ç宿´äº¤äºæµç¨ã
äº¤äºæ¨¡å¼è¦æ±
- â
å¿
须使ç¨:
question()å·¥å · +optionsæ°ç»ï¼çæå¯ç¹å»çé项æé®ï¼ - â ç¦æ¢ä½¿ç¨: ææ¬æç¤º + çå¾ ç¨æ·è¾å ¥ï¼å¦”请è¾å ¥…”ã”ç´æ¥åå¤é项ç¼å·”çï¼
ææåæ°æ¶éå¿
é¡»éè¿ question() å·¥å
·çé项鿩宿ï¼ç¨æ·åªéç¹å»éé¡¹ï¼æ éæå¨è¾å
¥ææ¬ï¼é¤éæ¯èªç±æ ¼å¼è¾å
¥ï¼å¦ API KeyãURL çç¹æ®æ
åµï¼ã
X AI Topic Selector
èªå¨ä» X (Twitter) æåæ¨æï¼éè¿å¤ç»´è¯åï¼æ°æ®ææ + AI åæï¼çæé颿¨èæ¥åã
å½ä»¤
/select-topics
è¿è¡éé¢å·¥å ·ã
ä½¿ç¨æ¹å¼: ç´æ¥è°ç¨ /select-topicsï¼Agent å°éè¿äº¤äºå¼å¼å¯¼æ¶éåæ°ã
åè½è¯´æ:
- æ«ææ¨¡å¼ (Lists/Home): æ¯ææåç±»çéãå¤ç»´è¯åãç²¾éæ¨èã
- ä¹¦ç¾æ¨¡å¼ (Bookmarks): èªå¨æåå ¨é¨ä¹¦ç¾å 容ï¼è¿å ¥ AI æ·±åº¦åææ¨¡å¼ï¼æ è¿æ»¤ï¼ä¿çå ¨é¨ï¼ã
é ç½®æä¹ å
é
ç½®æä»¶è·¯å¾: ~/.x-topic-selector/config.json
Agent 卿§è¡åå¿ é¡»æ£æ¥æ¤æä»¶æ¯å¦åå¨ï¼
- 妿åå¨ï¼è¯»åå¹¶è§£æ JSON
- å¨ Step 1 å询é®ç¨æ·æ¯å¦ä½¿ç¨å·²ä¿åé ç½®
- æ§è¡å®æåä¿åå½åé ç½®å°æ¤æä»¶
é ç½®æä»¶ç»æ:
{
"sourceType": "list|home|bookmarks",
"listUrls": ["https://x.com/i/lists/xxx"],
"scoreMode": "data-only|ai-only",
"aiProvider": "auto|gemini|openai",
"geminiApiKey": "",
"topicCategory": "all",
"maxTweets": 200,
"topN": 10,
"lastUsed": "2025-02-01T12:00:00Z"
}
åæ°åå¡«è§å
ä¸ºäºæå交äºä½éªï¼å½ config.json å卿¶ï¼Agent åºéµå¾ªä»¥ä¸åå¡«è§åï¼
- åéç±»: å¨å¯¹åºçé项
labelåæ·»å(䏿¬¡éæ©)æ è®°ã - èªå®ä¹æ°å¼: 妿䏿¬¡ä½¿ç¨çæ¯èªå®ä¹æ°å¼ï¼ä¸å¨é¢è®¾é项ä¸ï¼ï¼åºå¨ææ·»å ä¸ä¸ªæ°é项ã
- API Key: 妿已ä¿åä¸ç¨æ·éæ© AI 模å¼ï¼èªå¨å¤ç¨ï¼æ é忬¡è¾å ¥ã
- å表 URL: å¨
questionææ¬ä¸å å«ð 䏿¬¡ä½¿ç¨: <value>ï¼å¹¶å¨optionsä¸å°è¯¥å¼ä½ä¸ºç¬¬ä¸ä¸ªé项æä¾ã
äº¤äºæµç¨
å½ç¨æ·è§¦å /select-topics å½ä»¤åï¼Agent å¿
é¡»æä»¥ä¸æ¥éª¤ä½¿ç¨ question() å·¥å
·å¼å¯¼ç¨æ·ï¼
Step 0: æ£æ¥å·²ä¿åé ç½®
å¿
é¡»æ§è¡: Agent å
æ£æ¥ ~/.x-topic-selector/config.json æ¯å¦åå¨
cat ~/.x-topic-selector/config.json 2>/dev/null || echo "NO_CONFIG"
妿é ç½®åå¨ï¼è¿å ¥ Step 0bï¼å¦åè·³å° Step 1ã
Step 0b: è¯¢é®æ¯å¦ä½¿ç¨å·²ä¿åé ç½®
å¦ææ£æµå°å·²ä¿åé
ç½®ï¼ä½¿ç¨ question() 询é®ï¼
question({
questions: [{
header: "使ç¨å·²ä¿åé
ç½®",
question: "æ£æµå°ä¸æ¬¡ä½¿ç¨çé
ç½®ï¼\n\n⢠å
å®¹æ¥æº: ${config.sourceType || 'list'}\n⢠å表 URL: ${config.listUrls.join(', ')}\n⢠è¯å模å¼: ${config.sourceType === 'bookmarks' ? 'AI å
¨éåæ (ä¹¦ç¾æ¨¡å¼èªå¨åºç¨)' : (config.scoreMode === 'ai-only' ? 'AI åæ' : 'æ°æ®åæ')}\nâ¢ æ«ææ°é: ${config.maxTweets}\n⢠æ¨èæ°é: ${config.sourceType === 'bookmarks' ? 'å
¨éæå' : config.topN}\n\nè¯·éæ©æä½ï¼",
options: [
{ label: "使ç¨ä¸æ¬¡é
ç½®ç´æ¥è¿è¡ (Recommended)", description: "ä½¿ç¨ææå·²ä¿åçåæ°ç«å³å¼å§" },
{ label: "éæ°é
ç½®å
¨é¨", description: "ä»å¤´å¼å§é
ç½®ææåæ°" }
]
}]
})
å¤çé»è¾:
- “使ç¨ä¸æ¬¡é ç½®ç´æ¥è¿è¡” â è·³å° Step 3 æ§è¡
- “éæ°é ç½®å ¨é¨” â ä» Step 1 å¼å§å®æ´æµç¨
Step 1: æ¬¢è¿ + ç»å½æç¤º
é¦å æ¾ç¤ºæ¬¢è¿ä¿¡æ¯åéè¦æç¤ºï¼
ð X AI éé¢å©æ
ç±å
¬ä¼å·ãæç¹å¿AIãå¼åç»´æ¤ï¼å¦æé®é¢æå»ºè®®æ¬¢è¿å
³æ³¨å
¬ä¼å·åé¦ã
å¨å¼å§ä¹åï¼è¯·ç¡®ä¿ï¼
â
å·²å®è£
Google Chrome æµè§å¨
â
å·²å¨ Chrome ä¸ç»å½æ¨ç X (Twitter) è´¦å·
馿¬¡è¿è¡æ¶ï¼èæ¬ä¼æå¼ Chrome çªå£ï¼è¯·å¨çªå£ä¸å®æç»å½ï¼ç»å½ç¶æä¼è¢«ä¿åï¼ã
Step 2: 䏿¬¡æ§æ¶éææåæ°
æ ¸å¿è®¾è®¡: å°ææåæ°æ¾å¨å次 question() è°ç¨ä¸ã
ä½¿ç¨ question() å·¥å
·ä¸æ¬¡æ§è¯¢é®ææåæ°ï¼
question({
questions: [
// Q1: å
å®¹æ¥æº
{
header: "å
å®¹æ¥æº",
question: "è¯·éæ©è¦æ«æçå
å®¹æ¥æº",
options: [
{ label: `X å表 (List)${config?.sourceType === 'list' ? ' (䏿¬¡éæ©)' : ''}`, description: "æ«ææå®ç Twitter å表ï¼éæ©åéè¦è¾å
¥å表 URL" },
{ label: `æ¨è (For You)${config?.sourceType === 'home' ? ' (䏿¬¡éæ©)' : ''}`, description: "æ«æ X æ¨èçå
容" },
{ label: `ä¹¦ç¾ (Bookmarks)${config?.sourceType === 'bookmarks' ? ' (䏿¬¡éæ©)' : ''}`, description: "æ«æä½ æ¶èçæ¨æï¼èªå¨è¿å
¥ AI æ·±åº¦åææ¨¡å¼ï¼å
¨éæåï¼" }
]
},
// Q2: è¯åæ¨¡å¼ (ä»
éä¹¦ç¾æ¨¡å¼)
{
header: "è¯å模å¼",
question: "è¯·éæ©éé¢è¯åæ¨¡å¼ (ä¹¦ç¾æ¨¡å¼ä¸èªå¨ä½¿ç¨ AI åæ)",
options: [
{ label: `æ°æ®åææ¨¡å¼ (Recommended)${config?.scoreMode === 'data-only' ? ' (䏿¬¡éæ©)' : ''}`, description: "åºäºäºå¨æ°æ®è¯åï¼æ é API Key" },
{ label: `AI åææ¨¡å¼${config?.scoreMode === 'ai-only' ? ' (䏿¬¡éæ©)' : ''}`, description: "åºäº AI å
容åæï¼éè¦ Gemini API Key" }
]
},
// Q2b: AI æå¡å (ä»
AI åææ¨¡å¼æä¹¦ç¾æ¨¡å¼)
{
header: "AI æå¡å",
question: "è¯·éæ© AI åæä½¿ç¨çæå¡åï¼ä¹¦ç¾æ¨¡å¼åæ ·éç¨ï¼",
options: [
{ label: `èªå¨æ£æµ (Recommended)${config?.aiProvider === 'auto' || !config?.aiProvider ? ' (䏿¬¡éæ©)' : ''}`, description: "æä¼å
级èªå¨éæ©ï¼Gemini â OpenAI å
¼å®¹æ¥å£" },
{ label: `Gemini${config?.aiProvider === 'gemini' ? ' (䏿¬¡éæ©)' : ''}`, description: "ä½¿ç¨ Google Gemini APIï¼éè¦ GEMINI_API_KEYï¼" },
{ label: `OpenAI å
¼å®¹${config?.aiProvider === 'openai' ? ' (䏿¬¡éæ©)' : ''}`, description: "ä½¿ç¨ OpenAI å
¼å®¹æ¥å£ï¼éè¦ OPENAI_API_KEY + OPENAI_MODELï¼å¦ DeepSeek" }
]
},
// Q3: éé¢èå´ (ä»
éä¹¦ç¾æ¨¡å¼)
{
header: "éé¢èå´",
question: "è¯·éæ©è¦å
³æ³¨çéé¢èå´ (ä¹¦ç¾æ¨¡å¼ä¸å°åæå
¨é¨å
容)",
options: [
{ label: `ä¸é (Recommended)${config?.topicCategory === 'all' ? ' (䏿¬¡éæ©)' : ''}`, description: "æ¾ç¤ºææç±»åçéé¢" },
{ label: `AI å·¥å
·/产ååå¸${config?.topicCategory === 'ai-tools' ? ' (䏿¬¡éæ©)' : ''}`, description: "æ°å·¥å
·ãæ°åè½ãäº§åæ´æ°" },
{ label: `è¡ä¸æ°é»/卿${config?.topicCategory === 'industry-news' ? ' (䏿¬¡éæ©)' : ''}`, description: "å
¬å¸å¨æãèèµãå¹¶è´ç" },
{ label: `ææ¯çªç ´/论æ${config?.topicCategory === 'tech-breakthroughs' ? ' (䏿¬¡éæ©)' : ''}`, description: "æ°ç ç©¶ãææ¯åæ°" },
{ label: `æç¨/å®ç¨æå·§${config?.topicCategory === 'tutorials' ? ' (䏿¬¡éæ©)' : ''}`, description: "ä½¿ç¨æåãæä½³å®è·µ" },
{ label: `äºè®®/讨论è¯é¢${config?.topicCategory === 'controversial' ? ' (䏿¬¡éæ©)' : ''}`, description: "è¡ä¸äºè®ºãçç¹è®¨è®º" }
]
},
// Q4: æ«ææ°é
{
header: "æ«ææ°é",
question: "è¯·éæ©è¦æ«æçæ¨ææ°é",
options: [
{ label: `100 æ¡${config?.maxTweets === 100 ? ' (䏿¬¡éæ©)' : ''}`, description: "å¿«éæ«æ" },
{ label: `200 æ¡ (Recommended)${config?.maxTweets === 200 ? ' (䏿¬¡éæ©)' : ''}`, description: "æ åæ«æ" },
{ label: `500 æ¡${config?.maxTweets === 500 ? ' (䏿¬¡éæ©)' : ''}`, description: "æ·±åº¦æ«æ" }
]
},
// Q5: æ¨èæ¡æ° (ä»
éä¹¦ç¾æ¨¡å¼)
{
header: "æ¨èæ¡æ°",
question: "è¯·éæ©è¦æ¨èçé颿°é (ä¹¦ç¾æ¨¡å¼ä¸å°æåå
¨é¨)",
options: [
{ label: `5 æ¡${config?.topN === 5 ? ' (䏿¬¡éæ©)' : ''}`, description: "ç²¾éæ¨è" },
{ label: `10 æ¡ (Recommended)${config?.topN === 10 ? ' (䏿¬¡éæ©)' : ''}`, description: "æ 忍è" },
{ label: `20 æ¡${config?.topN === 20 ? ' (䏿¬¡éæ©)' : ''}`, description: "æ©å±æ¨è" }
]
}
]
})
è·¯ç±é»è¾:
- å¦æç¨æ·éæ© “ä¹¦ç¾ (Bookmarks)”: ä»
æ¶é “æ«ææ°é”ãèªå¨è®¾ç½®
scoreMode = ai-onlyï¼å¿½ç¥éé¢èå´åæ¨èæ¡æ°ï¼å ¨éæåï¼ã - å¦æç¨æ·éæ© “X å表” æ “æ¨è”: æ§è¡å®æ´åæ°æ¶éæµç¨ã
AI æå¡åè·¯ç±é»è¾:
- å¦æç¨æ·éæ© “èªå¨æ£æµ”: ä¸ä¼
--ai-provideråæ°ï¼èæ¬èªå¨æä¼å çº§æ£æµå¯ç¨ç API Keyã - å¦æç¨æ·éæ© “Gemini”: ä¼
--ai-provider geminiã - å¦æç¨æ·éæ© “OpenAI å
¼å®¹”: ä¼
--ai-provider openaiã - å¦æç¨æ·éæ© “æ°æ®åææ¨¡å¼” ä¸éä¹¦ç¾æ¥æº: AI æå¡åéæ©å¯å¿½ç¥ï¼ä¸ä½¿ç¨ AIï¼ã
A. 已移é¤ä¹¦ç¾æ¨¡å¼ç¬ç«æµç¨ (å·²åå¹¶å° Step 2)
Step 2 ç°å¨ä¸æ¬¡æ§æ¶éææåæ°ã妿 Source = Bookmarksï¼èæ¬ä¼èªå¨å¿½ç¥è¯å模å¼åæ¨èæ¡æ°çåæ°ã
B. æ«æè¿æ»¤æ¨¡å¼æµç¨ (å·²åå¹¶å° Step 2)
Step 2b: æ¡ä»¶æ§è¡¥å æ¶é
æ ¹æ® Step 2 çéæ©ç»æï¼å¯è½éè¦è¡¥å æ¶é以ä¸ä¿¡æ¯ï¼
å¦æéæ©äº “X å表 (List)”
éè¦ç»§ç»è¯¢é®å表 URLï¼
question({
questions: [{
header: "X å表 URL",
question: "请è¾å
¥è¦æ«æç X å表 URL å°åï¼æ¯æå¤ä¸ªï¼ç¨éå·åéï¼\n\nç¤ºä¾æ ¼å¼ï¼https://x.com/i/lists/1234567890\n\nð¡ æ¨èå°è¯ä½¿ç¨ãAI ç²¾éãå表ï¼å¯è·åé«è´¨é AI é¢åå
容ã${config?.listUrls?.[0] ? `\n\nð 䏿¬¡ä½¿ç¨: ${config.listUrls.join(', ')}` : ''}",
options: [
...(config?.listUrls?.[0] ? [{ label: config.listUrls.join(', '), description: "å¤ç¨ä¸æ¬¡è¾å
¥ç URL" }] : []),
{ label: "https://x.com/i/lists/2021198996157710621", description: "ãAI ç²¾éãæ¨èå表 â ä¼è´¨ AI å
容æº" }
]
}]
})
妿è¿å ¥äº “ä¹¦ç¾æ¨¡å¼” æéæ©äº “AI åææ¨¡å¼”
æ ¹æ®ç¨æ·éæ©ç AI æå¡åï¼æ£æ¥å¯¹åºç API Key åç¯å¢åéï¼
å¦æç¨æ·éæ© “Gemini” æ “èªå¨æ£æµ”
å¿ é¡»æ£æ¥ Gemini API Keyï¼
question({
questions: [{
header: "Gemini API Key",
question: "ä¹¦ç¾æ¨¡å¼å AI 模å¼éè¦ Gemini API Key\n\nè·åæ¹å¼ï¼è®¿é® https://aistudio.google.com/apikey å建 API Key${config?.geminiApiKey ? '\n\nð æ£æµå°å·²ä¿åç API Keyï¼å¯ç´æ¥å¤ç¨' : ''}",
options: config?.geminiApiKey ? [{ label: "使ç¨å·²ä¿åç API Key", description: "å¤ç¨ä¸æ¬¡ä¿åç Gemini API Key" }] : []
}]
})
注æ: 妿 config.geminiApiKey å·²åå¨ï¼è·³è¿æ¤æ¥éª¤ï¼ç´æ¥ä½¿ç¨å·²ä¿åç Keyã
å¦æç¨æ·éæ© “OpenAI å ¼å®¹”
å¿ é¡»æ£æ¥ OpenAI ç¸å ³ç¯å¢åéï¼
OPENAI_API_KEYï¼å¿ éï¼â OpenAI å ¼å®¹æ¥å£ç API KeyOPENAI_API_BASEï¼å¯éï¼â èªå®ä¹ API 端ç¹ï¼å¦ DeepSeek:https://api.deepseek.com/v1ï¼OPENAI_MODELï¼å¿ éï¼â 模ååç§°ï¼å¦deepseek-chatãgpt-4oï¼
question({
questions: [{
header: "OpenAI API Key",
question: "OpenAI å
¼å®¹æ¨¡å¼éè¦è®¾ç½®ç¯å¢åéï¼\n\n⢠OPENAI_API_KEYï¼å¿
éï¼\n⢠OPENAI_MODELï¼å¿
éï¼å¦ deepseek-chatï¼\n⢠OPENAI_API_BASEï¼å¯éï¼èªå®ä¹ç«¯ç¹ï¼\n\n请确认ç¯å¢åéå·²è®¾ç½®ï¼æå¨æ¤è¾å
¥ OPENAI_API_KEY",
options: [
{ label: "ç¯å¢åé已设置", description: "å·²éè¿ export 设置 OPENAI_API_KEY å OPENAI_MODEL" }
]
}]
})
注æ: 模åéæ©ï¼OPENAI_MODELï¼ä»
éè¿ç¯å¢åéé
ç½®ï¼ä¸å¨äº¤äºæµç¨ä¸è¯¢é®ã
å¦æç¨æ·éæ© “èªå¨æ£æµ”
Agent æä»¥ä¸ä¼å çº§æ£æ¥å¯ç¨ç API Keyï¼
- æ£æ¥
GEMINI_API_KEYç¯å¢åéæconfig.geminiApiKey - æ£æ¥
OPENAI_API_KEYç¯å¢åé - 妿é½ä¸å¯ç¨ï¼æç¤ºç¨æ·é ç½®è³å°ä¸ä¸ª
Step 3: æ§è¡èæ¬
æ¶é宿æåæ°åï¼Agent æå»ºå¹¶æ§è¡å½ä»¤ï¼
# ç¡®ä¿è¾åºç®å½åå¨
mkdir -p ./output
# 设置ç¯å¢åéï¼æ ¹æ® AI æå¡åéæ©ï¼
export GEMINI_API_KEY="ç¨æ·æä¾çkey" # Gemini æèªå¨æ£æµæ¨¡å¼
# export OPENAI_API_KEY="ç¨æ·æä¾çkey" # OpenAI å
¼å®¹æ¨¡å¼
# export OPENAI_MODEL="deepseek-chat" # OpenAI å
¼å®¹æ¨¡å¼ï¼å¿
éï¼
# export OPENAI_API_BASE="https://api.deepseek.com/v1" # OpenAI å
¼å®¹æ¨¡å¼ï¼å¯éï¼
# æ§è¡èæ¬ (Source = List/Home)
bun run ${SKILL_DIR}/scripts/x-topic-selector.ts \
"URL" \
--score-mode <mode> \
--ai-provider <provider> \
--max-tweets <count> \
--topic-category <category> \
--top-n <n> \
--output ./output/topic-report-{timestamp}.md
# æ§è¡èæ¬ (Source = Bookmarks)
bun run ${SKILL_DIR}/scripts/x-topic-selector.ts \
"https://x.com/i/bookmarks" \
--digest \
--ai-provider <provider> \
--max-tweets <count> \
--output ./output/topic-report-{timestamp}.md
Step 3b: ä¿åé ç½®
æ§è¡æååï¼å¿ é¡»ä¿åé ç½®ä»¥ä¾¿ä¸æ¬¡å¤ç¨ï¼
cat > ~/.x-topic-selector/config.json << 'EOF'
{
"sourceType": "list|home|bookmarks",
"listUrls": ["URL"],
"scoreMode": "data-only|ai-only",
"geminiApiKey": "KEY",
"topicCategory": "all",
"maxTweets": count,
"topN": n,
"lastUsed": "ISO_TIMESTAMP"
}
EOF
Step 4: ç»æå±ç¤º
æ§è¡å®æåï¼åç¨æ·å±ç¤ºç»æã对äºä¹¦ç¾æ¨¡å¼ï¼å±ç¤ºå 容å å«ï¼
- ð æ¥æ¥æä»¶è·¯å¾
- ð 仿¥çç¹é¢è§
- ð å¿ è¯» Top 3 æ é¢
- ð¡ éé¢æè·¯æ°é
èæ¬ç®å½
… (å 容åå)
åæ°æ å°
… (å 容åå)
ç¯å¢è¦æ±
… (å 容åå)
Thread èªå¨å±å¼
… (å 容åå)
æ éæé¤
… (å 容åå)
èæ¬ç®å½
éè¦: ææèæ¬ä½äºæ¤ skill ç scripts/ åç®å½ã
Agent æ§è¡è¯´æ:
- ç¡®å®æ¤ SKILL.md æä»¶çç®å½è·¯å¾ä¸º
SKILL_DIR - èæ¬è·¯å¾ =
${SKILL_DIR}/scripts/<script-name>.ts - å°æ¬ææ¡£ä¸ææ
${SKILL_DIR}æ¿æ¢ä¸ºå®é è·¯å¾
| èæ¬ | ç¨é |
|---|---|
scripts/x-topic-selector.ts |
ä¸»èæ¬ – æåãè¯åãçææ¥å |
scripts/ai-scorer.ts |
Gemini API éæï¼AI è¯å |
scripts/report-generator.ts |
Markdown æ¥åçæ |
scripts/x-utils.ts |
Chrome CDP å·¥å ·å½æ° |
åæ°æ å°
| 交äºé项 | èæ¬åæ° |
|---|---|
| æ°æ®åææ¨¡å¼ | --score-mode data-only |
| AI åææ¨¡å¼ | --score-mode ai-only |
| èªå¨æ£æµ (AI æå¡å) | (ä¸ä¼ --ai-provider åæ°) |
| Gemini | --ai-provider gemini |
| OpenAI å ¼å®¹ | --ai-provider openai |
| AI å·¥å ·/产ååå¸ | --topic-category ai-tools |
| è¡ä¸æ°é»/卿 | --topic-category industry-news |
| ææ¯çªç ´/论æ | --topic-category tech-breakthroughs |
| æç¨/å®ç¨æå·§ | --topic-category tutorials |
| äºè®®/讨论è¯é¢ | --topic-category controversial |
| ä¸é | --topic-category all |
| 100 æ¡ | --max-tweets 100 |
| 200 æ¡ | --max-tweets 200 |
| 500 æ¡ | --max-tweets 500 |
| 5 æ¡ | --top-n 5 |
| 10 æ¡ | --top-n 10 |
| 20 æ¡ | --top-n 20 |
ç¯å¢è¦æ±
- Google Chrome æ Chromium æµè§å¨
bunè¿è¡æ¶- GEMINI_API_KEY ç¯å¢åéï¼Gemini æ¨¡å¼æèªå¨æ£æµæ¨¡å¼éè¦ï¼
- GEMINI_MODEL ç¯å¢åéï¼å¯éï¼é»è®¤
gemini-2.0-flashï¼å¯è®¾ç½®ä¸ºgemini-1.5-proçï¼ - OPENAI_API_KEY ç¯å¢åéï¼OpenAI å ¼å®¹æ¨¡å¼éè¦ï¼
- OPENAI_MODEL ç¯å¢åéï¼OpenAI å
¼å®¹æ¨¡å¼å¿
éï¼å¦
deepseek-chatãgpt-4oï¼ - OPENAI_API_BASE ç¯å¢åéï¼OpenAI å ¼å®¹æ¨¡å¼å¯éï¼èªå®ä¹ API 端ç¹ï¼
æ©å±é ç½® (EXTEND.md)
æ¯æå¨ç¨æ·é¡¹ç®ç®å½ä¸å建 EXTEND.md æä»¶è¿è¡é»è®¤é
ç½®ï¼
## x-ai-topic-selector
- keywords: AI,GPT,Claude,LLM,Machine Learning
- exclude: giveaway,airdrop,crypto,nft
- top-n: 10
- translate: true
Thread èªå¨å±å¼
èæ¬ä¼èªå¨æ£æµå¹¶å±å¼ Threadï¼å¸å串ï¼ï¼è·å宿´å 容èéä» é¦è´´ã
å·¥ä½åçï¼
- 对äºéè½¬åæ¨æï¼èæ¬ä¼å¯¼èªå°è¯¦æ é¡µæ£æ¥æ¯å¦ä¸º Thread
- å¦ææ¯ Threadï¼æååä¸ä½è çææè¿ç»æ¨æå 容
- å¤ä¸ªé¨åç¨
---åéåå¹¶ä¸ºä¸æ¡è®°å½
æ¥åæ¾ç¤ºï¼
- Thread å¸å卿¥åä¸ä¼æ¾ç¤º
ð Thread (N æ¡)æ è¯ - Thread æ´ä½ç®ä½ 1 æ¡å¸åï¼ä¸éå¤è®¡æ°
- äºå¨æ°æ®ä½¿ç¨ Thread é¦è´´çæ°æ®
注æäºé¡¹ï¼
- Thread å±å¼ä¼å¢å å°éæåæ¶é´ï¼æ¯æ¡çº¦ 3 ç§ï¼
- 妿å±å¼å¤±è´¥ï¼ä¼èªå¨åéå°ä» 使ç¨é¦è´´å 容
æ éæé¤
“Chrome not found”
设置 X_BROWSER_CHROME_PATH ç¯å¢åéæå Chrome 坿§è¡æä»¶è·¯å¾ã
“Please log in to X”
馿¬¡è¿è¡æ¶ï¼èæ¬ä¼æå¼ Chrome çªå£çå¾ ç»å½ã请å¨çªå£ä¸æå¨ç»å½ X è´¦å·ã
“GEMINI_API_KEY not set”
Gemini æ¨¡å¼æèªå¨æ£æµæ¨¡å¼éè¦è®¾ç½® Gemini API Keyï¼å¯ä»¥éè¿äº¤äºæµç¨æä¾ã
“OPENAI_API_KEY not set” æ “OPENAI_MODEL not set”
OpenAI å ¼å®¹æ¨¡å¼éè¦è®¾ç½®ä»¥ä¸ç¯å¢åéï¼
export OPENAI_API_KEY="your-api-key"export OPENAI_MODEL="deepseek-chat"ï¼å¿ éï¼export OPENAI_API_BASE="https://api.deepseek.com/v1"ï¼å¯éï¼èªå®ä¹ç«¯ç¹ï¼
å¦æä½¿ç¨èªå¨æ£æµæ¨¡å¼ï¼--ai-provider æªæå®ï¼ï¼éè¦è³å°é
ç½® Gemini æ OpenAI å
¶ä¸ä¹ä¸ã
“No tweets found”
- æ£æ¥å表 URL æ¯å¦æ£ç¡®
- ç¡®ä¿å·²å¨ Chrome profile ä¸ç»å½ X
- å表å¯è½æ¯ç§æçæä¸ºç©º