{"slug":"jianshuo-wjs-x-improving-content-fefd72","title":"X\u5185\u5bb9prompt\u7248\u672c\u5b9e\u9a8c\u4e0e\u7279\u5f81\u5206\u6790","description":"\u628aX\u63a8\u6587\u751f\u6210prompt\u7684\u6539\u52a8\u767b\u8bb0\u4e3a\u5e26\u5047\u8bbe\u7684\u7f16\u53f7\u5b9e\u9a8c\uff0c\u6309\u53d1\u5e03\u65f6\u95f4\u628a\u63a8\u6587\u5f52\u56e0\u5230\u5bf9\u5e94prompt\u7684git\u77edSHA\uff0c\u7528\u6210\u719f\u63a8\u7684\u4e2d\u4f4dimpression\u505a\u7248\u672c\u5bf9\u6bd4\uff0c\u5e76\u5206\u6790angle\u3001\u957f\u5ea6\u3001\u6765\u6e90\u7b49\u5185\u5bb9\u7279\u5f81\uff0c\u4e3a\u4e0b\u4e00\u7248prompt\u63d0\u4f9b\u4f9d\u636e\u3002\u542b\u6570\u636e\u5bfc\u5165\u3001\u8bc4\u4f30\u3001\u8d26\u672c\u4e0e\u770b\u677f\u811a\u672c\u3002","category":"\u590d\u76d8\u4e0e\u589e\u957f","tags":["jianshuo","\u5efa\u7855","\u590d\u76d8\u4e0e\u589e\u957f"],"author":"\u5efa\u7855 \u00b7 jianshuo","source_url":"https://github.com/jianshuo/claude-skills/blob/d36bc423286a34eb32adc604121e5c7714b08740/wjs-x-improving-content/SKILL.md","license":"MIT","status":"published","verification":"source_reviewed","verification_notes":"\u5df2\u6838\u5bf9\u539f\u59cb\u4ed3\u5e93\u3001\u56fa\u5b9a\u63d0\u4ea4\u3001\u8bb8\u53ef\u3001\u6280\u80fd\u6b63\u6587\u4e0e\u5305\u7ed3\u6784\uff0c\u5e76\u8865\u5145\u4e2d\u6587\u6267\u884c\u9a8c\u6536\u8bf4\u660e\uff1b\u672a\u8fd0\u884c\u5305\u5185\u811a\u672c\u3002","revision":"6d23177c35ea40b89969ec737c7668b3","created_at":"2026-11-02T14:47:08+00:00","updated_at":"2026-11-02T14:47:08+00:00","source_repo":"jianshuo/claude-skills","source_path":"wjs-x-improving-content/SKILL.md","source_commit":"d36bc423286a34eb32adc604121e5c7714b08740","source_updated_at":"2026-11-02T14:46:04+00:00","stars":0,"proxy_score":null,"score":null,"grade":null,"dimensions":{},"evaluation":{},"installs":0,"platforms":[],"formats":[],"category_slug":"growth","category_name":"\u590d\u76d8\u4e0e\u589e\u957f","quality":{"review_type":"text_and_package_review","readiness":"requires_setup","reviewed_at":"2026-11-02T14:46:04+00:00","review_summary":"\u65b9\u6cd5\u5177\u4f53\u3001\u811a\u672c\u4e0e\u6570\u636e\u6a21\u578b\u5b8c\u6574\uff0c\u4f46\u8def\u5f84\u4e0e\u8eab\u4efd\u7ed1\u5b9a\u4e2a\u4eba\u73af\u5883\uff0c\u9700\u6539\u914d\u7f6e\u5e76\u6e05\u7a7a\u793a\u4f8b\u72b6\u6001\u540e\u65b9\u53ef\u7528\u4e8e\u81ea\u8eab\u8d26\u53f7\u3002","cost_notes":"\u4ec5\u4f7f\u7528\u672c\u5730\u811a\u672c\u4e0eX\u81ea\u5e26\u5206\u6790\u5bfc\u51fa\uff0c\u65e0\u7b2c\u4e09\u65b9\u4ed8\u8d39API\uff1b\u5982\u9700X API\u53e6\u884c\u786e\u8ba4\uff0c\u4e0d\u5728\u6b64\u5305\u5185\u3002","source_sha256":"7f15c896feefbe8e8462a7c3b7befe99ee9dfec112c7a8057c54ef8be21022fe","prerequisites":["Python 3\u8fd0\u884c\u73af\u5883","X\u8d26\u53f7\u53ef\u8bbf\u95eex.com/i/account_analytics\u5e76\u5bfc\u51faContent CSV","prompt\u6587\u4ef6\u4f4d\u4e8e\u672c\u5730git\u4ed3\u5e93\u4e14\u53ef\u63d0\u4ea4","\u53d1\u63a8\u5386\u53f2\u6587\u4ef6\u5b58\u5728\u4e8e\u811a\u672c\u5047\u8bbe\u8def\u5f84\uff0c\u6216\u4fee\u6539_common.py\u4e2d\u7684\u8def\u5f84"],"checks":["ingest\u540e\u62bd\u67e5\u82e5\u5e72tweet_id\u7684impressions\u4e0eCSV\u539f\u503c\u4e00\u81f4\uff0cprompt_sha\u4e0egit log\u65f6\u95f4\u63a8\u5bfc\u4e00\u81f4","analyze-content.py\u5206\u7ec4\u6837\u672c\u6570\u53ef\u89c1\uff0c\u4e14\u660e\u786e\u533a\u5206\u6210\u719f\u4e0e\u672a\u6210\u719f\u63a8","evaluate.py\u5bf9\u6837\u672c\u4e0d\u8db35\u6761\u7684\u7248\u672c\u663e\u793ameasuring\u800c\u975e\u5224\u51b3","ledger.py\u767b\u8bb0\u7684hypothesis\u4e3a\u5355\u4e00\u53ef\u8bc1\u4f2a\u6539\u52a8\uff0c\u4e14\u4e00\u6b21\u53ea\u6539\u4e00\u5904","SCOREBOARD.md\u7684\u7248\u672c\u6392\u884c\u4e0eevaluate.py\u8f93\u51fa\u4e00\u81f4"],"limitations":["\u811a\u672c\u672a\u5728\u672c\u5ba1\u9605\u4e2d\u8fd0\u884c\uff0c\u5217\u540d\u5339\u914d\u4e0e\u8def\u5f84\u5047\u8bbe\u9700\u7528\u6237\u9996\u6b21\u6267\u884c\u65f6\u6838\u5bf9","impression\u53d7\u6e90\u6587\u7ae0\u4e0e\u8bdd\u9898\u652f\u914d\uff0c\u7248\u672c\u5bf9\u6bd4\u4ec5\u4e3a\u65b9\u5411\u6027\u53c2\u8003\uff0c\u4e0d\u6784\u6210\u56e0\u679c\u7ed3\u8bba","\u4f9d\u8d56\u5916\u90e8\u53d1\u63a8\u5386\u53f2\u6587\u4ef6\u4e0eprompt\u4ed3\u5e93\u8def\u5f84\uff0c\u6362\u673a\u5668\u9700\u6539_common.py","\u56de\u6eda\u9700\u4eba\u5de5\u786e\u8ba4\u5e76\u64cd\u4f5cgit\uff0c\u811a\u672c\u4e0d\u81ea\u52a8\u6267\u884c"],"issues":["SKILL.md\u786c\u7f16\u7801\u4e2a\u4eba\u8def\u5f84~/code/wechat-publish\u4e0e~/.claude/skills/...\uff0c\u901a\u7528\u7528\u6237\u9700\u6539\u914d\u7f6e","\u63cf\u8ff0\u4e0e\u6b63\u6587\u7ed1\u5b9a\u7279\u5b9a\u4f5c\u8005\u738b\u5efa\u7855\uff0c\u516c\u5f00\u4f7f\u7528\u9700\u66ff\u6362\u4e3a\u81ea\u8eab\u8eab\u4efd\u4e0e\u8def\u5f84","state/tweets.jsonl\u4e0eversions.jsonl\u4e3a\u793a\u4f8b\u6570\u636e\uff0c\u76f4\u63a5\u4f7f\u7528\u4f1a\u6df7\u5165\u4ed6\u4eba\u6570\u636e\uff0c\u9700\u6e05\u7a7a\u6216\u786e\u8ba4"],"missing_files":[]},"quality_url":"https://shiliuai.cn/api/v2/skills/jianshuo-wjs-x-improving-content-fefd72/files/SHILIU-QUALITY.md","usage_guide":{"task":"\u5bf9X\u63a8\u6587\u751f\u6210prompt\u505a\u5355\u53d8\u91cf\u7248\u672c\u5b9e\u9a8c\uff1a\u5bfc\u5165Content CSV\u4e0e\u53d1\u63a8\u5386\u53f2\uff0c\u5f52\u56e0prompt\u7248\u672c\uff0c\u5206\u6790\u5185\u5bb9\u7279\u5f81\uff0c\u767b\u8bb0\u6539\u52a8\u5047\u8bbe\uff0c\u6512\u591f\u6210\u719f\u6837\u672c\u540e\u7ed9\u51fakeep/rollback/flat\u65b9\u5411\u6027\u5224\u51b3\u5e76\u751f\u6210\u770b\u677f\u3002","inputs":"X\u8d26\u53f7\u5206\u6790\u9875\u5bfc\u51fa\u7684Content CSV\uff08\u542bPost id\u4e0eImpressions\uff09\uff1b\u53d1\u63a8\u5386\u53f2jsonl\uff08\u542bslug/angle\uff09\uff1bprompt\u6587\u4ef6\u6240\u5728git\u4ed3\u5e93\u8def\u5f84\uff1b\u6bcf\u6761\u63a8\u53d1\u5e03\u6ee13\u5929\u89c6\u4e3a\u6210\u719f\uff1b\u6bcf\u7248\u81f3\u5c115\u6761\u6210\u719f\u63a8\u624d\u505a\u7248\u672c\u5224\u51b3\u3002","outputs":"state/tweets.jsonl\uff08\u9010\u63a8\u5f52\u56e0\u4e0e\u6210\u719f\u6807\u8bb0\uff09\u3001state/versions.jsonl\uff08\u5b9e\u9a8c\u8d26\u672c\uff09\u3001state/SCOREBOARD.md\uff08\u73b0\u72b6\u3001\u7248\u672c\u6392\u884c\u3001\u5185\u5bb9\u7279\u5f81\u3001\u5f85\u529e\uff09\uff0c\u4ee5\u53caevaluate.py\u6253\u5370\u7684\u5404\u7248\u672c\u4e2d\u4f4dimpression\u4e0e\u76f8\u90bb\u7248\u672c\u0394%\u5224\u51b3\u3002","example_input":"\u628a\u8fd9\u4efd\u4eceX Content\u9875\u5bfc\u51fa\u7684CSV\u5bfc\u5165\uff0c\u5206\u6790\u6210\u719f\u63a8\u91cc\u4e0d\u540cangle\u548c\u957f\u5ea6\u7684\u4e2d\u4f4dimpression\uff0c\u7136\u540e\u5e2e\u6211\u767b\u8bb0\u4e00\u7248\u628aprompt\u6536\u7d27\u523080\u5b57\u4ee5\u5185\u7684\u5047\u8bbe\u5b9e\u9a8c\u3002","example_output":"\u793a\u610f\uff1atweets.jsonl\u65b0\u589e\u82e5\u5e72\u884c\u542btweet_id\u3001impressions\u3001angle\u3001prompt_sha\u3001mature\uff1banalyze-content.py\u8f93\u51fa\u6309angle\u4e0e\u957f\u5ea6\u5206\u7ec4\u7684\u4e2d\u4f4dimpression\u8868\uff1bledger\u767b\u8bb0\u4e00\u6761\u5e26hypothesis\u7684\u7248\u672c\u8bb0\u5f55\uff1bSCOREBOARD.md\u5217\u51fa\u5404\u7248\u672c\u6837\u672c\u6570\u4e0emeasuring\u72b6\u6001\u3002\u4ee5\u4e0a\u4e3a\u7ed3\u6784\u793a\u610f\uff0c\u975e\u771f\u5b9e\u8fd0\u884c\u7ed3\u679c\u3002"},"read_url":"https://shiliuai.cn/api/v2/skills/jianshuo-wjs-x-improving-content-fefd72","skill_url":"https://shiliuai.cn/api/v2/skills/jianshuo-wjs-x-improving-content-fefd72/files/SKILL.md","download_url":"https://shiliuai.cn/api/v2/skills/jianshuo-wjs-x-improving-content-fefd72/download","install_url":"https://shiliuai.cn/api/v2/skills/jianshuo-wjs-x-improving-content-fefd72/install","files":[{"path":"LICENSE","bytes":1082,"url":"https://shiliuai.cn/api/v2/skills/jianshuo-wjs-x-improving-content-fefd72/files/LICENSE"},{"path":"SHILIU-QUALITY.md","bytes":2161,"url":"https://shiliuai.cn/api/v2/skills/jianshuo-wjs-x-improving-content-fefd72/files/SHILIU-QUALITY.md"},{"path":"SKILL.md","bytes":6314,"url":"https://shiliuai.cn/api/v2/skills/jianshuo-wjs-x-improving-content-fefd72/files/SKILL.md"},{"path":"scripts/_common.py","bytes":1556,"url":"https://shiliuai.cn/api/v2/skills/jianshuo-wjs-x-improving-content-fefd72/files/scripts/_common.py"},{"path":"scripts/analyze-content.py","bytes":4219,"url":"https://shiliuai.cn/api/v2/skills/jianshuo-wjs-x-improving-content-fefd72/files/scripts/analyze-content.py"},{"path":"scripts/evaluate.py","bytes":3205,"url":"https://shiliuai.cn/api/v2/skills/jianshuo-wjs-x-improving-content-fefd72/files/scripts/evaluate.py"},{"path":"scripts/ingest-tweets.py","bytes":4378,"url":"https://shiliuai.cn/api/v2/skills/jianshuo-wjs-x-improving-content-fefd72/files/scripts/ingest-tweets.py"},{"path":"scripts/ledger.py","bytes":2934,"url":"https://shiliuai.cn/api/v2/skills/jianshuo-wjs-x-improving-content-fefd72/files/scripts/ledger.py"},{"path":"scripts/scoreboard.py","bytes":3747,"url":"https://shiliuai.cn/api/v2/skills/jianshuo-wjs-x-improving-content-fefd72/files/scripts/scoreboard.py"},{"path":"shiliu-quality.json","bytes":1849,"url":"https://shiliuai.cn/api/v2/skills/jianshuo-wjs-x-improving-content-fefd72/files/shiliu-quality.json"},{"path":"shiliu-source.json","bytes":275,"url":"https://shiliuai.cn/api/v2/skills/jianshuo-wjs-x-improving-content-fefd72/files/shiliu-source.json"},{"path":"state/SCOREBOARD.md","bytes":1132,"url":"https://shiliuai.cn/api/v2/skills/jianshuo-wjs-x-improving-content-fefd72/files/state/SCOREBOARD.md"},{"path":"state/tweets.jsonl","bytes":43111,"url":"https://shiliuai.cn/api/v2/skills/jianshuo-wjs-x-improving-content-fefd72/files/state/tweets.jsonl"},{"path":"state/versions.jsonl","bytes":523,"url":"https://shiliuai.cn/api/v2/skills/jianshuo-wjs-x-improving-content-fefd72/files/state/versions.jsonl"},{"path":"usage.json","bytes":1279,"url":"https://shiliuai.cn/api/v2/skills/jianshuo-wjs-x-improving-content-fefd72/files/usage.json"}],"content":"---\nname: wjs-x-improving-content\ndescription: Use when \u738b\u5efa\u7855 wants to systematically improve his X (Twitter) content by iterating on the content-generation prompt (prompts/x/prompt.md, used by the every-6h tweet Action) and finding which prompt version produces the highest-reach tweets. Each prompt edit is a git-SHA-versioned, numbered experiment with a hypothesis; tweets are attributed to the version live at post time and judged on median impressions per tweet. Also mines per-tweet impression data for content-feature signals (angle / length / topic) that feed the next prompt edit. North-star = impressions per tweet. Triggers \u2014 \"\u6539 X \u7684 prompt\", \"X \u5185\u5bb9\u6539\u8fdb\", \"\u54ea\u7248 prompt \u6700\u597d\", \"\u4ec0\u4e48\u5185\u5bb9 impression \u9ad8\", \"improve my tweets\", \"A/B test the X prompt\", \"/wjs-x-improving-content\".\n---\n\n# wjs-x-improving-content\n\n\u628a\u300c\u5199\u597d\u63a8\u300d\u5f53\u5de5\u7a0b\u505a\uff1a**\u4e0d\u65ad\u6539 `prompts/x/prompt.md`\uff0c\u7528 impression \u6570\u636e\u770b\u54ea\u7248\u6700\u597d**\uff0c\u5e76\u6316\u51fa\u300c\u4ec0\u4e48\u5185\u5bb9\u7279\u5f81\u548c\u9ad8 impression \u76f8\u5173\u300d\u53cd\u54fa\u4e0b\u4e00\u7248\u3002\u662f [[wjs-x-increasing-follower]] \u7684\u5b6a\u751f\u2014\u2014\u90a3\u4e2a\u6d4b profile\u2192\u5173\u6ce8\u8f6c\u5316\u7387\uff0c\u8fd9\u4e2a\u6d4b **prompt\u2192\u6bcf\u6761\u63a8\u7684 impression**\u3002\n\n## Core Principle\n\n**impression \u4e3b\u8981\u7531\u6e90\u6587\u7ae0 / \u8bdd\u9898\u51b3\u5b9a\uff0cprompt \u53ea\u662f\u4e8c\u9636\u56e0\u7d20\u3002** \u4e00\u7bc7\u597d\u6587\u7ae0\u914d\u4efb\u4f55 prompt \u90fd\u80fd\u7206\u3002\u6240\u4ee5\u8bda\u5b9e\u5730\u5206\u4e24\u5c42\u770b\uff1a\n\n| \u770b\u4ec0\u4e48 | \u4fe1\u53f7\u5f3a\u5ea6 | \u600e\u4e48\u7528 |\n|---|---|---|\n| **prompt \u7248\u672c\u5bf9\u6bd4**\uff08\u54ea\u7248 prompt \u7684\u63a8\u4e2d\u4f4d impression \u9ad8\uff09 | \u5f31\uff08\u88ab\u6587\u7ae0\u652f\u914d\uff0c\u9700\u5927\u91cf\u6837\u672c\uff09 | \u65b9\u5411\u6027\u53c2\u8003\uff0c\u6512\u591f\u6837\u672c\u624d\u4e0b\u5224\u51b3 |\n| **\u5185\u5bb9\u7279\u5f81**\uff08angle A/B/C\u3001\u957f\u5ea6\u3001\u94a9\u5b50\u2014\u2014prompt \u76f4\u63a5\u63a7\u5236\u7684\u4e1c\u897f\uff09 | \u8f83\u5f3a\uff08\u540c\u6837\u8bdd\u9898\u4e0b\uff0c\u7279\u5f81\u5dee\u5f02\u624d\u663e\u51fa prompt \u7684\u624b\u827a\uff09 | **\u771f\u6b63\u53cd\u54fa prompt \u7684\u4f9d\u636e** |\n\n**\u6240\u4ee5\uff1a\u7248\u672c\u5bf9\u6bd4\u7ed9\u65b9\u5411\uff0c\u5185\u5bb9\u7279\u5f81\u7ed9\u6293\u624b\u3002** \u522b\u628a\u7248\u672c\u5224\u51b3\u5f53\u56e0\u679c\u3002\n\n**\u5224\u51b3\u7528\u4e2d\u4f4d\u6570\u4e0d\u7528\u5747\u503c**\uff08impression \u6781\u5ea6\u957f\u5c3e\uff0c\u4e00\u6761\u7206\u6b3e\u9a97\u6b7b\u5747\u503c\uff09\uff1b**\u6bcf\u7248\u81f3\u5c11 5 \u6761\u6210\u719f\u63a8**\u624d\u4e0b\u7248\u672c\u7ea7\u5224\u51b3\uff1b**\u6210\u719f\u7a97 = \u53d1\u5e03\u6ee1 3 \u5929**\uff08impression \u8fd8\u5728\u6da8\u7684\u592a\u65b0\u63a8\u4e0d\u8ba1\u5165\uff09\u3002\n\n**\u56de\u6eda\u662f\u4e00\u7b49\u516c\u6c11**\uff1aprompt \u5728 git \u91cc\uff0c\u56de\u6eda = `git checkout <\u65e7SHA> -- prompts/x/prompt.md`\u3002\n\n## \u7248\u672c = prompt.md \u7684 git short-SHA\n\n\u6bcf\u6761\u63a8\u5f52\u5230\u54ea\u7248 prompt\uff0c**\u6309\u65f6\u95f4\u63a8\u5bfc**\uff1a\u63a8\u53d1\u5e03\u65f6\u95f4 T \u2192 `prompts/x/prompt.md` git \u5386\u53f2\u91cc\u65f6\u95f4 \u2264 T \u7684\u6700\u540e\u4e00\u6b21\u63d0\u4ea4 = \u90a3\u6761\u63a8\u7528\u7684\u7248\u672c\u3002**\u4e0d\u7528\u6539 Action**\uff0c\u5386\u53f2\u63a8\u4e5f\u80fd\u56de\u586b\u3002\u65e9\u4e8e prompt \u6587\u4ef6\u5b58\u5728\u7684\u63a8 \u2192 `prompt_sha=null`\uff08pre-prompt\uff09\u3002\n\n## \u6570\u636e\u4ece\u54ea\u6765\n\n\u6bcf\u6761\u63a8\u7684 impression **X API \u4e0d\u7a33**\uff0c\u9760 **Content CSV \u5bfc\u51fa**\uff1a`x.com/i/account_analytics` \u2192 **Content** \u6807\u7b7e \u2192 \u5bfc\u51fa CSV\uff08\u542b Post id / Impressions / Engagements \u2026\uff09\u2192 \u4e22\u8fdb `inbox/`\u3002`Post id` \u5c31\u662f `tweet_id`\uff0c\u548c\u53d1\u63a8\u5386\u53f2\u5bf9\u5f97\u4e0a\u3002\n\n## When This Skill Fires\n\n- \u300c\u6539 X \u7684 prompt\u300d\u300c\u54ea\u7248 prompt \u6700\u597d\u300d\u300c\u4ec0\u4e48\u5185\u5bb9 impression \u9ad8\u300d\u300cX \u5185\u5bb9\u6539\u8fdb\u300d\n- \u8dd1 `/wjs-x-improving-content`\n\n## When NOT to use\n\n- \u6da8\u7c89 / \u6539 profile \u2192 [[wjs-x-increasing-follower]]\n- \u53ea\u662f\u53d1\u4e00\u6761\u63a8 \u2192 `/wjs-tweeting-from-articles`\n- \u63a8\u5e7f skill \u2192 `/wjs-promoting-skills`\n\n---\n\n## Workflow\n\n\u811a\u672c\u5728 `scripts/`\uff0c\u72b6\u6001\u5728 `state/`\u3002\u5148 `cd` \u5230 skill \u76ee\u5f55\u3002\n\n### Step 1 \u2014 \u5403\u6570\u636e\n\n```bash\npython3 scripts/ingest-tweets.py /path/to/content.csv\n```\n\njoin Content CSV + \u53d1\u63a8\u5386\u53f2\uff08`~/.claude/skills/wjs-tweeting-from-articles/state/history.jsonl`\uff0c\u5e26 slug/angle\uff09\u2192 `state/tweets.jsonl`\uff0c\u6309\u65e5\u671f\u63a8\u5bfc `prompt_sha`\uff0c\u7b97 `char_len` \u548c `mature`(\u22653\u5929)\u3002upsert\uff0c\u91cd\u8dd1\u66f4\u957f\u5bfc\u51fa\u5b89\u5168\u3002\n\n### Step 2 \u2014 \u6316\u5185\u5bb9\u7279\u5f81\uff08\u6838\u5fc3\uff0c\u7acb\u523b\u6709\u7528\uff09\n\n```bash\npython3 scripts/analyze-content.py          # \u6210\u719f\u63a8\npython3 scripts/analyze-content.py --all     # \u542b\u672a\u6210\u719f\uff08angle \u6837\u672c\u66f4\u5168\uff09\n```\n\n\u6309 angle / \u957f\u5ea6 / \u6765\u6e90\u62c6 impression \u4e2d\u4f4d\u6570 + \u4e92\u52a8\u7387\uff0c\u5217\u6700\u9ad8/\u6700\u4f4e\u63a8\u3002**\u8fd9\u5c42\u544a\u8bc9\u4f60 prompt \u8be5\u5f80\u54ea\u6539\u3002**\n\n### Step 3 \u2014 \u63d0\u4e00\u7248 prompt \u6539\u52a8\uff08\u5e26\u5047\u8bbe\uff09\n\n\u636e Step 2 \u7684\u4fe1\u53f7\uff0c\u5bf9 `prompts/x/prompt.md` \u505a**\u4e00\u4e2a\u53ef\u8bc1\u4f2a\u7684\u6539\u52a8**\uff08\u4f8b\uff1a\u300c\u504f\u77ed\u53e5\u300d\u300c\u5728\u62ff\u4e0d\u51c6\u65f6\u4f18\u5148\u9009\u91d1\u53e5 angle\u300d\uff09\u3002\u6539\u5b8c commit\uff1a\n\n```bash\ncd ~/code/wechat-publish\n# \u7f16\u8f91 prompts/x/prompt.md ...\ngit add prompts/x/prompt.md && git commit -m \"x prompt: <\u4e00\u53e5\u8bdd\u6539\u4e86\u5565>\"\nNEW_SHA=$(git log -1 --format=%h -- prompts/x/prompt.md)\n```\n\n\u767b\u8bb0\u6210\u7f16\u53f7\u5b9e\u9a8c\uff1a\n\n```bash\npython3 ~/.claude/skills/wjs-x-improving-content/scripts/ledger.py register \"$NEW_SHA\" \\\n  --hypothesis \"\u77ed\u53e5\u6bd4\u957f\u53e5 impression \u9ad8\uff0cprompt \u6536\u7d27\u5230 80 \u5b57\u4ee5\u5185\"\n```\n\n\u4e4b\u540e\u6bcf 6h \u7684 Action \u81ea\u52a8\u7528\u65b0\u7248\u751f\u6210\u63a8\u3002**\u4e00\u6b21\u53ea\u6539\u4e00\u5904**\uff0c\u5426\u5219\u5206\u4e0d\u6e05\u54ea\u4e2a\u6539\u52a8\u8d77\u7684\u4f5c\u7528\u3002\n\n### Step 4 \u2014 \u6512\u591f\u6837\u672c\u540e\u5224\u51b3\n\n```bash\npython3 scripts/evaluate.py     # \u5404\u7248\u672c\u4e2d\u4f4d impression + \u76f8\u90bb\u7248\u672c \u0394% \u5224\u51b3\n```\n\n`\u0394 \u2265 +10%` \u2192 **keep**\uff1b`\u0394 \u2264 -10%` \u2192 **rollback**\uff1b\u4e4b\u95f4 \u2192 **flat**\u3002\u6837\u672c\u4e0d\u8db3\uff08<5 \u6761\u6210\u719f\u63a8\uff09\u663e\u793a measuring\u3002\n\n- keep\uff1a`ledger.py keep <SHA> --note \"\u77ed\u53e5 +18%\"`\n- rollback\uff08\u5148\u95ee\u738b\u5efa\u7855\uff09\uff1a\n  ```bash\n  git -C ~/code/wechat-publish checkout <\u65e7SHA> -- prompts/x/prompt.md\n  git -C ~/code/wechat-publish commit -m \"x prompt: rollback to <\u65e7SHA>\"\n  ```\n  \u518d `ledger.py rollback <SHA> --note \"\u77ed\u53e5\u53cd\u800c\u6389\u4e86\"`\n\n### Step 5 \u2014 \u770b\u677f\n\n```bash\npython3 scripts/scoreboard.py    # \u5199\u5e76\u6253\u5370 state/SCOREBOARD.md\n```\n\n\u73b0\u72b6 + \u7248\u672c\u6392\u884c\u699c + \u5185\u5bb9\u7279\u5f81\uff08angle\uff09+ to-do\u3002\u7ed9\u738b\u5efa\u7855\u770b\u5c31\u53d1\u8fd9\u4e2a\u3002\n\n---\n\n## \u6570\u636e\u6a21\u578b\uff08state/\uff09\n\n- `tweets.jsonl` \u2014\u2014 \u4e00\u63a8\u4e00\u884c\uff1a`{tweet_id, date, impressions, engagements, likes, replies, reposts, new_follows, char_len, text, slug, angle, source(bot|manual), prompt_sha, age_days, mature}`\n- `versions.jsonl` \u2014\u2014 \u4e00 prompt \u7248\u672c\u4e00\u884c\uff1a`{id, prompt_sha, hypothesis, registered, status(active|kept|rolled_back), verdict, notes}`\n- `SCOREBOARD.md` \u2014\u2014 \u751f\u6210\u7269\n\n## \u9ed8\u8ba4\u53c2\u6570\uff08\u8981\u6539\u4f20 flag / \u6539 _common.py\uff09\n\n- \u6210\u719f\u7a97 `MATURITY_DAYS=3`\n- \u7248\u672c\u5224\u51b3\u6700\u5c11\u6837\u672c `MIN_TWEETS_PER_VERSION=5`\n- keep/rollback \u9608\u503c `--threshold 0.10`\n- \u56de\u6eda prompt **\u6c38\u8fdc\u5148\u95ee**\n\n## \u8def\u5f84\u5047\u8bbe\uff08_common.py \u9876\u90e8\uff0c\u6362\u673a\u5668\u6539\u8fd9\u91cc\uff09\n\n- \u53d1\u63a8\u5386\u53f2\uff1a`~/.claude/skills/wjs-tweeting-from-articles/state/history.jsonl`\n- prompt \u6587\u4ef6\uff1a`~/code/wechat-publish/prompts/x/prompt.md`\n","usage":"\u8bfb\u53d6 SKILL.md\uff0c\u5e76\u6309\u9700\u8bfb\u53d6\u914d\u5957\u6587\u4ef6\uff1b\u4e0b\u8f7d ZIP \u83b7\u53d6\u5b8c\u6574\u5305\u3002\u6280\u80fd\u662f\u4efb\u52a1\u65b9\u6cd5\uff0c\u4e0d\u6388\u4e88\u65b0\u589e\u8d26\u6237\u3001\u4ed8\u8d39\u6216\u7cfb\u7edf\u6743\u9650\u3002"}
