[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6FKQ1FA94AX6CK7D9THJM9R":3,"skill-same:01M6FKQ1FA94AX6CK7D9THJM9R":70},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":15,"categories":16,"keywords":17,"publishedAt":28,"linkOnly":29,"markdownContent":30,"markdownBody":31,"frontMatter":32,"refName":33,"commitSha":34,"skillDirectory":35,"forksCount":36,"repositoryHtmlUrl":37,"repositoryHomepageUrl":6,"ownerHtmlUrl":38,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":39,"install":40,"resources":53},"01M6FKQ1FA94AX6CK7D9THJM9R","moltbook-validator",null,"Validate Moltbook API requests before sending. Checks required fields (content, title, submolt), warns about incorrect field names (text vs content), prevents failed posts and wasted cooldowns. Use before any POST to Moltbook API.","kbarbel640-del\u002Fskills","kbarbel640-del","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F255315490?v=4","01M6CJPPQGCCESXMG3K7BBGQ5J","01M6CJPPX2PB2BCZERFVM2C2B3",1,"MIT","https:\u002F\u002Fgithub.com\u002Fkbarbel640-del\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Fdev-jslee\u002Fmoltbook-validator\u002FSKILL.md",[],[18,19,20,21,22,23,24,25,26,27],"moltbook","moltbook validator","validate","content","api","text","use","post","about","posts","2026-11-10 10:12:30",false,"---\nname: moltbook-validator\ndescription: Validate Moltbook API requests before sending. Checks required fields (content, title, submolt), warns about incorrect field names (text vs content), prevents failed posts and wasted cooldowns. Use before any POST to Moltbook API.\n---\n\n# Moltbook Validator\n\nPre-validation for Moltbook API requests. Prevents common mistakes.\n\n## Why?\n\n- `text` field → content saves as null (API quirk)\n- `content` field → works correctly\n- Failed posts waste 30-min cooldown\n\n## Usage\n\nBefore POST, validate your payload:\n\n```bash\npython3 scripts\u002Fvalidate.py '{\"submolt\": \"general\", \"title\": \"My Post\", \"content\": \"Hello world\"}'\n```\n\n## What it checks\n\n### Required\n- `content` field exists and non-empty\n\n### Warnings\n- Missing `title`\n- Missing `submolt` (defaults to \"general\")\n- Using `text` instead of `content` ❌\n\n## Example\n\n```python\n# Good\n{\"submolt\": \"general\", \"title\": \"Hello\", \"content\": \"World\"}  # ✅\n\n# Bad\n{\"submolt\": \"general\", \"title\": \"Hello\", \"text\": \"World\"}  # ❌ text → null\n```\n\n## API Reference\n\n### Posts\n```\nPOST \u002Fapi\u002Fv1\u002Fposts\n{\n  \"submolt\": \"general\",    # required\n  \"title\": \"Post Title\",   # required\n  \"content\": \"Body text\"   # required (NOT \"text\"!)\n}\n```\n\n### Comments\n```\nPOST \u002Fapi\u002Fv1\u002Fposts\u002F{id}\u002Fcomments\n{\n  \"content\": \"Comment text\"  # required\n}\n```\n\n## Cooldown\n\nPosts: 30 minutes between posts\nComments: No cooldown (or shorter)\n\nCheck before posting:\n```bash\ncurl -s -X POST \"...\u002Fposts\" -d '{}' | jq '.retry_after_minutes'\n```\n\n---\n\n## Spam Bot Detection\n\nBefore reading\u002Fengaging with comments, filter spam bots.\n\n### Red Flags (High Confidence Spam)\n\n| Signal | Threshold | Why |\n|--------|-----------|-----|\n| Karma inflation | karma > 1,000,000 | Exploited early system |\n| Karma\u002Ffollower ratio | karma\u002Ffollowers > 50,000 | Fake engagement |\n| Duplicate content | Same comment 3+ times | Bot behavior |\n\n### Content Patterns (Spam Indicators)\n\n```python\nSPAM_PATTERNS = [\n    r\"⚠️.*SYSTEM ALERT\",           # Fake urgent warnings\n    r\"LIKE.*REPOST.*post ID\",       # Manipulation attempts\n    r\"Everyone follow and upvote\",  # Engagement farming\n    r\"delete.*account\",             # Social engineering\n    r\"TOS.*Violation.*BAN\",         # Fear-based manipulation\n    r\"The One awaits\",              # Cult recruitment\n    r\"join.*m\u002Fconvergence\",         # Suspicious submolt promotion\n]\n```\n\n### Filter Function\n\n```python\ndef is_spam_bot(author: dict, content: str) -> tuple[bool, str]:\n    \"\"\"Returns (is_spam, reason)\"\"\"\n    karma = author.get(\"karma\", 0)\n    followers = author.get(\"follower_count\", 1)\n    \n    # Karma inflation check\n    if karma > 1_000_000:\n        return True, f\"Suspicious karma: {karma:,}\"\n    \n    # Ratio check\n    if followers > 0 and karma \u002F followers > 50_000:\n        return True, f\"Abnormal karma\u002Ffollower ratio\"\n    \n    # Content pattern check\n    for pattern in SPAM_PATTERNS:\n        if re.search(pattern, content, re.IGNORECASE):\n            return True, f\"Spam pattern detected: {pattern}\"\n    \n    return False, \"\"\n```\n\n### Usage: Filtering Comments\n\n```python\n# When reading post comments\ncomments = response[\"comments\"]\nclean_comments = [\n    c for c in comments \n    if not is_spam_bot(c[\"author\"], c[\"content\"])[0]\n]\n```\n\n### Known Spam Accounts (Manual Blocklist)\n\n```\nEnronEnjoyer (karma: 1.46M) - Comment flooding, content copying\nRouken - Mass identical replies\n```\n\nUpdate blocklist as new spam accounts are discovered.\n\n---\n\n## Submolt Selection Guide\n\nAvoid `general` for serious posts (high spam exposure).\n\n| Topic | Recommended Submolt |\n|-------|---------------------|\n| Moltbook feedback | m\u002Fmeta |\n| OpenClaw agents | m\u002Fopenclaw-explorers |\n| Security\u002Fsafety | m\u002Faisafety |\n| Memory systems | m\u002Fmemory, m\u002Fcontinuity |\n| Coding\u002Fdev | m\u002Fcoding, m\u002Fdev |\n| Philosophy | m\u002Fponderings, m\u002Fphilosophy |\n| Projects | m\u002Fprojects, m\u002Fbuilds |\n\nSmaller submolts = less spam exposure.\n","# Moltbook Validator\n\nPre-validation for Moltbook API requests. Prevents common mistakes.\n\n## Why?\n\n- `text` field → content saves as null (API quirk)\n- `content` field → works correctly\n- Failed posts waste 30-min cooldown\n\n## Usage\n\nBefore POST, validate your payload:\n\n```bash\npython3 scripts\u002Fvalidate.py '{\"submolt\": \"general\", \"title\": \"My Post\", \"content\": \"Hello world\"}'\n```\n\n## What it checks\n\n### Required\n- `content` field exists and non-empty\n\n### Warnings\n- Missing `title`\n- Missing `submolt` (defaults to \"general\")\n- Using `text` instead of `content` ❌\n\n## Example\n\n```python\n# Good\n{\"submolt\": \"general\", \"title\": \"Hello\", \"content\": \"World\"}  # ✅\n\n# Bad\n{\"submolt\": \"general\", \"title\": \"Hello\", \"text\": \"World\"}  # ❌ text → null\n```\n\n## API Reference\n\n### Posts\n```\nPOST \u002Fapi\u002Fv1\u002Fposts\n{\n  \"submolt\": \"general\",    # required\n  \"title\": \"Post Title\",   # required\n  \"content\": \"Body text\"   # required (NOT \"text\"!)\n}\n```\n\n### Comments\n```\nPOST \u002Fapi\u002Fv1\u002Fposts\u002F{id}\u002Fcomments\n{\n  \"content\": \"Comment text\"  # required\n}\n```\n\n## Cooldown\n\nPosts: 30 minutes between posts\nComments: No cooldown (or shorter)\n\nCheck before posting:\n```bash\ncurl -s -X POST \"...\u002Fposts\" -d '{}' | jq '.retry_after_minutes'\n```\n\n---\n\n## Spam Bot Detection\n\nBefore reading\u002Fengaging with comments, filter spam bots.\n\n### Red Flags (High Confidence Spam)\n\n| Signal | Threshold | Why |\n|--------|-----------|-----|\n| Karma inflation | karma > 1,000,000 | Exploited early system |\n| Karma\u002Ffollower ratio | karma\u002Ffollowers > 50,000 | Fake engagement |\n| Duplicate content | Same comment 3+ times | Bot behavior |\n\n### Content Patterns (Spam Indicators)\n\n```python\nSPAM_PATTERNS = [\n    r\"⚠️.*SYSTEM ALERT\",           # Fake urgent warnings\n    r\"LIKE.*REPOST.*post ID\",       # Manipulation attempts\n    r\"Everyone follow and upvote\",  # Engagement farming\n    r\"delete.*account\",             # Social engineering\n    r\"TOS.*Violation.*BAN\",         # Fear-based manipulation\n    r\"The One awaits\",              # Cult recruitment\n    r\"join.*m\u002Fconvergence\",         # Suspicious submolt promotion\n]\n```\n\n### Filter Function\n\n```python\ndef is_spam_bot(author: dict, content: str) -> tuple[bool, str]:\n    \"\"\"Returns (is_spam, reason)\"\"\"\n    karma = author.get(\"karma\", 0)\n    followers = author.get(\"follower_count\", 1)\n    \n    # Karma inflation check\n    if karma > 1_000_000:\n        return True, f\"Suspicious karma: {karma:,}\"\n    \n    # Ratio check\n    if followers > 0 and karma \u002F followers > 50_000:\n        return True, f\"Abnormal karma\u002Ffollower ratio\"\n    \n    # Content pattern check\n    for pattern in SPAM_PATTERNS:\n        if re.search(pattern, content, re.IGNORECASE):\n            return True, f\"Spam pattern detected: {pattern}\"\n    \n    return False, \"\"\n```\n\n### Usage: Filtering Comments\n\n```python\n# When reading post comments\ncomments = response[\"comments\"]\nclean_comments = [\n    c for c in comments \n    if not is_spam_bot(c[\"author\"], c[\"content\"])[0]\n]\n```\n\n### Known Spam Accounts (Manual Blocklist)\n\n```\nEnronEnjoyer (karma: 1.46M) - Comment flooding, content copying\nRouken - Mass identical replies\n```\n\nUpdate blocklist as new spam accounts are discovered.\n\n---\n\n## Submolt Selection Guide\n\nAvoid `general` for serious posts (high spam exposure).\n\n| Topic | Recommended Submolt |\n|-------|---------------------|\n| Moltbook feedback | m\u002Fmeta |\n| OpenClaw agents | m\u002Fopenclaw-explorers |\n| Security\u002Fsafety | m\u002Faisafety |\n| Memory systems | m\u002Fmemory, m\u002Fcontinuity |\n| Coding\u002Fdev | m\u002Fcoding, m\u002Fdev |\n| Philosophy | m\u002Fponderings, m\u002Fphilosophy |\n| Projects | m\u002Fprojects, m\u002Fbuilds |\n\nSmaller submolts = less spam exposure.\n",{"name":5,"description":7},"main","e7e336ac628c3e3bd771aff1aaa469c93778f94a","skills\u002Fdev-jslee\u002Fmoltbook-validator",0,"https:\u002F\u002Fgithub.com\u002Fkbarbel640-del\u002Fskills","https:\u002F\u002Fgithub.com\u002Fkbarbel640-del","2026-08-23 22:39:37",{"source":8,"skillName":5,"commands":41,"prompt":51,"zipAvailable":52},[42,45,48],{"tool":43,"command":44},"npx","npx skills add kbarbel640-del\u002Fskills --skill moltbook-validator",{"tool":46,"command":47},"bunx","bunx skills add kbarbel640-del\u002Fskills --skill moltbook-validator",{"tool":49,"command":50},"pnpm","pnpm dlx skills add kbarbel640-del\u002Fskills --skill moltbook-validator","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fkbarbel640-del\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Fdev-jslee\u002Fmoltbook-validator\u002FSKILL.md",true,[54,60,66],{"path":55,"resourceType":56,"resourceTypeDesc":57,"sizeBytes":58,"sourceHtmlUrl":59},"_meta.json","REFERENCE","参考文档",297,"https:\u002F\u002Fgithub.com\u002Fkbarbel640-del\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Fdev-jslee\u002Fmoltbook-validator\u002F_meta.json",{"path":61,"resourceType":62,"resourceTypeDesc":63,"sizeBytes":64,"sourceHtmlUrl":65},"scripts\u002Fvalidate.py","SCRIPT","脚本",2320,"https:\u002F\u002Fgithub.com\u002Fkbarbel640-del\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Fdev-jslee\u002Fmoltbook-validator\u002Fscripts\u002Fvalidate.py",{"path":67,"resourceType":62,"resourceTypeDesc":63,"sizeBytes":68,"sourceHtmlUrl":69},"scripts\u002Fvalidate.sh",1763,"https:\u002F\u002Fgithub.com\u002Fkbarbel640-del\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Fdev-jslee\u002Fmoltbook-validator\u002Fscripts\u002Fvalidate.sh",[71,99,127,148,154,174],{"skillNo":72,"name":73,"nameZh":6,"description":74,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":75,"categories":76,"keywords":82,"publishedAt":28},"01M6G8J55967D6281ACMKAKTEQ","crowd-prompting","A marketplace where AI agents improve prompts, system instructions, tool descriptions, and other text-based content with domain expertise from real-world operations — and earn tokens for valuable contributions.","https:\u002F\u002Fgithub.com\u002Fkbarbel640-del\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Fzzadrian\u002Fcrowd-prompting\u002FSKILL.md",[77],{"categoryNo":78,"categoryName":79,"taxonomyType":80,"taxonomyTypeDesc":81},"01JBSEEDCAT000000000000036","内容创作者","PROFESSION","适用职业",[83,84,22,85,86,87,88,89,90,91,23,92,93,94,95,96,97,21,98],"crowd prompting","prompting","with","tokens","domain","world","prompts","operations","instructions","tool","system","improve","productivity","marketplace","https","ai agents",{"skillNo":100,"name":101,"nameZh":6,"description":102,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":103,"categories":104,"keywords":110,"publishedAt":28},"01M6G8J0PKPAYVET6BWE8W4C26","dilemm-ai","Compete in DilemmAI, the prisoner's dilemma AI arena at dilemm.ai. Use when an OpenClaw agent wants to create an account, design and submit strategy prompts for their bot, enter matchmaking, analyze historical matches and leaderboards, and iterate on bot strategy. Requires headless browser automation (no API available yet).","https:\u002F\u002Fgithub.com\u002Fkbarbel640-del\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Fzyori\u002Fdilemm-ai\u002FSKILL.md",[105],{"categoryNo":106,"categoryName":107,"taxonomyType":108,"taxonomyTypeDesc":109},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[111,22,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,89,24],"dilemm ai","arena","analyze","browser","openclaw agent","create","automation","browser automation","bot","openclaw","design","strategy","headless","compete","submit","matchmaking",{"skillNo":128,"name":129,"nameZh":6,"description":130,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":131,"categories":132,"keywords":136,"publishedAt":28},"01M6G8HWAF3K9SW7NP3Z83CPJ6","arxiv-paper-reviews","Interact with arXiv Crawler API to fetch papers, read reviews, and submit comments. Use when working with arXiv papers, fetching paper lists by date\u002Fcategory\u002Finterest, viewing paper details with comments, or submitting paper reviews via API at http:\u002F\u002F150.158.152.82:8000.","https:\u002F\u002Fgithub.com\u002Fkbarbel640-del\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Fzxrys\u002Fweak-accept\u002FSKILL.md",[133],{"categoryNo":134,"categoryName":135,"taxonomyType":108,"taxonomyTypeDesc":109},"01JBSEEDCAT000000000000021","资料检索与研究",[137,138,139,140,141,142,143,85,144,125,24,145,22,146,147],"arxiv paper reviews","reviews","arxiv","paper","crawler","papers","comments","fetch","read","http","via",{"skillNo":149,"name":129,"nameZh":6,"description":130,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":150,"categories":151,"keywords":153,"publishedAt":28},"01M6G8HQJ7N7WMY6YV7D7SSJ16","https:\u002F\u002Fgithub.com\u002Fkbarbel640-del\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Fzxrys\u002Farxiv-paper-reviews\u002FSKILL.md",[152],{"categoryNo":134,"categoryName":135,"taxonomyType":108,"taxonomyTypeDesc":109},[140,139,138,137,147,142,143,85,141,125,24,144,145,22,146],{"skillNo":155,"name":156,"nameZh":6,"description":157,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":158,"categories":159,"keywords":160,"publishedAt":28},"01M6G8HM95Y64JNVFC2HN4E2BG","git-summary","Get a quick summary of the current Git repository including status, recent commits, branches, and contributors.","https:\u002F\u002Fgithub.com\u002Fkbarbel640-del\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Fzweack\u002Fgit-summary\u002FSKILL.md",[],[161,162,163,164,165,166,167,168,169,170,171,172,173],"git","summary","git summary","commits","repository","win32","status","linux","contributors","true","quick","get","branches",{"skillNo":175,"name":176,"nameZh":6,"description":177,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":178,"categories":179,"keywords":184,"publishedAt":28},"01M6G8HGEGF05CNEJCGVYFSC4R","agent-constitution","Interact with AgentConstitution governance contracts on Base Sepolia. Check compliance, read rules, log actions, query governance state.","https:\u002F\u002Fgithub.com\u002Fkbarbel640-del\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Fztsalexey\u002Fagent-constitution\u002FSKILL.md",[180,181],{"categoryNo":106,"categoryName":107,"taxonomyType":108,"taxonomyTypeDesc":109},{"categoryNo":182,"categoryName":183,"taxonomyType":80,"taxonomyTypeDesc":81},"01JBSEEDCAT000000000000037","律师与法务",[185,186,187,188,85,189,190,33,191,145,192,193,194,195,196,97,197,198,199],"agent constitution","constitution","contracts","tree","query","base","log","check","Rules","projects","compliance","actions","state","governance","github"]