支持小红书自动发布、自动评论、自动检索的 Skill。支持 OpenClaw、Codex、CC 等
This report presents the forensic synthetic code analysis of white0dew/XiaohongshuSkills, a Python project with 3,299 GitHub stars. SynthScan v2.0 examined 8,458 lines of code across 16 source files, recording 235 pattern matches distributed across 10 syntactic categories. The overall adjusted score of 69.5 places this repository in the Strong AI signal band.
The scanner applied 160+ deterministic lexical heuristics, multi-line block detectors, abstract syntax tree depth profilers, and a cross-file Jaccard similarity matrix to construct a statistically normalised synthetic code estimate. All matches are individually weighted by severity coefficient and contextual multiplier before summation, and the resulting headline score is temporally discounted to account for the repository's development history relative to the commercial emergence of large language model coding tooling (November 2022 onward).
Longitudinal tracking requires multiple scan runs. Once this repository is re-scanned after new commits land, this chart will visualise how the synthetic code signal evolves over time — enabling you to detect whether AI authorship is growing, stabilising, or being actively corrected by human engineers.
Classifies detected patterns by their diagnostic confidence and structural impact. CRITICAL patterns (coefficient 10) represent definitive synthetic signatures — hallucinated imports, explicit LLM attribution metadata — virtually never produced by human authors. HIGH (5) indicates strong structural tells such as cross-file repetition or cross-linguistic idioms. MEDIUM (2) covers recognisable conversational padding and AI-specific vocabulary. LOW (1) captures subtle indicators like tautological comments and generic boilerplate that require density to carry independent signal.
This horizontal bar chart decomposes the repository's raw synthetic code score by top-level directory, allowing you to pinpoint precisely which modules or components carry the highest AI authorship density. Directories with disproportionately high scores relative to their size warrant targeted manual review: concentrated AI signatures often trace back to mass-generated configuration layers, auto-ported test suites, LLM-scaffolded boilerplate classes, or entire subsystems authored under heavy copilot assistance. Use this view to prioritise your human code-review effort.
The scanner identified 235 distinct pattern matches across 10 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a statistically significant AI authorship indicator. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.
Reading the findings table: The Severity column indicates the diagnostic confidence level (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — comment-context matches receive a ×1.5 weight because LLMs systematically over-annotate. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier as dense clusters constitute far stronger evidence of synthetic authorship than isolated hits.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH⚡ | scripts/cdp_publish.py | 1962 | if (!obj || typeof obj !== "object") { | CODE |
| HIGH⚡ | scripts/cdp_publish.py | 1963 | return null; | CODE |
| HIGH⚡ | scripts/cdp_publish.py | 1967 | if (value !== undefined && value !== null && String(value).trim()) { | CODE |
| HIGH⚡ | scripts/cdp_publish.py | 1971 | return null; | CODE |
| HIGH⚡ | scripts/cdp_publish.py | 1976 | let userNode = null; | CODE |
| HIGH⚡ | scripts/cdp_publish.py | 1979 | while (queue.length && scanCount < 2400) { | CODE |
| HIGH⚡ | scripts/cdp_publish.py | 1982 | if (!node || typeof node !== "object") { | CODE |
| HIGH⚡ | scripts/cdp_publish.py | 2000 | if (nameVal && (idVal || avatarVal)) { | CODE |
| HIGH⚡ | scripts/cdp_publish.py | 2008 | if (item && typeof item === "object") { | CODE |
| HIGH⚡ | scripts/cdp_publish.py | 2009 | queue.push(item); | CODE |
| HIGH⚡ | scripts/cdp_publish.py | 2017 | if (value && typeof value === "object") { | CODE |
| HIGH⚡ | scripts/cdp_publish.py | 2018 | queue.push(value); | CODE |
| HIGH⚡ | scripts/cdp_publish.py | 2037 | if (!(node instanceof HTMLElement) || node.offsetParent === null) { | CODE |
| HIGH⚡ | scripts/cdp_publish.py | 2040 | const text = normalize(node.innerText || node.textContent); | CODE |
| HIGH⚡ | scripts/cdp_publish.py | 2041 | if (text && text.length <= 40) { | CODE |
| HIGH⚡ | scripts/cdp_publish.py | 2042 | statTexts.push(text); | CODE |
| HIGH⚡ | scripts/cdp_publish.py | 2097 | return null; | CODE |
| HIGH⚡ | scripts/cdp_publish.py | 2103 | return null; | CODE |
| HIGH⚡ | scripts/cdp_publish.py | 2109 | return null; | CODE |
| HIGH⚡ | scripts/cdp_publish.py | 2114 | url: parsed.toString(), | CODE |
| HIGH⚡ | scripts/cdp_publish.py | 2316 | containers.push(node); | CODE |
| HIGH⚡ | scripts/cdp_publish.py | 2323 | let best = null; | CODE |
| HIGH⚡ | scripts/cdp_publish.py | 2331 | const text = normalize(container.innerText || container.textContent); | CODE |
| HIGH⚡ | scripts/cdp_publish.py | 2336 | if (targetId && id && id === targetId) { | CODE |
| HIGH⚡ | scripts/cdp_publish.py | 2339 | if (targetAuthor && author && author.includes(targetAuthor)) { | CODE |
| HIGH⚡ | scripts/cdp_publish.py | 2342 | if (targetSnippet && text && text.includes(targetSnippet)) { | CODE |
| HIGH⚡ | scripts/cdp_publish.py | 2345 | if (!best || score > best.score) { | CODE |
| HIGH⚡ | scripts/cdp_publish.py | 2451 | if (!(el instanceof HTMLButtonElement) || el.offsetParent === null) { | CODE |
| HIGH⚡ | scripts/cdp_publish.py | 2458 | if (r.width < 8 || r.height < 8) { | CODE |
| HIGH⚡ | scripts/cdp_publish.py | 2466 | if (!(button instanceof HTMLButtonElement) || button.offsetParent === null) { | CODE |
| HIGH⚡ | scripts/cdp_publish.py | 2926 | if (!(el instanceof HTMLElement) || el.offsetParent === null) { | CODE |
| HIGH⚡ | scripts/cdp_publish.py | 2930 | if (r.width < 8 || r.height < 8) { | CODE |
| HIGH⚡ | scripts/cdp_publish.py | 2935 | return null; | CODE |
| HIGH⚡ | scripts/cdp_publish.py | 2961 | if (!(el instanceof HTMLButtonElement) || el.offsetParent === null) { | CODE |
| HIGH⚡ | scripts/cdp_publish.py | 2968 | if (r.width < 8 || r.height < 8) { | CODE |
| HIGH⚡ | scripts/cdp_publish.py | 2976 | if (!(button instanceof HTMLButtonElement) || button.offsetParent === null) { | CODE |
| HIGH⚡ | scripts/cdp_publish.py | 3035 | if (node.offsetParent === null) { | CODE |
| HIGH⚡ | scripts/cdp_publish.py | 3042 | candidates.push(node); | CODE |
| HIGH⚡ | scripts/cdp_publish.py | 3047 | const text = (node.innerText || node.textContent || "") | CODE |
| HIGH⚡ | scripts/cdp_publish.py | 3511 | fuzzyKeywords.push('图文', '上传图文'); | CODE |
| HIGH⚡ | scripts/cdp_publish.py | 3514 | fuzzyKeywords.push('视频', '上传视频'); | CODE |
| HIGH⚡ | scripts/cdp_publish.py | 3523 | if (keyword && t.indexOf(keyword) !== -1) {{ | CODE |
| HIGH⚡ | scripts/cdp_publish.py | 4010 | return null; | CODE |
| HIGH | scripts/cdp_publish.py | 919 | if (node.offsetParent === null) {{ | CODE |
| HIGH | scripts/cdp_publish.py | 928 | if (document.body && containsKeyword(document.body.innerText)) {{ | CODE |
| HIGH | scripts/cdp_publish.py | 1080 | const src = node instanceof HTMLImageElement ? (node.currentSrc || node.src || "") : ""; | CODE |
| HIGH | scripts/cdp_publish.py | 1083 | node.parentElement ? (node.parentElement.innerText || node.parentElement.textContent) : "" | CODE |
| HIGH | scripts/cdp_publish.py | 1182 | if (node.offsetParent === null) {{ | CODE |
| HIGH | scripts/cdp_publish.py | 1186 | return rect.width >= 8 && rect.height >= 8; | CODE |
| HIGH | scripts/cdp_publish.py | 1197 | let inputEl = null; | CODE |
| HIGH | scripts/cdp_publish.py | 1201 | if (!(node instanceof HTMLInputElement || node instanceof HTMLTextAreaElement)) {{ | CODE |
| HIGH | scripts/cdp_publish.py | 1224 | if (descriptor && typeof descriptor.set === "function") {{ | CODE |
| HIGH | scripts/cdp_publish.py | 1564 | const text = normalize(node.innerText || node.textContent); | CODE |
| HIGH | scripts/cdp_publish.py | 1584 | const text = normalize(node.innerText || node.textContent); | CODE |
| HIGH | scripts/cdp_publish.py | 1607 | const text = normalize(node.innerText || node.textContent).toUpperCase(); | CODE |
| HIGH | scripts/cdp_publish.py | 1625 | scroll_top: window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0 | CODE |
| HIGH | scripts/cdp_publish.py | 1736 | const text = normalize(node.textContent || node.innerText); | CODE |
| HIGH | scripts/cdp_publish.py | 1755 | if ({threshold} > 0 && match && Number.parseInt(match[1], 10) > {threshold}) {{ | CODE |
| HIGH | scripts/cdp_publish.py | 2153 | notes.push({ | CODE |
| HIGH | scripts/cdp_publish.py | 2254 | if (value && normalize(value)) { | CODE |
| 47 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | scripts/chrome_launcher.py | 205 | except Exception: | CODE |
| LOW | scripts/chrome_launcher.py | 209 | except Exception: | CODE |
| LOW | scripts/chrome_launcher.py | 221 | except Exception: | CODE |
| LOW | scripts/chrome_launcher.py | 224 | except Exception: | CODE |
| LOW | scripts/chrome_launcher.py | 244 | except Exception: | CODE |
| LOW | scripts/image_downloader.py | 163 | except Exception as e: | CODE |
| LOW | scripts/run_lock.py | 44 | except Exception: | CODE |
| LOW | scripts/account_manager.py | 196 | except Exception: | CODE |
| MEDIUM | scripts/account_manager.py | 275 | print(f"Error: Account '{args.name}' already exists.", file=sys.stderr) | CODE |
| MEDIUM | scripts/account_manager.py | 282 | print(f"Error: Cannot remove account '{args.name}'.", file=sys.stderr) | CODE |
| MEDIUM | scripts/account_manager.py | 294 | print(f"Error: Account '{args.name}' not found.", file=sys.stderr) | CODE |
| MEDIUM | scripts/account_manager.py | 301 | print(f"Error: Account '{args.name}' not found.", file=sys.stderr) | CODE |
| MEDIUM⚡ | scripts/cdp_publish.py | 4469 | print(f"Error: Account '{args.name}' already exists.", file=sys.stderr) | STRING |
| MEDIUM⚡ | scripts/cdp_publish.py | 4478 | print(f"Error: Cannot remove account '{args.name}'.", file=sys.stderr) | STRING |
| MEDIUM⚡ | scripts/cdp_publish.py | 4487 | print(f"Error: Account '{args.name}' not found.", file=sys.stderr) | STRING |
| LOW | scripts/cdp_publish.py | 73 | except Exception: | CODE |
| LOW | scripts/cdp_publish.py | 188 | except Exception: | CODE |
| LOW | scripts/cdp_publish.py | 212 | except Exception: | CODE |
| LOW | scripts/cdp_publish.py | 388 | except Exception: | CODE |
| LOW | scripts/cdp_publish.py | 502 | except Exception as e: | CODE |
| LOW | scripts/cdp_publish.py | 624 | except Exception as exc: | CODE |
| LOW | scripts/cdp_publish.py | 1400 | except Exception: | CODE |
| MEDIUM | scripts/cdp_publish.py | 4540 | print("Error: --content or --content-file required.", file=sys.stderr) | STRING |
| MEDIUM | scripts/cdp_publish.py | 4632 | print("Error: --content or --content-file required.", file=sys.stderr) | STRING |
| MEDIUM | scripts/cdp_publish.py | 4654 | print("Error: --content or --content-file required.", file=sys.stderr) | STRING |
| MEDIUM | scripts/cdp_publish.py | 4820 | print(f"Error: {e}", file=sys.stderr) | STRING |
| LOW | scripts/feed_explorer.py | 147 | except Exception: | CODE |
| LOW | scripts/publish_pipeline.py | 61 | except Exception: | CODE |
| LOW | scripts/publish_pipeline.py | 97 | except Exception: | CODE |
| MEDIUM | scripts/publish_pipeline.py | 174 | print(f"Error: {media_label} file not found: {file_path}", file=sys.stderr) | CODE |
| MEDIUM | scripts/publish_pipeline.py | 461 | print("Error: title is empty.", file=sys.stderr) | STRING |
| MEDIUM | scripts/publish_pipeline.py | 472 | print("Error: content is empty.", file=sys.stderr) | STRING |
| MEDIUM | scripts/publish_pipeline.py | 494 | print("Error: Failed to start Chrome.", file=sys.stderr) | STRING |
| MEDIUM | scripts/publish_pipeline.py | 533 | print(f"Error: {e}", file=sys.stderr) | STRING |
| MEDIUM | scripts/publish_pipeline.py | 550 | print("Error: Video download failed.", file=sys.stderr) | STRING |
| MEDIUM | scripts/publish_pipeline.py | 565 | print("Error: All image downloads failed.", file=sys.stderr) | STRING |
| MEDIUM | scripts/publish_pipeline.py | 590 | print(f"Error during form fill: {e}", file=sys.stderr) | STRING |
| MEDIUM | scripts/publish_pipeline.py | 610 | print(f"Error clicking publish: {e}", file=sys.stderr) | STRING |
| MEDIUM | scripts/publish_pipeline.py | 628 | print(f"Error: {e}", file=sys.stderr) | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | scripts/account_manager.py | 219 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | scripts/account_manager.py | 221 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | scripts/cdp_publish.py | 1166 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM⚡ | scripts/cdp_publish.py | 1168 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM | scripts/cdp_publish.py | 93 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | scripts/cdp_publish.py | 95 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | scripts/cdp_publish.py | 486 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM | scripts/cdp_publish.py | 488 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM | scripts/cdp_publish.py | 584 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM | scripts/cdp_publish.py | 586 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM | scripts/cdp_publish.py | 858 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM | scripts/cdp_publish.py | 860 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM⚡ | scripts/cdp_publish.py | 4016 | # ------------------------------------------------------------------ | STRING |
| MEDIUM⚡ | scripts/cdp_publish.py | 4018 | # ------------------------------------------------------------------ | STRING |
| MEDIUM⚡ | scripts/cdp_publish.py | 4126 | # --------------------------------------------------------------------------- | STRING |
| MEDIUM⚡ | scripts/cdp_publish.py | 4128 | # --------------------------------------------------------------------------- | STRING |
| MEDIUM | scripts/cdp_publish.py | 3298 | # ------------------------------------------------------------------ | STRING |
| MEDIUM | scripts/cdp_publish.py | 3300 | # ------------------------------------------------------------------ | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | scripts/cdp_publish.py | 343 | def _prepare_upload_file_path(self, file_path: str) -> str: | CODE |
| LOW⚡ | scripts/cdp_publish.py | 349 | def _looks_like_windows_drive_path(self, file_path: str) -> bool: | CODE |
| LOW⚡ | scripts/cdp_publish.py | 357 | def _looks_like_windows_backslash_path(self, file_path: str) -> bool: | CODE |
| LOW⚡ | scripts/cdp_publish.py | 366 | def _should_preserve_upload_path(self, file_path: str) -> bool: | CODE |
| LOW⚡ | scripts/cdp_publish.py | 1170 | def _prepare_search_input_keyword(self, keyword: str) -> dict[str, Any]: | CODE |
| LOW | scripts/cdp_publish.py | 193 | def _build_search_filters_from_args(args) -> SearchFilters | None: | CODE |
| LOW | scripts/cdp_publish.py | 215 | def validate_schedule_post_time(dt_str: str | None) -> bool: | CODE |
| LOW | scripts/cdp_publish.py | 261 | def _map_note_infos_to_content_rows(note_infos: list[dict[str, Any]]) -> list[dict[str, Any]]: | CODE |
| LOW | scripts/cdp_publish.py | 640 | def _build_content_data_result( | CODE |
| LOW | scripts/cdp_publish.py | 679 | def _fetch_content_data_via_page_fetch( | CODE |
| LOW | scripts/cdp_publish.py | 896 | def _home_login_prompt_visible(self, keyword: str) -> bool: | CODE |
| LOW | scripts/cdp_publish.py | 1334 | def _capture_search_recommendations_via_network( | CODE |
| LOW | scripts/cdp_publish.py | 1518 | def _extract_feed_comments_state(self) -> dict[str, Any]: | CODE |
| LOW | scripts/cdp_publish.py | 2219 | def _activate_reply_target_for_comment( | CODE |
| LOW | scripts/cdp_publish.py | 2753 | def _check_feed_page_accessible(self): | CODE |
| LOW | scripts/cdp_publish.py | 3355 | def _find_content_editor_selector(self) -> str | None: | CODE |
| LOW | scripts/cdp_publish.py | 754 | def _capture_content_data_from_page_request( | STRING |
| LOW | scripts/cdp_publish.py | 1256 | def _extract_recommend_keywords_from_payload( | STRING |
| LOW | scripts/cdp_publish.py | 1638 | def _scroll_feed_comments_area( | STRING |
| LOW | scripts/cdp_publish.py | 1695 | def _click_more_reply_buttons( | STRING |
| LOW | scripts/cdp_publish.py | 1777 | def _load_feed_detail_comments( | STRING |
| LOW | scripts/cdp_publish.py | 2080 | def _extract_note_cards_from_profile_dom(self, limit: int) -> dict[str, Any]: | STRING |
| LOW | scripts/cdp_publish.py | 2499 | def _inspect_note_toggle_state( | STRING |
| LOW | scripts/cdp_publish.py | 3006 | def _schedule_click_notification_mentions_tab(self) -> str: | STRING |
| LOW | scripts/cdp_publish.py | 3080 | def _fetch_notification_mentions_via_page(self) -> dict[str, Any] | None: | STRING |
| LOW | scripts/cdp_publish.py | 3144 | def get_notification_mentions(self, wait_seconds: float = 18.0) -> dict[str, Any]: | STRING |
| LOW | scripts/cdp_publish.py | 3334 | def _wait_for_uploaded_images(self, expected_count: int, timeout_seconds: float = 60.0): | STRING |
| LOW | scripts/cdp_publish.py | 3473 | def _wait_for_publish_button_ready(self, timeout_seconds: float = VIDEO_PROCESS_TIMEOUT): | STRING |
| LOW | scripts/feed_explorer.py | 196 | def _wait_for_home_feeds_state(self): | CODE |
| LOW | scripts/feed_explorer.py | 356 | def _apply_filters_in_single_panel(self, option_values: list[str]) -> tuple[bool, str]: | CODE |
| LOW | scripts/feed_explorer.py | 403 | def _try_apply_filter_via_hover_mouse(self, filter_value: str) -> tuple[bool, str]: | CODE |
| LOW | scripts/feed_explorer.py | 450 | def _apply_single_filter_js_fallback(self, filter_value: str) -> dict[str, Any]: | CODE |
| LOW | scripts/feed_explorer.py | 321 | def _open_filter_panel_via_hover_mouse(self) -> tuple[bool, str]: | STRING |
| LOW | scripts/publish_pipeline.py | 130 | def _extract_topic_tags_from_last_line(content: str) -> tuple[str, list[str]]: | CODE |
| LOW | scripts/publish_pipeline.py | 159 | def _verify_local_files_exist( | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | scripts/chrome_launcher.py | 182 | CODE | |
| LOW | scripts/account_manager.py | 223 | CODE | |
| LOW | scripts/cdp_publish.py | 4130 | CODE | |
| LOW | scripts/cdp_publish.py | 490 | CODE | |
| LOW | scripts/cdp_publish.py | 1256 | CODE | |
| LOW | scripts/cdp_publish.py | 1777 | CODE | |
| LOW | scripts/feed_explorer.py | 356 | CODE | |
| LOW | scripts/feed_explorer.py | 699 | CODE | |
| LOW | scripts/publish_pipeline.py | 307 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | scripts/cdp_publish.py | 4054 | # Step 1: Navigate to publish page | STRING |
| LOW⚡ | scripts/cdp_publish.py | 4058 | # Step 2: Click '上传图文' tab | STRING |
| LOW⚡ | scripts/cdp_publish.py | 4061 | # Step 3: Upload images (editor appears after upload) | STRING |
| LOW⚡ | scripts/cdp_publish.py | 4064 | # Step 4: Fill title | STRING |
| LOW⚡ | scripts/cdp_publish.py | 4067 | # Step 5: Fill content | STRING |
| LOW⚡ | scripts/cdp_publish.py | 4070 | # Step 6: Set schedule publish time (if provided) | STRING |
| LOW⚡ | scripts/cdp_publish.py | 4103 | # Step 1: Navigate to publish page | STRING |
| LOW⚡ | scripts/cdp_publish.py | 4107 | # Step 2: Click '上传视频' tab | STRING |
| LOW⚡ | scripts/cdp_publish.py | 4110 | # Step 3: Upload video and wait for processing | STRING |
| LOW⚡ | scripts/cdp_publish.py | 4114 | # Step 4: Fill title | STRING |
| LOW⚡ | scripts/cdp_publish.py | 4117 | # Step 5: Fill content | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | scripts/cdp_publish.py | 4054 | # Step 1: Navigate to publish page | STRING |
| LOW⚡ | scripts/cdp_publish.py | 4058 | # Step 2: Click '上传图文' tab | STRING |
| LOW⚡ | scripts/cdp_publish.py | 4061 | # Step 3: Upload images (editor appears after upload) | STRING |
| LOW⚡ | scripts/cdp_publish.py | 4064 | # Step 4: Fill title | STRING |
| LOW⚡ | scripts/cdp_publish.py | 4067 | # Step 5: Fill content | STRING |
| LOW⚡ | scripts/cdp_publish.py | 4070 | # Step 6: Set schedule publish time (if provided) | STRING |
| LOW⚡ | scripts/cdp_publish.py | 4103 | # Step 1: Navigate to publish page | STRING |
| LOW⚡ | scripts/cdp_publish.py | 4107 | # Step 2: Click '上传视频' tab | STRING |
| LOW⚡ | scripts/cdp_publish.py | 4110 | # Step 3: Upload video and wait for processing | STRING |
| LOW⚡ | scripts/cdp_publish.py | 4114 | # Step 4: Fill title | STRING |
| LOW⚡ | scripts/cdp_publish.py | 4117 | # Step 5: Fill content | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | scripts/generate_star_history.py | 4 | CODE | |
| LOW | scripts/run_lock.py | 3 | CODE | |
| LOW | scripts/feed_explorer.py | 8 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | scripts/cdp_publish.py | 548 | # Create a new tab | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | scripts/cdp_publish.py | 879 | # Check if we got redirected to a login page | COMMENT |