Skill flagged — suspicious patterns detected

ClawHub Security flagged this skill as suspicious. Review the scan results before using.

Anime Character Loader

v2.4.2

Load and validate anime character data from AniList and Jikan, generating semantically checked SOUL.generated.md with forced disambiguation and idempotent me...

0· 465·0 current·0 all-time
byColin Chen@colinchen4
Security Scan
VirusTotalVirusTotal
Suspicious
View report →
OpenClawOpenClaw
Suspicious
medium confidence
Purpose & Capability
Name/description align with included code: AniList, Jikan, MediaWiki/Fandom extractors, local quote DB, validation and idempotent merge. The project references Playwright/camofox for browser extraction in docs/extras although those are optional extras in setup.py (not required). Overall capabilities are coherent with the skill's stated goal, but the presence of an optional browser-based scraper and Cloudflare-bypass tooling is a stronger capability than a minimal 'API-only' loader and should be expected only if the user accepts those extras.
!
Instruction Scope
SKILL.md and README explicitly instruct the tool to write/REPLACE/MERGE SOUL.generated.md into existing SOUL.md files and offer REPLACE/MERGE/KEEP modes. When used as a skill inside an agent, this can modify the agent’s persona/config files. The runtime instructions also describe a three-phase fetcher (API → Playwright → local) and ‘Camofox fallback’ for Cloudflare bypass — the Playwright/browser path may execute more privileged scraping behavior. SKILL.md also contains a prompt-injection pattern flagged by the scanner (see scan_findings_in_context), which could indicate attempts to influence runtime evaluation or be an accidental string; either way it warrants a manual review.
Install Mechanism
There is no install spec in the registry entry (instruction-only), but repository includes Python package files and a setup.py which declares only requests and beautifulsoup4 as required; Playwright/camofox are listed as optional extras. No downloads from unknown hosts are in the install spec. Because code is bundled, installing the skill will put those files on disk (normal), but no arbitrary external installer URL or shortener was used.
Credentials
The skill requests no environment variables or credentials (none declared). Network access to AniList (graphql.anilist.co), Jikan (api.jikan.moe) and various MediaWiki/Fandom domains is intrinsic to the stated purpose, so the lack of credential requests is proportionate. Note: the fetchers construct fandom subdomains and have optional fallbacks that may contact additional third-party endpoints (examples reference a yurippe API), so reviewing which external hosts are contacted is recommended.
Persistence & Privilege
The skill does not set always:true and is user-invocable only (normal). However, its documented merge and REPLACE operations will modify files (SOUL.generated.md and optionally overwrite SOUL.md). The skill does not declare required config paths despite instructions that can alter existing SOUL.md files used by an agent — the consequence is that the skill can change agent persona files if run in the same working directory. This is expected for a generator/merger tool but is a meaningful privilege and should be used with care.
Scan Findings in Context
[ignore-previous-instructions] unexpected: A prompt-injection pattern was detected in SKILL.md content. This string is not necessary for the described fetch-and-generate functionality and could indicate an attempt to influence evaluation or runtime behavior. It may be harmless/accidental (e.g., an example snippet), but you should inspect the SKILL.md and any code that interprets it before trusting the skill.
What to consider before installing
What to check before installing or running this skill: - Backup any existing SOUL.md or agent persona files before running; the tool offers REPLACE/MERGE modes and can overwrite or merge into existing files. - Inspect the bundled code (especially extractors mentioning Playwright/camofox and the browser extraction paths) to confirm you accept optional browser-based scraping and any Cloudflare-bypass behavior. - Verify which external hosts will be contacted in your environment (AniList, Jikan, fandom subdomains, and any third-party endpoints seen in examples like yurippe.vercel.app). If you need to restrict network access, run in a sandbox or offline environment first. - The SKILL.md contained a prompt-injection pattern; review SKILL.md and the code that parses it to ensure no unintended instruction injection or remote control logic is present. - If you intend to let an agent invoke this autonomously, consider restricting when it can run (manual invocation recommended) because file-write operations can change agent behavior. If you want, I can highlight specific files/lines to review (e.g., the fandom_hybrid extractor's browser-path, any code that resolves output paths or overwrites SOUL.md, and where third-party endpoints are referenced).

Like a lobster shell, security has layers — review code before you run it.

latestvk971k2d338dn6s4gr4d6gakce1826sb5
465downloads
0stars
3versions
Updated 7h ago
v2.4.2
MIT-0

Anime Character Loader v2.3

Structured Architecture (Skill + CLI)

This repository is organized as a skill + CLI hybrid:

  • load_character.py: legacy-compatible CLI command (wrapper)
  • src/anime_character_loader/cli.py: structured CLI entrypoint
  • src/anime_character_loader/legacy.py: preserved legacy behavior implementation
  • src/anime_character_loader/{sources,disambiguation,generator,validator,storage}: module boundaries for maintainability
  • tests/: minimal regression coverage for compatibility-critical paths

Overview

多源动漫角色数据加载器,生成经过验证的 SOUL.generated.md 人格文件。

v2.3 关键改进:

  1. 幂等合并: 同一角色多次合并不会重复
  2. 跨源一致性评分: AniList + Jikan 交叉验证
  3. 强制选择: 分数接近时强制用户选择
  4. 标准化退出码: 脚本可识别错误类型

Key Improvements (v2.3)

1. 退出码系统

0   # 成功
10  # 网络错误
20  # 数据错误(无匹配、消歧失败)
30  # 验证失败
40  # 文件错误

2. 跨源一致性评分

Confidence = (AniList * 0.5 + Jikan * 0.3) + (Consistency * 0.2)

如果 top1 和 top2 差距 < 0.15:
    → 强制要求 --select 手动选择

3. 幂等合并

# 第一次合并
python load_character.py "Megumi" --anime "Saekano"
# 选择 MERGE → 添加角色

# 第二次合并(相同角色)
python load_character.py "Megumi" --anime "Saekano"  
# 选择 MERGE → 检测到重复,跳过

# 第三次合并(内容更新)
# 如果生成内容有变化 → 更新而非追加

4. 强制消歧增强

# ❌ 会失败 - Sakura 有多个角色
python load_character.py "Sakura"

# ❌ 即使指定作品,如果多个源返回相似结果
python load_character.py "Sakura" --anime "Fate"
# 可能仍要求 --select 如果 AniList 和 Jikan 结果不一致

# ✅ 必须手动选择
python load_character.py "Sakura" --anime "Fate" --select 1

Usage Examples

Basic Usage (Unique Names)

# 唯一名字可以直接生成
python load_character.py "Kasumigaoka Utaha"
python load_character.py "霞之丘诗羽"

Disambiguation Required

# 同名角色必须指定作品
python load_character.py "Sakura" --anime "Fate"
python load_character.py "Rin" --anime "Fate"
python load_character.py "Miku" --anime "Quintessential"

Manual Selection

# 列出所有匹配手动选择
python load_character.py "Sakura" --select 2

Preview Mode

# 只查看信息不生成
python load_character.py "加藤惠" --info

Workflow

1. 名称翻译 (中文→英文/日文)
        ↓
2. 多源并行查询 (AniList + Jikan)
        ↓
3. 跨源一致性评分
   - 计算名字相似度
   - 计算作品相似度
   - 综合置信度排序
        ↓
4. 强制消歧检查
   - 多匹配? → 需要 --anime
   - 分数接近? → 需要 --select
   - 低置信? → 需要 --anime
        ↓
5. 生成 SOUL.generated.md
        ↓
6. 语义验证 (9项检查)
        ↓
7. 提示加载选项 (REPLACE/MERGE/KEEP)
        ↓
8. 幂等合并(如选择 MERGE)

Configuration

强制消歧开关

# 在 load_character.py 顶部
FORCE_DISAMBIGUATION = True  # 设为 False 恢复宽松模式

强制选择阈值

FORCE_SELECTION_THRESHOLD = 0.15  # 分数差距小于此值强制选择

置信度阈值

CONFIDENCE_THRESHOLD_HIGH = 0.8    # 高置信度
CONFIDENCE_THRESHOLD_MEDIUM = 0.6  # 中等置信度
CONFIDENCE_THRESHOLD_LOW = 0.5     # 最低接受线

Error Handling

场景退出码处理
API 失败10重试3次后退出
同名无提示20强制失败,提示用 --anime
分数接近20强制失败,提示用 --select
验证失败30回滚,可 --force 覆盖
文件写入失败40清理临时文件后退出

Cache & Performance

  • SQLite 缓存 (~/.cache/anime-character-loader/)
  • 24小时过期
  • 自动限流 (0.5s 间隔)
  • 失败重试 (指数退避)

🔒 Privacy Notice

Data Sent to External Services

When you query a character name, the following data may be sent to external APIs:

ServiceURLData SentPurpose
AniListanilist.coCharacter namePrimary character lookup
Jikanjikan.moeCharacter nameMyAnimeList backup source
Fandom Wiki*.fandom.comCharacter name + Anime nameQuotes and descriptions
萌娘百科zh.moegirl.org.cnCharacter nameChinese character database
yurippe APIyurippe.vercel.appCharacter nameAnime quotes database

Privacy Protection

  • No personal data is collected or transmitted
  • Only character names and anime titles are sent to external services
  • All external requests use HTTPS encryption
  • Local caching minimizes repeated external calls

Opt-Out Options

# Disable external quotes fetching (use local database only)
export DISABLE_EXTERNAL_QUOTES=1
python load_character.py "Character Name"

⚖️ Legal & Copyright Notice

Quotes Database

The local quotes database (data/quotes_database.json) contains:

  • Fan-collected quotes from anime/manga for educational/research purposes
  • Fair use doctrine: Limited excerpts for character study and AI personality modeling
  • All characters and works belong to their respective copyright holders

Wiki Content

Descriptions and excerpts are sourced from:

  • Fandom Wiki (CC-BY-SA license)
  • 萌娘百科 Moegirlpedia (CC BY-NC-SA 3.0)

Usage Restrictions

  • ✅ Personal use and research
  • ✅ OpenClaw agent personality configuration
  • ❌ Commercial redistribution of quotes database
  • ❌ Creating competing content databases

Copyright Holders

Characters referenced in this tool belong to their respective creators and publishers including but not limited to:

  • Saekano: © Fumiaki Maruto, Kurehito Misaki, KADOKAWA
  • Rascal Does Not Dream: © Hajime Kamoshida, Keiji Mizoguchi, KADOKAWA
  • And other respective copyright holders

For DMCA or copyright concerns, please contact through GitHub Issues.


🛡️ File Safety Notice

⚠️ Warning About File Operations

  • REPLACE mode will overwrite existing SOUL.md (automatic backup created at SOUL.md.backup.YYYYMMDD_HHMMSS)
  • MERGE mode adds content without removing existing characters (idempotent - no duplicates)
  • All write operations use atomic writes (temp file + rename)

Recommendation: Back up important SOUL.md files before using REPLACE mode.

Comments

Loading comments...