[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6DSCMF0DJQGJWHZGF8ZN0CS":3,"skill-same:01M6DSCMF0DJQGJWHZGF8ZN0CS":88},{"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":22,"publishedAt":36,"linkOnly":37,"markdownContent":38,"markdownBody":39,"frontMatter":40,"refName":41,"commitSha":42,"skillDirectory":43,"forksCount":44,"repositoryHtmlUrl":45,"repositoryHomepageUrl":6,"ownerHtmlUrl":46,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":47,"install":48,"resources":61},"01M6DSCMF0DJQGJWHZGF8ZN0CS","gtm-twitter-scraper",null,"Search and scrape Twitter\u002FX posts using Apify. Use when you need to find tweets, track brand mentions, monitor competitors on Twitter, or analyze Twitter discussions. Uses Twitter native search syntax (since:\u002Funtil:) for reliable date filtering.","AntifragileTech\u002Fantifragile-claude-code","AntifragileTech","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F174357194?v=4","01M6DQCYMK4CDSQQAN0ZC72NTV","01M6DQCYS9YPW1WKMQ5TJMPQ43",9,"MIT","https:\u002F\u002Fgithub.com\u002FAntifragileTech\u002Fantifragile-claude-code\u002Fblob\u002Fmaster\u002Fassets\u002Fskills\u002Fgtm\u002Fgtm-twitter-scraper\u002FSKILL.md",[17],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000015","视觉设计","SCENARIO","使用场景",[23,24,25,26,27,28,29,30,31,32,33,34,35],"twitter","gtm","gtm twitter scraper","monitor","search","scrape","competitors","analyze","brand","syntax","find","filtering","use","2026-11-10 10:12:30",false,"---\nname: gtm-twitter-scraper\ndescription: >\n  Search and scrape Twitter\u002FX posts using Apify. Use when you need to find tweets,\n  track brand mentions, monitor competitors on Twitter, or analyze Twitter discussions.\n  Uses Twitter native search syntax (since:\u002Funtil:) for reliable date filtering.\n---\n\n# Twitter Scraper\n\nSearch Twitter\u002FX posts using the Apify `apidojo\u002Ftweet-scraper` actor.\n\n## Quick Start\n\nRequires `APIFY_API_TOKEN` env var (or `--token` flag). Install dependency: `pip install requests`.\n\n```bash\n# Search with date range (recommended — uses Twitter native since:\u002Funtil: operators)\npython3 skills\u002Ftwitter-scraper\u002Fscripts\u002Fsearch_twitter.py \\\n  --query \"GrowthX.ai\" --since 2026-02-15 --until 2026-02-23\n\n# Quick summary of recent mentions\npython3 skills\u002Ftwitter-scraper\u002Fscripts\u002Fsearch_twitter.py \\\n  --query \"@growthxai\" --max-tweets 20 --output summary\n\n# Search without date filtering\npython3 skills\u002Ftwitter-scraper\u002Fscripts\u002Fsearch_twitter.py \\\n  --query \"AI content marketing\" --max-tweets 50\n```\n\n## Date Filtering\n\n**Important:** The `apidojo\u002Ftweet-scraper` actor's built-in date parameters are unreliable.\nThis script embeds `since:YYYY-MM-DD` and `until:YYYY-MM-DD` directly into the search query\nstring, using Twitter's native advanced search syntax. This ensures date filtering works\ncorrectly server-side.\n\n## How the Script Works\n\n1. Builds a search term with the query quoted and date operators appended\n2. Calls the Apify `apidojo\u002Ftweet-scraper` actor via REST API\n3. Polls until the run completes, then fetches the dataset\n4. Deduplicates by tweet ID\u002FURL\n5. Applies optional keyword filtering (client-side)\n6. Sorts by likes (descending) and outputs JSON or summary\n\n## CLI Reference\n\n| Flag | Default | Description |\n|------|---------|-------------|\n| `--query` | *required* | Search query (quoted in Twitter search) |\n| `--since` | none | Start date YYYY-MM-DD (inclusive) |\n| `--until` | none | End date YYYY-MM-DD (exclusive) |\n| `--max-tweets` | 50 | Max tweets to scrape |\n| `--keywords` | none | Additional filter keywords (comma-separated, OR logic) |\n| `--output` | json | Output format: `json` or `summary` |\n| `--token` | env var | Apify token (prefer `APIFY_API_TOKEN` env var) |\n| `--timeout` | 300 | Max seconds to wait for the Apify run |\n\n## Direct API Usage\n\n```json\n{\n  \"searchTerms\": [\"\\\"GrowthX.ai\\\" since:2026-02-15 until:2026-02-22\"],\n  \"maxTweets\": 50,\n  \"searchMode\": \"live\"\n}\n```\n\n## Output Format\n\nTweets are returned as JSON array sorted by likes. Each tweet has:\n\n```json\n{\n  \"id\": \"...\",\n  \"text\": \"Tweet text...\",\n  \"fullText\": \"Full tweet text...\",\n  \"likeCount\": 42,\n  \"retweetCount\": 5,\n  \"replyCount\": 3,\n  \"viewCount\": 1200,\n  \"createdAt\": \"2026-02-18T12:00:00.000Z\",\n  \"author\": {\"userName\": \"handle\", \"name\": \"Display Name\", ...},\n  \"twitterUrl\": \"https:\u002F\u002Ftwitter.com\u002F...\"\n}\n```\n\n## Common Workflows\n\n### Competitor Monitoring\n```bash\npython3 skills\u002Ftwitter-scraper\u002Fscripts\u002Fsearch_twitter.py \\\n  --query \"CompetitorName\" --since 2026-02-15 --until 2026-02-23 --output summary\n```\n\n### Brand Mention Tracking\n```bash\npython3 skills\u002Ftwitter-scraper\u002Fscripts\u002Fsearch_twitter.py \\\n  --query \"@YourHandle OR \\\"YourBrand\\\"\" --max-tweets 100\n```\n","# Twitter Scraper\n\nSearch Twitter\u002FX posts using the Apify `apidojo\u002Ftweet-scraper` actor.\n\n## Quick Start\n\nRequires `APIFY_API_TOKEN` env var (or `--token` flag). Install dependency: `pip install requests`.\n\n```bash\n# Search with date range (recommended — uses Twitter native since:\u002Funtil: operators)\npython3 skills\u002Ftwitter-scraper\u002Fscripts\u002Fsearch_twitter.py \\\n  --query \"GrowthX.ai\" --since 2026-02-15 --until 2026-02-23\n\n# Quick summary of recent mentions\npython3 skills\u002Ftwitter-scraper\u002Fscripts\u002Fsearch_twitter.py \\\n  --query \"@growthxai\" --max-tweets 20 --output summary\n\n# Search without date filtering\npython3 skills\u002Ftwitter-scraper\u002Fscripts\u002Fsearch_twitter.py \\\n  --query \"AI content marketing\" --max-tweets 50\n```\n\n## Date Filtering\n\n**Important:** The `apidojo\u002Ftweet-scraper` actor's built-in date parameters are unreliable.\nThis script embeds `since:YYYY-MM-DD` and `until:YYYY-MM-DD` directly into the search query\nstring, using Twitter's native advanced search syntax. This ensures date filtering works\ncorrectly server-side.\n\n## How the Script Works\n\n1. Builds a search term with the query quoted and date operators appended\n2. Calls the Apify `apidojo\u002Ftweet-scraper` actor via REST API\n3. Polls until the run completes, then fetches the dataset\n4. Deduplicates by tweet ID\u002FURL\n5. Applies optional keyword filtering (client-side)\n6. Sorts by likes (descending) and outputs JSON or summary\n\n## CLI Reference\n\n| Flag | Default | Description |\n|------|---------|-------------|\n| `--query` | *required* | Search query (quoted in Twitter search) |\n| `--since` | none | Start date YYYY-MM-DD (inclusive) |\n| `--until` | none | End date YYYY-MM-DD (exclusive) |\n| `--max-tweets` | 50 | Max tweets to scrape |\n| `--keywords` | none | Additional filter keywords (comma-separated, OR logic) |\n| `--output` | json | Output format: `json` or `summary` |\n| `--token` | env var | Apify token (prefer `APIFY_API_TOKEN` env var) |\n| `--timeout` | 300 | Max seconds to wait for the Apify run |\n\n## Direct API Usage\n\n```json\n{\n  \"searchTerms\": [\"\\\"GrowthX.ai\\\" since:2026-02-15 until:2026-02-22\"],\n  \"maxTweets\": 50,\n  \"searchMode\": \"live\"\n}\n```\n\n## Output Format\n\nTweets are returned as JSON array sorted by likes. Each tweet has:\n\n```json\n{\n  \"id\": \"...\",\n  \"text\": \"Tweet text...\",\n  \"fullText\": \"Full tweet text...\",\n  \"likeCount\": 42,\n  \"retweetCount\": 5,\n  \"replyCount\": 3,\n  \"viewCount\": 1200,\n  \"createdAt\": \"2026-02-18T12:00:00.000Z\",\n  \"author\": {\"userName\": \"handle\", \"name\": \"Display Name\", ...},\n  \"twitterUrl\": \"https:\u002F\u002Ftwitter.com\u002F...\"\n}\n```\n\n## Common Workflows\n\n### Competitor Monitoring\n```bash\npython3 skills\u002Ftwitter-scraper\u002Fscripts\u002Fsearch_twitter.py \\\n  --query \"CompetitorName\" --since 2026-02-15 --until 2026-02-23 --output summary\n```\n\n### Brand Mention Tracking\n```bash\npython3 skills\u002Ftwitter-scraper\u002Fscripts\u002Fsearch_twitter.py \\\n  --query \"@YourHandle OR \\\"YourBrand\\\"\" --max-tweets 100\n```\n",{"name":5,"description":7},"master","c73386b305dec167db7654e0e6feacb462d4f9dc","assets\u002Fskills\u002Fgtm\u002Fgtm-twitter-scraper",1,"https:\u002F\u002Fgithub.com\u002FAntifragileTech\u002Fantifragile-claude-code","https:\u002F\u002Fgithub.com\u002FAntifragileTech","2026-10-02 14:22:14",{"source":8,"skillName":5,"commands":49,"prompt":59,"zipAvailable":60},[50,53,56],{"tool":51,"command":52},"npx","npx skills add AntifragileTech\u002Fantifragile-claude-code --skill gtm-twitter-scraper",{"tool":54,"command":55},"bunx","bunx skills add AntifragileTech\u002Fantifragile-claude-code --skill gtm-twitter-scraper",{"tool":57,"command":58},"pnpm","pnpm dlx skills add AntifragileTech\u002Fantifragile-claude-code --skill gtm-twitter-scraper","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FAntifragileTech\u002Fantifragile-claude-code\u002Fblob\u002Fmaster\u002Fassets\u002Fskills\u002Fgtm\u002Fgtm-twitter-scraper\u002FSKILL.md",true,[62,68,74,78,84],{"path":63,"resourceType":64,"resourceTypeDesc":65,"sizeBytes":66,"sourceHtmlUrl":67},".security-scan-passed","OTHER","其他",181,"https:\u002F\u002Fgithub.com\u002FHuuBar\u002Fskill-routing-experiment\u002Fblob\u002Fmain\u002Funified_skills\u002Fdaymade\u002Fwindows-remote-desktop-connection-doctor\u002F.security-scan-passed",{"path":69,"resourceType":70,"resourceTypeDesc":71,"sizeBytes":72,"sourceHtmlUrl":73},"references\u002Favd_transport_protocols.md","REFERENCE","参考文档",6884,"https:\u002F\u002Fgithub.com\u002FHuuBar\u002Fskill-routing-experiment\u002Fblob\u002Fmain\u002Funified_skills\u002Fdaymade\u002Fwindows-remote-desktop-connection-doctor\u002Freferences\u002Favd_transport_protocols.md",{"path":75,"resourceType":70,"resourceTypeDesc":71,"sizeBytes":76,"sourceHtmlUrl":77},"references\u002Fwindows_app_log_analysis.md",7843,"https:\u002F\u002Fgithub.com\u002FHuuBar\u002Fskill-routing-experiment\u002Fblob\u002Fmain\u002Funified_skills\u002Fdaymade\u002Fwindows-remote-desktop-connection-doctor\u002Freferences\u002Fwindows_app_log_analysis.md",{"path":79,"resourceType":80,"resourceTypeDesc":81,"sizeBytes":82,"sourceHtmlUrl":83},"scripts\u002Fsearch_twitter.py","SCRIPT","脚本",7868,"https:\u002F\u002Fgithub.com\u002FAntifragileTech\u002Fantifragile-claude-code\u002Fblob\u002Fmaster\u002Fassets\u002Fskills\u002Fgtm\u002Fgtm-twitter-scraper\u002Fscripts\u002Fsearch_twitter.py",{"path":85,"resourceType":70,"resourceTypeDesc":71,"sizeBytes":86,"sourceHtmlUrl":87},"skill.meta.json",258,"https:\u002F\u002Fgithub.com\u002FAntifragileTech\u002Fantifragile-claude-code\u002Fblob\u002Fmaster\u002Fassets\u002Fskills\u002Fgtm\u002Fgtm-twitter-scraper\u002Fskill.meta.json",[89,112,127,142,155,168],{"skillNo":90,"name":91,"nameZh":6,"description":92,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":93,"categories":94,"keywords":106,"publishedAt":36},"01M6DT9Q6VYA615SCXR757TZZ7","writing-skills","Use when creating new skills, editing existing skills, or verifying skills work before deployment","https:\u002F\u002Fgithub.com\u002FAntifragileTech\u002Fantifragile-claude-code\u002Fblob\u002Fmaster\u002Fassets\u002Fskills\u002Fthinking\u002Fwriting-skills\u002FSKILL.md",[95,98,101],{"categoryNo":96,"categoryName":97,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000008","测试与质量",{"categoryNo":99,"categoryName":100,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000018","写作与文案",{"categoryNo":102,"categoryName":103,"taxonomyType":104,"taxonomyTypeDesc":105},"01JBSEEDCAT000000000000036","内容创作者","PROFESSION","适用职业",[107,108,35,109,110,111],"writing skills","writing","editing","work","deployment",{"skillNo":113,"name":114,"nameZh":6,"description":115,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":116,"categories":117,"keywords":120,"publishedAt":36},"01M6DT9GFHDNY90P41WGAE1TV0","writing-plans","Use when you have a spec or requirements for a multi-step task, before touching code","https:\u002F\u002Fgithub.com\u002FAntifragileTech\u002Fantifragile-claude-code\u002Fblob\u002Fmaster\u002Fassets\u002Fskills\u002Fthinking\u002Fwriting-plans\u002FSKILL.md",[118,119],{"categoryNo":99,"categoryName":100,"taxonomyType":20,"taxonomyTypeDesc":21},{"categoryNo":102,"categoryName":103,"taxonomyType":104,"taxonomyTypeDesc":105},[121,122,108,123,124,35,125,126],"plans","writing plans","requirements","task","code","spec",{"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":135,"publishedAt":36},"01M6DT9C6PFGD86WS3HY7YE3XG","docs:write-concisely","Apply writing rules to any documentation that humans will read. Makes your writing clearer, stronger, and more professional.","https:\u002F\u002Fgithub.com\u002FAntifragileTech\u002Fantifragile-claude-code\u002Fblob\u002Fmaster\u002Fassets\u002Fskills\u002Fthinking\u002Fwrite-concisely\u002FSKILL.md",[133,134],{"categoryNo":99,"categoryName":100,"taxonomyType":20,"taxonomyTypeDesc":21},{"categoryNo":102,"categoryName":103,"taxonomyType":104,"taxonomyTypeDesc":105},[136,137,138,139,140,141,108],"docs:write concisely","write","docs","read","Rules","documentation",{"skillNo":143,"name":144,"nameZh":6,"description":145,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":146,"categories":147,"keywords":148,"publishedAt":36},"01M6DT98AWQ27P0N1CG97WAG66","kaizen:why","Iterative Five Whys root cause analysis drilling from symptoms to fundamentals","https:\u002F\u002Fgithub.com\u002FAntifragileTech\u002Fantifragile-claude-code\u002Fblob\u002Fmaster\u002Fassets\u002Fskills\u002Fthinking\u002Fwhy\u002FSKILL.md",[],[144,149,150,151,152,153,154],"why","kaizen","issue","five whys","analysis","root cause analysis",{"skillNo":156,"name":157,"nameZh":6,"description":158,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":159,"categories":160,"keywords":161,"publishedAt":36},"01M6DT93EH25NAX19R3WGE1P53","verification-loop","A comprehensive verification system for Claude Code sessions.","https:\u002F\u002Fgithub.com\u002FAntifragileTech\u002Fantifragile-claude-code\u002Fblob\u002Fmaster\u002Fassets\u002Fskills\u002Fthinking\u002Fverification-loop\u002FSKILL.md",[],[162,163,164,165,125,166,167],"verification loop","verification","loop","sessions","claude code sessions","system",{"skillNo":169,"name":170,"nameZh":6,"description":171,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":172,"categories":173,"keywords":174,"publishedAt":36},"01M6DT90GW7Z7VCN98P9DVYSNC","verification-before-completion","Use when about to claim work is complete, fixed, or passing, before committing or creating PRs - requires running verification commands and confirming output before making any success claims; evidence before assertions always","https:\u002F\u002Fgithub.com\u002FAntifragileTech\u002Fantifragile-claude-code\u002Fblob\u002Fmaster\u002Fassets\u002Fskills\u002Fthinking\u002Fverification-before-completion\u002FSKILL.md",[],[175,163,176,110,35,177,178,179],"verification before completion","commands","evidence","claim","complete"]