@luoyi-dsh/instagram-scroll 1.0.0 → 1.0.3
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/README.md +202 -158
- package/README.zh-Hant.md +204 -0
- package/client.js +282 -40
- package/cordis.patch.yml +1 -1
- package/dist/config.d.ts +10 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +120 -8
- package/dist/config.js.map +1 -1
- package/dist/core/scrollDuty.d.ts +30 -1
- package/dist/core/scrollDuty.d.ts.map +1 -1
- package/dist/core/scrollDuty.js +353 -63
- package/dist/core/scrollDuty.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +23 -9
- package/dist/index.js.map +1 -1
- package/dist/lib/ledger.d.ts +7 -0
- package/dist/lib/ledger.d.ts.map +1 -1
- package/dist/lib/ledger.js +29 -6
- package/dist/lib/ledger.js.map +1 -1
- package/package.json +2 -1
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;GAEG;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
* 就在該貼文底下留一條評論「@主人 + 推薦原因」,並記錄至今日日報。
|
|
8
8
|
* ============================================================================
|
|
9
9
|
*/
|
|
10
|
-
import type { InstagramMcpClient } from '@luoyi-dsh/instagram-mcp';
|
|
10
|
+
import type { InstagramMcpClient, InstagramPost } from '@luoyi-dsh/instagram-mcp';
|
|
11
11
|
import { InstagramScrollConfig } from '../config.js';
|
|
12
12
|
import { ScrollLedgerManager } from '../lib/ledger.js';
|
|
13
13
|
export interface ScrollRoundResult {
|
|
@@ -22,8 +22,37 @@ export interface ScrollRoundResult {
|
|
|
22
22
|
url: string;
|
|
23
23
|
score: number;
|
|
24
24
|
comment: string;
|
|
25
|
+
reason: string;
|
|
25
26
|
}>;
|
|
26
27
|
message: string;
|
|
27
28
|
}
|
|
29
|
+
export interface ParsedPostContent {
|
|
30
|
+
rawCaption: string;
|
|
31
|
+
cleanBody: string;
|
|
32
|
+
hashtags: string[];
|
|
33
|
+
mentions: string[];
|
|
34
|
+
tagCount: number;
|
|
35
|
+
tagCharLength: number;
|
|
36
|
+
cleanLength: number;
|
|
37
|
+
isTagSpam: boolean;
|
|
38
|
+
}
|
|
39
|
+
export interface EvaluationResult {
|
|
40
|
+
isWorthy: boolean;
|
|
41
|
+
score: number;
|
|
42
|
+
reason: string;
|
|
43
|
+
commentText: string;
|
|
44
|
+
rejectionReason?: string;
|
|
45
|
+
reviewMethod: 'llm' | 'heuristic';
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* 正文解析與標籤分離器
|
|
49
|
+
* 徹底區分貼文真正的正文內容與文末堆砌的標籤 (防止標籤農場誤導)
|
|
50
|
+
*/
|
|
51
|
+
export declare function parsePostContent(caption?: string): ParsedPostContent;
|
|
52
|
+
/**
|
|
53
|
+
* 嚴密的高精度內容檢驗引擎 (Content Inspection Pipeline)
|
|
54
|
+
* 解決痛點:「不要隨便推薦、要依據用戶喜歡內容、@ 前要檢查貼文內容、不要只看 tag」
|
|
55
|
+
*/
|
|
56
|
+
export declare function inspectAndEvaluatePost(ctx: any, post: InstagramPost, config: InstagramScrollConfig): Promise<EvaluationResult>;
|
|
28
57
|
export declare function executeScrollRound(ctx: any, config: InstagramScrollConfig, mcp: InstagramMcpClient, ledger: ScrollLedgerManager, log?: (msg: string) => void): Promise<ScrollRoundResult>;
|
|
29
58
|
//# sourceMappingURL=scrollDuty.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scrollDuty.d.ts","sourceRoot":"","sources":["../../src/core/scrollDuty.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,kBAAkB,
|
|
1
|
+
{"version":3,"file":"scrollDuty.d.ts","sourceRoot":"","sources":["../../src/core/scrollDuty.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAA;AACjF,OAAO,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAA;AACpD,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAA;AAEtD,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,OAAO,CAAA;IACX,YAAY,EAAE,MAAM,CAAA;IACpB,WAAW,EAAE,MAAM,CAAA;IACnB,gBAAgB,EAAE,MAAM,CAAA;IACxB,eAAe,EAAE,KAAK,CAAC;QACrB,MAAM,EAAE,MAAM,CAAA;QACd,IAAI,EAAE,MAAM,CAAA;QACZ,MAAM,EAAE,MAAM,CAAA;QACd,GAAG,EAAE,MAAM,CAAA;QACX,KAAK,EAAE,MAAM,CAAA;QACb,OAAO,EAAE,MAAM,CAAA;QACf,MAAM,EAAE,MAAM,CAAA;KACf,CAAC,CAAA;IACF,OAAO,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,WAAW,iBAAiB;IAChC,UAAU,EAAE,MAAM,CAAA;IAClB,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,EAAE,MAAM,EAAE,CAAA;IAClB,QAAQ,EAAE,MAAM,EAAE,CAAA;IAClB,QAAQ,EAAE,MAAM,CAAA;IAChB,aAAa,EAAE,MAAM,CAAA;IACrB,WAAW,EAAE,MAAM,CAAA;IACnB,SAAS,EAAE,OAAO,CAAA;CACnB;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,OAAO,CAAA;IACjB,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;IACd,WAAW,EAAE,MAAM,CAAA;IACnB,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,YAAY,EAAE,KAAK,GAAG,WAAW,CAAA;CAClC;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,GAAE,MAAW,GAAG,iBAAiB,CAkCxE;AAqED;;;GAGG;AACH,wBAAsB,sBAAsB,CAC1C,GAAG,EAAE,GAAG,EACR,IAAI,EAAE,aAAa,EACnB,MAAM,EAAE,qBAAqB,GAC5B,OAAO,CAAC,gBAAgB,CAAC,CAoM3B;AAED,wBAAsB,kBAAkB,CACtC,GAAG,EAAE,GAAG,EACR,MAAM,EAAE,qBAAqB,EAC7B,GAAG,EAAE,kBAAkB,EACvB,MAAM,EAAE,mBAAmB,EAC3B,GAAG,GAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAkB,GACvC,OAAO,CAAC,iBAAiB,CAAC,CA4M5B"}
|
package/dist/core/scrollDuty.js
CHANGED
|
@@ -8,76 +8,316 @@
|
|
|
8
8
|
* ============================================================================
|
|
9
9
|
*/
|
|
10
10
|
/**
|
|
11
|
-
*
|
|
12
|
-
*
|
|
11
|
+
* 正文解析與標籤分離器
|
|
12
|
+
* 徹底區分貼文真正的正文內容與文末堆砌的標籤 (防止標籤農場誤導)
|
|
13
13
|
*/
|
|
14
|
-
function
|
|
15
|
-
const
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
14
|
+
export function parsePostContent(caption = '') {
|
|
15
|
+
const rawCaption = String(caption || '').trim();
|
|
16
|
+
// 提取所有 hashtag 與 mention
|
|
17
|
+
const hashtags = (rawCaption.match(/#[\p{L}\p{N}_]+/gu) || []).map((t) => t.slice(1).toLowerCase());
|
|
18
|
+
const mentions = (rawCaption.match(/@[\p{L}\p{N}._]+/gu) || []).map((m) => m.slice(1));
|
|
19
|
+
// 移除所有 #tag 與 @mention,整理出真正的正文文字
|
|
20
|
+
let cleanBody = rawCaption
|
|
21
|
+
.replace(/#[\p{L}\p{N}_]+/gu, ' ')
|
|
22
|
+
.replace(/@[\p{L}\p{N}._]+/gu, ' ')
|
|
23
|
+
.replace(/[ \t]+/g, ' ')
|
|
24
|
+
.replace(/\n\s*\n+/g, '\n')
|
|
25
|
+
.trim();
|
|
26
|
+
const cleanLength = cleanBody.length;
|
|
27
|
+
const tagCount = hashtags.length;
|
|
28
|
+
const tagCharLength = hashtags.reduce((acc, tag) => acc + tag.length, 0);
|
|
29
|
+
// 判定是否為標籤農場 (Hashtag Spam):
|
|
30
|
+
// 1. 標籤數量超過 12 個
|
|
31
|
+
// 2. 標籤總長度超越正文長度且正文字數小於 40 字
|
|
32
|
+
const isTagSpam = tagCount > 12 || (tagCount >= 6 && tagCharLength > cleanLength && cleanLength < 40);
|
|
33
|
+
return {
|
|
34
|
+
rawCaption,
|
|
35
|
+
cleanBody,
|
|
36
|
+
hashtags,
|
|
37
|
+
mentions,
|
|
38
|
+
tagCount,
|
|
39
|
+
tagCharLength,
|
|
40
|
+
cleanLength,
|
|
41
|
+
isTagSpam,
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* 調用宿主 LLM 或環境變數中的 DeepSeek / OpenAI 服務進行深度語義內容審查
|
|
46
|
+
*/
|
|
47
|
+
async function callLlmInference(ctx, systemPrompt, userPrompt) {
|
|
48
|
+
// 1. 優先嘗試 DSH 宿主注入的 LLM 服務
|
|
49
|
+
const llm = (typeof ctx?.get === 'function' ? ctx.get('llm') : null) || ctx?.llm;
|
|
50
|
+
if (llm) {
|
|
51
|
+
try {
|
|
52
|
+
if (typeof llm.chat === 'function') {
|
|
53
|
+
const res = await llm.chat({
|
|
54
|
+
messages: [
|
|
55
|
+
{ role: 'system', content: systemPrompt },
|
|
56
|
+
{ role: 'user', content: userPrompt },
|
|
57
|
+
],
|
|
58
|
+
temperature: 0.3,
|
|
59
|
+
});
|
|
60
|
+
const reply = res?.content || res?.text || (typeof res === 'string' ? res : '');
|
|
61
|
+
if (reply)
|
|
62
|
+
return reply;
|
|
63
|
+
}
|
|
64
|
+
if (typeof llm.complete === 'function') {
|
|
65
|
+
const reply = await llm.complete(`${systemPrompt}\n\n${userPrompt}`);
|
|
66
|
+
if (reply)
|
|
67
|
+
return reply;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
catch (e) {
|
|
71
|
+
console.warn(`[ScrollDuty LLM] 宿主 ctx.llm 調用異常: ${e.message}`);
|
|
25
72
|
}
|
|
26
73
|
}
|
|
27
|
-
// 2.
|
|
28
|
-
const
|
|
29
|
-
const
|
|
30
|
-
if (
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
74
|
+
// 2. 檢查備援環境變數 (DeepSeek / OpenAI)
|
|
75
|
+
const apiKey = process.env.DEEPSEEK_API_KEY || process.env.OPENAI_API_KEY;
|
|
76
|
+
const baseUrl = process.env.DEEPSEEK_API_BASE || process.env.OPENAI_BASE_URL || 'https://api.deepseek.com';
|
|
77
|
+
if (apiKey) {
|
|
78
|
+
try {
|
|
79
|
+
const resp = await fetch(`${baseUrl}/chat/completions`, {
|
|
80
|
+
method: 'POST',
|
|
81
|
+
headers: {
|
|
82
|
+
'Content-Type': 'application/json',
|
|
83
|
+
Authorization: `Bearer ${apiKey}`,
|
|
84
|
+
},
|
|
85
|
+
body: JSON.stringify({
|
|
86
|
+
model: process.env.DEEPSEEK_MODEL || 'deepseek-chat',
|
|
87
|
+
messages: [
|
|
88
|
+
{ role: 'system', content: systemPrompt },
|
|
89
|
+
{ role: 'user', content: userPrompt },
|
|
90
|
+
],
|
|
91
|
+
temperature: 0.3,
|
|
92
|
+
response_format: { type: 'json_object' },
|
|
93
|
+
}),
|
|
94
|
+
});
|
|
95
|
+
if (resp.ok) {
|
|
96
|
+
const data = (await resp.json());
|
|
97
|
+
return data.choices?.[0]?.message?.content || null;
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
catch (err) {
|
|
101
|
+
console.warn(`[ScrollDuty LLM] 外部 API 調用異常: ${err.message}`);
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
return null;
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* 嚴密的高精度內容檢驗引擎 (Content Inspection Pipeline)
|
|
108
|
+
* 解決痛點:「不要隨便推薦、要依據用戶喜歡內容、@ 前要檢查貼文內容、不要只看 tag」
|
|
109
|
+
*/
|
|
110
|
+
export async function inspectAndEvaluatePost(ctx, post, config) {
|
|
52
111
|
const master = (config.masterUsername || '').replace(/^@/, '').trim();
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
112
|
+
const parsed = parsePostContent(post.caption || '');
|
|
113
|
+
const minScore = config.minScore || 80;
|
|
114
|
+
const minLength = config.minCaptionLength || 30;
|
|
115
|
+
const userInterests = config.userInterests ||
|
|
116
|
+
'專注於前沿 AI 技術、開源軟體、全端與前端架構、實用開發工具、優質 UI/UX 設計技巧或實用技術深度解析;喜愛實踐乾貨與原創見解。';
|
|
117
|
+
// === 第 1 關:正文實質內容字數檢驗 (拒絕無內文或純圖廢文) ===
|
|
118
|
+
if (parsed.cleanLength < minLength) {
|
|
119
|
+
return {
|
|
120
|
+
isWorthy: false,
|
|
121
|
+
score: 15,
|
|
122
|
+
reason: '',
|
|
123
|
+
rejectionReason: `正文有效字數不足 (${parsed.cleanLength} 字 < 門檻 ${minLength} 字),資訊量過少無實質乾貨內容。`,
|
|
124
|
+
commentText: '',
|
|
125
|
+
reviewMethod: 'heuristic',
|
|
126
|
+
};
|
|
127
|
+
}
|
|
128
|
+
// === 第 2 關:標籤農場檢查 (拒絕標籤堆砌蹭熱度) ===
|
|
129
|
+
if (parsed.isTagSpam) {
|
|
130
|
+
return {
|
|
131
|
+
isWorthy: false,
|
|
132
|
+
score: 20,
|
|
133
|
+
reason: '',
|
|
134
|
+
rejectionReason: `判定為標籤農場 (包含 ${parsed.tagCount} 個標籤,標籤佔比過高且正文空洞)。`,
|
|
135
|
+
commentText: '',
|
|
136
|
+
reviewMethod: 'heuristic',
|
|
137
|
+
};
|
|
138
|
+
}
|
|
139
|
+
// === 第 3 關:負面詞與廣告過濾 (Negative Keywords / Spam Filter) ===
|
|
140
|
+
const negativeWords = config.negativeKeywords || [];
|
|
141
|
+
const rawLower = parsed.rawCaption.toLowerCase();
|
|
142
|
+
for (const badKw of negativeWords) {
|
|
143
|
+
const cleanKw = badKw.toLowerCase().trim();
|
|
144
|
+
if (cleanKw && rawLower.includes(cleanKw)) {
|
|
145
|
+
return {
|
|
146
|
+
isWorthy: false,
|
|
147
|
+
score: 10,
|
|
148
|
+
reason: '',
|
|
149
|
+
rejectionReason: `命中排除關鍵字/廣告宣傳詞彙 [${cleanKw}]。`,
|
|
150
|
+
commentText: '',
|
|
151
|
+
reviewMethod: 'heuristic',
|
|
152
|
+
};
|
|
64
153
|
}
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
154
|
+
}
|
|
155
|
+
// === 第 4 關:正文實質主題核驗 (不能只看文末 tag) ===
|
|
156
|
+
const positiveWords = config.positiveKeywords || [];
|
|
157
|
+
const cleanLower = parsed.cleanBody.toLowerCase();
|
|
158
|
+
const hitBodyKeywords = [];
|
|
159
|
+
for (const kw of positiveWords) {
|
|
160
|
+
const cleanKw = kw.toLowerCase().trim();
|
|
161
|
+
if (cleanKw && cleanLower.includes(cleanKw)) {
|
|
162
|
+
hitBodyKeywords.push(cleanKw);
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
// 若設定要求「正文必須命中用戶偏好」,且正文未命中任何關鍵字,直接退回
|
|
166
|
+
if (config.requireBodyMatch && hitBodyKeywords.length === 0) {
|
|
167
|
+
return {
|
|
168
|
+
isWorthy: false,
|
|
169
|
+
score: 30,
|
|
170
|
+
reason: '',
|
|
171
|
+
rejectionReason: `正文實質內容未提及主人偏好領域關鍵字 (僅文末標籤包含相關字詞,判定為蹭熱度)。`,
|
|
172
|
+
commentText: '',
|
|
173
|
+
reviewMethod: 'heuristic',
|
|
174
|
+
};
|
|
175
|
+
}
|
|
176
|
+
// === 第 5 關:LLM 深度語義質檢 (如果環境具備 LLM 能力) ===
|
|
177
|
+
const systemPrompt = `你是一位高品味、眼光極為嚴格的私人內容審查特助。
|
|
178
|
+
主人的核心原則是:「絕對不要隨便推薦、必須切合主人喜歡的內容,在留言 @ 主人之前必須深入檢查正文實質內容,嚴禁只看文末的 tag 就隨意推薦」。
|
|
179
|
+
主人的內容偏好定義如下:
|
|
180
|
+
"""
|
|
181
|
+
${userInterests}
|
|
182
|
+
"""
|
|
183
|
+
|
|
184
|
+
任務要求:
|
|
185
|
+
1. 請審查貼文正文是否深度探討主人喜歡的主題,還是只是空泛的標籤農場或蹭流量。
|
|
186
|
+
2. 評估內容是否具備前沿實踐、技術見解、架構乾貨或優質教學價值。
|
|
187
|
+
3. 若內容確實極為優秀且深度符合主人喜好,請給出大於等於 ${minScore} 的高分,並撰寫簡短真誠、針對此篇貼文具體乾貨的一句話推坑留言 (不要千篇一律套話)。
|
|
188
|
+
4. 若品質普通、偏題或僅表面蹭熱度,給予低於 ${minScore} 的分數並給出 rejectionReason。
|
|
189
|
+
|
|
190
|
+
請嚴格輸出 JSON 格式:
|
|
191
|
+
{
|
|
192
|
+
"isWorthy": boolean,
|
|
193
|
+
"score": number, // 0-100
|
|
194
|
+
"summary": "貼文真正主旨簡介 (30字內)",
|
|
195
|
+
"rejectionReason": "未通過的原因 (若不合格)",
|
|
196
|
+
"reason": "推薦給主人的實質價值說明 (若合格)",
|
|
197
|
+
"hookPhrase": "針對本篇內容亮點量身打造的推坑一句話 (若合格,25字內,真誠具體,嚴禁空洞廢話)"
|
|
198
|
+
}`;
|
|
199
|
+
const userPrompt = `請審查以下 Instagram 貼文:
|
|
200
|
+
- 作者:@${post.user?.username || 'unknown'}
|
|
201
|
+
- 互動數據:${post.like_count || 0} 讚, ${post.comment_count || 0} 則留言
|
|
202
|
+
- 貼文真正正文內容 (已剔除標籤):
|
|
203
|
+
"""
|
|
204
|
+
${parsed.cleanBody.slice(0, 800)}
|
|
205
|
+
"""
|
|
206
|
+
- 文末標籤清單:#${parsed.hashtags.join(', #')}
|
|
207
|
+
- 正文命中之領域詞:${hitBodyKeywords.join(', ') || '無'}
|
|
208
|
+
|
|
209
|
+
請依據審查原則進行嚴格評估並以 JSON 返回。`;
|
|
210
|
+
const llmResponse = await callLlmInference(ctx, systemPrompt, userPrompt);
|
|
211
|
+
if (llmResponse) {
|
|
212
|
+
try {
|
|
213
|
+
const cleanedJson = llmResponse.replace(/^```json\s*/i, '').replace(/\s*```$/i, '').trim();
|
|
214
|
+
const parsedLlm = JSON.parse(cleanedJson);
|
|
215
|
+
const score = Number(parsedLlm.score || 0);
|
|
216
|
+
const isWorthy = Boolean(parsedLlm.isWorthy) && score >= minScore;
|
|
217
|
+
if (isWorthy) {
|
|
218
|
+
const hook = String(parsedLlm.hookPhrase || parsedLlm.reason || '這篇分析非常到位,強烈推薦!').trim();
|
|
219
|
+
const commentText = master ? `@${master} ${hook}` : hook;
|
|
220
|
+
return {
|
|
221
|
+
isWorthy: true,
|
|
222
|
+
score,
|
|
223
|
+
reason: String(parsedLlm.reason || parsedLlm.summary || '內容深度契合主人關注領域且具備乾貨價值。'),
|
|
224
|
+
commentText,
|
|
225
|
+
reviewMethod: 'llm',
|
|
226
|
+
};
|
|
227
|
+
}
|
|
228
|
+
else {
|
|
229
|
+
return {
|
|
230
|
+
isWorthy: false,
|
|
231
|
+
score,
|
|
232
|
+
reason: '',
|
|
233
|
+
rejectionReason: String(parsedLlm.rejectionReason || '內容深度未達主人品味標準或主題不符。'),
|
|
234
|
+
commentText: '',
|
|
235
|
+
reviewMethod: 'llm',
|
|
236
|
+
};
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
catch (e) {
|
|
240
|
+
console.warn(`[ScrollDuty] LLM 結果 JSON 解析異常: ${e.message}`);
|
|
68
241
|
}
|
|
69
242
|
}
|
|
70
|
-
|
|
243
|
+
// === 備援:啟發式嚴密內容質檢 (Heuristic Rule Engine) ===
|
|
244
|
+
// 當宿主無 LLM 或 LLM 調用異常時,依然嚴守品質底線,絕不隨便推薦!
|
|
245
|
+
let heuristicScore = 40; // 底分
|
|
246
|
+
// 正文字數深度加分 (有較長詳細說明通常具備更高乾貨密度)
|
|
247
|
+
if (parsed.cleanLength > 300)
|
|
248
|
+
heuristicScore += 18;
|
|
249
|
+
else if (parsed.cleanLength > 150)
|
|
250
|
+
heuristicScore += 12;
|
|
251
|
+
else if (parsed.cleanLength > 60)
|
|
252
|
+
heuristicScore += 6;
|
|
253
|
+
// 正文實質命中關鍵詞加分
|
|
254
|
+
heuristicScore += Math.min(25, hitBodyKeywords.length * 8);
|
|
255
|
+
// 乾貨排版特徵檢查 (具備條列、步驟或結構化排版)
|
|
256
|
+
if (/[0-9][.、]|👉|✅|🔹|💡|📌|\n- |\n\* /.test(parsed.cleanBody)) {
|
|
257
|
+
heuristicScore += 10;
|
|
258
|
+
}
|
|
259
|
+
// 社群互動數據適度輔助加分 (最多 12 分,避免高讚垃圾貼文)
|
|
260
|
+
const likes = post.like_count || 0;
|
|
261
|
+
const comments = post.comment_count || 0;
|
|
262
|
+
if (likes > 300)
|
|
263
|
+
heuristicScore += 6;
|
|
264
|
+
if (comments > 15)
|
|
265
|
+
heuristicScore += 6;
|
|
266
|
+
heuristicScore = Math.min(96, Math.max(10, heuristicScore));
|
|
267
|
+
const isHeuristicWorthy = heuristicScore >= minScore;
|
|
268
|
+
if (isHeuristicWorthy) {
|
|
269
|
+
const reason = `正文實質深度探討 [${hitBodyKeywords.slice(0, 3).join(', ')}],文字詳實完整 (${parsed.cleanLength} 字),結構條理分明。`;
|
|
270
|
+
const hookPhrases = [
|
|
271
|
+
`這篇關於 ${hitBodyKeywords[0] || '該主題'} 的內容分享非常扎實,特別推薦你看!`,
|
|
272
|
+
`發現這篇乾貨對你的方向很有啟發,特地 @ 你存起來!`,
|
|
273
|
+
`這篇思路與案例分析得很透徹,內容很硬核,推推!`,
|
|
274
|
+
];
|
|
275
|
+
const chosenHook = hookPhrases[Math.floor(Math.random() * hookPhrases.length)];
|
|
276
|
+
const commentText = master ? `@${master} ${chosenHook}` : `這篇乾貨非常精彩,推薦關注!`;
|
|
277
|
+
return {
|
|
278
|
+
isWorthy: true,
|
|
279
|
+
score: heuristicScore,
|
|
280
|
+
reason,
|
|
281
|
+
commentText,
|
|
282
|
+
reviewMethod: 'heuristic',
|
|
283
|
+
};
|
|
284
|
+
}
|
|
285
|
+
else {
|
|
286
|
+
return {
|
|
287
|
+
isWorthy: false,
|
|
288
|
+
score: heuristicScore,
|
|
289
|
+
reason: '',
|
|
290
|
+
rejectionReason: `內容乾貨密度評分 (${heuristicScore}) 未達嚴選門檻 (${minScore})。`,
|
|
291
|
+
commentText: '',
|
|
292
|
+
reviewMethod: 'heuristic',
|
|
293
|
+
};
|
|
294
|
+
}
|
|
71
295
|
}
|
|
72
296
|
export async function executeScrollRound(ctx, config, mcp, ledger, log = console.log) {
|
|
73
|
-
|
|
297
|
+
// 防風控冷卻保護檢查
|
|
298
|
+
if (ledger.isInCooldown()) {
|
|
299
|
+
const rem = ledger.getCooldownRemainingSeconds();
|
|
300
|
+
const reason = ledger.getCooldownReason();
|
|
301
|
+
const msg = `防風控冷卻保護中(剩餘 ${rem} 秒,原因: ${reason}),暫停本輪滾動瀏覽`;
|
|
302
|
+
log(`[ScrollDuty] 🚨 ${msg}`);
|
|
303
|
+
return {
|
|
304
|
+
ok: true,
|
|
305
|
+
totalScanned: 0,
|
|
306
|
+
worthyCount: 0,
|
|
307
|
+
recommendedCount: 0,
|
|
308
|
+
recommendations: [],
|
|
309
|
+
message: msg,
|
|
310
|
+
};
|
|
311
|
+
}
|
|
312
|
+
log('[ScrollDuty] 🚀 開始替主人刷一輪 Instagram (啟動正文內容嚴格審查模式)...');
|
|
74
313
|
const master = (config.masterUsername || '').replace(/^@/, '').trim();
|
|
75
314
|
if (!master) {
|
|
76
|
-
log('[ScrollDuty] ⚠️ 尚未配置主人帳號 (masterUsername)
|
|
315
|
+
log('[ScrollDuty] ⚠️ 尚未配置主人帳號 (masterUsername),將僅進行瀏覽審核而不留言 @主人。');
|
|
77
316
|
}
|
|
78
317
|
const batchSize = Math.max(5, config.batchSize || 15);
|
|
318
|
+
const maxPerRun = config.maxRecommendsPerRun || 1;
|
|
79
319
|
const candidatePosts = [];
|
|
80
|
-
// 1.
|
|
320
|
+
// 1. 抓取首頁時間軸動態牆 (Feed)
|
|
81
321
|
try {
|
|
82
322
|
log(`[ScrollDuty] 正在滾動時間軸動態牆 (抓取上限: ${batchSize})...`);
|
|
83
323
|
const feedRes = await mcp.igGetTimelineFeed(batchSize);
|
|
@@ -88,8 +328,19 @@ export async function executeScrollRound(ctx, config, mcp, ledger, log = console
|
|
|
88
328
|
}
|
|
89
329
|
catch (e) {
|
|
90
330
|
log(`[ScrollDuty] 獲取時間軸動態異常: ${e.message}`);
|
|
331
|
+
if (/feedback|action block|checkpoint|rate limit/i.test(e.message)) {
|
|
332
|
+
ledger.triggerCooldown(config.cooldownOnBlockMinutes || 30, e.message);
|
|
333
|
+
return {
|
|
334
|
+
ok: false,
|
|
335
|
+
totalScanned: 0,
|
|
336
|
+
worthyCount: 0,
|
|
337
|
+
recommendedCount: 0,
|
|
338
|
+
recommendations: [],
|
|
339
|
+
message: `時間軸獲取異常並觸發風控冷卻: ${e.message}`,
|
|
340
|
+
};
|
|
341
|
+
}
|
|
91
342
|
}
|
|
92
|
-
// 2.
|
|
343
|
+
// 2. 隨機選取一個主人感興趣的標籤進行探索抓取 (Explore Tag)
|
|
93
344
|
const tags = config.interestTags || [];
|
|
94
345
|
if (tags.length > 0) {
|
|
95
346
|
const randomTag = tags[Math.floor(Math.random() * tags.length)].replace(/^#/, '').trim();
|
|
@@ -103,14 +354,21 @@ export async function executeScrollRound(ctx, config, mcp, ledger, log = console
|
|
|
103
354
|
}
|
|
104
355
|
catch (e) {
|
|
105
356
|
log(`[ScrollDuty] 探索標籤異常: ${e.message}`);
|
|
357
|
+
if (/feedback|action block|checkpoint|rate limit/i.test(e.message)) {
|
|
358
|
+
ledger.triggerCooldown(config.cooldownOnBlockMinutes || 30, e.message);
|
|
359
|
+
}
|
|
106
360
|
}
|
|
107
361
|
}
|
|
108
362
|
let totalScanned = 0;
|
|
109
363
|
let worthyCount = 0;
|
|
110
364
|
let recommendedCount = 0;
|
|
111
365
|
const recommendations = [];
|
|
112
|
-
// 3.
|
|
366
|
+
// 3. 逐條讀內文進行深度內容審查與推薦
|
|
113
367
|
for (const post of candidatePosts) {
|
|
368
|
+
if (recommendedCount >= maxPerRun) {
|
|
369
|
+
log(`[ScrollDuty] 達到本輪推坑上限 (${maxPerRun} 則),結束本輪推薦。`);
|
|
370
|
+
break;
|
|
371
|
+
}
|
|
114
372
|
const postPk = String(post.pk || post.id || '');
|
|
115
373
|
if (!postPk)
|
|
116
374
|
continue;
|
|
@@ -118,26 +376,53 @@ export async function executeScrollRound(ctx, config, mcp, ledger, log = console
|
|
|
118
376
|
if (ledger.hasSeen(postPk)) {
|
|
119
377
|
continue;
|
|
120
378
|
}
|
|
379
|
+
// 模擬人類瀏覽閱讀貼文微延遲
|
|
380
|
+
const minDelay = config.minPostReadDelaySeconds || 3;
|
|
381
|
+
const maxDelay = Math.max(minDelay, config.maxPostReadDelaySeconds || 7);
|
|
382
|
+
const readWaitMs = Math.floor((minDelay + Math.random() * (maxDelay - minDelay)) * 1000);
|
|
383
|
+
await new Promise((r) => setTimeout(r, readWaitMs));
|
|
121
384
|
totalScanned++;
|
|
122
|
-
const evalRes =
|
|
385
|
+
const evalRes = await inspectAndEvaluatePost(ctx, post, config);
|
|
123
386
|
if (evalRes.isWorthy) {
|
|
124
387
|
worthyCount++;
|
|
125
|
-
log(`[ScrollDuty] ⭐
|
|
388
|
+
log(`[ScrollDuty] ⭐ 發現極高價值內容!審查機制: [${evalRes.reviewMethod.toUpperCase()}], 評分: ${evalRes.score}/100, 作者: @${post.user?.username || 'unknown'}`);
|
|
389
|
+
log(`[ScrollDuty] 推薦原因: ${evalRes.reason}`);
|
|
126
390
|
// 檢查是否還能推坑 (每日上限控制)
|
|
127
391
|
const cap = config.dailyRecommendCap || 5;
|
|
128
392
|
if (ledger.canRecommend(cap) && master) {
|
|
129
|
-
|
|
393
|
+
// @ 前進行最後確認檢查 (Pre-mention Verification)
|
|
394
|
+
if (!evalRes.commentText || !evalRes.commentText.includes(master)) {
|
|
395
|
+
log(`[ScrollDuty] ⚠️ 推坑語句缺少 @${master},自動補上主人名稱`);
|
|
396
|
+
evalRes.commentText = `@${master} ${evalRes.commentText || '這篇分析非常到位,特地推薦你看看!'}`;
|
|
397
|
+
}
|
|
398
|
+
log(`[ScrollDuty] 正在貼文下留言推坑: "${evalRes.commentText}"...`);
|
|
130
399
|
try {
|
|
131
400
|
const commentRes = await mcp.igPostComment({
|
|
132
401
|
media_pk: postPk,
|
|
133
402
|
text: evalRes.commentText,
|
|
403
|
+
jitter_min: 6.0,
|
|
404
|
+
jitter_max: 15.0,
|
|
134
405
|
});
|
|
406
|
+
if (commentRes?.in_cooldown ||
|
|
407
|
+
(commentRes?.error &&
|
|
408
|
+
/action block|feedback|checkpoint|please wait|rate limit/i.test(commentRes.error))) {
|
|
409
|
+
ledger.triggerCooldown(config.cooldownOnBlockMinutes || 30, commentRes.error || 'Instagram 頻率風控阻擋');
|
|
410
|
+
log(`[ScrollDuty] 🚨 偵測到風控或熔斷保護,停止後續推坑!`);
|
|
411
|
+
ledger.markSeen(postPk, true);
|
|
412
|
+
break;
|
|
413
|
+
}
|
|
135
414
|
if (commentRes?.ok) {
|
|
136
415
|
log(`[ScrollDuty] ✅ 成功留言 @${master}!`);
|
|
137
416
|
recommendedCount++;
|
|
138
417
|
// 若開啟,順便點讚
|
|
139
418
|
if (config.likeOnRecommend) {
|
|
140
|
-
await mcp.igLikeMedia(postPk).catch(() => {
|
|
419
|
+
const likeRes = await mcp.igLikeMedia(postPk).catch(() => ({}));
|
|
420
|
+
if (likeRes?.in_cooldown ||
|
|
421
|
+
(likeRes?.error &&
|
|
422
|
+
/action block|feedback|checkpoint|please wait|rate limit/i.test(likeRes.error))) {
|
|
423
|
+
ledger.triggerCooldown(config.cooldownOnBlockMinutes || 30, likeRes.error || 'Instagram 點讚風控阻擋');
|
|
424
|
+
break;
|
|
425
|
+
}
|
|
141
426
|
}
|
|
142
427
|
const recItem = {
|
|
143
428
|
postPk,
|
|
@@ -160,6 +445,10 @@ export async function executeScrollRound(ctx, config, mcp, ledger, log = console
|
|
|
160
445
|
catch (e) {
|
|
161
446
|
log(`[ScrollDuty] 留言異常: ${e.message}`);
|
|
162
447
|
ledger.markSeen(postPk, true);
|
|
448
|
+
if (/feedback|action block|checkpoint|rate limit/i.test(e.message)) {
|
|
449
|
+
ledger.triggerCooldown(config.cooldownOnBlockMinutes || 30, e.message);
|
|
450
|
+
break;
|
|
451
|
+
}
|
|
163
452
|
}
|
|
164
453
|
}
|
|
165
454
|
else {
|
|
@@ -168,10 +457,11 @@ export async function executeScrollRound(ctx, config, mcp, ledger, log = console
|
|
|
168
457
|
}
|
|
169
458
|
}
|
|
170
459
|
else {
|
|
460
|
+
log(`[ScrollDuty] ⏭️ 未通過內容審核: ${evalRes.rejectionReason || '評分未達標準'}`);
|
|
171
461
|
ledger.markSeen(postPk, false);
|
|
172
462
|
}
|
|
173
463
|
}
|
|
174
|
-
const msg =
|
|
464
|
+
const msg = `本輪滾動完畢!共掃描 ${totalScanned} 則內容,經正文與語義嚴格審查,精選 ${worthyCount} 則符合主人偏好,成功留評推薦 ${recommendedCount} 則。`;
|
|
175
465
|
log(`[ScrollDuty] 🎉 ${msg}`);
|
|
176
466
|
return {
|
|
177
467
|
ok: true,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scrollDuty.js","sourceRoot":"","sources":["../../src/core/scrollDuty.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"scrollDuty.js","sourceRoot":"","sources":["../../src/core/scrollDuty.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAMH,OAAO,EAAgD,qBAAqB,EAAwB,MAAM,aAAa,CAAA;AAMvH,eAAO,MAAM,IAAI,qBAAqB,CAAA;AACtC,eAAO,MAAM,MAAM,UAAyB,CAAA;AAG5C,eAAO,MAAM,MAAM,KAAqC,CAAA;AAoBxD,wBAAgB,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,UAAU,GAAE,OAAO,CAAC,qBAAqB,CAAM,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAMH,OAAO,EAAgD,qBAAqB,EAAwB,MAAM,aAAa,CAAA;AAMvH,eAAO,MAAM,IAAI,qBAAqB,CAAA;AACtC,eAAO,MAAM,MAAM,UAAyB,CAAA;AAG5C,eAAO,MAAM,MAAM,KAAqC,CAAA;AAoBxD,wBAAgB,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,UAAU,GAAE,OAAO,CAAC,qBAAqB,CAAM,QAoN9E;;;;;;;AAED,wBAKC"}
|