Compare commits
914 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| cae3843828 | |||
| c7460f6114 | |||
| 40b42b7bed | |||
| 0b35e0c2c8 | |||
| ab124fc8f9 | |||
| c7cc880c36 | |||
| acdc397fec | |||
| 4fa89d772d | |||
| 698bfd0c3d | |||
| ddc761d2c2 | |||
| 6835eb8b1e | |||
| 55885bcacc | |||
| e93c8249d8 | |||
| 1004324ad3 | |||
| 9b4684d5f3 | |||
| 475a51e5dd | |||
| c3591ee056 | |||
| ee003df621 | |||
| 47f532fe78 | |||
| 5d21d9e924 | |||
| 9fcbd7b472 | |||
| d82c6a0948 | |||
| 52f53312ff | |||
| a22c8e7576 | |||
| 57f8d2c87a | |||
| b0fdfb0d51 | |||
| a940c98965 | |||
| cb4e93cff1 | |||
| 53fb6104c9 | |||
| 21c54d646c | |||
| f310b82c14 | |||
| ef6c279ceb | |||
| 0188da7ce7 | |||
| 9067158574 | |||
| 5cc8e7cceb | |||
| e82dbd41e1 | |||
| 4b071d2605 | |||
| b2ab9bf45b | |||
| afb27826e9 | |||
| 3d17afb39e | |||
| 0f205e64e1 | |||
| 2e8dcaf746 | |||
| e0011c07e3 | |||
| b92fbd4201 | |||
| 4c186a182c | |||
| 69a2510637 | |||
| 1434895279 | |||
| 0c0c51f1fe | |||
| 0b6109dd77 | |||
| eda1ffe668 | |||
| 0612ff7605 | |||
| a4e7eca516 | |||
| 906d9614f5 | |||
| 48fecf0fa4 | |||
| b6efa6445f | |||
| fcff56b57c | |||
| bb08c50bdd | |||
| 3d33d97a35 | |||
| f60d477d74 | |||
| 94138da0ae | |||
| 1809f08f9d | |||
| cd10487c6c | |||
| 1bc916fc04 | |||
| 6bfc957e55 | |||
| 9ef66ff61c | |||
| a7560a2d2e | |||
| 529b3f3c1b | |||
| b8db4341ed | |||
| 90a49a37bc | |||
| 8c86ffda9e | |||
| 6172f0395e | |||
| 7999421b57 | |||
| 9e833f3ab0 | |||
| 29d1dd6965 | |||
| 748b6eae08 | |||
| 3e354ff7f2 | |||
| cce0f687f0 | |||
| 7103df779b | |||
| a21c463b6f | |||
| 1b559129fc | |||
| 779c486d67 | |||
| b201aa52c2 | |||
| 2ae2718ec9 | |||
| 91d1f9a17c | |||
| 4e06976079 | |||
| 0b4d8b1bbd | |||
| b9e3c21cbf | |||
| 987b9b995a | |||
| 85143d3c4e | |||
| d57b147749 | |||
| 472207164a | |||
| ce489808fa | |||
| 074dc2569e | |||
| d7709a56a0 | |||
| d9d0019af8 | |||
| 1ba7a2bb6a | |||
| 8dbf7219fb | |||
| 279a406e95 | |||
| 666c8eaf45 | |||
| da7bc30a02 | |||
| c0e9fbf80b | |||
| 4c7b87b86d | |||
| bfe1453c66 | |||
| 249dbb6e23 | |||
| 5cd86083c1 | |||
| a50761a1f1 | |||
| 2471ea23ce | |||
| 1758502190 | |||
| e3082d7d48 | |||
| f7767cf3de | |||
| c9cb532cba | |||
| f323ec6e7a | |||
| ec9c8e32a6 | |||
| 5c6e671596 | |||
| 274a92df46 | |||
| cda646a5a0 | |||
| 6f1ae7ce63 | |||
| 612c58f873 | |||
| c9fb132fa0 | |||
| 95aaaf261b | |||
| ce70edb7fa | |||
| e72103ccb0 | |||
| 650d5be709 | |||
| a1ebe21684 | |||
| 6895bde883 | |||
| a7ac3f6d32 | |||
| 9c40c8f5c4 | |||
| 3af5a9fc15 | |||
| 14e6d62cd1 | |||
| 89a3a8d3d6 | |||
| d5ab765b64 | |||
| 01aac1ab20 | |||
| 8a0fcf40fb | |||
| ec6c2e4d2f | |||
| f0b1403a40 | |||
| dbc7621fc8 | |||
| a6712f3cbf | |||
| 573555c76c | |||
| a2ed2f3167 | |||
| f780817a50 | |||
| 5901a0b51a | |||
| 01aef34ca4 | |||
| 51781fe02d | |||
| 5ccda4036b | |||
| 4142665a4f | |||
| 92b664e742 | |||
| 27e17245b6 | |||
| f9a3c919bc | |||
| ca8574da75 | |||
| 7a574f9189 | |||
| 729c2a5a47 | |||
| a7ba39820d | |||
| cfe827bb7b | |||
| 7faae4e19b | |||
| 7ee64fcee3 | |||
| 89e699a35a | |||
| 249c7a4c04 | |||
| 2626d0ff2f | |||
| 50d44bf208 | |||
| 691c21234c | |||
| e71ac74cf0 | |||
| b58c2e7947 | |||
| 4488271f79 | |||
| d5a8f2836a | |||
| 224e84a043 | |||
| 665f9a893b | |||
| 9585ec4b84 | |||
| cb44afeb19 | |||
| 39cca461aa | |||
| 3176b07842 | |||
| 1d927db51d | |||
| b8cfb9d03c | |||
| 5c4fe1ed1d | |||
| 86c5303c1a | |||
| aab5395778 | |||
| ed49713e4d | |||
| de3b692b1c | |||
| 586b7e29f9 | |||
| e4f7e9b175 | |||
| 7650a68638 | |||
| 4e14c9a259 | |||
| d1efed83d4 | |||
| 1d55d8bef1 | |||
| 2f4374ba9f | |||
| 943e18d1c3 | |||
| 4b027919c7 | |||
| af5f0ec4e3 | |||
| d31d5f3b3a | |||
| d1ecc2f062 | |||
| c245847046 | |||
| d3cafd2980 | |||
| 22e095fa0a | |||
| dd69abe669 | |||
| 0a1a5799ae | |||
| c410a2d141 | |||
| f462577eaa | |||
| 9bf0a79a70 | |||
| 4ce7a0ebc9 | |||
| 3b0b021e2c | |||
| 9c020b1393 | |||
| a06e221552 | |||
| 6b62b867b5 | |||
| cb27c689b5 | |||
| 298310ca34 | |||
| ffa2e31e9b | |||
| 0270c12352 | |||
| 7abcb9d108 | |||
| 021bdbf60e | |||
| 06b68a883a | |||
| 91e606a369 | |||
| 24c6567731 | |||
| f1beee7e81 | |||
| fc45949239 | |||
| c74fbd1b0d | |||
| 856da6dc8e | |||
| f53bde5420 | |||
| 5f4e7e73c3 | |||
| 602dbde2db | |||
| 98dd5dce29 | |||
| f5a0a18ec0 | |||
| 6287cf0aeb | |||
| 6340fadf31 | |||
| 961572de22 | |||
| 541717af30 | |||
| ae8c32327f | |||
| c4e70ee40a | |||
| 8f31ed3179 | |||
| ee04fba116 | |||
| 030a2c8fe6 | |||
| 4bbfee4055 | |||
| 750176314a | |||
| 1e82659bb4 | |||
| 16bfbd8ce9 | |||
| a5b3ca1f3c | |||
| 9e00fe5b6d | |||
| f5bbc03aab | |||
| 51424be41d | |||
| 6a1d93bdb5 | |||
| 6318f7449e | |||
| 76215629b9 | |||
| 47b924c87f | |||
| cc620449ce | |||
| 443b05f330 | |||
| 9b9bd42e0f | |||
| f857a5101f | |||
| 784624c002 | |||
| 3e78f45438 | |||
| a0bbac22e6 | |||
| a1ab6fc4b6 | |||
| a28668ad30 | |||
| cea36329af | |||
| 344731b95a | |||
| 6e87b83d78 | |||
| a9d2674147 | |||
| 7d2868b9d1 | |||
| 3f7c8c5022 | |||
| 433ac8d2ed | |||
| 545a8bdc33 | |||
| 732d4ae76b | |||
| ad52872ecf | |||
| 283dbae20c | |||
| 9a550c0ccb | |||
| 62072dacfe | |||
| e0775b9d18 | |||
| 34365e68fe | |||
| d4d603d540 | |||
| d5f3083b82 | |||
| 4bd20f3f4b | |||
| c09e67ce76 | |||
| 5b8b021318 | |||
| a61852b34e | |||
| f168eecd67 | |||
| 65951b3bd7 | |||
| 80cc0aae13 | |||
| d979c3640a | |||
| 97c7636126 | |||
| 287327df60 | |||
| 6db296ca68 | |||
| 1e365e573b | |||
| 8a0dea2884 | |||
| e219c65ea7 | |||
| 0afd78dabc | |||
| 91dba43d1f | |||
| eefeba9537 | |||
| 979e6dece3 | |||
| fcf047c3f3 | |||
| a824fa3c3a | |||
| c966c93653 | |||
| 2c149b73e4 | |||
| 0abd39abaa | |||
| f067f90151 | |||
| 811f044367 | |||
| 7bd11506bd | |||
| d3b0a45a94 | |||
| 7a4a0ee223 | |||
| 3494926ef2 | |||
| e389a0ecc4 | |||
| 39cfd722f8 | |||
| 0e427ab98a | |||
| 9a9d735ef9 | |||
| 25b86de81c | |||
| 945f11d048 | |||
| 0cd5772834 | |||
| e64ed92b10 | |||
| 030dda7399 | |||
| 3e36224927 | |||
| 8bec337c99 | |||
| 42eb5f5273 | |||
| 6e91e8106c | |||
| 51b6762f4b | |||
| b582bffcb3 | |||
| bd7e46fbfd | |||
| 770b91e023 | |||
| 46269c46a5 | |||
| 963a6c8a15 | |||
| fcf428266d | |||
| 824a4a9595 | |||
| eee3359248 | |||
| 50d062b88b | |||
| 0aed01555a | |||
| d9c9edffb8 | |||
| f74169fdaa | |||
| 22a2e1d254 | |||
| 76fb9de86b | |||
| ead5ce5466 | |||
| 3f0d1b410b | |||
| db8a2ad5ab | |||
| f48f6d337e | |||
| 66428a8a8e | |||
| edbb3daa3b | |||
| bdb4827bc7 | |||
| ba5c8b6aeb | |||
| ae229e1f3f | |||
| d1398ef3a1 | |||
| 82bc473e29 | |||
| e3a481df37 | |||
| c65bd764dd | |||
| 50d8101013 | |||
| 5f49ad2b0c | |||
| e12330df3f | |||
| cc5598de84 | |||
| a431340fd2 | |||
| 136b4f90c1 | |||
| 6c9f1ada5c | |||
| 5eea498e7d | |||
| 9b9439d25b | |||
| 55f7aa5850 | |||
| 89a5685953 | |||
| dd5bdbb707 | |||
| 36d6f29684 | |||
| 9961d4396f | |||
| 21c0a9291a | |||
| 207cfa1e74 | |||
| f6edf563b4 | |||
| 834535ec15 | |||
| 472eb88bba | |||
| 91d5887199 | |||
| 0f98304f6e | |||
| 5f86484c0a | |||
| c5ff5505b3 | |||
| 25cfced305 | |||
| 565bb03b63 | |||
| c8ab309f45 | |||
| c3649f30f5 | |||
| ed42d8aa26 | |||
| dab238ea7f | |||
| 56fd24bf14 | |||
| f00162ca89 | |||
| 977f0beed5 | |||
| aecab67c81 | |||
| 4d69ae6a1f | |||
| 9849de1396 | |||
| 6291ac7ec2 | |||
| e65914a9c1 | |||
| fda62bd215 | |||
| 0fa5542dd4 | |||
| 1b832a26bc | |||
| 561e224248 | |||
| 220928f664 | |||
| f092c9f5ba | |||
| 10e19f00fd | |||
| 9400673608 | |||
| f9a016e130 | |||
| a8506fc315 | |||
| 8c2b1c3985 | |||
| 5a74d17559 | |||
| 9124035d7e | |||
| 9f77d3ac31 | |||
| 7f6fd4efd4 | |||
| a8472599b1 | |||
| 8979bc74e4 | |||
| 8fdab71bd6 | |||
| 9450f1f29b | |||
| 64ed8aaf29 | |||
| 22a21e8f2f | |||
| b8122a28d8 | |||
| 03848365dd | |||
| e0102f817d | |||
| e5354f702a | |||
| 7b4ae7afb8 | |||
| e14af82f12 | |||
| ef193c093c | |||
| 8d1c08568d | |||
| b371c0d31f | |||
| 859a63146f | |||
| bed9679699 | |||
| afba3ba528 | |||
| 0a5bdee16d | |||
| 75badd9117 | |||
| 634b95b787 | |||
| 96ab2e276b | |||
| 891797248d | |||
| cffca3aeb8 | |||
| b6e79032c2 | |||
| c4e5d7b50c | |||
| c165fbfab5 | |||
| 87d2be30b1 | |||
| faf8782dd4 | |||
| e603c7b4f0 | |||
| a6a7a2fb65 | |||
| f03d8a184c | |||
| 0381df5025 | |||
| d39d25f8d6 | |||
| 3fa91fce90 | |||
| 214a8fa059 | |||
| 5634bb3126 | |||
| e1f5e4686d | |||
| a1bda56650 | |||
| 73c9a84c88 | |||
| fbc828ad4a | |||
| ad69960683 | |||
| d9380c629b | |||
| 5b168c7382 | |||
| fce934bd31 | |||
| 7e21004236 | |||
| 7a5ded08ec | |||
| ae65f9aad1 | |||
| 6ef466d43f | |||
| 073ce4278d | |||
| c320908ee2 | |||
| 2d2803f62e | |||
| c2d7412411 | |||
| 885fea5ba5 | |||
| 5b5ed6ddd1 | |||
| ff22e1cd18 | |||
| 9eff7be21c | |||
| 91987294cd | |||
| 334c813cef | |||
| 30c84d7878 | |||
| 9fff90b62b | |||
| ccca10bbaf | |||
| 6a07685c3e | |||
| fa0f840a89 | |||
| faecb03b7f | |||
| 87ef4db772 | |||
| be8438459a | |||
| d434947e03 | |||
| d31f26eb17 | |||
| 09c163cec8 | |||
| ef8cc69fdd | |||
| 9d0fb3180b | |||
| 0283cf2d25 | |||
| b7e92d49c0 | |||
| 3360ef3b23 | |||
| 8333a9a1aa | |||
| 6bed7a3dc5 | |||
| 9a59d88b11 | |||
| 402b1eedf4 | |||
| 1cc1b2efa1 | |||
| 8d10d34010 | |||
| d6a4dd0822 | |||
| ffe4d3477d | |||
| 3bad700f0b | |||
| 3e0f5ebe1e | |||
| 29bb548772 | |||
| 3ecfc9126c | |||
| b70f52f426 | |||
| 7eaa4e0b11 | |||
| 07e6b59e62 | |||
| 76a7ceb553 | |||
| 84b21434dd | |||
| 7f95ca7c21 | |||
| a86c8a162b | |||
| 92c104b911 | |||
| b8e9ba92c7 | |||
| b6fa5b13e6 | |||
| 7d90275d57 | |||
| b034c7373b | |||
| a4d837d74e | |||
| 5f499d4eec | |||
| cd15598e62 | |||
| 884e82bd4f | |||
| 3a300a91b6 | |||
| 019be0f853 | |||
| 557eaec9ee | |||
| 46fe7570ad | |||
| 76b9e4b98f | |||
| 1c6cece934 | |||
| 36af50f1b6 | |||
| 9e2f0bab7d | |||
| 9e19c7e8e7 | |||
| 6b12caa39e | |||
| 4f0cff17a8 | |||
| 6fcf1792d6 | |||
| ca3fbbe377 | |||
| 3c7edd69de | |||
| e8187a36da | |||
| 358525d38b | |||
| 2cc88ecaf1 | |||
| b43c7f43e2 | |||
| 627d36c0aa | |||
| bad3ba97fa | |||
| c591ca3330 | |||
| a3445c0914 | |||
| 7a0800fd74 | |||
| fd6e64dfae | |||
| 8f843ad665 | |||
| 8c11b3a259 | |||
| 9662054e08 | |||
| 50df263261 | |||
| a2a4839987 | |||
| 7d366e0cc7 | |||
| e25a550e90 | |||
| b1b9b8a787 | |||
| a0f7789893 | |||
| ad7d1bf928 | |||
| 6c6876dc63 | |||
| a9749334d7 | |||
| e0a4e907c0 | |||
| 026639614d | |||
| 2ee0fc5c22 | |||
| c1ca1a4e9d | |||
| 57860aff1c | |||
| 4402dd317f | |||
| 6a92f63a56 | |||
| fd0e47d99f | |||
| c5b4a82917 | |||
| 09cd085b47 | |||
| 2655d8f4c8 | |||
| 122158415a | |||
| 1bdc14878c | |||
| 26da1e157c | |||
| 4aae93ee5d | |||
| 41f5e480ab | |||
| 82f9340c91 | |||
| 367904f156 | |||
| 7f211acbdb | |||
| 509fd3a553 | |||
| 8d3a9e4368 | |||
| 1e03af19e0 | |||
| f032e25e51 | |||
| 84a19cf44d | |||
| 861462689e | |||
| e74b0e1e93 | |||
| c5c0239dc9 | |||
| 269dda9f6c | |||
| a35677da77 | |||
| a78ab69ffe | |||
| 0bb01c2d6a | |||
| 61d46b54ee | |||
| e7b7e61237 | |||
| a547a0a948 | |||
| 8ea048b988 | |||
| 1b23a3e900 | |||
| 35f12cb9ea | |||
| a1afbce84c | |||
| 15781bfcc0 | |||
| 444e07d141 | |||
| 850c7e0185 | |||
| d53121f035 | |||
| daca71f89e | |||
| d51e91ea26 | |||
| 170b570cbc | |||
| 4bae05e7fa | |||
| a4f1f94802 | |||
| 16ce073d0c | |||
| 5994b4f76a | |||
| bb5e6efbf9 | |||
| 2502a19d46 | |||
| 0f280245ac | |||
| 236c17a3b8 | |||
| b0b9e6ac5b | |||
| 5ede01745c | |||
| 19f8019323 | |||
| b2a762aa24 | |||
| 6b0261ff0e | |||
| 378be7cfd5 | |||
| 76b8df40d3 | |||
| eb2d8b55e0 | |||
| 1a8ffd4847 | |||
| 1814bb1967 | |||
| f236cff86a | |||
| 44971a6aae | |||
| a8e462c978 | |||
| d9a0ac31f2 | |||
| 3e60c0817d | |||
| d530c90239 | |||
| aef6f35460 | |||
| 77bd235f64 | |||
| e1017e95c9 | |||
| 71b1e8a411 | |||
| 618458eb7e | |||
| 8cccd3e982 | |||
| 17fb17222b | |||
| 8ccd778366 | |||
| a3f173dc8a | |||
| 5a3ac8ca37 | |||
| e8eb15102f | |||
| fd6e70c539 | |||
| d0b990e211 | |||
| 0f03a67166 | |||
| 5a625fda9f | |||
| b296a65515 | |||
| f2737fc035 | |||
| 9ce7264d43 | |||
| f458e0f5af | |||
| 8f565ee241 | |||
| dd7e6a1562 | |||
| 65313ce542 | |||
| 5ab8c3ba76 | |||
| 38bfb504e1 | |||
| e8f23b4205 | |||
| b78ce34922 | |||
| 0656b868e7 | |||
| 16a4fa9c39 | |||
| 3b75ff1537 | |||
| 321975e144 | |||
| 5f9c637bbe | |||
| 19132b0b5e | |||
| 1e4150ad78 | |||
| 6a15afd8e8 | |||
| 0ab7051bc5 | |||
| ec0b126af6 | |||
| d9e8a046ef | |||
| 87bf3debcc | |||
| 2f4b023db8 | |||
| 261ea5895c | |||
| 2692e0f4a2 | |||
| 10f35f82fe | |||
| 5b29b8f427 | |||
| 6a5a122195 | |||
| 7bda02169d | |||
| 6b40d2c46f | |||
| 4a99c4f557 | |||
| 5c802b0daa | |||
| 0e353ae03f | |||
| 0a5102e193 | |||
| cfde1dbbe4 | |||
| 608381a818 | |||
| af4cf7c03d | |||
| 5b0308b9e4 | |||
| 5817ef8387 | |||
| a87c1ba058 | |||
| 7214dd6051 | |||
| 6acf2fdbe2 | |||
| 07a3bdb3cf | |||
| 87577ff126 | |||
| 400fc4cc00 | |||
| e9ecce0b1c | |||
| f3df47c381 | |||
| c9cf3ef92f | |||
| 46cf2328aa | |||
| 7506cbd542 | |||
| a6bd481e61 | |||
| aba6172032 | |||
| d07e4698e3 | |||
| 4c0282dd55 | |||
| 99909fca67 | |||
| 36c43d50b7 | |||
| ecf68347db | |||
| e2d9d705f6 | |||
| 9c09a67ac2 | |||
| 32da0bd6cb | |||
| 863c3bc145 | |||
| 9f39d10bc5 | |||
| 03043da407 | |||
| 8bab997854 | |||
| 375fd0bcc0 | |||
| 92d65723e4 | |||
| f794f82af5 | |||
| 791c0a57a0 | |||
| 211df0deaa | |||
| d7b3995da1 | |||
| e217db77cc | |||
| 8ea207b348 | |||
| b04212680d | |||
| 2c2cfb9e7e | |||
| 3276496f49 | |||
| 68ae74ff4f | |||
| 27c90504c0 | |||
| f4eb0af104 | |||
| 79b5d049ce | |||
| 0e2059661a | |||
| b1c5f8db82 | |||
| 89c5cb9d5d | |||
| 5d4f9ef2c5 | |||
| 01262f78c6 | |||
| 96a4a78faa | |||
| eb2d7a0f37 | |||
| 719cdef2fb | |||
| ac04b56acc | |||
| 42bfc6c76c | |||
| 5a2fe5279b | |||
| a717dd2b2c | |||
| 9f08bb68b5 | |||
| 602de1ebda | |||
| bf3a82a87e | |||
| c010feb8f8 | |||
| edea402b7c | |||
| 4d4ac97ffb | |||
| cd34966b4f | |||
| 85255be350 | |||
| 1aa120a420 | |||
| 306d8c2d73 | |||
| d0dcf751f1 | |||
| afd4b04d6d | |||
| 14d8f62e02 | |||
| 0fd532d249 | |||
| 8867a007ea | |||
| 8af8f06b06 | |||
| 01b5f3dc1e | |||
| 2e39ee8ce4 | |||
| 37033164da | |||
| 9fe4b8f130 | |||
| 73dc6b9996 | |||
| 1fd763e09f | |||
| e0f6ef845a | |||
| c918e18465 | |||
| 6fe0aca7ee | |||
| d9f606ff75 | |||
| 74a387b093 | |||
| 4a30923892 | |||
| 9fb19eae63 | |||
| d1cc29d338 | |||
| 095bcae915 | |||
| ded52062e6 | |||
| 164d7ae6ed | |||
| f1ce7533e6 | |||
| 0b939bf703 | |||
| 9f95efb215 | |||
| ff54c07a3b | |||
| e276c30477 | |||
| 2f277dfc66 | |||
| 6c2c55733c | |||
| 997708ad48 | |||
| c913e1cf89 | |||
| 54db014c7c | |||
| 4f6b86c456 | |||
| 80a1a47eef | |||
| c845f483d6 | |||
| dc934ddb6a | |||
| 80392061d4 | |||
| c04bd67922 | |||
| ed455ca036 | |||
| b1773be8f3 | |||
| 5b87cca886 | |||
| bbf892aecc | |||
| 2acbf8a869 | |||
| e6b89f2644 | |||
| 2c2755b49c | |||
| 18b5658674 | |||
| 145adc9f56 | |||
| b100caf2df | |||
| dc0cb9850b | |||
| ceec99b24c | |||
| d1823a2d05 | |||
| 17caa0526d | |||
| f03cb866aa | |||
| 72495c1c14 | |||
| 1f7e85a03f | |||
| 949bcf8942 | |||
| 00d01933e0 | |||
| 5f054380c5 | |||
| ff21243517 | |||
| 4e91f4e754 | |||
| 952a876536 | |||
| 1f23e3f980 | |||
| 5269806a75 | |||
| adac4c377a | |||
| 3107325443 | |||
| 1da9c601c3 | |||
| 4388fed46a | |||
| a7d6ef051a | |||
| b7df5ecd2d | |||
| a0d61b0dc6 | |||
| 5f218aaac5 | |||
| a709d66e2a | |||
| 4d9f29d2ed | |||
| 52fb0e50cb | |||
| f635f78e4a | |||
| a070a584a4 | |||
| 8e18d0142c | |||
| e8105df4fd | |||
| 361e9d6c13 | |||
| 58845df312 | |||
| d14814a9b0 | |||
| e9911ae2ae | |||
| 7cee41509f | |||
| 371f62a403 | |||
| bad1d312ef | |||
| 0103324701 | |||
| f09c6850bc | |||
| 3499c246b8 | |||
| 53b8e33d13 | |||
| 73b4bd6ac6 | |||
| a2850e3d19 | |||
| 9c1e253dcc | |||
| f4a3cc104b | |||
| a220632186 | |||
| 082efe03e3 | |||
| 242e38ef56 | |||
| c12dd3adbf | |||
| c5b03adffc | |||
| 38a1c27e2e | |||
| ed80797564 | |||
| 68c3420f9f | |||
| 12167ee19e | |||
| 21b8e5c6d3 | |||
| 1157ea8afe | |||
| 9f3be8bbda | |||
| beb54e9e9d | |||
| 8d8ca68781 | |||
| 0949b870e0 | |||
| 4b07ba02a6 | |||
| 039fc89874 | |||
| 2b506e90f5 | |||
| deb9f33437 | |||
| cb88bd2eed | |||
| 23fc6c7061 | |||
| 9dd3f21476 | |||
| e395c1d57f | |||
| 33502d2a07 | |||
| bdc71cfd07 | |||
| 65be6196c1 | |||
| 7dc530b4c9 | |||
| b159f8b1ff | |||
| cff005b038 | |||
| 460565c107 | |||
| e6493033b0 | |||
| ca00cacf83 | |||
| b982ed5b30 | |||
| a9d13d695a | |||
| 877706da4d | |||
| 1a6d8d07d0 | |||
| 3bc12cdc57 | |||
| ad59e60269 | |||
| 9d037786f2 | |||
| 8b67378964 | |||
| 2b015b64ab | |||
| d3972a6523 | |||
| 56cabf33c6 | |||
| 13dcea781d | |||
| 01812ec185 | |||
| 86b2b9dd69 | |||
| 6e7c0ba7aa | |||
| 71e0492840 | |||
| 8b2cf41f13 | |||
| 3d57db9644 | |||
| 99b167d03a | |||
| 65fcf6be65 | |||
| 9ef9d38b90 | |||
| 86e1d77ad7 | |||
| ac692e85bc | |||
| 5196bf68a7 | |||
| 6bbb4300f5 | |||
| 62584631bb | |||
| 43c8d6c29c | |||
| ccd2a4065d | |||
| bb7c956db5 | |||
| 9be0780c46 | |||
| 341da37218 | |||
| 4b3458776b | |||
| 6436290cc1 | |||
| 5316d92fc6 | |||
| 1f350d2b30 | |||
| 474cc4ad7a | |||
| 80892d31c6 | |||
| 5c4383d661 | |||
| 101c4724f4 | |||
| c09ca59747 | |||
| dad97f1b05 | |||
| eef3547c37 | |||
| 252c8222f1 | |||
| 6a4071a9fd | |||
| 5896c9582b | |||
| 718fe9547b | |||
| 6b3de9170e | |||
| ca4ffb9633 | |||
| 79a5c3ea94 | |||
| a41bf5d8e7 | |||
| 319ec796bd | |||
| 86df1e7d4b | |||
| 45f596ca0c | |||
| 4fab23a357 | |||
| 9405aa3fb4 | |||
| 2020156591 | |||
| b6d97a571d | |||
| 0e5faa7a82 | |||
| 9de2398106 | |||
| fd6ec55f07 | |||
| 65399eb4eb | |||
| b7d1a38ff6 | |||
| 89e6ee29fd | |||
| dedf615114 | |||
| f926d6507a | |||
| bcc4694fa9 | |||
| f09fe202e8 | |||
| 57ec92c299 | |||
| 681d05d7ee | |||
| 9c203d3595 | |||
| 77f67c1bd9 | |||
| 565deb443e | |||
| 0a9ff16dfc | |||
| 61904b31e3 |
@@ -0,0 +1,20 @@
|
||||
{
|
||||
"name": "last30days-skill",
|
||||
"interface": {
|
||||
"displayName": "last30days"
|
||||
},
|
||||
"plugins": [
|
||||
{
|
||||
"name": "last30days",
|
||||
"source": {
|
||||
"source": "url",
|
||||
"url": "https://github.com/mvanhorn/last30days-skill.git"
|
||||
},
|
||||
"policy": {
|
||||
"installation": "AVAILABLE",
|
||||
"authentication": "ON_INSTALL"
|
||||
},
|
||||
"category": "Research"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -1,16 +1,17 @@
|
||||
{
|
||||
"$schema": "https://anthropic.com/claude-code/marketplace.schema.json",
|
||||
"name": "last30days-skill",
|
||||
"description": "Research any topic from the last 30 days across Reddit, X, YouTube, TikTok, Instagram, Hacker News, Polymarket, and the web.",
|
||||
"owner": {
|
||||
"name": "Matt Van Horn",
|
||||
"url": "https://github.com/mvanhorn"
|
||||
},
|
||||
"metadata": {
|
||||
"description": "Marketplace hosting the last30days research plugin."
|
||||
},
|
||||
"plugins": [
|
||||
{
|
||||
"name": "last30days",
|
||||
"description": "Research any topic from the last 30 days. Become an expert and write copy-paste-ready prompts.",
|
||||
"version": "2.9.6",
|
||||
"description": "Research any topic across Reddit, X, YouTube, TikTok, Instagram, Hacker News, Polymarket, GitHub, and 5+ more sources. AI agent scores by upvotes, likes, and real money - not editors.",
|
||||
"version": "3.21.0",
|
||||
"author": {
|
||||
"name": "Matt Van Horn",
|
||||
"url": "https://github.com/mvanhorn"
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "last30days",
|
||||
"version": "2.9.6",
|
||||
"description": "Research any topic from the last 30 days across Reddit, X, YouTube, TikTok, Instagram, Hacker News, Polymarket, and the web.",
|
||||
"version": "3.21.0",
|
||||
"description": "Research any topic across Reddit, X, YouTube, TikTok, Instagram, Hacker News, Polymarket, GitHub, and 5+ more sources. AI agent scores by upvotes, likes, and real money - not editors.",
|
||||
"author": {
|
||||
"name": "Matt Van Horn",
|
||||
"email": "mvanhorn@gmail.com",
|
||||
@@ -10,7 +10,21 @@
|
||||
"homepage": "https://github.com/mvanhorn/last30days-skill",
|
||||
"repository": "https://github.com/mvanhorn/last30days-skill",
|
||||
"license": "MIT",
|
||||
"keywords": ["research", "reddit", "twitter", "youtube", "tiktok", "instagram", "trends", "prompts", "polymarket"],
|
||||
"skills": ["./"],
|
||||
"hooks": {}
|
||||
"keywords": [
|
||||
"competitor research",
|
||||
"research",
|
||||
"reddit",
|
||||
"twitter",
|
||||
"youtube",
|
||||
"tiktok",
|
||||
"instagram",
|
||||
"trends",
|
||||
"prompts",
|
||||
"polymarket",
|
||||
"github",
|
||||
"perplexity",
|
||||
"threads",
|
||||
"pinterest",
|
||||
"hacker-news"
|
||||
]
|
||||
}
|
||||
|
||||
+65
-12
@@ -1,18 +1,71 @@
|
||||
# Exclude binary assets and dev/test artifacts from ClawHub bundle
|
||||
assets/
|
||||
docs/
|
||||
fixtures/
|
||||
tests/
|
||||
plans/
|
||||
agents/
|
||||
variants/
|
||||
release-notes.md
|
||||
SPEC.md
|
||||
TASKS.md
|
||||
SKILL-original.md
|
||||
# ClawHub/Hermes packaging exclusions for repository-root scans.
|
||||
# Mirrors .skillignore so non-runtime docs/dev artifacts stay out of the
|
||||
# public bundle and install-time skill security scan.
|
||||
|
||||
# VCS, local envs, caches, and generated outputs
|
||||
.git/
|
||||
.venv/
|
||||
__pycache__/
|
||||
*.pyc
|
||||
*.log
|
||||
*.jsonl
|
||||
*.mp3
|
||||
*.jpeg
|
||||
*.jpg
|
||||
*.png
|
||||
*.gif
|
||||
assets/
|
||||
skills/last30days/assets/
|
||||
.DS_Store
|
||||
.coverage
|
||||
htmlcov/
|
||||
dist/
|
||||
work/
|
||||
print/
|
||||
|
||||
# Repo/dev automation and host-specific package metadata
|
||||
.github/
|
||||
.agents/
|
||||
.claude-plugin/
|
||||
hooks/
|
||||
mcp/
|
||||
gemini-extension.json
|
||||
greptile.json
|
||||
pyproject.toml
|
||||
|
||||
# Non-runtime docs, plans, release notes, fixtures, and tests
|
||||
docs/
|
||||
fixtures/
|
||||
tests/
|
||||
plans/
|
||||
agents/
|
||||
variants/
|
||||
media/
|
||||
README.md
|
||||
CHANGELOG.md
|
||||
AGENTS.md
|
||||
CLAUDE.md
|
||||
CONCEPTS.md
|
||||
CONFIGURATION.md
|
||||
CONTRIBUTORS.md
|
||||
HERMES_SETUP.md
|
||||
release-notes.md
|
||||
SKILL-original.md
|
||||
SPEC.md
|
||||
TASKS.md
|
||||
|
||||
# Dev/eval scripts shipped inside the skill tree but not needed at runtime
|
||||
skills/last30days/scripts/build-skill.sh
|
||||
skills/last30days/scripts/compare.sh
|
||||
skills/last30days/scripts/evaluate_search_quality.py
|
||||
skills/last30days/scripts/setup-keychain.sh
|
||||
skills/last30days/scripts/setup-pass.sh
|
||||
skills/last30days/scripts/test_device_auth.py
|
||||
skills/last30days/scripts/test-v1-vs-v2.sh
|
||||
skills/last30days/scripts/verify_v3.py
|
||||
|
||||
# Keep visible: optional runtime watchlist/store/briefing feature scripts
|
||||
# (`watchlist.py`, `store.py`, and `briefing.py`).
|
||||
|
||||
# Vendored third-party X-search client (node_modules analog); excluded from scan, still installed.
|
||||
skills/last30days/scripts/lib/vendor/
|
||||
|
||||
@@ -0,0 +1,50 @@
|
||||
{
|
||||
"name": "last30days",
|
||||
"version": "3.21.0",
|
||||
"description": "Research any topic across Reddit, X, YouTube, TikTok, Instagram, Hacker News, Polymarket, GitHub, and the web.",
|
||||
"author": {
|
||||
"name": "Matt Van Horn",
|
||||
"email": "mvanhorn@gmail.com",
|
||||
"url": "https://github.com/mvanhorn"
|
||||
},
|
||||
"homepage": "https://github.com/mvanhorn/last30days-skill",
|
||||
"repository": "https://github.com/mvanhorn/last30days-skill",
|
||||
"license": "MIT",
|
||||
"keywords": [
|
||||
"competitor research",
|
||||
"research",
|
||||
"reddit",
|
||||
"twitter",
|
||||
"youtube",
|
||||
"tiktok",
|
||||
"instagram",
|
||||
"trends",
|
||||
"prompts",
|
||||
"polymarket",
|
||||
"github",
|
||||
"perplexity",
|
||||
"threads",
|
||||
"pinterest",
|
||||
"hacker-news"
|
||||
],
|
||||
"skills": "./skills/",
|
||||
"interface": {
|
||||
"displayName": "last30days",
|
||||
"shortDescription": "Research what people are saying about a topic now.",
|
||||
"longDescription": "last30days adds a Codex skill for researching any topic based on recent discussion and engagement signals across Reddit, X, YouTube, TikTok, Instagram, Hacker News, Polymarket, GitHub, and the web.",
|
||||
"developerName": "Matt Van Horn",
|
||||
"category": "Research",
|
||||
"capabilities": [
|
||||
"Interactive",
|
||||
"Read",
|
||||
"Write"
|
||||
],
|
||||
"websiteURL": "https://github.com/mvanhorn/last30days-skill",
|
||||
"defaultPrompt": [
|
||||
"TikTok shop trends",
|
||||
"Codex vs Cursor",
|
||||
"best travel credit cards"
|
||||
],
|
||||
"brandColor": "#6F42C1"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,43 @@
|
||||
# Exclude non-runtime files from `git archive` output.
|
||||
# Used by skills/last30days/scripts/build-skill.sh to produce a
|
||||
# claude.ai-upload-ready .skill file from the canonical skills/last30days tree.
|
||||
# See docs/plans/2026-04-14-001-fix-skill-upload-200-file-limit-plan.md.
|
||||
|
||||
# Anthropic canonical skill-packaging excludes
|
||||
# (mirrors anthropics/skills/skills/skill-creator/scripts/package_skill.py)
|
||||
__pycache__/ export-ignore
|
||||
node_modules/ export-ignore
|
||||
*.pyc export-ignore
|
||||
.DS_Store export-ignore
|
||||
evals/ export-ignore
|
||||
|
||||
# Dev, docs, test, and media - not needed at skill runtime
|
||||
tests/ export-ignore
|
||||
docs/ export-ignore
|
||||
fixtures/ export-ignore
|
||||
assets/ export-ignore
|
||||
|
||||
# NOTE: skills/ and .claude-plugin/ are NOT export-ignored here because
|
||||
# Claude Code's /plugin install fetches this same git archive tarball.
|
||||
# Removing those from the archive (as v3.0.1 did) silently breaks installs.
|
||||
# claude.ai-bundle-specific exclusions live in scripts/build-skill.sh.
|
||||
|
||||
# Historical + repo-only manifests
|
||||
SPEC.md export-ignore
|
||||
TASKS.md export-ignore
|
||||
CONTRIBUTORS.md export-ignore
|
||||
HERMES_SETUP.md export-ignore
|
||||
CHANGELOG.md export-ignore
|
||||
uv.lock export-ignore
|
||||
|
||||
# Platform adapters are kept in git archives because Claude Code and Codex
|
||||
# plugin installs use the same repository archive as their source payload.
|
||||
.hermes-plugin/ export-ignore
|
||||
|
||||
# CI workflows - repo-only, not needed at skill runtime
|
||||
.github/ export-ignore
|
||||
|
||||
# Build config itself
|
||||
.clawhubignore export-ignore
|
||||
.gitignore export-ignore
|
||||
.gitattributes export-ignore
|
||||
@@ -0,0 +1,53 @@
|
||||
name: Bug Report
|
||||
description: Report a bug or unexpected behavior
|
||||
labels: [bug]
|
||||
body:
|
||||
- type: textarea
|
||||
id: summary
|
||||
attributes:
|
||||
label: Summary
|
||||
description: What happened?
|
||||
placeholder: Describe the bug in 1-2 sentences.
|
||||
validations:
|
||||
required: true
|
||||
- type: textarea
|
||||
id: repro
|
||||
attributes:
|
||||
label: Steps to Reproduce
|
||||
description: How can we reproduce this?
|
||||
placeholder: |
|
||||
1. Run `python3 skills/last30days/scripts/last30days.py "topic" --emit=compact`
|
||||
2. ...
|
||||
validations:
|
||||
required: true
|
||||
- type: textarea
|
||||
id: expected
|
||||
attributes:
|
||||
label: Expected Behavior
|
||||
description: What should have happened?
|
||||
validations:
|
||||
required: true
|
||||
- type: textarea
|
||||
id: traceback
|
||||
attributes:
|
||||
label: Error / Traceback
|
||||
description: Paste the full traceback or error output.
|
||||
render: text
|
||||
- type: dropdown
|
||||
id: install
|
||||
attributes:
|
||||
label: Install Method
|
||||
options:
|
||||
- Claude Code plugin
|
||||
- Gemini CLI extension
|
||||
- Codex plugin
|
||||
- Hermes skill
|
||||
- Manual (git clone)
|
||||
- Other
|
||||
validations:
|
||||
required: true
|
||||
- type: input
|
||||
id: os
|
||||
attributes:
|
||||
label: OS
|
||||
placeholder: macOS 15.4, Ubuntu 24.04, Windows 11, etc.
|
||||
@@ -0,0 +1,24 @@
|
||||
name: Feature Request
|
||||
description: Suggest a new feature or improvement
|
||||
labels: [enhancement]
|
||||
body:
|
||||
- type: textarea
|
||||
id: problem
|
||||
attributes:
|
||||
label: Problem
|
||||
description: What problem does this solve?
|
||||
placeholder: When I try to ..., I can't ...
|
||||
validations:
|
||||
required: true
|
||||
- type: textarea
|
||||
id: solution
|
||||
attributes:
|
||||
label: Proposed Solution
|
||||
description: How should this work?
|
||||
validations:
|
||||
required: true
|
||||
- type: textarea
|
||||
id: alternatives
|
||||
attributes:
|
||||
label: Alternatives Considered
|
||||
description: Other approaches you thought of (optional).
|
||||
@@ -0,0 +1,40 @@
|
||||
## Summary
|
||||
|
||||
<!-- What does this PR do? 1-3 sentences. -->
|
||||
|
||||
## Testing
|
||||
|
||||
- [ ] `uv run pytest`
|
||||
- [ ] Added or updated tests that would catch a regression, or explained why not below
|
||||
|
||||
## Changelog
|
||||
|
||||
If this change should appear in the next release notes, add a fragment under `changelog.d/` (see `changelog.d/README.md` and [CONTRIBUTING.md](../CONTRIBUTING.md)). Do **not** edit `CHANGELOG.md` or bump version/manifest files in this PR.
|
||||
|
||||
- [ ] Added `changelog.d/<pr-or-issue>.<type>.md` (types: `added`, `changed`, `fixed`, `removed`, `deprecated`, `security`)
|
||||
- [ ] Skip changelog — chore/internal only (also add the `skip-changelog` label)
|
||||
|
||||
## Agent disclosure
|
||||
|
||||
### AI review
|
||||
|
||||
Summarize the review your coding agent ran: main risks checked, what it flagged, and what you changed or verified as a result.
|
||||
|
||||
### Security
|
||||
|
||||
Note any input handling, command execution, path handling, auth, secrets, or dependency risks reviewed, plus follow-up needed. Write `N/A` if none apply.
|
||||
|
||||
## Notes
|
||||
|
||||
Call out follow-up work, host-specific behavior, or risks.
|
||||
|
||||
### Relationship to this change
|
||||
|
||||
Disclose employment, contracting, equity, or other paid ties to a company/product/service this PR adds or meaningfully promotes (example: you work at the API vendor being integrated).
|
||||
|
||||
- [ ] None
|
||||
- [ ] Yes — disclosure: <!-- who / what relationship -->
|
||||
|
||||
## Related issues
|
||||
|
||||
<!-- Fixes #123 / Relates to #456 — or N/A -->
|
||||
@@ -0,0 +1,38 @@
|
||||
This file contains Copilot-specific additions. See AGENTS.md for the shared cross-tool governance layer.
|
||||
|
||||
# Copilot-specific guidance
|
||||
|
||||
## Test generation
|
||||
|
||||
- Prefer unittest.TestCase for generated tests to match the existing test suite.
|
||||
- Mock external calls with unittest.mock.patch.
|
||||
|
||||
## Pull request reminders
|
||||
|
||||
Before suggesting a pull request:
|
||||
|
||||
- Confirm that pytest passes.
|
||||
- For changes that belong in the next release notes, add a `changelog.d/<n>.<type>.md` fragment (do not edit `CHANGELOG.md` or bump version manifests). See `CONTRIBUTING.md` / `AGENTS.md` § Changelog and releases and fill the PR template’s Agent disclosure + Relationship sections.
|
||||
- If changes were made anywhere under skills/last30days/, confirm the install copy has been refreshed with:
|
||||
|
||||
npx skills add . -g -y
|
||||
|
||||
## Vendor exclusion zone
|
||||
|
||||
- Never suggest changes to skills/last30days/scripts/lib/vendor/.
|
||||
- Treat skills/last30days/scripts/lib/vendor/ as a no-touch zone.
|
||||
|
||||
## CI expectations
|
||||
|
||||
GitHub CI runs:
|
||||
|
||||
- pytest
|
||||
- ruff
|
||||
|
||||
Generated changes should pass both before review is requested.
|
||||
|
||||
## CLI examples
|
||||
|
||||
When suggesting CLI usage examples for safe local testing, default to:
|
||||
|
||||
--emit=compact --mock
|
||||
@@ -0,0 +1,22 @@
|
||||
version: 2
|
||||
updates:
|
||||
- package-ecosystem: github-actions
|
||||
directory: /
|
||||
schedule:
|
||||
interval: weekly
|
||||
cooldown:
|
||||
default-days: 7
|
||||
|
||||
- package-ecosystem: uv
|
||||
directory: /
|
||||
schedule:
|
||||
interval: weekly
|
||||
cooldown:
|
||||
default-days: 7
|
||||
|
||||
- package-ecosystem: gomod
|
||||
directory: /mcp
|
||||
schedule:
|
||||
interval: weekly
|
||||
cooldown:
|
||||
default-days: 7
|
||||
Executable
+221
@@ -0,0 +1,221 @@
|
||||
#!/usr/bin/env python3
|
||||
"""Prepare a lockstep release: towncrier changelog + bump every version surface.
|
||||
|
||||
Usage (from repo root):
|
||||
python3 .github/scripts/prepare_release.py --bump patch
|
||||
python3 .github/scripts/prepare_release.py --version 3.19.0
|
||||
python3 .github/scripts/prepare_release.py --bump minor --dry-run
|
||||
|
||||
Do not edit CHANGELOG.md or version manifests in feature PRs — add a
|
||||
changelog.d/ fragment instead. This script is for release PRs only.
|
||||
"""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import argparse
|
||||
import json
|
||||
import re
|
||||
import subprocess
|
||||
import sys
|
||||
from pathlib import Path
|
||||
|
||||
ROOT = Path(__file__).resolve().parents[2]
|
||||
|
||||
SKILL_MD = ROOT / "skills" / "last30days" / "SKILL.md"
|
||||
PYPROJECT = ROOT / "pyproject.toml"
|
||||
UV_LOCK = ROOT / "uv.lock"
|
||||
|
||||
JSON_VERSION_FILES = (
|
||||
ROOT / ".claude-plugin" / "plugin.json",
|
||||
ROOT / ".codex-plugin" / "plugin.json",
|
||||
ROOT / ".grok-plugin" / "plugin.json",
|
||||
ROOT / "gemini-extension.json",
|
||||
)
|
||||
|
||||
MARKETPLACE_FILES = (
|
||||
ROOT / ".claude-plugin" / "marketplace.json",
|
||||
ROOT / ".grok-plugin" / "marketplace.json",
|
||||
)
|
||||
|
||||
_VERSION_RE = re.compile(r"^(\d+)\.(\d+)\.(\d+)$")
|
||||
_PYPROJECT_VERSION_RE = re.compile(
|
||||
r'^(version\s*=\s*")([^"]+)(")\s*$', re.MULTILINE
|
||||
)
|
||||
_SKILL_FRONTMATTER_VERSION_RE = re.compile(
|
||||
r'^(version:\s*")([^"]+)(")\s*$', re.MULTILINE
|
||||
)
|
||||
_SKILL_HEADER_RE = re.compile(
|
||||
r"^(# last30days v)(\d+\.\d+\.\d+)(:)", re.MULTILINE
|
||||
)
|
||||
_UV_LOCK_PACKAGE_RE = re.compile(
|
||||
r'(?ms)^(\[\[package\]\]\nname = "last30days-skill"\nversion = ")([^"]+)(")'
|
||||
)
|
||||
|
||||
|
||||
def _parse_version(text: str) -> tuple[int, int, int]:
|
||||
match = _VERSION_RE.fullmatch(text.strip())
|
||||
if not match:
|
||||
raise SystemExit(f"Invalid semver (expected X.Y.Z): {text!r}")
|
||||
return int(match.group(1)), int(match.group(2)), int(match.group(3))
|
||||
|
||||
|
||||
def _format_version(parts: tuple[int, int, int]) -> str:
|
||||
return f"{parts[0]}.{parts[1]}.{parts[2]}"
|
||||
|
||||
|
||||
def read_current_version() -> str:
|
||||
text = PYPROJECT.read_text(encoding="utf-8")
|
||||
match = _PYPROJECT_VERSION_RE.search(text)
|
||||
if not match:
|
||||
raise SystemExit("Could not find [project].version in pyproject.toml")
|
||||
return match.group(2)
|
||||
|
||||
|
||||
def next_version(current: str, bump: str) -> str:
|
||||
major, minor, patch = _parse_version(current)
|
||||
if bump == "major":
|
||||
return _format_version((major + 1, 0, 0))
|
||||
if bump == "minor":
|
||||
return _format_version((major, minor + 1, 0))
|
||||
if bump == "patch":
|
||||
return _format_version((major, minor, patch + 1))
|
||||
raise SystemExit(f"Unknown bump kind: {bump!r}")
|
||||
|
||||
|
||||
def _replace_once(path: Path, pattern: re.Pattern[str], new: str, label: str) -> None:
|
||||
text = path.read_text(encoding="utf-8")
|
||||
updated, count = pattern.subn(rf"\g<1>{new}\g<3>", text, count=1)
|
||||
if count != 1:
|
||||
raise SystemExit(f"{path.relative_to(ROOT)}: expected one {label} match, found {count}")
|
||||
path.write_text(updated, encoding="utf-8")
|
||||
|
||||
|
||||
def bump_pyproject(version: str) -> None:
|
||||
_replace_once(PYPROJECT, _PYPROJECT_VERSION_RE, version, "version")
|
||||
|
||||
|
||||
def bump_skill_md(version: str) -> None:
|
||||
text = SKILL_MD.read_text(encoding="utf-8")
|
||||
text2, n1 = _SKILL_FRONTMATTER_VERSION_RE.subn(
|
||||
rf"\g<1>{version}\g<3>", text, count=1
|
||||
)
|
||||
text3, n2 = _SKILL_HEADER_RE.subn(rf"\g<1>{version}\g<3>", text2, count=1)
|
||||
if n1 != 1 or n2 != 1:
|
||||
raise SystemExit(
|
||||
f"SKILL.md: expected one frontmatter version and one H1 version, "
|
||||
f"found frontmatter={n1} header={n2}"
|
||||
)
|
||||
SKILL_MD.write_text(text3, encoding="utf-8")
|
||||
|
||||
|
||||
def bump_json_version(path: Path, version: str) -> None:
|
||||
data = json.loads(path.read_text(encoding="utf-8"))
|
||||
if "version" not in data:
|
||||
raise SystemExit(f"{path.relative_to(ROOT)}: missing top-level version")
|
||||
data["version"] = version
|
||||
path.write_text(json.dumps(data, indent=2) + "\n", encoding="utf-8")
|
||||
|
||||
|
||||
def bump_marketplace(path: Path, version: str) -> None:
|
||||
data = json.loads(path.read_text(encoding="utf-8"))
|
||||
plugins = data.get("plugins") or []
|
||||
if not plugins:
|
||||
raise SystemExit(f"{path.relative_to(ROOT)}: plugins[] is empty")
|
||||
plugins[0]["version"] = version
|
||||
path.write_text(json.dumps(data, indent=2) + "\n", encoding="utf-8")
|
||||
|
||||
|
||||
def bump_uv_lock(version: str) -> None:
|
||||
text = UV_LOCK.read_text(encoding="utf-8")
|
||||
updated, count = _UV_LOCK_PACKAGE_RE.subn(rf"\g<1>{version}\g<3>", text, count=1)
|
||||
if count != 1:
|
||||
raise SystemExit(f"uv.lock: expected one last30days-skill package stanza, found {count}")
|
||||
UV_LOCK.write_text(updated, encoding="utf-8")
|
||||
|
||||
|
||||
def run_towncrier(version: str, *, dry_run: bool) -> None:
|
||||
cmd = [
|
||||
sys.executable,
|
||||
"-m",
|
||||
"towncrier",
|
||||
"build",
|
||||
"--version",
|
||||
version,
|
||||
"--yes",
|
||||
]
|
||||
if dry_run:
|
||||
cmd.append("--draft")
|
||||
subprocess.run(cmd, cwd=ROOT, check=True)
|
||||
|
||||
|
||||
def bump_all(version: str) -> list[str]:
|
||||
touched: list[str] = []
|
||||
bump_pyproject(version)
|
||||
touched.append(str(PYPROJECT.relative_to(ROOT)))
|
||||
bump_skill_md(version)
|
||||
touched.append(str(SKILL_MD.relative_to(ROOT)))
|
||||
for path in JSON_VERSION_FILES:
|
||||
bump_json_version(path, version)
|
||||
touched.append(str(path.relative_to(ROOT)))
|
||||
for path in MARKETPLACE_FILES:
|
||||
bump_marketplace(path, version)
|
||||
touched.append(str(path.relative_to(ROOT)))
|
||||
bump_uv_lock(version)
|
||||
touched.append(str(UV_LOCK.relative_to(ROOT)))
|
||||
return touched
|
||||
|
||||
|
||||
def main(argv: list[str] | None = None) -> int:
|
||||
parser = argparse.ArgumentParser(description=__doc__)
|
||||
group = parser.add_mutually_exclusive_group(required=True)
|
||||
group.add_argument("--bump", choices=("major", "minor", "patch"))
|
||||
group.add_argument("--version", help="Explicit X.Y.Z to set")
|
||||
parser.add_argument(
|
||||
"--dry-run",
|
||||
action="store_true",
|
||||
help="Print the planned version and towncrier draft; do not write files",
|
||||
)
|
||||
parser.add_argument(
|
||||
"--skip-towncrier",
|
||||
action="store_true",
|
||||
help="Only bump version surfaces (changelog already prepared)",
|
||||
)
|
||||
args = parser.parse_args(argv)
|
||||
|
||||
current = read_current_version()
|
||||
version = args.version or next_version(current, args.bump)
|
||||
_parse_version(version)
|
||||
if args.version:
|
||||
parsed_new = _parse_version(version)
|
||||
parsed_cur = _parse_version(current)
|
||||
if parsed_new < parsed_cur:
|
||||
raise SystemExit(f"Refusing to downgrade {current} → {version}")
|
||||
if parsed_new == parsed_cur and not args.dry_run:
|
||||
raise SystemExit(
|
||||
f"Refusing to re-release {current}; pass --bump or a newer --version "
|
||||
"(use --dry-run to preview towncrier output for the current version)"
|
||||
)
|
||||
|
||||
print(f"Current version: {current}")
|
||||
print(f"Next version: {version}")
|
||||
|
||||
if args.dry_run:
|
||||
if not args.skip_towncrier:
|
||||
run_towncrier(version, dry_run=True)
|
||||
print("Dry run only — no files written.")
|
||||
return 0
|
||||
|
||||
if not args.skip_towncrier:
|
||||
run_towncrier(version, dry_run=False)
|
||||
print("Updated CHANGELOG.md via towncrier")
|
||||
|
||||
touched = bump_all(version)
|
||||
print("Bumped lockstep files:")
|
||||
for path in touched:
|
||||
print(f" - {path}")
|
||||
print(f"\nNext: open a release PR, merge, then tag v{version} (tag-release workflow).")
|
||||
return 0
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
raise SystemExit(main())
|
||||
@@ -0,0 +1,55 @@
|
||||
#!/usr/bin/env python3
|
||||
"""Print the lockstep version string from a manifest file on stdin.
|
||||
|
||||
Used by .github/workflows/changelog-guard.yml so version parsing stays out of
|
||||
the YAML ``run: |`` block (column-0 Python inside that block breaks Actions).
|
||||
|
||||
Usage:
|
||||
git show REF:path | python3 .github/scripts/read_manifest_version.py path
|
||||
"""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import json
|
||||
import re
|
||||
import sys
|
||||
|
||||
|
||||
def version_from(path: str, text: str) -> str:
|
||||
if path.endswith("pyproject.toml"):
|
||||
match = re.search(r'(?m)^version\s*=\s*"([^"]+)"\s*$', text)
|
||||
return match.group(1) if match else ""
|
||||
if path.endswith("SKILL.md"):
|
||||
match = re.search(r'(?m)^version:\s*"([^"]+)"\s*$', text)
|
||||
return match.group(1) if match else ""
|
||||
if path.endswith("uv.lock"):
|
||||
match = re.search(
|
||||
r'(?ms)^\[\[package\]\]\nname = "last30days-skill"\nversion = "([^"]+)"',
|
||||
text,
|
||||
)
|
||||
return match.group(1) if match else ""
|
||||
try:
|
||||
data = json.loads(text)
|
||||
except json.JSONDecodeError as exc:
|
||||
raise SystemExit(f"invalid JSON in {path}: {exc}") from exc
|
||||
if path.endswith("marketplace.json"):
|
||||
plugins = data.get("plugins") or []
|
||||
return plugins[0].get("version", "") if plugins else ""
|
||||
return data.get("version", "") or ""
|
||||
|
||||
|
||||
def main(argv: list[str]) -> int:
|
||||
if len(argv) != 2:
|
||||
print(
|
||||
"usage: read_manifest_version.py PATH < manifest",
|
||||
file=sys.stderr,
|
||||
)
|
||||
return 2
|
||||
path = argv[1]
|
||||
text = sys.stdin.read()
|
||||
sys.stdout.write(version_from(path, text))
|
||||
return 0
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
raise SystemExit(main(sys.argv))
|
||||
@@ -0,0 +1,153 @@
|
||||
name: Changelog guard
|
||||
|
||||
# Non-release PRs must not edit CHANGELOG.md or bump lockstep version strings.
|
||||
# Content edits to SKILL.md / pyproject.toml / uv.lock are fine.
|
||||
# Release PRs (label: release) are exempt. Engine changes need a changelog
|
||||
# fragment unless labeled skip-changelog.
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
types: [opened, synchronize, reopened, labeled, unlabeled]
|
||||
|
||||
permissions: {}
|
||||
|
||||
jobs:
|
||||
guard:
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
contents: read
|
||||
pull-requests: read
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||
with:
|
||||
fetch-depth: 0
|
||||
persist-credentials: false
|
||||
|
||||
- name: Enforce changelog / version lockstep rules
|
||||
env:
|
||||
GH_TOKEN: ${{ github.token }}
|
||||
PR_NUMBER: ${{ github.event.pull_request.number }}
|
||||
BASE_SHA: ${{ github.event.pull_request.base.sha }}
|
||||
HEAD_SHA: ${{ github.event.pull_request.head.sha }}
|
||||
run: |
|
||||
set -euo pipefail
|
||||
|
||||
LABELS="$(gh api "repos/${{ github.repository }}/issues/${PR_NUMBER}/labels" --jq '.[].name')"
|
||||
IS_RELEASE=0
|
||||
SKIP_CHANGELOG=0
|
||||
if printf '%s\n' "${LABELS}" | grep -qx 'release'; then
|
||||
IS_RELEASE=1
|
||||
fi
|
||||
if printf '%s\n' "${LABELS}" | grep -qx 'skip-changelog'; then
|
||||
SKIP_CHANGELOG=1
|
||||
fi
|
||||
|
||||
mapfile -t CHANGED < <(git diff --name-only "${BASE_SHA}...${HEAD_SHA}")
|
||||
|
||||
changed_changelog=0
|
||||
for path in "${CHANGED[@]}"; do
|
||||
if [ "${path}" = "CHANGELOG.md" ]; then
|
||||
changed_changelog=1
|
||||
fi
|
||||
done
|
||||
|
||||
if [ "${IS_RELEASE}" -eq 1 ]; then
|
||||
echo "PR has label 'release' — version/CHANGELOG edits allowed."
|
||||
exit 0
|
||||
fi
|
||||
|
||||
if [ "${changed_changelog}" -eq 1 ]; then
|
||||
# One-time towncrier adoption: replacing ## [Unreleased] with the
|
||||
# start marker / notice is allowed. Adding release-note bullets
|
||||
# (+### sections) is not.
|
||||
cl_diff="$(git diff "${BASE_SHA}...${HEAD_SHA}" -- CHANGELOG.md || true)"
|
||||
if printf '%s\n' "${cl_diff}" | grep -q 'towncrier release notes start' \
|
||||
&& ! printf '%s\n' "${cl_diff}" | grep -qE '^\+### '; then
|
||||
echo "Allowing towncrier bootstrap CHANGELOG.md header change."
|
||||
changed_changelog=0
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ "${changed_changelog}" -eq 1 ]; then
|
||||
echo "::error::Do not edit CHANGELOG.md in feature PRs."
|
||||
echo "Add changelog.d/<n>.<type>.md instead (see changelog.d/README.md)."
|
||||
echo "Release PRs created via Actions → Prepare release use the 'release' label."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Keep version parsing in .github/scripts/ — a prior inline
|
||||
# python3 -c block used column-0 source and made Actions refuse
|
||||
# to parse this workflow (every run failed with empty jobs).
|
||||
version_at() {
|
||||
local ref="$1"
|
||||
local path="$2"
|
||||
# Fail closed: do not swallow helper/parse errors with || true.
|
||||
# Callers only invoke this after git cat-file confirms the blob.
|
||||
git show "${ref}:${path}" \
|
||||
| python3 .github/scripts/read_manifest_version.py "${path}"
|
||||
}
|
||||
|
||||
VERSION_PATHS=(
|
||||
pyproject.toml
|
||||
uv.lock
|
||||
skills/last30days/SKILL.md
|
||||
.claude-plugin/plugin.json
|
||||
.claude-plugin/marketplace.json
|
||||
.codex-plugin/plugin.json
|
||||
.grok-plugin/plugin.json
|
||||
.grok-plugin/marketplace.json
|
||||
gemini-extension.json
|
||||
)
|
||||
|
||||
bumps=()
|
||||
for path in "${VERSION_PATHS[@]}"; do
|
||||
# Only compare when the file exists on both sides.
|
||||
if ! git cat-file -e "${BASE_SHA}:${path}" 2>/dev/null; then
|
||||
continue
|
||||
fi
|
||||
if ! git cat-file -e "${HEAD_SHA}:${path}" 2>/dev/null; then
|
||||
continue
|
||||
fi
|
||||
base_v="$(version_at "${BASE_SHA}" "${path}")"
|
||||
head_v="$(version_at "${HEAD_SHA}" "${path}")"
|
||||
if [ -n "${base_v}" ] && [ -n "${head_v}" ] && [ "${base_v}" != "${head_v}" ]; then
|
||||
bumps+=("${path}: ${base_v} → ${head_v}")
|
||||
fi
|
||||
done
|
||||
|
||||
if [ "${#bumps[@]}" -gt 0 ]; then
|
||||
echo "::error::Non-release PRs must not bump lockstep version strings."
|
||||
printf ' - %s\n' "${bumps[@]}"
|
||||
echo "Run Actions → Prepare release to cut a version bump PR."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
has_fragment=0
|
||||
for path in "${CHANGED[@]}"; do
|
||||
case "${path}" in
|
||||
changelog.d/*.md)
|
||||
base="$(basename "${path}")"
|
||||
if [ "${base}" != "README.md" ]; then
|
||||
has_fragment=1
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
touches_engine=0
|
||||
for path in "${CHANGED[@]}"; do
|
||||
case "${path}" in
|
||||
skills/last30days/scripts/*|skills/last30days/SKILL.md|mcp/*)
|
||||
touches_engine=1
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
if [ "${touches_engine}" -eq 1 ] && [ "${has_fragment}" -eq 0 ] && [ "${SKIP_CHANGELOG}" -eq 0 ]; then
|
||||
echo "::error::Engine/skill changes need a changelog.d fragment (or the skip-changelog label)."
|
||||
echo "See changelog.d/README.md"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "Changelog guard passed."
|
||||
@@ -0,0 +1,31 @@
|
||||
name: OSV-Scanner
|
||||
|
||||
# Scheduled OSV-Scanner workflow for vulnerability drift detection.
|
||||
# Scans the repository lockfiles (uv.lock, mcp/go.sum) on a weekly schedule
|
||||
# and uploads results to GitHub code scanning, so newly disclosed CVEs in
|
||||
# the dependency tree are visible even between PRs.
|
||||
#
|
||||
# Advisory-first: fail-on-vuln is false until maintainers confirm a clean
|
||||
# baseline, matching the pattern in security.yml.
|
||||
#
|
||||
# Separate from the pip-audit job in security.yml (which runs on every PR
|
||||
# and push) and from the dependency-review gate (which blocks on new
|
||||
# vulnerable deps at PR time). This workflow fills the scheduled-drift gap.
|
||||
|
||||
on:
|
||||
schedule:
|
||||
# Weekly, Mondays at 12:30 UTC.
|
||||
- cron: "30 12 * * 1"
|
||||
workflow_dispatch:
|
||||
|
||||
permissions: {}
|
||||
|
||||
jobs:
|
||||
scan-scheduled:
|
||||
uses: google/osv-scanner-action/.github/workflows/osv-scanner-reusable.yml@9a498708959aeaef5ef730655706c5a1df1edbc2 # v2.3.8
|
||||
permissions:
|
||||
contents: read
|
||||
security-events: write
|
||||
with:
|
||||
# Advisory-first: surface results in code scanning without blocking.
|
||||
fail-on-vuln: false
|
||||
@@ -0,0 +1,130 @@
|
||||
name: Prepare release
|
||||
|
||||
# Opens a chore(release) PR that runs towncrier + lockstep version bumps.
|
||||
# Merge of that PR is tagged by tag-release.yml; tag push / dispatch runs release.yml.
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
inputs:
|
||||
bump:
|
||||
description: Semver bump kind (ignored when version is set)
|
||||
required: true
|
||||
type: choice
|
||||
options:
|
||||
- patch
|
||||
- minor
|
||||
- major
|
||||
default: patch
|
||||
version:
|
||||
description: Optional explicit X.Y.Z (overrides bump)
|
||||
required: false
|
||||
type: string
|
||||
|
||||
permissions: {}
|
||||
|
||||
jobs:
|
||||
prepare:
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
contents: write
|
||||
pull-requests: write
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||
with:
|
||||
fetch-depth: 0
|
||||
persist-credentials: false
|
||||
|
||||
- name: Install uv
|
||||
uses: astral-sh/setup-uv@c771a70e6277c0a99b617c7a806ffedaca235ff9 # v9.0.0
|
||||
|
||||
- name: Set up Python
|
||||
run: uv python install 3.12
|
||||
|
||||
- name: Install project (towncrier)
|
||||
run: uv sync --group dev
|
||||
|
||||
- name: Prepare release files
|
||||
id: prep
|
||||
env:
|
||||
BUMP: ${{ inputs.bump }}
|
||||
EXPLICIT_VERSION: ${{ inputs.version }}
|
||||
run: |
|
||||
set -euo pipefail
|
||||
if [ -n "${EXPLICIT_VERSION}" ]; then
|
||||
uv run python .github/scripts/prepare_release.py --version "${EXPLICIT_VERSION}"
|
||||
VERSION="${EXPLICIT_VERSION}"
|
||||
else
|
||||
uv run python .github/scripts/prepare_release.py --bump "${BUMP}"
|
||||
VERSION="$(python3 -c "import tomllib; print(tomllib.load(open('pyproject.toml','rb'))['project']['version'])")"
|
||||
fi
|
||||
echo "version=${VERSION}" >> "$GITHUB_OUTPUT"
|
||||
echo "branch=release/v${VERSION}" >> "$GITHUB_OUTPUT"
|
||||
|
||||
- name: Create release branch and PR
|
||||
env:
|
||||
GH_TOKEN: ${{ github.token }}
|
||||
VERSION: ${{ steps.prep.outputs.version }}
|
||||
BRANCH: ${{ steps.prep.outputs.branch }}
|
||||
DEFAULT_BRANCH: ${{ github.event.repository.default_branch }}
|
||||
REPOSITORY: ${{ github.repository }}
|
||||
run: |
|
||||
set -euo pipefail
|
||||
git config user.name "github-actions[bot]"
|
||||
git config user.email "41898282+github-actions[bot]@users.noreply.github.com"
|
||||
git remote set-url origin "https://x-access-token:${GH_TOKEN}@github.com/${REPOSITORY}.git"
|
||||
|
||||
if git ls-remote --exit-code --heads origin "${BRANCH}" >/dev/null 2>&1; then
|
||||
echo "Branch ${BRANCH} already exists on origin — aborting to avoid clobbering."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
git switch -c "${BRANCH}"
|
||||
git add \
|
||||
CHANGELOG.md \
|
||||
changelog.d \
|
||||
pyproject.toml \
|
||||
uv.lock \
|
||||
skills/last30days/SKILL.md \
|
||||
.claude-plugin/plugin.json \
|
||||
.claude-plugin/marketplace.json \
|
||||
.codex-plugin/plugin.json \
|
||||
.grok-plugin/plugin.json \
|
||||
.grok-plugin/marketplace.json \
|
||||
gemini-extension.json
|
||||
git status --short
|
||||
if git diff --cached --quiet; then
|
||||
echo "No release changes staged (empty changelog.d?)."
|
||||
exit 1
|
||||
fi
|
||||
git commit -m "chore(release): bump version to ${VERSION}"
|
||||
git push -u origin HEAD
|
||||
|
||||
gh label create release --description "Automated version lockstep release PR" --color 0E8A16 2>/dev/null || true
|
||||
gh label create skip-changelog --description "PR has nothing for release notes" --color BFDADC 2>/dev/null || true
|
||||
|
||||
BODY="$(cat <<EOF
|
||||
## Summary
|
||||
|
||||
Automated release preparation for **v${VERSION}**.
|
||||
|
||||
- Built \`CHANGELOG.md\` from \`changelog.d/\` via towncrier
|
||||
- Bumped every lockstep version surface (skill, pyproject, plugin/marketplace manifests, uv.lock)
|
||||
|
||||
## Test plan
|
||||
|
||||
- [ ] \`uv run pytest\` (CI)
|
||||
- [ ] Confirm \`tests/test_plugin_contract.py::test_versions_match_across_manifests\` passes
|
||||
- [ ] After merge, confirm tag \`v${VERSION}\` is created and [Release](../actions/workflows/release.yml) attaches artifacts
|
||||
|
||||
EOF
|
||||
)"
|
||||
# Strip leading spaces from heredoc indentation for readable PR body
|
||||
BODY="$(printf '%s\n' "${BODY}" | sed 's/^ //')"
|
||||
|
||||
gh pr create \
|
||||
--title "chore(release): bump version to ${VERSION}" \
|
||||
--body "${BODY}" \
|
||||
--label "release" \
|
||||
--base "${DEFAULT_BRANCH}" \
|
||||
--head "${BRANCH}"
|
||||
@@ -0,0 +1,176 @@
|
||||
name: Release
|
||||
|
||||
on:
|
||||
push:
|
||||
tags:
|
||||
- "v*"
|
||||
# tag-release.yml dispatches this because GITHUB_TOKEN tag pushes do not
|
||||
# start other workflows.
|
||||
workflow_dispatch:
|
||||
inputs:
|
||||
tag:
|
||||
description: Tag to release (e.g. v3.18.2)
|
||||
required: true
|
||||
type: string
|
||||
|
||||
permissions: {}
|
||||
|
||||
env:
|
||||
# Tag push uses ref_name (vX.Y.Z); dispatch from tag-release passes inputs.tag.
|
||||
RELEASE_TAG: ${{ github.event_name == 'workflow_dispatch' && inputs.tag || github.ref_name }}
|
||||
|
||||
jobs:
|
||||
# Build the existing .skill artifact (Claude Code / Codex / Cursor install
|
||||
# surface). Unchanged from prior versions; just isolated into its own job
|
||||
# so the .mcpb matrix can run in parallel.
|
||||
build-skill:
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
contents: read
|
||||
id-token: write
|
||||
attestations: write
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||
with:
|
||||
ref: ${{ env.RELEASE_TAG }}
|
||||
fetch-depth: 0
|
||||
persist-credentials: false
|
||||
|
||||
- name: Build .skill artifact
|
||||
run: |
|
||||
bash skills/last30days/scripts/build-skill.sh
|
||||
test -f dist/last30days.skill
|
||||
|
||||
- name: Attest .skill artifact provenance
|
||||
uses: actions/attest@1e69f48acb82d1966a394da916b4c1698aa569d6 # v4.2.2
|
||||
with:
|
||||
subject-path: dist/last30days.skill
|
||||
|
||||
- name: Upload skill artifact
|
||||
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
|
||||
with:
|
||||
name: last30days-skill
|
||||
path: dist/last30days.skill
|
||||
|
||||
# Cross-compile the Go MCP server for each Claude Desktop platform and
|
||||
# package each as a .mcpb. MCPB v0.3 is a ZIP containing the checked-in
|
||||
# manifest and the pre-built binary at the manifest's entry point.
|
||||
build-mcpb:
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
contents: read
|
||||
id-token: write
|
||||
attestations: write
|
||||
env:
|
||||
MCPB_OUTPUT: mcp/build/last30days-pp-mcp-${{ matrix.goos }}-${{ matrix.goarch }}.mcpb
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
include:
|
||||
- goos: darwin
|
||||
goarch: arm64
|
||||
- goos: darwin
|
||||
goarch: amd64
|
||||
- goos: linux
|
||||
goarch: amd64
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||
with:
|
||||
ref: ${{ env.RELEASE_TAG }}
|
||||
persist-credentials: false
|
||||
|
||||
- name: Set up Go
|
||||
uses: actions/setup-go@b7ad1dad31e06c5925ef5d2fc7ad053ef454303e # v7.0.0
|
||||
with:
|
||||
# Build the MCP binary with a toolchain newer than the floor in
|
||||
# mcp/go.mod. Keeping this explicit also avoids a runtime toolchain
|
||||
# download during the cross-compile.
|
||||
go-version: "1.26"
|
||||
cache: false
|
||||
|
||||
- name: Sync engine into vendored/
|
||||
run: bash mcp/scripts/sync-engine.sh
|
||||
|
||||
- name: Build MCP binary
|
||||
env:
|
||||
GOOS: ${{ matrix.goos }}
|
||||
GOARCH: ${{ matrix.goarch }}
|
||||
CGO_ENABLED: "0"
|
||||
RELEASE_VERSION: ${{ env.RELEASE_TAG }}
|
||||
run: |
|
||||
mkdir -p mcp/build
|
||||
go -C mcp build \
|
||||
-ldflags "-X main.Version=${RELEASE_VERSION}" \
|
||||
-o build/last30days-pp-mcp \
|
||||
./cmd/last30days-pp-mcp
|
||||
|
||||
- name: Bundle .mcpb
|
||||
# Keep this equivalent to printing-press's bundle layout without
|
||||
# downloading a separate packager: manifest.json at the ZIP root and
|
||||
# the executable at its declared server.entry_point.
|
||||
run: |
|
||||
set -euo pipefail
|
||||
entry_point="$(jq -er '.server.entry_point' mcp/manifest.json)"
|
||||
test "${entry_point}" = "bin/last30days-pp-mcp"
|
||||
|
||||
staging="${RUNNER_TEMP}/last30days-mcpb"
|
||||
output="${GITHUB_WORKSPACE}/${MCPB_OUTPUT}"
|
||||
mkdir -p "${staging}/bin" "$(dirname "${output}")"
|
||||
cp mcp/manifest.json "${staging}/manifest.json"
|
||||
cp mcp/build/last30days-pp-mcp "${staging}/${entry_point}"
|
||||
chmod 0755 "${staging}/${entry_point}"
|
||||
|
||||
(
|
||||
cd "${staging}"
|
||||
zip -q -X "${output}" manifest.json "${entry_point}"
|
||||
)
|
||||
unzip -Z1 "${output}" | grep -Fxq "manifest.json"
|
||||
unzip -Z1 "${output}" | grep -Fxq "${entry_point}"
|
||||
|
||||
- name: Attest .mcpb artifact provenance
|
||||
uses: actions/attest@1e69f48acb82d1966a394da916b4c1698aa569d6 # v4.2.2
|
||||
with:
|
||||
subject-path: ${{ env.MCPB_OUTPUT }}
|
||||
|
||||
- name: Upload .mcpb artifact
|
||||
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
|
||||
with:
|
||||
name: mcpb-${{ matrix.goos }}-${{ matrix.goarch }}
|
||||
path: ${{ env.MCPB_OUTPUT }}
|
||||
|
||||
# Gather every platform artifact and attach to one GitHub release.
|
||||
release:
|
||||
needs: [build-skill, build-mcpb]
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
actions: read
|
||||
contents: write
|
||||
steps:
|
||||
# gh release create --verify-tag shells out to git, so the job needs a
|
||||
# checkout with the tag present; without it the step fails with
|
||||
# "fatal: not a git repository".
|
||||
- name: Checkout
|
||||
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||
with:
|
||||
ref: ${{ env.RELEASE_TAG }}
|
||||
fetch-depth: 0
|
||||
persist-credentials: false
|
||||
|
||||
- name: Download all artifacts
|
||||
uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
|
||||
with:
|
||||
path: dist
|
||||
merge-multiple: true
|
||||
|
||||
- name: Create GitHub release
|
||||
env:
|
||||
GH_TOKEN: ${{ github.token }}
|
||||
RELEASE_TAG: ${{ env.RELEASE_TAG }}
|
||||
run: |
|
||||
gh release create "${RELEASE_TAG}" \
|
||||
dist/last30days.skill \
|
||||
dist/last30days-pp-mcp-*.mcpb \
|
||||
--generate-notes \
|
||||
--verify-tag
|
||||
@@ -0,0 +1,69 @@
|
||||
name: Scorecard
|
||||
|
||||
# OpenSSF Scorecard tracks broader repo security-health drift (branch
|
||||
# protection, token permissions, pinned actions, dangerous workflows, CI
|
||||
# tests, maintenance signals) on a schedule, complementing the per-diff
|
||||
# dependency-audit and secret-scan jobs in security.yml.
|
||||
#
|
||||
# Advisory-first: this workflow only measures and publishes a score, and it
|
||||
# never blocks merges. It runs on the default branch (Scorecard needs repo-level
|
||||
# data and a token, so it is not meaningful on PR forks) plus a weekly schedule
|
||||
# so regressions in security health surface even when no code changes.
|
||||
|
||||
on:
|
||||
branch_protection_rule:
|
||||
schedule:
|
||||
# Weekly, Mondays at 07:00 UTC.
|
||||
- cron: '0 7 * * 1'
|
||||
push:
|
||||
branches:
|
||||
- main
|
||||
workflow_dispatch:
|
||||
|
||||
# Top-level token is read-only; the analysis job widens only what it needs.
|
||||
permissions: read-all
|
||||
|
||||
jobs:
|
||||
analysis:
|
||||
name: Scorecard analysis
|
||||
runs-on: ubuntu-latest
|
||||
# Job-level permissions fully replace the top-level block (unlisted scopes
|
||||
# default to none), so the reads checkout and Scorecard need are explicit.
|
||||
permissions:
|
||||
# Needed by actions/checkout to clone the repo, and by Scorecard to read
|
||||
# workflow files for its Dangerous-Workflow / Token-Permissions checks.
|
||||
contents: read
|
||||
actions: read
|
||||
# Needed to upload the SARIF results to the code-scanning dashboard.
|
||||
security-events: write
|
||||
# Needed to publish results and obtain a badge (uses OIDC, no secrets).
|
||||
id-token: write
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||
with:
|
||||
persist-credentials: false
|
||||
|
||||
- name: Run OpenSSF Scorecard
|
||||
uses: ossf/scorecard-action@2d1146689b8cda280b9bc96326124645441f03bc # v2.4.4
|
||||
with:
|
||||
results_file: scorecard.sarif
|
||||
results_format: sarif
|
||||
# Publishes results to the OpenSSF REST API for the public badge and
|
||||
# trend tracking. Set to false if maintainers prefer to keep the
|
||||
# score private (the SARIF upload below still works either way).
|
||||
publish_results: true
|
||||
|
||||
# Retain the raw SARIF as a build artifact for offline inspection.
|
||||
- name: Upload artifact
|
||||
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
|
||||
with:
|
||||
name: scorecard-sarif
|
||||
path: scorecard.sarif
|
||||
retention-days: 5
|
||||
|
||||
- name: Upload SARIF to code-scanning
|
||||
uses: github/codeql-action/upload-sarif@e4fba868fa4b1b91e1fdab776edc8cfbe6e9fb81 # v4.37.3
|
||||
with:
|
||||
sarif_file: scorecard.sarif
|
||||
@@ -0,0 +1,89 @@
|
||||
name: Security
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
push:
|
||||
branches:
|
||||
- main
|
||||
workflow_dispatch:
|
||||
|
||||
permissions: {}
|
||||
|
||||
jobs:
|
||||
dependency-audit:
|
||||
name: Dependency audit
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
contents: read
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||
with:
|
||||
persist-credentials: false
|
||||
|
||||
- name: Install uv
|
||||
uses: astral-sh/setup-uv@c771a70e6277c0a99b617c7a806ffedaca235ff9 # v9.0.0
|
||||
|
||||
# Block known vulnerabilities in the locked Python dependency graph.
|
||||
- name: Run uv audit against locked dependencies
|
||||
run: uv audit --locked
|
||||
|
||||
dependency-review:
|
||||
name: Dependency review
|
||||
if: github.event_name == 'pull_request'
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
contents: read
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||
with:
|
||||
persist-credentials: false
|
||||
|
||||
- name: Review dependency changes
|
||||
uses: actions/dependency-review-action@a1d282b36b6f3519aa1f3fc636f609c47dddb294 # v5.0.0
|
||||
|
||||
secret-scan:
|
||||
name: Secret scan
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
contents: read
|
||||
steps:
|
||||
- name: Checkout full history for diff-aware scanning
|
||||
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||
with:
|
||||
fetch-depth: 0
|
||||
persist-credentials: false
|
||||
|
||||
# The action derives the commit range from the GitHub event and fails on
|
||||
# verified secrets. Keep output limited to verified findings to avoid noisy
|
||||
# unverified annotations.
|
||||
- name: Run TruffleHog OSS secret scan
|
||||
uses: trufflesecurity/trufflehog@6f3c981e7b77f235fd2702dd74af25fc4b72bf11 # v3.96.0
|
||||
with:
|
||||
version: 3.95.5
|
||||
extra_args: --results=verified
|
||||
|
||||
sast-scan:
|
||||
name: SAST scan
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
contents: read
|
||||
container:
|
||||
image: semgrep/semgrep@sha256:06938c1f365d3f67b8cedd8bc117607ae64253f88a0e768e9da9408548927dd6 # v1.167.0
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||
with:
|
||||
persist-credentials: false
|
||||
|
||||
# Advisory-first: visibility before enforcement. Semgrep CE scans
|
||||
# the repository with the community rule set (Python, shell, YAML,
|
||||
# JavaScript, Go) to catch source-level security bugs before they
|
||||
# reach production. Set continue-on-error: false once a clean baseline
|
||||
# is confirmed.
|
||||
- name: Run Semgrep SAST scan
|
||||
continue-on-error: true
|
||||
env:
|
||||
SEMGREP_SEND_METRICS: off
|
||||
run: semgrep scan --config=auto
|
||||
@@ -0,0 +1,91 @@
|
||||
name: Tag release
|
||||
|
||||
# After a prepare-release PR merges to main, create the vX.Y.Z tag and
|
||||
# dispatch release.yml (GITHUB_TOKEN tag pushes do not start other workflows).
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- main
|
||||
|
||||
permissions: {}
|
||||
|
||||
jobs:
|
||||
tag:
|
||||
runs-on: ubuntu-latest
|
||||
# Only act on the release-prep commit shape produced by prepare-release.yml
|
||||
# (or an equivalent manual chore(release) commit). Quote the expression —
|
||||
# a bare `chore(release):` colon is invalid YAML and fails the whole
|
||||
# workflow before any job runs. Use contains (not startsWith) so merge
|
||||
# commits whose subject is "Merge pull request #N …" still match when the
|
||||
# PR title is in the body.
|
||||
if: "contains(github.event.head_commit.message, 'chore(release): bump version to ')"
|
||||
permissions:
|
||||
contents: write
|
||||
actions: write
|
||||
pull-requests: read
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||
with:
|
||||
fetch-depth: 0
|
||||
persist-credentials: false
|
||||
|
||||
- name: Create annotated tag and dispatch Release
|
||||
env:
|
||||
GH_TOKEN: ${{ github.token }}
|
||||
HEAD_MSG: ${{ github.event.head_commit.message }}
|
||||
HEAD_SHA: ${{ github.sha }}
|
||||
REPOSITORY: ${{ github.repository }}
|
||||
DEFAULT_BRANCH: ${{ github.event.repository.default_branch }}
|
||||
run: |
|
||||
set -euo pipefail
|
||||
# Scan every line — merge commits put the chore(release) title in the body.
|
||||
VERSION="$(printf '%s\n' "${HEAD_MSG}" | sed -n 's/^chore(release): bump version to \([0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\).*/\1/p' | head -n1)"
|
||||
if [ -z "${VERSION}" ]; then
|
||||
echo "Could not parse version from commit message: ${HEAD_MSG}"
|
||||
exit 1
|
||||
fi
|
||||
TAG="v${VERSION}"
|
||||
|
||||
PY_VERSION="$(python3 -c "import tomllib; print(tomllib.load(open('pyproject.toml','rb'))['project']['version'])")"
|
||||
if [ "${PY_VERSION}" != "${VERSION}" ]; then
|
||||
echo "Commit message version (${VERSION}) does not match pyproject.toml (${PY_VERSION})"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Require the merged PR to carry the repository-controlled `release`
|
||||
# label so a matching title alone cannot mint a tag.
|
||||
PR_NUMBER="$(gh api "repos/${REPOSITORY}/commits/${HEAD_SHA}/pulls" \
|
||||
--jq 'map(select(.base.ref == env.DEFAULT_BRANCH)) | .[0].number // empty')"
|
||||
if [ -z "${PR_NUMBER}" ]; then
|
||||
echo "No PR found for ${HEAD_SHA} into ${DEFAULT_BRANCH} — refusing to tag."
|
||||
exit 1
|
||||
fi
|
||||
if ! gh api "repos/${REPOSITORY}/issues/${PR_NUMBER}/labels" \
|
||||
--jq '.[].name' | grep -qx 'release'; then
|
||||
echo "PR #${PR_NUMBER} lacks the 'release' label — refusing to tag."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if git rev-parse -q --verify "refs/tags/${TAG}" >/dev/null; then
|
||||
echo "Tag ${TAG} already exists locally — nothing to do."
|
||||
exit 0
|
||||
fi
|
||||
if git ls-remote --exit-code --tags origin "refs/tags/${TAG}" >/dev/null 2>&1; then
|
||||
echo "Tag ${TAG} already exists on origin — nothing to do."
|
||||
exit 0
|
||||
fi
|
||||
|
||||
git config user.name "github-actions[bot]"
|
||||
git config user.email "41898282+github-actions[bot]@users.noreply.github.com"
|
||||
git remote set-url origin "https://x-access-token:${GH_TOKEN}@github.com/${REPOSITORY}.git"
|
||||
git tag -a "${TAG}" -m "Release ${TAG}"
|
||||
git push origin "refs/tags/${TAG}"
|
||||
echo "Created and pushed ${TAG}"
|
||||
|
||||
# GITHUB_TOKEN tag pushes do not trigger release.yml; dispatch it.
|
||||
gh workflow run release.yml \
|
||||
--ref "${DEFAULT_BRANCH}" \
|
||||
-f "tag=${TAG}"
|
||||
echo "Dispatched release.yml for ${TAG}"
|
||||
@@ -0,0 +1,68 @@
|
||||
name: Validate
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
push:
|
||||
branches:
|
||||
- main
|
||||
|
||||
permissions: {}
|
||||
|
||||
jobs:
|
||||
tests:
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
contents: read
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||
with:
|
||||
persist-credentials: false
|
||||
|
||||
- name: Install uv
|
||||
uses: astral-sh/setup-uv@c771a70e6277c0a99b617c7a806ffedaca235ff9 # v9.0.0
|
||||
|
||||
- name: Set up Python
|
||||
run: uv python install 3.12
|
||||
|
||||
- name: Run test suite
|
||||
run: uv run pytest --cov --cov-report=term-missing
|
||||
|
||||
eval:
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
contents: read
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||
with:
|
||||
persist-credentials: false
|
||||
|
||||
- name: Install uv
|
||||
uses: astral-sh/setup-uv@c771a70e6277c0a99b617c7a806ffedaca235ff9 # v9.0.0
|
||||
|
||||
- name: Set up Python
|
||||
run: uv python install 3.12
|
||||
|
||||
- name: Score research quality
|
||||
run: uv run pytest tests/eval -x -s
|
||||
|
||||
mcp-tests:
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
contents: read
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||
with:
|
||||
persist-credentials: false
|
||||
|
||||
- name: Set up Go
|
||||
uses: actions/setup-go@b7ad1dad31e06c5925ef5d2fc7ad053ef454303e # v7.0.0
|
||||
with:
|
||||
go-version: "1.25.5"
|
||||
cache-dependency-path: mcp/go.sum
|
||||
|
||||
- name: Run MCP Go tests
|
||||
run: go test -race ./...
|
||||
working-directory: mcp
|
||||
@@ -0,0 +1,23 @@
|
||||
name: GitHub Actions Security Analysis with zizmor 🌈
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: ["main"]
|
||||
pull_request:
|
||||
branches: ["**"]
|
||||
|
||||
permissions: {}
|
||||
|
||||
jobs:
|
||||
zizmor:
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
security-events: write
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||
with:
|
||||
persist-credentials: false
|
||||
|
||||
- name: Run zizmor 🌈
|
||||
uses: zizmorcore/zizmor-action@6fc4b006235f201fdab3722e17240ab420d580e5 # v0.6.1
|
||||
+34
@@ -1,5 +1,6 @@
|
||||
# Private benchmark / evaluation artifacts — never push to upstream
|
||||
docs/comparison-results/
|
||||
test-run.log
|
||||
scripts/evaluate-synthesis.py
|
||||
scripts/generate-synthesis-inputs.py
|
||||
fixtures/polymarket_sample.json
|
||||
@@ -7,6 +8,7 @@ docs/v2.1-tweets.md
|
||||
docs/30-day-anniversary-thread.md
|
||||
docs/30-day-anniversary-tweets.md
|
||||
variants/open/references/research.md
|
||||
docs/investigations/
|
||||
|
||||
# OS / tool files
|
||||
.DS_Store
|
||||
@@ -15,3 +17,35 @@ variants/open/references/research.md
|
||||
__pycache__/
|
||||
*.pyc
|
||||
mise.toml
|
||||
.memsearch/
|
||||
.venv/
|
||||
.coverage
|
||||
htmlcov/
|
||||
|
||||
# Local secrets/config. Keep tracked examples if added later.
|
||||
.env
|
||||
.env.*
|
||||
!.env.example
|
||||
|
||||
# Root vendor/ is accidental - real vendored client lives at scripts/lib/vendor/bird-search/
|
||||
/vendor/
|
||||
|
||||
# build artifact from scripts/build-skill.sh
|
||||
/dist/
|
||||
|
||||
# Go MCP bundle build outputs - source of truth for vendored/ stays under
|
||||
# skills/last30days/scripts/; build/ holds cross-compiled binaries + .mcpb files.
|
||||
# vendored/ lives inside the engine package because //go:embed cannot reach
|
||||
# outside its own package directory; the .gitkeep anchor stays tracked so
|
||||
# the embed pattern always finds a match even before sync-engine runs.
|
||||
/mcp/internal/engine/vendored/*
|
||||
!/mcp/internal/engine/vendored/.gitkeep
|
||||
/mcp/build/
|
||||
|
||||
# Internal planning docs (ce:plan output) — keep local, don't publish
|
||||
docs/plans/
|
||||
docs/brainstorms/
|
||||
.context/
|
||||
|
||||
/work
|
||||
/print
|
||||
|
||||
@@ -0,0 +1,25 @@
|
||||
{
|
||||
"name": "last30days-skill",
|
||||
"owner": {
|
||||
"name": "Matt Van Horn",
|
||||
"url": "https://github.com/mvanhorn"
|
||||
},
|
||||
"description": "Marketplace for the last30days research plugin",
|
||||
"plugins": [
|
||||
{
|
||||
"name": "last30days",
|
||||
"description": "Research any topic across Reddit, X, YouTube, TikTok, Instagram, Hacker News, Polymarket, GitHub, and 5+ more sources. AI agent scores by upvotes, likes, and real money - not editors.",
|
||||
"version": "3.21.0",
|
||||
"category": "productivity",
|
||||
"source": {
|
||||
"source": "url",
|
||||
"url": "https://github.com/mvanhorn/last30days-skill.git"
|
||||
},
|
||||
"homepage": "https://github.com/mvanhorn/last30days-skill",
|
||||
"keywords": [
|
||||
"last30days",
|
||||
"last 30 days"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
{
|
||||
"name": "last30days",
|
||||
"version": "3.21.0",
|
||||
"description": "Research any topic across Reddit, X, YouTube, TikTok, Instagram, Hacker News, Polymarket, GitHub, and 5+ more sources. AI agent scores by upvotes, likes, and real money - not editors.",
|
||||
"author": {
|
||||
"name": "Matt Van Horn",
|
||||
"email": "mvanhorn@gmail.com",
|
||||
"url": "https://github.com/mvanhorn"
|
||||
},
|
||||
"homepage": "https://github.com/mvanhorn/last30days-skill",
|
||||
"repository": "https://github.com/mvanhorn/last30days-skill",
|
||||
"license": "MIT",
|
||||
"keywords": [
|
||||
"last30days",
|
||||
"last 30 days"
|
||||
],
|
||||
"skills": "./skills/"
|
||||
}
|
||||
@@ -0,0 +1,70 @@
|
||||
# Hermes install-time scanner/package exclusions for repository-root scans.
|
||||
# Keep the public bundle focused on the runtime skill under skills/last30days/.
|
||||
|
||||
# VCS, local envs, caches, and generated outputs
|
||||
.git/
|
||||
.venv/
|
||||
__pycache__/
|
||||
*.pyc
|
||||
*.log
|
||||
*.jsonl
|
||||
*.mp3
|
||||
*.jpeg
|
||||
*.jpg
|
||||
*.png
|
||||
*.gif
|
||||
assets/
|
||||
skills/last30days/assets/
|
||||
.DS_Store
|
||||
.coverage
|
||||
htmlcov/
|
||||
dist/
|
||||
work/
|
||||
print/
|
||||
|
||||
# Repo/dev automation and host-specific package metadata
|
||||
.github/
|
||||
.agents/
|
||||
.claude-plugin/
|
||||
hooks/
|
||||
mcp/
|
||||
gemini-extension.json
|
||||
greptile.json
|
||||
pyproject.toml
|
||||
|
||||
# Non-runtime docs, plans, release notes, fixtures, and tests
|
||||
docs/
|
||||
fixtures/
|
||||
tests/
|
||||
plans/
|
||||
agents/
|
||||
variants/
|
||||
media/
|
||||
README.md
|
||||
CHANGELOG.md
|
||||
AGENTS.md
|
||||
CLAUDE.md
|
||||
CONCEPTS.md
|
||||
CONFIGURATION.md
|
||||
CONTRIBUTORS.md
|
||||
HERMES_SETUP.md
|
||||
release-notes.md
|
||||
SKILL-original.md
|
||||
SPEC.md
|
||||
TASKS.md
|
||||
|
||||
# Dev/eval scripts shipped inside the skill tree but not needed at runtime
|
||||
skills/last30days/scripts/build-skill.sh
|
||||
skills/last30days/scripts/compare.sh
|
||||
skills/last30days/scripts/evaluate_search_quality.py
|
||||
skills/last30days/scripts/setup-keychain.sh
|
||||
skills/last30days/scripts/setup-pass.sh
|
||||
skills/last30days/scripts/test_device_auth.py
|
||||
skills/last30days/scripts/test-v1-vs-v2.sh
|
||||
skills/last30days/scripts/verify_v3.py
|
||||
|
||||
# Keep visible: optional runtime watchlist/store/briefing feature scripts
|
||||
# (`watchlist.py`, `store.py`, and `briefing.py`).
|
||||
|
||||
# Vendored third-party X-search client (node_modules analog); excluded from scan, still installed.
|
||||
skills/last30days/scripts/lib/vendor/
|
||||
@@ -0,0 +1,133 @@
|
||||
# last30days Skill
|
||||
|
||||
Agent Skills package for researching any topic across Reddit, X, YouTube, and web. Installable across Claude Code (most common host), Codex, Cursor, GitHub Copilot, Gemini CLI, Grok (xAI), and 50+ other [Agent Skills](https://agentskills.io) hosts. Python scripts with multi-source search aggregation.
|
||||
|
||||
## Structure
|
||||
- `skills/last30days/SKILL.md` — canonical skill definition / runtime spec the model reads when the slash command fires
|
||||
- `skills/last30days/scripts/last30days.py` — main research engine
|
||||
- `skills/last30days/scripts/lib/` — search, enrichment, rendering modules
|
||||
- `skills/last30days/scripts/lib/vendor/bird-search/` — vendored X search client
|
||||
- `docs/solutions/` — documented solutions to past problems (bugs, best practices, workflow patterns), organized by category with YAML frontmatter (`module`, `tags`, `problem_type`)
|
||||
- `CONCEPTS.md` — shared domain vocabulary (Skill, Engine, Harness, Beta channel) — relevant when orienting to the codebase or discussing project terminology
|
||||
- `CONFIGURATION.md` — user-facing knobs (env vars, flags, per-host install patterns); keep in sync per the rules below
|
||||
- `CHANGELOG.md` — structured release history built by towncrier at release time (launch copy lives in GitHub Releases)
|
||||
- `changelog.d/` — per-PR news fragments; feature PRs write here, never edit `CHANGELOG.md` directly
|
||||
- `CONTRIBUTING.md` — setup, fragments, and release notes for humans and agents (towncrier is release-only)
|
||||
- `.github/scripts/prepare_release.py` — lockstep version bump + towncrier build (release PRs only)
|
||||
- `HERMES_SETUP.md` — install instructions for the Hermes harness specifically
|
||||
|
||||
## Orientation
|
||||
- This is an Agent Skills package, not a CLI tool. The product is the slash-command-invoked skill (`/last30days <topic>` in most harnesses); `scripts/last30days.py` is implementation. Claude Code is the most common host but not the only one — features must work across every harness the skill installs into.
|
||||
- Feature design starts from the slash-command UX. A new engine flag with no SKILL.md integration is incomplete — the model invoking the skill won't know the flag exists.
|
||||
- README and PR examples show `/last30days <topic>` first. Direct CLI invocation (`python3 scripts/last30days.py ...`) is a fallback for scripting, cron, and dev-time engine testing; label it as such, never as the primary path.
|
||||
- Slash commands don't pass shell mechanics through. `/last30days OpenClaw --emit=html | pbcopy` is invalid in any harness — either use the slash form (no flags or pipes; let the model translate user intent into engine flags) or use the direct CLI form (full `python3 ...` with explicit flags and a real shell).
|
||||
|
||||
## Commands
|
||||
```bash
|
||||
# Dev/fallback: direct engine invocation (scripting, cron, or engine testing only).
|
||||
# Saves to $LAST30DAYS_MEMORY_DIR when set in shell or ~/.config/last30days/.env;
|
||||
# add --save-dir <path> for a one-off override. Mirrors LAST30DAYS_STORE convention.
|
||||
python3 skills/last30days/scripts/last30days.py "test query" --emit=compact
|
||||
npx skills add . -g -y # copies skill into ~/.agents/skills/<name>/ (frozen at install time); re-run to sync working-tree edits — see Rules below
|
||||
|
||||
# Tests (pytest, ~89 files under tests/, configured in pyproject.toml)
|
||||
uv run pytest # full suite
|
||||
uv run pytest tests/test_dedupe_v3.py # single file
|
||||
uv run pytest tests/test_dedupe_v3.py -k some_case # single case
|
||||
uv run pytest --cov # with coverage (skips lib/vendor/)
|
||||
|
||||
# Release prep (maintainers / release automation — not feature PRs):
|
||||
# Prefer GitHub Actions → "Prepare release". Local equivalent:
|
||||
uv run python .github/scripts/prepare_release.py --bump patch # or --version X.Y.Z
|
||||
```
|
||||
|
||||
Python 3.12+ required. Use `uv` for the env; the venv lives at `.venv/`.
|
||||
|
||||
## Changelog and releases (agents)
|
||||
|
||||
Agents open most PRs. Follow this so `CHANGELOG.md` stops conflicting and versions stay lockstep:
|
||||
|
||||
1. **Feature/fix PRs:** add `changelog.d/<pr-or-issue>.<type>.md` (`added` / `changed` / `fixed` / `removed` / `deprecated` / `security`) when the change belongs in the next release notes. See `changelog.d/README.md` and `CONTRIBUTING.md`. Fill the PR template’s Summary, Agent disclosure, and Relationship sections.
|
||||
2. **Never** edit `CHANGELOG.md` in a feature PR. **Never** bump version strings in `pyproject.toml`, `SKILL.md`, plugin/marketplace JSON, or `uv.lock` outside a release PR. CI (`changelog-guard.yml`) enforces this.
|
||||
3. **Nothing for release notes:** omit the fragment, check Skip changelog in the template, and add the `skip-changelog` label.
|
||||
4. **Cutting a release:** run Actions → **Prepare release** (patch/minor/major). That opens a `chore(release): bump version to X.Y.Z` PR which runs towncrier and bumps every lockstep surface. Merging to `main` triggers **Tag release**, which pushes `vX.Y.Z` and existing `release.yml` publishes `.skill` / `.mcpb` artifacts. Do not hand-edit ten version files. Contributors do not need a global towncrier install — `uv sync --group dev` (or the Action) provides it for release prep only.
|
||||
5. Lockstep gate remains `tests/test_plugin_contract.py::test_versions_match_across_manifests`. Workflow contract: `tests/test_changelog_workflow.py`.
|
||||
|
||||
## Rules
|
||||
- `lib/__init__.py` must be bare package marker (comment only, NO eager imports)
|
||||
- One-time setup: `npx skills add . -g -y` copies the skill into `~/.agents/skills/<name>/` (real directory) and, for harnesses that support symlinked skill dirs, drops a per-host symlink pointing at that copy. **Working-tree edits do NOT propagate automatically** — the `~/.agents/skills/<name>/` copy is frozen at install time. To sync after edits, re-run `npx skills add . -g -y`. For live-edit on a dev machine, replace the install copy with a symlink to the working tree: `ln -sfn "$PWD/skills/last30days" ~/.agents/skills/last30days` (run from the repo root).
|
||||
- Git remote: origin = public (`mvanhorn/last30days-skill`)
|
||||
- Do not reduce `fail_under` in `pyproject.toml` (`[tool.coverage.report]`) without documenting why in the PR. The coverage gate is a floor meant to rise over time, not to be relaxed when new code is under-tested.
|
||||
- Every `lib/*.py` call to `log.source_log(...)` must pass `tty_only=False`. The default is `True`, which silently drops every line when stderr isn't a TTY (Claude Code, Codex, CI, captured output) — turning source observability into invisible failure. Enforced by `tests/test_source_log_visibility.py`.
|
||||
- **CLI-gated optional sources** (Digg via `digg-pp-cli`, YouTube via `yt-dlp`) activate only when `shutil.which` resolves the binary on the **agent subprocess PATH** — not merely when the file exists on disk. First-run setup installs Digg through `@mvanhorn/printing-press-library` (default `$HOME/.local/bin`); Hermes/OpenClaw gateways often need that directory on PATH. Setup must distinguish PATH-visible installs from off-PATH binaries and must not claim "now active" unless the engine gate would pass. See `docs/solutions/integration-issues/digg-cli-agent-path-setup-wizard.md`.
|
||||
- **First-run onboarding is consent-driven, model-led, and host-split.** The setup subprocess does only mechanical work (cookie reads, tool installs, GitHub device-auth, and emitting the engine-owned welcome via `--welcome`) — it cannot prompt, so consent lives in `SKILL.md` Step 0. Two flows avoid model-authored prose that Claude Code folds or the model skips: in the **Modal Flow** the welcome pitch is embedded in the setup modal's question (the AskUserQuestion modal is the only always-fully-visible surface — a separate welcome message or `--welcome` Bash run gets buried behind "ctrl+o to expand"); the **Non-Modal Prose Flow** still uses `last30days.py --welcome` (relayed verbatim) since it has no modal. The GitHub device code is surfaced by a two-command split — `setup --github-start` returns the code fast (foreground, copies to clipboard) and `setup --github-poll` waits for authorization (`setup --github` still chains both for back-compat). Step 0 has TWO branches: a **Claude Code Modal Flow** (the restored v3.0.0 `AskUserQuestion`-driven NUX — welcome, Auto/Manual/Skip, cookie consent, ScrapeCreators offer, `INCLUDE_SOURCES` opt-in, first-topic picker) for hosts with modals, and a **Non-Modal Prose Flow** for hosts without (OpenClaw, Codex, Cursor, Gemini CLI, Grok). Both ask before reading cookies, surface the macOS Full Disk Access fix on permission-denied, and offer the ScrapeCreators GitHub signup (10,000 free calls) on every first run. A successful `setup --github` persists `SCRAPECREATORS_API_KEY` automatically (via `setup_wizard.write_api_key`, 0o600) and masks the key in stdout. Do NOT collapse the modal flow back into a bare silent `setup` call or flatten it to prose-only — the guided modals are the feature (they eroded once and were restored). The onboarding contract is locked by `tests/test_onboarding_contract.py`. The Step 5 source opt-in is two tiers, both comment-enabled: **Recommended** (TikTok + Instagram posts AND top comments, plus YouTube comments — `INCLUDE_SOURCES=tiktok,instagram,youtube_comments,tiktok_comments,instagram_comments`) and **Everything** (also Threads + Pinterest). Comments are on by default (posts on → comments on for all three platforms); **Threads and Pinterest are the only opt-in extras**, appearing only in the Step 5 Everything option, never in the welcome or the Step 4 offer. Instagram comments are fetched via ScrapeCreators (`/v2/instagram/post/comments`, ranked by `comment_like_count`) with full vote-weighting parity to YouTube/TikTok (a dedicated `_instagram_engagement` carve-out, the `_VOTE_LOG_REFERENCE`/label/threshold entries). The cross-platform "Top Community Comments" list (`render._render_top_comments`) selects **round-robin by within-platform rank** (every platform's #1, then #2, then #3) so a viral platform can't crowd out a smaller one, and drops the per-platform absolute floor so a less-watched video's killer low-vote comment still surfaces.
|
||||
|
||||
## Security hygiene
|
||||
- Never commit real API keys, browser cookies, auth tokens, app passwords, access tokens, or `.env` contents.
|
||||
- Use the env-based auth patterns in `skills/last30days/scripts/lib/env.py`; tests and fixtures must use obvious dummy values only.
|
||||
- Keep examples safe by redacting secrets and avoiding copy/pasteable live credentials in docs, fixtures, and test data.
|
||||
- Do not weaken or disable the advisory security workflow (`.github/workflows/security.yml`) without explaining why in the PR description or review thread.
|
||||
|
||||
## Maintaining README translations
|
||||
|
||||
`README.md` is the canonical English README. When changing it, reflect the same substantive updates in `README.fr.md`, `README.de.md`, `README.es.md`, `README.pt-BR.md`, `README.ja.md`, and `README.zh-CN.md`, preserving commands, links, tables, and reciprocal language navigation.
|
||||
|
||||
## Maintaining CONFIGURATION.md
|
||||
|
||||
`CONFIGURATION.md` is the user-facing configuration reference — save paths, per-source API keys, web-search backend priority, trend-monitoring stack, per-client install patterns. Distinct from `SKILL.md` (the canonical runtime spec).
|
||||
|
||||
Update `CONFIGURATION.md` when:
|
||||
|
||||
- adding a new env var (e.g. `LAST30DAYS_*`, `BSKY_*`, `*_API_KEY`)
|
||||
- adding a new CLI flag that affects configuration (e.g. `--store`, `--web-backend`)
|
||||
- adding a new per-client install pattern (Claude Code, Gemini, Codex, Cursor, Grok, Hermes…)
|
||||
- adding a new optional source that requires its own credential
|
||||
- changing the priority order of config layers (per-run flag > env > `.env` file > defaults)
|
||||
|
||||
Keep the existing structure organized by how often each layer is touched: per-run flags → env vars / `.env` → optional trend-monitoring stack → per-client patterns. Add new content into the right section rather than appending at the end.
|
||||
|
||||
When a new config concept lands in `SKILL.md` or `AGENTS.md`, mirror the user-facing knob in `CONFIGURATION.md` so non-agent readers can configure the skill without reverse-engineering it from the runtime spec.
|
||||
|
||||
## Plugin manifests (Grok)
|
||||
|
||||
The repo doubles as a native Grok Build plugin via `.grok-plugin/plugin.json` + `.grok-plugin/marketplace.json`. Grok also reads `.claude-plugin/*` for compatibility; the native pair is the first-class lane and what an official xAI marketplace listing points at. The self-hosted catalog uses a bare Git URL source (`{"source":"url","url":"https://github.com/mvanhorn/last30days-skill.git"}`) so `grok plugin marketplace add mvanhorn/last30days-skill` tracks HEAD — not a self-referential local `path: "."` (Grok does not enumerate those). Version lockstep with Claude/Codex/Gemini manifests is enforced by `tests/test_plugin_contract.py`. Validate with `grok plugin validate .`.
|
||||
|
||||
## Submitting to the xAI plugin marketplace
|
||||
|
||||
Getting last30days into xAI's official catalog (`xai-org/plugin-marketplace`) is an outbound PR to *their* repo — an index that only points at our source, so nothing of last30days is vendored there. Do this **after** the change you want to ship has merged to `main`: the entry pins a commit that must already exist.
|
||||
|
||||
1. Fork `xai-org/plugin-marketplace` and branch from `main`.
|
||||
2. Get the commit to pin — a full 40-char lowercase SHA; a branch, tag, or short SHA is rejected by their validator:
|
||||
```bash
|
||||
git ls-remote https://github.com/mvanhorn/last30days-skill.git HEAD
|
||||
```
|
||||
3. Add one entry to their `.grok-plugin/marketplace.json` under `plugins[]`, a remote source pinned to that SHA:
|
||||
```json
|
||||
{
|
||||
"name": "last30days",
|
||||
"description": "Research any topic across Reddit, X, YouTube, TikTok, Instagram, Hacker News, Polymarket, GitHub, and 5+ more sources. AI agent scores by upvotes, likes, and real money - not editors.",
|
||||
"category": "productivity",
|
||||
"source": {
|
||||
"source": "url",
|
||||
"url": "https://github.com/mvanhorn/last30days-skill.git",
|
||||
"sha": "<full-40-char-sha-from-step-2>"
|
||||
},
|
||||
"homepage": "https://github.com/mvanhorn/last30days-skill",
|
||||
"keywords": ["last30days", "last 30 days"]
|
||||
}
|
||||
```
|
||||
4. Regenerate their component index (never hand-edit it) and validate exactly as their CI does:
|
||||
```bash
|
||||
python3 scripts/generate-plugin-index.py
|
||||
python3 scripts/validate-catalog.py
|
||||
python3 scripts/generate-plugin-index.py --check
|
||||
```
|
||||
5. Open the PR, fill in their template, and wait for code-owner review.
|
||||
|
||||
To roll out a later update in their catalog, bump the pinned `sha` in the existing entry — never open a second, parallel entry.
|
||||
|
||||
Do not confuse this with our own `.grok-plugin/marketplace.json`: that file makes this repo directly addable as a Grok marketplace (`grok plugin marketplace add mvanhorn/last30days-skill`) and uses a **bare URL** source (no SHA) so it tracks HEAD; the xAI entry above lives in *their* repo and uses a **remote** source pinned to a SHA.
|
||||
|
||||
## Beta channel
|
||||
|
||||
Experimental changes get tested on `mvanhorn/last30days-skill-private`, which installs as a parallel `/last30days-beta` slash command. Beta-only changes never ship to public without a review PR here. Workflow guide lives at `BETA.md` in the private repo. Plan that established this setup: `docs/plans/2026-04-17-005-feat-beta-skill-from-private-repo-plan.md`.
|
||||
+875
-4
@@ -5,6 +5,877 @@ All notable changes to this project will be documented in this file.
|
||||
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
||||
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
||||
|
||||
This project uses [towncrier](https://towncrier.readthedocs.io/). Upcoming notes live in [`changelog.d/`](changelog.d/); do not edit this file in feature PRs.
|
||||
|
||||
<!-- towncrier release notes start -->
|
||||
|
||||
## [3.21.0] - 2026-08-14
|
||||
|
||||
### Changed
|
||||
|
||||
- X backend priority changed: bird (browser cookies) is now first in the auto chain, ahead of xai/xurl/xquik. Cookies beat XAI_API_KEY when both are present. Grok CLI is demoted to opt-in only: a leftover `~/.grok/auth.json` no longer steals the X lane. Pin `LAST30DAYS_X_BACKEND=grok` to enable it explicitly.
|
||||
|
||||
|
||||
## [3.20.0] - 2026-08-14
|
||||
|
||||
### Added
|
||||
|
||||
- X search now judges corpus on-topic ratio and retries once with a wider AND query when the initial results are mostly off-topic (e.g., phrase-quoted "Rome Italy" returning AS Roma sports accounts). Multi-word search queries use unquoted AND as the primary variant instead of phrase-quoting. Handles extracted from entity_extract are now filtered for the from: lane based on whether their already-retrieved posts are on-topic (≥2 on-topic hits and ≥50% ratio), not just frequency. Extracted handles that qualify for the from: lane AND the topic into the query (`from:handle Rome`) to prevent off-topic timelines from filling the X budget. Explicit --x-handle and --x-related handles always get the from: lane without ANDing the topic. Source status reflects off-topic floods as a warning artifact, not a failure. First-party floor immunity remains conservative (explicit handles only, not promoted commentators).
|
||||
|
||||
### Fixed
|
||||
|
||||
- Amazon review enrichment now starts at search time instead of after all other sources finish, ensuring multi-source runs have a useful budget (up to 180s) rather than leftover crumbs. Previously, a run that spent 269s on retrieval would leave only 11s for reviews, causing all Bright Data pulls to time out. Budgets below 90s now skip the lane entirely instead of firing doomed short pulls that spend credits without returning reviews.
|
||||
- Grok session expiry is now detected locally by parsing `expires_at` from `~/.grok/auth.json`. Doctor reports expired sessions as **degraded** (not ok) with the expiry timestamp and a hint to run `grok login --device-auth` if refresh fails. Research-time availability still attempts grok when credentials exist (expired access_token does not prove the refresh_token is dead). When the Grok CLI returns "Not signed in" or `invalid_grant` mid-run, the pipeline now reports `auth-failed` with a proper fix hint instead of a generic PARTIAL outcome, and falls back to the next X backend.
|
||||
|
||||
|
||||
## [3.19.0] - 2026-08-14
|
||||
|
||||
### Security
|
||||
|
||||
- Source URLs containing unsafe schemes or Markdown delimiters are now rendered as inert escaped text instead of raw Markdown. ([#886](https://github.com/mvanhorn/last30days-skill/issues/886))
|
||||
- SessionStart `check-config.sh` now rejects non-identifier `.env` keys before `printf -v` (blocking array-subscript command substitution) and loads `.claude/last30days.env` only when `LAST30DAYS_TRUST_PROJECT_CONFIG` is set in the process environment or global config, matching `lib/env.py`.
|
||||
|
||||
### Added
|
||||
|
||||
- **Amazon buyer signals** — a new opt-in `amazon` source, backed by the Bright Data CLI. On shopping-intent topics it pulls discovered products with live ratings and prices, plus a capped sample of recent written reviews woven in as buyer voice.
|
||||
|
||||
The signal it exists for is *drift*: an all-time rating from thousands of ratings set against the average of only the reviews inside the last 30 days. When those disagree, something changed this month, and the review text says what. The emoji footer names each product and the direction it moved — `📦 Amazon: 3 products │ Chill Max XL 4.4★→3.8★ ↓, Deluxe Bag 4.7★→5.0★, BLUEY Set 4.8★ new` — rather than reporting inventory counts.
|
||||
|
||||
Off by default and dual-gated: the `brightdata` CLI must be on PATH and logged in, *and* the run must ask for the source (`--search ...,amazon` or `INCLUDE_SOURCES=amazon`). It never auto-fires from inferred intent. Use `--amazon-query` when the product keyword differs from the topic — a person topic searches their company's product line, not their name. `LAST30DAYS_AMAZON_DOMAIN` selects a non-US marketplace.
|
||||
|
||||
Billing is one credit per request against a 5,000/month free tier, so a typical run costs 4 credits regardless of how many reviews come back.
|
||||
- Reddit keyless discovery now falls back to the arctic-shift archive when the shreddit listing partials return nothing — hosts on datacenter egress (where Reddit 403s `/svc/shreddit`) keep scored Reddit discovery, score backfill, and discover-mode listings instead of reporting `auth-failed`.
|
||||
- X search now works with no X credential at all. Install the Grok CLI (`curl -fsSL https://x.ai/cli/install.sh | bash`, then `grok login`) and last30days reaches X with no X account, no browser cookies, and no `XAI_API_KEY` — on any host, including Claude Code, Codex, Cursor and GrokBot. It sits ahead of the browser-cookie path by default; pin `LAST30DAYS_X_BACKEND=bird` to keep cookies. Covers three lanes for a person or company topic: posts by the subject, posts @-mentioning them, and posts naming them in plain text (which is most of the discussion, and which a mention-only search misses).
|
||||
|
||||
### Fixed
|
||||
|
||||
- Source URLs in the saved raw report and internal evidence output now render as clickable markdown links instead of plain text. ([#886](https://github.com/mvanhorn/last30days-skill/issues/886))
|
||||
- Hacker News comments no longer vanish from every per-source path. HN comments arrive as `{author, text, points}` while downstream readers key on `score`/`excerpt`, and `_normalize_hackernews` stored them raw, so `render._top_comments_list` filtered `(c.get("score") or 0) >= 5` against a key that was never present and rejected the entire source. HN comments are now remapped like the YouTube and TikTok ones, and the HN floor is 0 because the Algolia API returns `points: null` for every comment child, which makes any positive threshold unmeetable. A comment with no vote signal renders without a fabricated "(0 points)". ([#889](https://github.com/mvanhorn/last30days-skill/issues/889))
|
||||
- Polymarket topics spelled out in full ("artificial general intelligence") now match markets titled in shorthand ("AGI by 2030?"). Previously the topic filter and the relevance floor both compared full words against an acronym, so every on-topic market was dropped and the run reported zero results — indistinguishable from the source genuinely having none. ([#891](https://github.com/mvanhorn/last30days-skill/issues/891))
|
||||
- Reddit HTTP 429/403 on the keyless lanes is no longer reported as a clean `no-results`: the failure now survives the worker-thread hop into the run outcome, so `source_status` carries `rate-limited`/`auth-failed` with the status in `detail` and `doctor --postmortem` lists Reddit under Failed instead of "No failures on the last run." `doctor --probe` now checks the RSS endpoint the engine actually uses (the old `/r/all/hot.json` probe is permanently 403 keyless) and counts a 403/429 there as blocked rather than reachable. Under `LAST30DAYS_STRICT_EXIT` a blocked Reddit run now exits 3 instead of 0. ([#899](https://github.com/mvanhorn/last30days-skill/issues/899))
|
||||
- On Windows, the setup wizard's npx-based installs (Digg, arXiv, Techmeme) always failed silently because `shutil.which("npx")` resolves `PATHEXT` but `subprocess.run` given the bare string `"npx"` does not. Windows users also got macOS-only Homebrew guidance when yt-dlp was missing. Both are fixed: the resolved npx path is now passed through, and Windows gets `pip install yt-dlp` guidance instead. ([#904](https://github.com/mvanhorn/last30days-skill/issues/904))
|
||||
- `--web-backend=keyless` is now accepted by the CLI, matching what `CONFIGURATION.md` already documented. The keyless web-search floor was already fully supported internally; only the argument parser rejected the value. ([#905](https://github.com/mvanhorn/last30days-skill/issues/905))
|
||||
- arXiv no longer returns zero results for natural-language multi-word topics. The exact-phrase quoted query now retries unquoted once when it matches nothing, instead of silently dropping arXiv from the report. ([#908](https://github.com/mvanhorn/last30days-skill/issues/908))
|
||||
- Truth Social search no longer fails with a Cloudflare-triggered HTTP 403 on every request. Requests now send browser-like headers, the same fix already applied to Reddit. ([#909](https://github.com/mvanhorn/last30days-skill/issues/909))
|
||||
- `--emit=compact --save-dir` runs now save the complete debug artifact (all clusters plus every per-source item, with the emoji footer citing the actual written path) instead of the compact stdout render, which had made most collected evidence unrecoverable from the raw file. ([#923](https://github.com/mvanhorn/last30days-skill/issues/923))
|
||||
- The GitHub source no longer reports zero results when the planner writes search qualifiers into the topic (e.g. `open source AI stars:>1000 created:>2025-03-20`). `search_github` appends its own `created:>{from_date}` window, and two `created:` qualifiers collide: GitHub honors the first and ignores the appended window, so out-of-window items are fetched and then dropped wholesale by the local date filter, surfacing as a silent `no-results`. Qualifiers are now stripped from the topic before the query is built (including comma/semicolon-glued forms and quoted values such as `label:"bug fix"`), topic terms glued after a qualifier value are preserved, and a qualifier-only topic reports an explicit error instead of searching the whole site. ([#949](https://github.com/mvanhorn/last30days-skill/issues/949))
|
||||
- The GitHub source no longer returns zero results once a credential is available. GitHub rejects authenticated `/search/issues` requests that carry neither `is:issue` nor `is:pull-request` with HTTP 422, while anonymous requests are still accepted without one — so the source worked until a user ran `gh auth login` or set `GITHUB_TOKEN`, then failed silently while `doctor` still reported it healthy. Authenticated searches now run both qualifier-scoped queries and merge them, deduped by item id and re-sorted by reaction count, which keeps issues and pull requests in the same result set; appending a single qualifier would have dropped roughly 87% of matches on a typical topic. The unauthenticated path is unchanged. When one partition fails but the other returns items, the surviving items are now kept and the source is reported as partial rather than silently claiming success — full-failure (both partitions return nothing) is still a clear failure. ([#967](https://github.com/mvanhorn/last30days-skill/issues/967))
|
||||
- Out-of-window evidence no longer leads the ranked output. Items whose dates fall outside the run's window were flagged `[date:low]` but ranked normally, so a 2025-10 video took the #1 cluster in a 2026-07 brief and a 2025-12 one took #5. Candidates whose every dated item is out of window are now demoted in both the fusion sort and `_final_score`, so they still appear as evidence but never above in-window material; items with no date at all are untouched, since an unknown date is a coverage gap rather than a stale item. The freshness verdict ("only N of M dated items are from the last 7 days") also reaches the pass-through footer instead of only the report body.
|
||||
- X runs on a person or company no longer discard the subject's own posts. A post almost never contains its own author's name, so lexical relevance scored it at zero and the retrieval floor pruned it — a run for "Peter Steinberger steipete" fetched 8 posts by him and reported none of them. Fixed across the chain: planner scaffolding words no longer count as topic signal, posts by a handle the run is searching are exempt from the floor, auto-discovered handles now reach the first-party protections (previously only `--x-handle` did), quoted proper-noun phrases survive into the provider query instead of degrading into a token conjunction, and the subject of the topic gets a higher per-author cap than incidental accounts. When no real handle can be identified at all, the X floor is skipped rather than pruning against lexical name tokens. The thin-source retry path defers the X floor the same way Phase 1 does, so a subject-authored post recovered on retry is not discarded before handle resolution.
|
||||
- `--github-user` no longer returns unrelated repos for people whose PR search comes back empty or is unavailable. Person mode now falls back to the selected user's public GitHub events and returns only in-window `PushEvent` activity attributed to that actor, instead of treating repository-level `pushed_at` as proof that the selected user pushed. A pinned `--github-user` that still yields nothing is recorded as `no-results` instead of passing silently.
|
||||
|
||||
|
||||
## [3.18.4] - 2026-07-28
|
||||
|
||||
### Fixed
|
||||
|
||||
- Tag release workflow YAML now parses on every main push; merge commits can mint `vX.Y.Z` tags again. ([#880](https://github.com/mvanhorn/last30days-skill/issues/880))
|
||||
- YouTube yt-dlp search under comparison-mode fan-out no longer self-throttles into 120s timeouts: concurrent yt-dlp invocations are process-wide capped, identical searches are deduped within a run, and a search timeout is recorded as `timeout` rather than `no-results`. `LAST30DAYS_YT_SEARCH_TIMEOUT` configures the search deadline.
|
||||
|
||||
|
||||
## [3.18.3] - 2026-07-25
|
||||
|
||||
### Fixed
|
||||
|
||||
- Top Community Comments ranking blends thread relevance with vote strength and applies the relevance floor only when enough on-topic candidates exist. ([#701](https://github.com/mvanhorn/last30days-skill/issues/701))
|
||||
- Chromium cookie extraction now searches every browser profile for a matching cookie set, and reuses the Keychain/AES key across profiles in one scan. ([#725](https://github.com/mvanhorn/last30days-skill/issues/725))
|
||||
- Synthesis contract is echoed at the top of the evidence envelope so hosts that truncate stdout still see the "synthesize, don't dump" directive. ([#727](https://github.com/mvanhorn/last30days-skill/issues/727))
|
||||
- `store_findings` no longer raises `TypeError` when a re-sighted finding carries `engagement_score: None`. ([#796](https://github.com/mvanhorn/last30days-skill/issues/796))
|
||||
- Explicit --plan payloads with an invalid schema now exit with a field-specific error instead of silently running a deterministic plan. ([#841](https://github.com/mvanhorn/last30days-skill/issues/841))
|
||||
- Company-topic runs no longer auto-add the `jobs` source when an explicit `--search` / `requested_sources` filter is set; `--hiring-signals` still forces jobs. ([#842](https://github.com/mvanhorn/last30days-skill/issues/842))
|
||||
- Report footer path now matches the collision-safe path actually reserved by save_output. ([#850](https://github.com/mvanhorn/last30days-skill/issues/850))
|
||||
- YouTube ScrapeCreators transcript rescue is logged instead of being masked as a hard failure. ([#851](https://github.com/mvanhorn/last30days-skill/issues/851))
|
||||
- Polymarket domain-sweep topics no longer drop every market after noise-word stripping removes terms like "ai". ([#859](https://github.com/mvanhorn/last30days-skill/issues/859))
|
||||
- Reddit fetch windows now track the requested date range so short `--days` runs no longer pull a depth-default month and discard everything outside the window. ([#860](https://github.com/mvanhorn/last30days-skill/issues/860))
|
||||
|
||||
|
||||
## [3.18.2] - 2026-07-25
|
||||
|
||||
### Added
|
||||
|
||||
- Release preparation now builds CHANGELOG.md from changelog.d fragments via towncrier and bumps every plugin/marketplace lockstep version surface through an automated Prepare release workflow (no more shared Unreleased edits).
|
||||
|
||||
### Fixed
|
||||
|
||||
- `--trustpilot-domain` (and plan-level `trustpilot_domain`) now auto-activates the opt-in Trustpilot source for the run instead of silently no-oping when `INCLUDE_SOURCES` / `--search` omit it. ([#873](https://github.com/mvanhorn/last30days-skill/issues/873))
|
||||
- Scraped evidence text can no longer inject structural `##` markdown headings into the EVIDENCE FOR SYNTHESIS block — continuation lines stay indented and leading ATX markers are escaped. ([#874](https://github.com/mvanhorn/last30days-skill/issues/874))
|
||||
|
||||
|
||||
## [3.18.1] - 2026-07-24
|
||||
|
||||
### Fixed
|
||||
|
||||
- General reports no longer promote unanchored fallback entity misses, zero-score clusters, or comments attached only to rejected evidence into synthesis. ([#863](https://github.com/mvanhorn/last30days-skill/pull/863))
|
||||
- YouTube transcript fetches now reuse a completed VTT left on disk when yt-dlp times out, honor `.env` values for caption languages, and allow keyed runs to tune the 12-second fast-fail timeout. ([#864](https://github.com/mvanhorn/last30days-skill/pull/864))
|
||||
- Comparison / vs-mode no longer silently drops entities beyond 4. Entity ceiling is now `COMPETITORS_MAX + 1` (7), truncation warns on stderr naming dropped entities, and `--competitors-plan` implies competitor mode so a vs-topic + plan keeps all named peers (plan remains targeting-only; discover-N via bare `--competitors` is unchanged) ([#868](https://github.com/mvanhorn/last30days-skill/issues/868), [#870](https://github.com/mvanhorn/last30days-skill/pull/870)).
|
||||
- Docs now match Reddit ScrapeCreators search backup semantics: empty-only by default (not "when public Reddit is unavailable" / rate-limited). `CONFIGURATION.md` documents `LAST30DAYS_REDDIT_SC_MIN_ITEMS`; `SKILL.md` Security, Manual setup, NUX, and the Reddit backend pin describe the real empty-path / thinness-floor / SC-primary knobs. NUX Step 4/5 no longer claim SC Reddit comment enrichment or `public + ScrapeCreators` merge on the default free path (comments stay keyless via shreddit) ([#867](https://github.com/mvanhorn/last30days-skill/issues/867), [#869](https://github.com/mvanhorn/last30days-skill/pull/869)).
|
||||
- X search via xurl pins app-only bearer auth so OAuth1-signed multi-word queries no longer 401. ([#855](https://github.com/mvanhorn/last30days-skill/pull/855))
|
||||
- Bird X retries normalize cleanly and empty result sets stay empty instead of erroring. ([#840](https://github.com/mvanhorn/last30days-skill/pull/840))
|
||||
|
||||
## [3.18.0] - 2026-07-21
|
||||
|
||||
### Changed
|
||||
|
||||
- Discovery is now a three-command host-judged protocol (SKILL.md LAW 11: "YOU ARE THE JUDGE"): `--discover --nominate-only` writes a nominations bundle and a fenced judging digest, the hosting model writes a judgments file (short names, junk flags, worthiness) and later an angles file, and `--discover --judgments <file>` / `--discover --finalize [--angles <file>]` complete the run. No API key is ever needed for host-judged trending. ([#856](https://github.com/mvanhorn/last30days-skill/pull/856))
|
||||
- Discovery protocol runs enrich at the normal-research tier (default depth, 4 workers, `LAST30DAYS_ENRICH_BUDGET_SECONDS` default 450s) instead of the 240s quick sweep; one-shot `--discover` keeps the quick tier unchanged. ([#856](https://github.com/mvanhorn/last30days-skill/pull/856))
|
||||
- Displayed discovery ranks now descend by the card's velocity score, and survivors sharing evidence (same top comment or 2+ shared URLs) fold into the higher-velocity story. ([#856](https://github.com/mvanhorn/last30days-skill/pull/856))
|
||||
|
||||
### Removed
|
||||
|
||||
- The engine-side discovery LLM judge (`lib/discovery_judge.py` and all reasoning-provider resolution in the discovery path). One-shot cron runs use deterministic heuristic names, velocity-only order, and no angles, with one loud stderr note pointing at the host-judged protocol. Keyed one-shot users lose provider naming/angles by design - the protocol replaces them. ([#856](https://github.com/mvanhorn/last30days-skill/pull/856))
|
||||
|
||||
## [3.17.0] - 2026-07-21
|
||||
|
||||
### Added
|
||||
|
||||
- Discovery trend cards now lead with short judged topic names: a stage-1 LLM judge gives each nominated cluster a 2-6 word searchable name (with a deterministic fallback namer), replacing raw post titles as card headings, and blends a 0-100 content-worthiness score into the ranking. ([#852](https://github.com/mvanhorn/last30days-skill/pull/852))
|
||||
- Junk-shape gate in discovery: help-me / beginner / personal-musing post shapes flagged by the judge (or the deterministic classifier at the seed-source floor) lose the single-source ranking bypass and need cross-source corroboration to rank. ([#852](https://github.com/mvanhorn/last30days-skill/pull/852))
|
||||
- Stage-2 angle pass: every discovery trend card carries engine-owned `**Podcast angle:**` and `**X article angle:**` lines, so the brief doubles as a content-pipeline worksheet. ([#852](https://github.com/mvanhorn/last30days-skill/pull/852))
|
||||
- Persistent discovery topic queue: `--discover` runs record surfaced topics in research.db (on by default; `LAST30DAYS_DISCOVERY_QUEUE=off` opts out, `--mock` never writes, `--save-dir` scopes the store), re-surfaced or covered topics get a `**Pipeline:**` annotation on their card, and `queue list` / `queue cover "<name>"` manage the queue from the CLI. ([#852](https://github.com/mvanhorn/last30days-skill/pull/852))
|
||||
- Discovery JSON export schema 1.1: per-topic `podcast_angle` / `x_article_angle` plus the queue fields `previously_surfaced_count`, `last_surfaced`, and `covered` join the discovery export contract; every existing key is preserved. ([#852](https://github.com/mvanhorn/last30days-skill/pull/852))
|
||||
|
||||
## [3.16.0] - 2026-07-15
|
||||
|
||||
### Added
|
||||
|
||||
- YouTube comments now fetch free via yt-dlp first; ScrapeCreators is a failure-only fallback, dropping the paid-key requirement for comment enrichment. ([#827](https://github.com/mvanhorn/last30days-skill/pull/827))
|
||||
- `GITHUB_TOKEN` is registered end-to-end (.env, keychain, setup scripts, doctor) so the GitHub source stops rate-limiting keyed users. ([#793](https://github.com/mvanhorn/last30days-skill/pull/793))
|
||||
- Opt-in overridable per-source result caps for high-volume topics; defaults unchanged when unset. ([#717](https://github.com/mvanhorn/last30days-skill/pull/717))
|
||||
- `OPENROUTER_BASE_URL` override, mirroring the existing OPENAI/XAI base-URL knobs. ([#703](https://github.com/mvanhorn/last30days-skill/pull/703))
|
||||
- `LAST30DAYS_MCP_TIMEOUT` accepts bare integer seconds as documented, not just Go duration strings. ([#765](https://github.com/mvanhorn/last30days-skill/pull/765))
|
||||
|
||||
### Fixed
|
||||
|
||||
- Keyless web search now works on hosts where DuckDuckGo anomaly-blocks the egress IP (a 202 challenge page with no results — common on datacenter/VPS IPs). Added Startpage as a second keyless rung (DuckDuckGo → Startpage → configured SearXNG), so the web floor still returns results there. Also hardened `_strip_html` to drop `<style>`/`<script>` contents so inline CSS can't leak into a title or snippet.
|
||||
- Web/grounding results are no longer discarded when one of them is a reddit.com URL whose enrichment fetch fails. Reddit enrichment is a best-effort secondary fetch; its HTTP failures (e.g. a 403 on a datacenter IP) were being attributed to the whole web source, which then reported "0 items — HTTP 403" despite having retrieved good results. Its failures are now isolated from the source's outcome.
|
||||
- Very long topic names no longer crash `save_output` (ENAMETOOLONG): slugify truncates at 180 chars with a stable hash suffix so distinct topics stay distinct. ([#786](https://github.com/mvanhorn/last30days-skill/pull/786))
|
||||
- Quick depth honors the plan's explicit sources instead of trimming them away. ([#664](https://github.com/mvanhorn/last30days-skill/pull/664))
|
||||
- X search on Windows/Node 24: valid Bird CLI JSON on stdout is trusted even when the process exits non-zero. ([#813](https://github.com/mvanhorn/last30days-skill/pull/813))
|
||||
- 17 `.get(key, 0)` sites are now None-safe, fixing sort/math crashes on stored data with null fields. ([#822](https://github.com/mvanhorn/last30days-skill/pull/822))
|
||||
- Non-ASCII characters in URLs are percent-encoded component-wise before urllib, fixing the latin-1 encode crash. ([#822](https://github.com/mvanhorn/last30days-skill/pull/822), supersedes [#821](https://github.com/mvanhorn/last30days-skill/pull/821))
|
||||
- `LAST30DAYS_DEBUG` is registered and resolved lazily; fixes the `http.DEBUG` AttributeError in xai_x. ([#770](https://github.com/mvanhorn/last30days-skill/pull/770))
|
||||
- `DEGRADED_TRANSCRIPT_THRESHOLD` set in .env is picked up. ([#807](https://github.com/mvanhorn/last30days-skill/pull/807))
|
||||
- One bad video no longer marks the whole ScrapeCreators transcript source failed. ([#830](https://github.com/mvanhorn/last30days-skill/pull/830))
|
||||
- Chromium cookie temp copies keep 0600 permissions for their whole lifetime. ([#764](https://github.com/mvanhorn/last30days-skill/pull/764))
|
||||
- Thin-source retries forward pinned subreddits/hashtags/creators instead of retrying generically. ([#795](https://github.com/mvanhorn/last30days-skill/pull/795))
|
||||
|
||||
## [3.15.0] - 2026-07-14
|
||||
|
||||
### Added
|
||||
|
||||
- `doctor` is now a four-state audit instead of a flat config prediction: every source is grouped into **WORKING** (verified this run, last run, or keyless-always-on), **TURNED ON - UNVERIFIED** (configured/opted-in but no run evidence), **NOT WORKING** (configured but failing, or the last run errored), or **COULD BE ON** (an available capability not yet configured). Each source renders on its own labeled line, so GitHub (and every other source) is no longer buried in a cluster.
|
||||
- `doctor --postmortem`: reads the last run's `last-report.json` (any age, labeled) and reports, per source, what actually happened - Failed / Partial / Succeeded / Skipped with details and fix hints - so "what broke on that run?" is answerable after the fact.
|
||||
- `doctor --probe`: a bounded live test that verifies WORKING instead of guessing. It also auto-fires when there is no fresh run. Each source is probed concurrently under a per-source deadline (`LAST30DAYS_DOCTOR_PROBE_TIMEOUT`, default 10s) so a slow source can never hang the command. Scope is free HTTP endpoints + keyless CLIs only; credit-gated sources (X, TikTok, Instagram, Threads, …) are never live-probed and stay UNVERIFIED.
|
||||
- `doctor` now surfaces **CLI health**: sources needing a downloaded binary (`yt-dlp`, `digg-pp-cli`, `techmeme-pp-cli`, `arxiv-pp-cli`, `trustpilot-pp-cli`, optional `gh`) carry an inline `[CLI: name ✓]` marker and a dedicated CLI-health block, visibly distinct from keyless sources.
|
||||
- `doctor` now audits **techmeme, arXiv, and trustpilot** (they run in research but were previously absent from the health surface), and surfaces **backup lanes** (Reddit ScrapeCreators backfill, YouTube SC transcript/search backstop used when yt-dlp is rate-limited, X cookie-vs-`XAI_API_KEY` dual path) and **comment lanes** (youtube/tiktok/instagram) as indented sub-lines.
|
||||
- `doctor --json` gains `audit_state`, `cli`, `backups`, `comments`, and `run_outcome` per source plus a top-level `mode`, all additive - every existing key is preserved.
|
||||
|
||||
### Fixed
|
||||
|
||||
- `doctor` no longer reports Threads as Ready when it will not run: SC-gated opt-in sources now honor `INCLUDE_SOURCES` (mirrors the correct LinkedIn gating), so Threads shows COULD BE ON until opted in. TikTok/Instagram stay on-by-default.
|
||||
|
||||
## [3.14.0] - 2026-07-12
|
||||
|
||||
### Added
|
||||
|
||||
- Global trending: bare `--discover` (no domain) sweeps every river feed's own hot list (r/all, Hacker News front page, Digg) with no keyword gate - `/last30days trending` now works. ([#816](https://github.com/mvanhorn/last30days-skill/pull/816))
|
||||
- Discovery is now two-stage: a listing sweep nominates candidate topics, then each nomination gets a full research pass (Reddit with comments, X, YouTube, Techmeme, arXiv, HN, Polymarket, web) before ranking - Techmeme and arXiv reach discovery for the first time, and every trend card can carry a verbatim community-voice quote with attribution plus a cross-source corroboration badge. `--discover-shallow` skips the research passes for a faster, thinner sweep. ([#816](https://github.com/mvanhorn/last30days-skill/pull/816))
|
||||
- Discovery confidence floor: every topic must clear cross-source confirmation or a genuinely strong single-source spike; when nothing clears, the run reports an honest "Nothing solid this window" (JSON `outcome: nothing-solid` with the closest `weak_signal` named) instead of ranking noise. The discovery JSON contract gains `outcome`, `weak_signal`, and per-topic `top_comment` / `corroboration_count`. ([#816](https://github.com/mvanhorn/last30days-skill/pull/816))
|
||||
|
||||
### Fixed
|
||||
|
||||
- Discovery no longer emits ranked junk on quiet or over-broad domains (the "sports" sweep that returned five 1-like tweets): sub-floor evidence never ranks. ([#816](https://github.com/mvanhorn/last30days-skill/pull/816))
|
||||
- An explicit `--search` source boundary now holds through discovery's research passes, not just the listing sweep; `--discover-shallow` without `--discover` errors instead of silently running a full research pass; enrichment stragglers can no longer keep the process alive past the wall-clock budget. ([#816](https://github.com/mvanhorn/last30days-skill/pull/816))
|
||||
|
||||
## [3.13.1] - 2026-07-12
|
||||
|
||||
### Added
|
||||
|
||||
- Doctor `library` line: reports how many saved research briefs the local library holds (cheap glob, never a full parse), so the report's "From your library" block is explained on the health surface. The block itself now carries a one-line explainer with the `LAST30DAYS_LIBRARY_CONTEXT=off` opt-out. ([#815](https://github.com/mvanhorn/last30days-skill/pull/815))
|
||||
|
||||
### Fixed
|
||||
|
||||
- Doctor no longer reports X as `Off` when the bird CLI plus browser-cookie consent serve X fine at runtime: the cookie-backed path now reads **Ready**, with an honest note that the session is verified only at run time and `XAI_API_KEY` is the key-backed alternative. ([#815](https://github.com/mvanhorn/last30days-skill/pull/815))
|
||||
- Doctor's YouTube note no longer reads as broken when yt-dlp is healthy: it affirms search + transcripts work, scopes the transcription key to caption-free videos, and correctly attributes comment text to ScrapeCreators (key + `youtube_comments` opt-in) with an actionable fix line - never to yt-dlp. ([#815](https://github.com/mvanhorn/last30days-skill/pull/815))
|
||||
- Doctor's Web line on Claude Code now says host-native web search is active instead of `degraded ... keyless`, and names the host rather than an env var the user never set. Messaging only; engine web behavior unchanged. ([#815](https://github.com/mvanhorn/last30days-skill/pull/815))
|
||||
- The report footer no longer prints `no results` lines for zero-item sources; failure signal stays in the Source Coverage / Partial Coverage evidence blocks, and the `Raw results saved to` line still renders when every source is empty. ([#815](https://github.com/mvanhorn/last30days-skill/pull/815))
|
||||
|
||||
## [3.13.0] - 2026-07-12
|
||||
|
||||
### Added
|
||||
|
||||
- Xiaohongshu (RED) documented as a first-class requested-only source, with auto-detection of a logged-in local browser-session service: last30days probes `http://localhost:18060` then `http://host.docker.internal:18060` when the source is opted in; `XIAOHONGSHU_API_BASE` remains the explicit override. Zero probing and zero behavior change for users who have not opted in. ([#766](https://github.com/mvanhorn/last30days-skill/pull/766), thanks @yuzhiyang1)
|
||||
- DripStack as an opt-in source: premium financial newsletter and analyst-writeup search (free public API, no key), complementing StockTwits retail sentiment and Polymarket odds with professional analyst signal. Ships default-off; requests route through the shared HTTP layer and honor the 30-day window. ([#791](https://github.com/mvanhorn/last30days-skill/pull/791), thanks @zimoo354)
|
||||
- Persistent opt-in for both new sources via `INCLUDE_SOURCES=xiaohongshu` / `INCLUDE_SOURCES=dripstack` in `.env`, matching the LinkedIn/Perplexity pattern; per-run `--search` still works. ([#812](https://github.com/mvanhorn/last30days-skill/pull/812))
|
||||
|
||||
### Fixed
|
||||
|
||||
- Whitespace in comma-separated `INCLUDE_SOURCES` values no longer silently breaks any source's persisted opt-in. ([#812](https://github.com/mvanhorn/last30days-skill/pull/812))
|
||||
- DripStack article bodies (subtitle/lede) now reach ranking and synthesis instead of only the capped snippet; the Xiaohongshu doctor prescription no longer recommends an env pin that disables auto-probing. ([#811](https://github.com/mvanhorn/last30days-skill/pull/811))
|
||||
- Release hygiene: SKILL.md body header and uv.lock are regenerated with the version bump (both were missed in the 3.12.0 cut and hotfixed on main).
|
||||
|
||||
## [3.12.0] - 2026-07-12
|
||||
|
||||
### Added
|
||||
|
||||
- Typed per-run source outcomes: every run records what actually happened per source (`ok`, `no-results`, `partial`, `rate-limited`, `auth-failed`, `unreachable`, `timeout`, `schema-drift`, `skipped-unconfigured`, `error`) in `source_status`, with doctor-aligned states and fix hints - silence is never mistaken for coverage. ([#797](https://github.com/mvanhorn/last30days-skill/pull/797))
|
||||
- Versioned agent JSON export profile: `--emit=json --json-profile=agent` returns a stable machine contract (`schema_version` 1.2) with `source_status`, clusters, ranked results with joinable `candidate_id`, and freshness verdicts; `--json-profile=raw` keeps the legacy dump byte-identical. ([#798](https://github.com/mvanhorn/last30days-skill/pull/798), [#810](https://github.com/mvanhorn/last30days-skill/pull/810))
|
||||
- Research-quality eval harness: recorded-fixture regression suite scoring runs on citation grounding, recency compliance, cluster coherence, coverage, and determinism against per-fixture floors, in CI. ([#799](https://github.com/mvanhorn/last30days-skill/pull/799))
|
||||
- `--drill`: re-research one cluster of the cached report in depth without a full re-run. ([#800](https://github.com/mvanhorn/last30days-skill/pull/800))
|
||||
- `--discover`: topic-less trending sweeps over listing feeds with velocity-ranked story clusters and ready-to-run research commands. ([#801](https://github.com/mvanhorn/last30days-skill/pull/801))
|
||||
- `library feed`: renders every saved brief into a browsable HTML library with a topic-grouped index and a subscribable Atom feed; hand-written pages are preserved with backups. ([#802](https://github.com/mvanhorn/last30days-skill/pull/802))
|
||||
- `library search`: SQLite FTS5 full-text search across saved briefs and store sightings, plus a passive "From your library" section when new runs overlap past research; scoped `--save-dir` libraries stay fully isolated from the shared store. ([#803](https://github.com/mvanhorn/last30days-skill/pull/803))
|
||||
- `--register` audience templates: `exec`, `dev`, and `creator` presets reshape section order and budgets for the reader; `eli5` is unified into the same mechanism. ([#804](https://github.com/mvanhorn/last30days-skill/pull/804))
|
||||
- `--verify-freshness`: typed per-claim act-time verdicts (`current` / `stale` / `contradicted` / `unsupported`) with point re-fetch of Polymarket lines, GitHub stars, and StockTwits sentiment, inline or post-hoc over the cached report; closes the recency-promise audit gap. ([#805](https://github.com/mvanhorn/last30days-skill/pull/805), closes [#769](https://github.com/mvanhorn/last30days-skill/issues/769))
|
||||
- `--corpus`: register local directories as a private, offline, deterministic source; matching notes rank alongside social evidence under a LOCAL ONLY badge and are excluded from hosted publishing and agent JSON by default. ([#808](https://github.com/mvanhorn/last30days-skill/pull/808))
|
||||
- Native Grok Build (xAI) plugin and marketplace lane: `.grok-plugin/plugin.json` + `.grok-plugin/marketplace.json` so `grok plugin install mvanhorn/last30days-skill` and `grok plugin marketplace add mvanhorn/last30days-skill` work as first-class install paths. The self-hosted catalog uses a bare Git URL source (tracks HEAD); submitting to the official `xai-org/plugin-marketplace` remains a post-merge SHA-pinned outbound PR documented in `AGENTS.md`.
|
||||
|
||||
### Fixed
|
||||
|
||||
- Session-start hook no longer deadlocks under Homebrew bash 5.3: removed every heredoc from `check-config.sh` (bash 5.3 can block forever in `heredoc_write` inside command substitution). ([#809](https://github.com/mvanhorn/last30days-skill/pull/809))
|
||||
- Trustpilot transient-error retries keep their domain parameters. ([#794](https://github.com/mvanhorn/last30days-skill/pull/794))
|
||||
- Hosted same-day saves no longer overwrite earlier reports, and `save_output` never silently overwrites date-stamped files. ([#784](https://github.com/mvanhorn/last30days-skill/pull/784), [#785](https://github.com/mvanhorn/last30days-skill/pull/785))
|
||||
- `.env` reads as UTF-8 (with BOM tolerance and locale fallback) on Windows. ([#780](https://github.com/mvanhorn/last30days-skill/pull/780), [#715](https://github.com/mvanhorn/last30days-skill/pull/715))
|
||||
- `FUN_LEVEL` and `LAST30DAYS_REPORT_CACHE_TTL_SECONDS` are registered in `env.py` so `.env` values are no longer silently ignored; doctor detects `GITHUB_TOKEN` from the process environment. ([#708](https://github.com/mvanhorn/last30days-skill/pull/708), [#732](https://github.com/mvanhorn/last30days-skill/pull/732), [#782](https://github.com/mvanhorn/last30days-skill/pull/782))
|
||||
- File descriptors close promptly across the engine (`open()` wrapped in `with`). ([#775](https://github.com/mvanhorn/last30days-skill/pull/775))
|
||||
|
||||
## [3.11.0] - 2026-07-05
|
||||
|
||||
### Added
|
||||
|
||||
- `last30days doctor`: a unified health command that aggregates every source's probe state into a single grouped report with copy-pasteable fix prescriptions. Layered design: dependency probes (missing/broken/timeout detection), backend-chain descriptors (predict-then-report, never a network call), a centralized prescription registry shared by doctor and quality nudges, and an aggregator with grouped rendering. Replaces the fragmented health knowledge previously spread across `--diagnose`, `--preflight`, `lib/health.py`, and post-run nudges. ([#753](https://github.com/mvanhorn/last30days-skill/pull/753))
|
||||
|
||||
### Fixed
|
||||
|
||||
- Techmeme: `search` results are now windowed to each record's own ISO date instead of stamping every record with today's date, so years-old archive headlines can no longer surface as current news. Dated in-window records take result-cap slots first; undated records (old `techmeme-pp-cli` binary or upstream markup change) degrade gracefully with a logged upgrade hint. The sync machinery is removed because `search` never read the local cache. ([#752](https://github.com/mvanhorn/last30days-skill/pull/752))
|
||||
- LinkedIn now renders in the emoji-tree footer (👔 with likes/comments), the `## Stats` engagement summary, and with the correct "LinkedIn" label. Previously LinkedIn items were counted in `## Stats` but silently dropped from the footer because `_FOOTER_SOURCES`, `ENGAGEMENT_DISPLAY`, and `SOURCE_LABELS` all omitted the source - an 8-item LinkedIn run looked like the source never ran. ([#758](https://github.com/mvanhorn/last30days-skill/pull/758))
|
||||
|
||||
## [3.10.0] - 2026-07-04
|
||||
|
||||
### Added
|
||||
|
||||
- Instagram comments as a first-class ScrapeCreators source: `instagram.enrich_with_comments` fetches top comments via `GET /v2/instagram/post/comments` (ranked by `comment_like_count`), gated by `SCRAPECREATORS_API_KEY` + `instagram_comments` in `INCLUDE_SOURCES`. Full vote-weighting parity with YouTube/TikTok - a dedicated `_instagram_engagement` gives IG posts the same top-comment ranking carve-out, and IG comments render with a "likes" label. ([#751](https://github.com/mvanhorn/last30days-skill/pull/751))
|
||||
- Comments are now on by default: the first-run Step 5 Recommended tier enables top comments for TikTok, Instagram, and YouTube (`INCLUDE_SOURCES=tiktok,instagram,youtube_comments,tiktok_comments,instagram_comments`); the Everything tier adds Threads + Pinterest. Comments were previously an opt-in "Everything" feature. ([#751](https://github.com/mvanhorn/last30days-skill/pull/751))
|
||||
|
||||
### Changed
|
||||
|
||||
- The cross-platform "Top Community Comments" list now selects **round-robin by within-platform rank** (every platform's #1, then #2, then #3) instead of a global vote-magnitude sort, so the top-3-of-each-platform outranks the 4th-of-any and each platform's #1 is guaranteed a slot - a viral platform can no longer sweep the list. The list also drops the per-platform absolute vote floor so a less-watched video's high-signal low-vote comment still surfaces (the per-candidate card keeps its floor). ([#751](https://github.com/mvanhorn/last30days-skill/pull/751))
|
||||
|
||||
### Fixed
|
||||
|
||||
- First-run wizard: the welcome pitch is embedded directly in the setup modal (the only always-visible surface) instead of a separate `--welcome` message that Claude Code folds behind "ctrl+o to expand"; the cookie-consent and ScrapeCreators-offer copy now name every installed CLI (yt-dlp, Digg, arXiv, Techmeme) and describe the key's real reach (auto Reddit enrichment + YouTube search backstop), with the GitHub device code auto-copied to the clipboard. ([#750](https://github.com/mvanhorn/last30days-skill/pull/750))
|
||||
|
||||
## [3.9.4] - 2026-07-04
|
||||
|
||||
### Fixed
|
||||
|
||||
- First-run wizard: the welcome message and the ScrapeCreators GitHub device code are now engine-driven instead of model-authored, because a real cold run showed the model skipping the welcome and never surfacing the device code no matter how forceful the SKILL.md prose. The welcome is printed by a new `last30days.py --welcome` command that Step 1 relays verbatim (single source of truth; it can't be skipped or drift), and the GitHub device flow is split into `setup --github-start` (submits, copies the code to the clipboard, prints it to stdout, opens the browser, returns immediately) and `setup --github-poll` (waits for authorization and persists the key). The one-shot `setup --github` still chains both. The code now always appears in the command output, and the "on your clipboard" claim is only made when the copy actually succeeded. ([#748](https://github.com/mvanhorn/last30days-skill/pull/748))
|
||||
|
||||
## [3.9.3] - 2026-07-04
|
||||
|
||||
### Added
|
||||
|
||||
- Optional remote research API backend (env-driven). When both `LAST30DAYS_API_KEY` and `LAST30DAYS_API_BASE` are set in the process environment (never read from `.env`), a search runs through the configured remote endpoint (submit -> poll with stderr progress -> render) instead of local sources; with either unset, behavior is byte-identical to local-only. Opt-in and inert by default (no built-in endpoint); the key is confined to the `Authorization` header and never logged or persisted. Handles the clarify gate and 401/402/429 paths. ([#747](https://github.com/mvanhorn/last30days-skill/pull/747))
|
||||
|
||||
### Fixed
|
||||
|
||||
- First-run wizard: the welcome message is now mandated before the setup modal (it was being skipped), the Auto-setup option lists every installed CLI (yt-dlp, Digg, arXiv, Techmeme, not just two), and the ScrapeCreators GitHub signup reliably surfaces the device code with an "it's on your clipboard, just paste" hint as a required step instead of leaving the user staring at a spinner. ([#746](https://github.com/mvanhorn/last30days-skill/pull/746))
|
||||
- ScrapeCreators GitHub signup: an already-linked account whose `.env` is cold no longer fails with the misleading "GitHub auth didn't complete." The `Authorized but failed to fetch API key` case now gets an honest branch (auth worked; the account is likely already linked -- get your key from scrapecreators.com and paste it), and `fetch_api_key` logs the `/profile` response field names (never values) so a full auto-fetch can follow. ([#746](https://github.com/mvanhorn/last30days-skill/pull/746))
|
||||
|
||||
## [3.9.2] - 2026-07-03
|
||||
|
||||
### Fixed
|
||||
|
||||
- Trustpilot source returned 0 items on company topics: the engine passed raw topic names to a domain-keyed CLI (`info ThriftBooks` -> HTTP 404) and parallel subqueries raced concurrent Chrome WAF-cookie harvests. Company names now resolve to their Trustpilot review-page domain via the CLI's search (per-topic cache; name-match mandatory, ambiguous cases fall back rather than misattributing another company's reviews), a new `--trustpilot-domain` flag pins the domain explicitly (verbatim, bypasses the brand-shape gate, per-entity `trustpilot_domain` in `--competitors-plan`), the WAF session warms once per 240s window behind a lock at first fetch, Trustpilot is capped to one fetch per run and excluded from the thin-source retry, and headless `--auto-resolve` fills a verified domain hint. SKILL.md Step 0.5d documents the resolution flow. ([#745](https://github.com/mvanhorn/last30days-skill/pull/745))
|
||||
|
||||
## [3.9.1] - 2026-07-03
|
||||
|
||||
### Fixed
|
||||
|
||||
- First-run setup wizard: the browser-cookie scan now tries Chrome/Chromium first (Keychain, no Full Disk Access) before Safari, so macOS users logged into X in Chrome authenticate in ~2s instead of hitting the Safari Full Disk Access dead-end. The winning browser is pinned for later runs only when it is Firefox/Safari, so Chrome never re-triggers the Keychain prompt. Consent copy leads with Chrome and the one-time "Always Allow" cue. ([#744](https://github.com/mvanhorn/last30days-skill/pull/744))
|
||||
- ScrapeCreators GitHub signup now surfaces the device code immediately (emitted to stdout so a backgrounded caller shows it at once, instead of a spinner until the process exits), validates the `XXXX-XXXX` code shape before copying/labeling it, short-circuits an already-registered account without a fresh device dance, and masks the API key on every status (not just success). Removed the false "GitHub CLI ~2 seconds, no browser" promise. ([#744](https://github.com/mvanhorn/last30days-skill/pull/744))
|
||||
- ScrapeCreators source opt-in is now two real tiers. The Step 5 choices were previously identical — a key auto-ran TikTok, Instagram, Threads, and YouTube comments regardless of `INCLUDE_SOURCES`, and Pinterest's opt-in silently ignored a persisted `INCLUDE_SOURCES`. Threads, YouTube comments, and Pinterest are now genuine `INCLUDE_SOURCES` opt-ins: **Recommended** = TikTok + Instagram + the rate-limit backups; **Everything** = also Threads, Pinterest, and YouTube/TikTok/Instagram comments. "ScrapeCreators backups" is now defined inline (keeps Reddit/YouTube working at rate limits). ([#744](https://github.com/mvanhorn/last30days-skill/pull/744))
|
||||
|
||||
## [3.9.0] - 2026-07-03
|
||||
|
||||
### Added
|
||||
|
||||
- StockTwits as a source, gated to ticker/crypto topics only. Surfaces a retail sentiment ratio (self-reported Bullish/Bearish tags) and message volume on a resolved symbol. Inert on non-financial topics: an unambiguous finance-vocabulary gate (cashtags, "stock", "earnings", "dividend", "crypto", named coins) keeps it from injecting stock chatter into general runs, and it degrades to an empty lane if the public API fails without touching other sources. ([#658](https://github.com/mvanhorn/last30days-skill/pull/658), thanks @wtiwana)
|
||||
- LinkedIn as a source via ScrapeCreators, surfacing articles as high-signal results with date-range filtering, gated behind `INCLUDE_SOURCES`. ([#702](https://github.com/mvanhorn/last30days-skill/pull/702))
|
||||
- arXiv and Techmeme sources (default-on) plus Trustpilot (opt-in). ([#709](https://github.com/mvanhorn/last30days-skill/pull/709))
|
||||
|
||||
### Fixed
|
||||
|
||||
- Runtime preflight now auto-provisions a uv-managed CPython 3.12 on hosts that have `uv` but no system Python 3.12+ (most agent sandboxes), instead of hard-failing the version gate. The install is bounded by a 30s HTTP timeout, matches an existing managed `>=3.12` interpreter before downloading, and announces the one-time ~28MB download on stderr rather than installing silently; hosts without `uv` still get the original clear error. Setup invocations now honor `LAST30DAYS_PYTHON` so first-run setup works on the same hosts. ([#738](https://github.com/mvanhorn/last30days-skill/pull/738), thanks @buntysomroy; setup-interpreter fix adapted from #699 by @SeanGearin)
|
||||
- Setup wizard summary now displays the install status of the arXiv/Techmeme pp_sources CLIs, so users can see whether they landed on PATH. ([#741](https://github.com/mvanhorn/last30days-skill/pull/741), thanks @23241a6749)
|
||||
- `--diagnose` / `--preflight` no longer falsely reports X as unreachable when X auth comes from `FROM_BROWSER` browser cookies. These modes run in `plan_only` and skip cookie extraction for privacy (no Keychain access), so X was dropped from `available_sources` even though a real run authenticates fine. A new side-effect-free `env.x_pending_browser_auth` predicate now reports X as available-pending-browser-auth (and surfaces an `x_pending_browser_auth` flag in `--diagnose`) by keying only on the already-resolved browser list — no cookie is read. Covers every configured browser, including Chrome. ([#692](https://github.com/mvanhorn/last30days-skill/issues/692); first reported and fixed by @23241a6749 in #700)
|
||||
|
||||
### Internal
|
||||
|
||||
- Tightened Hermes `.skillignore` regression coverage: the test now fails if an ignored path is deleted without updating the ignore list, or if a runtime-contract file is accidentally ignored. ([#739](https://github.com/mvanhorn/last30days-skill/pull/739), thanks @SyntaxSawdust)
|
||||
|
||||
## [3.8.3] - 2026-06-25
|
||||
|
||||
### Added
|
||||
|
||||
- Free Reddit gets dedicated-subreddit lanes: entity-home subs (e.g. r/Kanye for "Kanye West", via the new `--dedicated-subreddits` flag) are pulled in full from top+hot+new listings and exempt from the relevance floor, since the whole sub is the topic. Fixes the over-aggressive floor that dropped on-topic posts whose titles lacked the entity name.
|
||||
- `reddit_arctic` resolves upvote counts for threads found only via RSS search (which carries no score) using the free, keyless arctic-shift archive — batched, paced, cached, and graceful-degrading. Reddit now gets headlines-with-points and best-comments-with-points entirely for free, at parity with ScrapeCreators.
|
||||
- `LAST30DAYS_REDDIT_SC_MIN_ITEMS` (default 0 = unchanged empty-only behavior): set above 0 to let the ScrapeCreators backup backfill a thin free Reddit run instead of sitting idle. Backfilled items merge deduped by post id.
|
||||
|
||||
### Removed
|
||||
|
||||
- The permanently-403 `search.json` Tier 0 is gone from the keyless Reddit path; discovery is RSS breadth + shreddit listing partials (real scores) + the dedicated-sub lanes, with no wasted 403 calls.
|
||||
|
||||
## [3.8.2] - 2026-06-25
|
||||
|
||||
### Added
|
||||
|
||||
- Advisory Semgrep SAST scan runs on every push/PR as part of the Security workflow, catching source-level security bugs using Semgrep CE community rules ([#563](https://github.com/mvanhorn/last30days-skill/issues/563))
|
||||
- Scheduled OSV-Scanner vulnerability-drift workflow scans repository lockfiles weekly and uploads SARIF results to GitHub code scanning, catching newly disclosed CVEs in the dependency tree even between PRs ([#571](https://github.com/mvanhorn/last30days-skill/issues/571))
|
||||
- `LAST30DAYS_REDDIT_BACKEND=scrapecreators` makes ScrapeCreators the primary Reddit backend with the public path as fallback. Users with a ScrapeCreators key who were getting shallow public data will now get full nested comment trees by setting this flag ([#589](https://github.com/mvanhorn/last30days-skill/issues/589))
|
||||
- MCP Go tests (`mcp/`) now run in CI on every push/PR alongside the Python test suite, so MCP server regressions are caught before merge ([#621](https://github.com/mvanhorn/last30days-skill/issues/621))
|
||||
- PR dependency review gate blocks merges that introduce new vulnerable dependencies ([#551](https://github.com/mvanhorn/last30days-skill/issues/551))
|
||||
|
||||
### Changed
|
||||
|
||||
- Citations are now renderer-aware (LAW 8). On hidden-link hosts (Claude Code) every citation stays an inline `[name](url)` link as before; on visible-URL hosts (Codex, Cursor, Gemini CLI, raw CLI) citations render as plain source labels so the narrative no longer turns into `label (https://...)` URL soup. The host is detected deterministically from the `CLAUDECODE` environment variable, and full URLs remain reachable through the engine footer and the saved raw file.
|
||||
|
||||
### Fixed
|
||||
|
||||
- The query-plan invocation guidance now warns against wrapping the heredoc in `bash -lc '...'` / `zsh -lc '...'`, whose single quotes terminate at the first apostrophe in a ranking string and abort the engine run with `unmatched "` on Codex. The quoted `<<'PLAN_EOF'` heredoc is already apostrophe-safe; the `-lc` wrapper was the hazard.
|
||||
- Firefox profile detection on Linux now checks `$XDG_CONFIG_HOME/mozilla/firefox` (or its default `~/.config/mozilla/firefox`) in addition to `~/.mozilla/firefox`, fixing cookie extraction on distros that honour the XDG Base Directory Specification ([#667](https://github.com/mvanhorn/last30days-skill/issues/667))
|
||||
|
||||
## [3.8.1] - 2026-06-22
|
||||
|
||||
### Added
|
||||
- **Restored the v3.0.0 first-run NUX wizard (Claude Code Modal Flow).** Step 0 now restores the original guided, `AskUserQuestion`-driven onboarding that eroded over time: a welcome message, an Auto/Manual/Skip setup modal, a cookie-consent modal, the ScrapeCreators signup offer, a TikTok/Instagram `INCLUDE_SOURCES` opt-in, and a first-topic picker. It is gated to hosts with modals; hosts without (OpenClaw, Codex, Cursor, Gemini CLI) get the equivalent **Non-Modal Prose Flow**. Digg is threaded into the install messaging alongside yt-dlp everywhere it appears, the ScrapeCreators credit count is `10,000 free calls`, and the flow is locked against re-erosion by `tests/test_onboarding_contract.py`. Builds on the consent-driven foundation from #659/#660. Original wizard captured at `docs/reference/old-nux-wizard-v3.0.0.md`.
|
||||
- **Consent-driven first-run onboarding.** Step 0 now drives an in-chat consent flow instead of a silent `setup` run: the model asks before reading browser cookies (decline runs with `FROM_BROWSER=off` — still installs yt-dlp + Digg), surfaces the macOS Full Disk Access fix when a cookie read is permission-denied, and offers the ScrapeCreators GitHub signup on every first run. A successful `setup --github` now **persists `SCRAPECREATORS_API_KEY` automatically** (`setup_wizard.write_api_key`, 0o600) and masks the key in stdout so the secret never lands in the host model's captured output. Follows the first-run gate fix (#659).
|
||||
|
||||
### Fixed
|
||||
- **First-run setup no longer runs silently.** The prior Step 0 told the model to run `setup` and "follow the wizard's prompts end-to-end", but the wizard has no prompts — so onboarding extracted cookies, installed tools, and wrote `SETUP_COMPLETE` with zero interaction and never offered the ScrapeCreators signup. Reproduced 2026-06-22 (Fredy Montero, fresh macOS).
|
||||
|
||||
## [3.8.0] - 2026-06-21
|
||||
|
||||
### Added
|
||||
|
||||
- **Single X source with backend failover.** X is now one source backed by an ordered chain of interchangeable backends (xai, bird, xurl, xquik) with runtime failover, rather than separate sources. The key-based xquik backend reaches parity with bird, gaining the X-quality ranking and FROM/ABOUT handle lanes, so hosts that cannot supply browser cookies (OpenClaw, CI/cron, headless harnesses) get real X coverage from an xquik key alone. Handle lanes run via the first handle-capable backend in the chain even when a non-capable backend (xai/xurl) is primary. (#622)
|
||||
|
||||
## [3.7.1] - 2026-06-21
|
||||
|
||||
### Fixed
|
||||
|
||||
- GitHub repo stars are no longer mislabeled as "reactions" in the report footer. Repo cards use a distinct `stars` engagement key, velocity cards use `merged_prs`, and genuine issue/PR reaction counts keep their own `reactions` key. (#645, closes #642)
|
||||
- Hacker News returned zero stories on every run: the Algolia query sent `points>2`, which the HN index no longer accepts as a filterable attribute, so every request 400'd. Dropped the server-side `points` filter; low-engagement demotion still happens at parse time. (#639)
|
||||
- Polymarket surfaced off-topic markets and rendered a mangled footer. The relevance filter was fed the per-subquery string instead of the stable topic, and market labels were truncated mid-article into fragments like "an Anthropic Claude model score at: an 19%". Now filters on the stable topic and cleans the labels. (#640)
|
||||
|
||||
## [3.7.0] - 2026-06-20
|
||||
|
||||
### Added
|
||||
|
||||
- **Direct Perplexity API support.** When `PERPLEXITY_API_KEY` is set it is preferred over OpenRouter for the Perplexity source, unlocking first-party Search API results and async Deep Research. Adds `LAST30DAYS_PERPLEXITY_MODE=sonar|search|both` plus model, search-context, domain/language/country, recency, and reasoning-effort knobs. OpenRouter stays the Sonar compatibility fallback when no direct key is set. Async Deep Research preserves request id, status, idempotency key, poll count, lifecycle timestamps, and failure metadata in raw artifacts. (#629, by @sk-holmes)
|
||||
|
||||
### Changed
|
||||
|
||||
- `check-config.sh` now parses env files in pure bash (no `sed` / `tr`), which also fixes the YouTube-availability hint breaking in minimal environments that lack those tools. (#629)
|
||||
|
||||
## [3.6.1] - 2026-06-20
|
||||
|
||||
### Added
|
||||
|
||||
- **ScrapeCreators transcript fallback.** When `SCRAPECREATORS_API_KEY` is set, YouTube transcripts fall back to the ScrapeCreators transcript endpoint after the keyless yt-dlp cascade fails (fetched server-side, so no 429 / cookies / PO tokens). yt-dlp stays primary and a credit is only spent on a genuine failure, never on success and never on a video proven to have no captions. With a key, yt-dlp also fails over fast (one short-timeout attempt) so a 429 hands off to ScrapeCreators in roughly 17s instead of roughly 90s. (#637, idea from #595)
|
||||
- **YouTube comments default-on.** Comment enrichment now activates whenever a ScrapeCreators key is present (bounded to the top ~3 videos by engagement, ~3 credits per run) instead of requiring `INCLUDE_SOURCES=youtube_comments`. Suppress with `EXCLUDE_SOURCES=youtube_comments`. TikTok/Instagram comments remain `INCLUDE_SOURCES` opt-ins. (#637)
|
||||
|
||||
### Fixed
|
||||
|
||||
- **Salvage partial YouTube transcripts on non-zero yt-dlp exit.** With the default `en,es,pt` languages an English video wrote `en.vtt` then 429'd on `es`/`pt`, and the already-written transcript was discarded and retried back into the rate limit. Any VTT on disk is now read before the failure is classified, which fixes the dominant `0/N transcripts` case. (#636)
|
||||
- **Windows transcript crash on subprocess timeout.** Guarded the SIGKILL escalation path in `run_with_timeout` against `os.killpg` / `os.getpgid` raising `AttributeError` on Windows (they are POSIX-only), mirroring the primary path's guard. (#638, reported in #588)
|
||||
|
||||
## [3.6.0] - 2026-06-18
|
||||
|
||||
### Added
|
||||
|
||||
- **First-party X posts are no longer buried.** A post authored by one of the run's resolved handles (`--x-handle`, `--x-related`, the GitHub user) is now treated as first-class evidence: it is exempt from the entity-miss demotion (a post never repeats its own author's name, so the body-text grounding check used to zero out the subject's own highest-signal posts) and gets a small authorship credit. Third-party collision-noise suppression is unchanged.
|
||||
- **Engagement rescue for on-topic X posts.** A high-engagement X post that is first-party or entity-grounded gets a `final_score` floor scaled by its engagement percentile within the run's X pool, so a viral on-topic post can't sit at ~0. Off-topic name-collision posts are explicitly excluded.
|
||||
- **First-party interaction signal.** A first-party post directed at another account (a reply / leading @mention) is floated into the visible band regardless of like-count and tagged `interaction:→@handle` in the EVIDENCE block, so the synthesis reads it as a relationship signal rather than low-engagement noise. New **LAW 10** in SKILL.md teaches the model to surface first-party posts and read the interaction tag.
|
||||
|
||||
### Changed
|
||||
|
||||
- The X FROM lane (the subject's own timeline) now pulls up to 8 posts per handle (was 3); the about/related lanes stay modest.
|
||||
|
||||
### Fixed
|
||||
|
||||
- Secrets `.env` and its parent config directory are now auto-tightened to `0o600`/`0o700` after creation, and `check-config.sh`'s `check_perms` now auto-fixes loose permissions with `chmod 600` instead of warning only ([#573](https://github.com/mvanhorn/last30days-skill/issues/573))
|
||||
|
||||
## [3.5.0] - 2026-06-18
|
||||
|
||||
### Added
|
||||
|
||||
- **X surfaces tweets FROM and ABOUT a person, both engagement-weighted.** The handle search now pulls the person's real timeline (`from:handle since:`, topic used for ranking only — never AND'd into the query, which previously matched only tweets where they wrote their own name and returned ~0), and a new mention lane (`@handle since:`) surfaces what others say to/about them, excluding their own tweets and deduping against the FROM lane ([#610](https://github.com/mvanhorn/last30days-skill/pull/610)).
|
||||
- **`## Top Community Comments` block.** The engine now surfaces vote-ranked community comments across all candidates (not just the top-cluster representatives), per-platform-normalized, into the EVIDENCE-for-synthesis block, so the funniest/sharpest crowd reactions reach the synthesizing model even when no LLM fun-scorer is available. Paired with a new SKILL.md **LAW 9** that requires weaving ≥2 verbatim attributed comments, copying URLs verbatim, and never narrating the tooling in the deliverable ([#608](https://github.com/mvanhorn/last30days-skill/pull/608)).
|
||||
|
||||
### Fixed
|
||||
|
||||
- **`--diagnose` honesty.** X status now reflects a real 1-tweet probe (downgrades from green when X is effectively dead; fail-open on a transient timeout) and reports the true auth lane (browser / env / keychain) instead of a hardcoded `env AUTH_TOKEN`. Handle/mention searches log query + result count on success, not only on failure ([#609](https://github.com/mvanhorn/last30days-skill/pull/609)).
|
||||
- **X column de-pollution.** The last-chance keyword retry no longer collapses a multi-word subquery to a bare generic token (e.g. `compound`); it keeps an entity anchor ([#607](https://github.com/mvanhorn/last30days-skill/pull/607)).
|
||||
- **Mandatory person-aware subquery disambiguation.** Collision-prone person names (Kevin Rose vs Kevin Warsh, Lan Xuezhao vs Lanzhou) must anchor every subquery with the resolved company/role/domain context ([#611](https://github.com/mvanhorn/last30days-skill/pull/611)).
|
||||
|
||||
## [3.4.0] - 2026-06-18
|
||||
|
||||
### Added
|
||||
|
||||
- **Crowd-vote weighting in the fun judge (Best Takes).** The fun judge now factors how many upvotes/likes each top comment earned. Comment vote counts are fed into the LLM prompt (as traction, not funniness), and Best-Takes selection ranks by an effective score — `fun_score` plus a bounded, per-platform-normalized, relevance-confidence-scaled crowd nudge — so genuinely funny, crowd-loved, on-topic comments surface while off-topic virality and high-voted-but-unfunny rants are excluded. `FUN_LEVEL=medium` stays the default and applies the signal as a meaningful factor ([#592](https://github.com/mvanhorn/last30days-skill/pull/592)).
|
||||
- **Digg added to first-run setup.** The free, keyless `digg-pp-cli` is now auto-installed during the first-run wizard (best-effort via the Printing Press installer, with a recommend-only fallback), so the already-built Digg AI-news source activates automatically for new users instead of silently never appearing ([#590](https://github.com/mvanhorn/last30days-skill/pull/590)).
|
||||
|
||||
- **`LAST30DAYS_YOUTUBE_SSH_HOST` transcript routing** — yt-dlp transcript fetch runs on the remote SSH host via a mktemp + cat pipeline ([#422](https://github.com/mvanhorn/last30days-skill/pull/422)).
|
||||
- Browser-cookie auth for X/Twitter now covers the full Chromium family on macOS - Brave, Microsoft Edge, Vivaldi, Opera, Arc, and Chromium - alongside the existing Chrome, Firefox, and Safari. They all share Chrome's v10 AES-128-CBC decryption, differing only in profile path and Keychain service name, so they run through one shared decryption core. The profile finder probes both the modern `Default/Network/Cookies` layout (Chromium >= 96) and the legacy flat `Default/Cookies`, and Chrome now resolves through that same finder so it picks up the modern layout too. Set `FROM_BROWSER=auto` to try every browser, or `FROM_BROWSER=<name>` (e.g. `brave`, `edge`, `arc`) to target one. Verified end-to-end on real Brave and Edge installs ([#572](https://github.com/mvanhorn/last30days-skill/pull/572)).
|
||||
- **First-party positioning research + pitch-vs-pulse synthesis (company / product / service topics).** A new mandatory research step captures each entity's current stated positioning from first-party sources (homepage, docs, pricing) rather than from memory. The fetched pitch grounds `What it is` descriptions (entities described as they pitch themselves today), helps reject unrelated brand-name noise, and feeds an evidence-triggered prose beat: when the month's conversation directly supports a specific claim, cuts against one, or is squarely about the pitched ground, the synthesis says so anchored to the top thread — and stays silent when the pulse is orthogonal to the pitch, because a manufactured connection is worse than omission. Claims are tested at matched altitude (specific claims against specific threads; broad taglines are never graded against individual items), and statements stay windowed to the 30 days — no trend verdicts. Scoped to entities with an identifiable first party: people are always excluded (even founders whose companies qualify), as are events, abstract concepts, and ownerless topics like Bitcoin; the beat requires positioning fetched during the run, never from memory.
|
||||
|
||||
### Changed
|
||||
|
||||
- Updated "Unlock X" promo message to mention Chrome/macOS support and Windows Firefox-only limitation instead of generic "Firefox or Safari" ([#387](https://github.com/mvanhorn/last30days-skill/issues/387))
|
||||
|
||||
### Fixed
|
||||
|
||||
- **SSH routing failures no longer present as "0 results"** — `search_youtube` surfaces non-zero SSH exit codes as an explicit `error` field ([#422](https://github.com/mvanhorn/last30days-skill/pull/422)).
|
||||
- `extract_browser_credentials()` silently ignored Brave even though the lower-level `cookie_extract` layer already supported it: `FROM_BROWSER=brave` fell back to Firefox/Safari and `FROM_BROWSER=auto` never tried Brave. The env wiring now passes Brave - and the rest of the Chromium family - through to the extractor ([#572](https://github.com/mvanhorn/last30days-skill/pull/572)).
|
||||
- Chromium cookie extraction now fetches the macOS Keychain key lazily - only when an encrypted cookie actually needs decrypting. Previously the key was fetched as soon as the cookie DB existed, so `FROM_BROWSER=auto` could trigger a Keychain prompt for every installed Chromium browser. Now only the browser that actually holds the requested cookie prompts ([#572](https://github.com/mvanhorn/last30days-skill/pull/572)).
|
||||
- YouTube transcript budget prioritises recent videos (by a combination of views and recency) instead of views alone, preventing transcript slots from being consumed by old high-view-count videos that would be discarded by strict_recent freshness pruning ([#531](https://github.com/mvanhorn/last30days-skill/issues/531))
|
||||
- YouTube items with successfully extracted transcripts are no longer pruned by title-only relevance scoring; the transcript content proves substantive topical coverage even when the video title has low lexical overlap with the query ([#468](https://github.com/mvanhorn/last30days-skill/issues/468))
|
||||
- First-run setup wizard in SKILL.md now references the existing Python setup wizard (`last30days.py setup`) instead of the missing `nux-wizard.md` file, so first-run setup actually runs on new installs. ([#574](https://github.com/mvanhorn/last30days-skill/issues/574))
|
||||
- `check-config.sh` no longer exits 1 on the ScrapeCreators-configured path when no prior run exists (empty `LAST_RUN_LINE`) — swapped `&&` guard for an `if` block that always exits cleanly ([#463](https://github.com/mvanhorn/last30days-skill/issues/463))
|
||||
- `check-config.sh` no longer exits 1 when a `.env` value contains an unbalanced quote — replaced `xargs` (which interprets quotes) with `sed` for whitespace trimming in `load_env_vars` ([#506](https://github.com/mvanhorn/last30days-skill/issues/506))
|
||||
- X/Twitter `.env` template now includes `CT0` alongside `AUTH_TOKEN` in the example skeleton ([CONFIGURATION.md](CONFIGURATION.md)), and the just-in-time unlock wizard offers AUTH_TOKEN/CT0 cookie entry ([#396](https://github.com/mvanhorn/last30days-skill/issues/396))
|
||||
- `check-config.sh` no longer counts X as an active source when only `AUTH_TOKEN` is set without `CT0` — both cookies are now required to credit X in the source count ([#396](https://github.com/mvanhorn/last30days-skill/issues/396))
|
||||
- Firefox cookie extraction now falls back to scanning non-default profiles when the default profile has no matching X cookies, fixing multi-profile setups where login lives on a non-default profile ([#498](https://github.com/mvanhorn/last30days-skill/issues/498))
|
||||
- `subproc.py` `run_with_timeout()` now guards `os.killpg` / `os.getpgid` with `hasattr`, preventing an uncaught `AttributeError` crash when a subprocess times out on Windows where these functions don't exist ([#527](https://github.com/mvanhorn/last30days-skill/issues/527))
|
||||
- Entity-grounding rerank demotion now keys on the head token of the primary entity instead of requiring the full multi-word phrase as a contiguous substring. A high-engagement on-entity item (e.g. a 323-pt HN thread titled "Stripe is friendly to 'friendly fraud'") is no longer demoted to score 0 on a `Stripe payments` query just because it lacks the trailing search-hint word. The intended demotion still fires for items that never name the brand at all. The keyless Reddit comment-enrichment slot selection (`_slot_priority`), which mirrors this signal, was updated to the same head-token grounding so the two paths stay consistent.
|
||||
- `--plan` / `--competitors-plan` file reads now specify `encoding="utf-8"` and catch `UnicodeDecodeError`, preventing crashes on non-ASCII content like accented entity names on Windows (cp1252). `check_perms()` in `check-config.sh` now skips the POSIX 600-permission check on MSYS/MinGW/Cygwin where `stat` runs in noacl mode. `skill_meta.py` `read_skill_version()` now passes `encoding="utf-8"` so SKILL.md emoji doesn't break version detection on Windows. ([#549](https://github.com/mvanhorn/last30days-skill/issues/549))
|
||||
|
||||
|
||||
## [3.3.2] - 2026-06-06
|
||||
|
||||
### Fixed
|
||||
|
||||
- YouTube transcript extraction now falls back through `en,es,pt` (configurable via `LAST30DAYS_YT_SUB_LANGS`) instead of English-only, so non-English videos with auto-captions in any of those three languages now contribute transcripts to the brief ([#469](https://github.com/mvanhorn/last30days-skill/issues/469))
|
||||
- Keyless Reddit comment enrichment now spends its limited slots on entity-matching posts first (mirroring rerank's entity-miss demotion signal) instead of raw upvote order, so off-topic high-upvote threads from broad subreddits no longer consume the comment budget only to be demoted afterward ([#484](https://github.com/mvanhorn/last30days-skill/pull/484))
|
||||
|
||||
## [3.3.1] - 2026-05-30
|
||||
|
||||
### Fixed
|
||||
|
||||
- Removed the redundant `commands/last30days.md` wrapper so the plugin exposes only the skill ([#461](https://github.com/mvanhorn/last30days-skill/issues/461)). Previously the plugin shipped both a command wrapper and the skill under the same name, so `/last30` surfaced two `last30days` entries with two different descriptions. The skill already carries its own `argument-hint`, so the `/last30days <topic>` picker UX is unchanged.
|
||||
- Corrected the README install note that claimed Claude Code dedupes the slash command across install methods; it does not, so having both the marketplace plugin and the `npx skills` copy active shows two entries.
|
||||
|
||||
## [3.3.0] - 2026-05-17
|
||||
|
||||
A week-long shipping cycle: ~75 PRs merged plus 7 community fixes salvaged through PR triage. Big themes: install story modernized for the multi-harness world (Claude Code, Codex, Cursor, Gemini CLI, Copilot, Windsurf, and 50+ Agent Skills hosts), new emit and source modes, and a substantial reliability sweep across Reddit, X, Windows, YouTube, and the planner.
|
||||
|
||||
### Added
|
||||
|
||||
**Emit modes and sources**
|
||||
|
||||
- `--emit=html` for shareable, print-friendly HTML research briefs ([#332](https://github.com/mvanhorn/last30days-skill/pull/332)).
|
||||
- **Digg AI 1000 source**, auto-enabled when `digg-pp-cli` is on PATH ([#370](https://github.com/mvanhorn/last30days-skill/pull/370)). Surfaces curated story clusters from the AI 1000 leaderboard and pulls attributable X-post quotes into the brief.
|
||||
|
||||
**Configuration knobs**
|
||||
|
||||
- `EXCLUDE_SOURCES` env var — the inverse of `INCLUDE_SOURCES`, honored in source count and pipeline filter ([#399](https://github.com/mvanhorn/last30days-skill/pull/399)).
|
||||
- `LAST30DAYS_YOUTUBE_SSH_HOST` — opt-in SSH routing for `yt-dlp` through a residential-IP host, for users on datacenter VPS hit by YouTube's bot-wall ([#376](https://github.com/mvanhorn/last30days-skill/pull/376)). Host validated against `^[a-zA-Z0-9._-]+$` to reject SSH option-injection. Transcript path unchanged (uses HTTP fallback).
|
||||
- macOS Keychain as a credential source — reads from the system keychain when env vars and config files aren't set ([#407](https://github.com/mvanhorn/last30days-skill/pull/407)).
|
||||
- Configuration enablement: env-var defaults and source-resilience patterns across the config layer ([#344](https://github.com/mvanhorn/last30days-skill/pull/344)).
|
||||
|
||||
**Pipeline and storage**
|
||||
|
||||
- Reddit URL auto-enrichment from web search via the public JSON API ([#366](https://github.com/mvanhorn/last30days-skill/pull/366)).
|
||||
- Per-run finding sightings recorded in the SQLite store ([#373](https://github.com/mvanhorn/last30days-skill/pull/373)).
|
||||
- Brave browser support for X/Twitter cookie extraction ([#320](https://github.com/mvanhorn/last30days-skill/pull/320)).
|
||||
|
||||
**Tests and CI**
|
||||
|
||||
- Full pytest suite restored to CI; 13 rotted tests repaired ([#416](https://github.com/mvanhorn/last30days-skill/pull/416)).
|
||||
- `greptile.json` added with `triggerOnUpdates` + `statusCheck` ([#418](https://github.com/mvanhorn/last30days-skill/pull/418)).
|
||||
- Advisory security workflow ([#368](https://github.com/mvanhorn/last30days-skill/pull/368)).
|
||||
- Parallel grounding backend test coverage ([#355](https://github.com/mvanhorn/last30days-skill/pull/355)).
|
||||
|
||||
**Docs**
|
||||
|
||||
- New `CONFIGURATION.md` with README pointers ([#339](https://github.com/mvanhorn/last30days-skill/pull/339)).
|
||||
- `docs/solutions/` learning capture for release-time consistency-test cascades ([#413](https://github.com/mvanhorn/last30days-skill/pull/413)) and the eval-not-in-CI design decision ([#417](https://github.com/mvanhorn/last30days-skill/pull/417)).
|
||||
|
||||
### Changed
|
||||
|
||||
**Install story modernized**
|
||||
|
||||
- `npx skills add` is now the canonical install path for every harness ([#405](https://github.com/mvanhorn/last30days-skill/pull/405)). README and SKILL.md flipped to recommend `npx skills add . -g -y` over per-harness manual instructions. Surfaces Gemini CLI, Copilot, Windsurf, and 50+ other Agent Skills hosts that the install pattern reaches.
|
||||
- README dropped the Gemini CLI native-extension install path (now covered by `npx skills add`).
|
||||
- `hooks.json` made polyglot for Gemini CLI + Claude Code compatibility ([#318](https://github.com/mvanhorn/last30days-skill/pull/318)).
|
||||
|
||||
**Skill semantics and multi-harness reframe**
|
||||
|
||||
- `AGENTS.md` is now canonical; `CLAUDE.md` points at it ([#410](https://github.com/mvanhorn/last30days-skill/pull/410)). Reframes the project as a multi-harness Agent Skills package rather than a Claude-Code-specific tool.
|
||||
- SKILL.md path resolution rewritten: STEP 0 narrows to a Claude-Code-marketplaces-only stale-clone guard; Step 1 walks a single `SKILL_DIR` substitution pattern ([#400](https://github.com/mvanhorn/last30days-skill/pull/400), [#409](https://github.com/mvanhorn/last30days-skill/pull/409)). Removes ~80 lines of bash and fixes a real spec-vs-engine divergence where the previous resolver could pick a different install than the SKILL.md the model loaded from.
|
||||
- SKILL.md version regex consolidated into `lib/skill_meta.py` ([#412](https://github.com/mvanhorn/last30days-skill/pull/412)).
|
||||
- `--plan` / `--competitors-plan` invocation templates switched from inline single-quoted JSON to heredoc-written tmpfiles ([#404](https://github.com/mvanhorn/last30days-skill/pull/404), fixes [#403](https://github.com/mvanhorn/last30days-skill/issues/403)). Apostrophes in resolved context strings ("McDonald's", "people's choice") no longer break shell parsing.
|
||||
- `POSTS_PER_CLUSTER` raised 3→5 and render-side display limit 2→3 to match the per-source enrichment caps used by Reddit, HN, YouTube, TikTok, and GitHub. The previous caps routinely truncated cluster context.
|
||||
- Digg AI 1000 renamed to "Digg" in user-facing output ([#372](https://github.com/mvanhorn/last30days-skill/pull/372)) — footer line, source label, inline-quote suffix, why_relevant, container attribution. Internal references retain the upstream product name.
|
||||
- GitHub repo resolution canonicalized for ambiguous product comparisons ([#302](https://github.com/mvanhorn/last30days-skill/pull/302)).
|
||||
|
||||
**Dependencies and tooling**
|
||||
|
||||
- Dropped `requests` runtime dependency. All providers route through stdlib `urllib` via the `lib/http` wrapper ([#393](https://github.com/mvanhorn/last30days-skill/pull/393)).
|
||||
- Migrated to `gemini-3.1-flash-lite` GA model ([#378](https://github.com/mvanhorn/last30days-skill/pull/378)).
|
||||
- Aligned Codex/Claude plugin manifests + added Codex `AGENTS.md` ([#321](https://github.com/mvanhorn/last30days-skill/pull/321)).
|
||||
- pytest dev dep bumped 9.0.2 → 9.0.3 ([#414](https://github.com/mvanhorn/last30days-skill/pull/414)).
|
||||
|
||||
### Removed
|
||||
|
||||
- **BREAKING for Codex native-plugin users:** `.codex-plugin/plugin.json` and the matching SKILL_ROOT resolver branch in SKILL.md Step 1 ([#400](https://github.com/mvanhorn/last30days-skill/pull/400)). Codex users should install via `npx skills add mvanhorn/last30days-skill` or copy the skill to `~/.codex/skills/last30days/`.
|
||||
- **`skills/last30days/scripts/sync.sh`** — maintainer dev-deploy script ([#405](https://github.com/mvanhorn/last30days-skill/pull/405)). Replaced by `npx skills add . -g -y` (live-symlink into every detected harness's skill dir — better than sync.sh's copy model since edits propagate live). Hermes uses `hermes skills install mvanhorn/last30days-skill --force`; OpenClaw uses `clawhub install last30days-official`.
|
||||
- Orphaned `SPEC.md` and `TASKS.md` ([#419](https://github.com/mvanhorn/last30days-skill/pull/419)).
|
||||
|
||||
### Fixed
|
||||
|
||||
**Reddit**
|
||||
|
||||
- `lstrip("r/")` mangled subreddits starting with `r` (`r/robotics` → `obotics`, `r/ruby` → `uby`); replaced with `removeprefix("r/")` at 4 sites (Alex Key, salvaged from #288).
|
||||
- Browser-like User-Agent + `Accept-Language`/`Accept-Encoding`/`Connection` headers + gzip decompression to fix `urllib` 403s on Reddit's public JSON endpoint (Franco Carballar, salvaged from #199).
|
||||
- HTTP 402 re-raised across all three ScrapeCreators paths (`_global_search`, `_subreddit_search`, `fetch_post_comments`) so the OpenAI/public-JSON fallback chain triggers when credits are exhausted (Jonathan Oppenheim, salvaged from #170).
|
||||
|
||||
**Authentication and credentials**
|
||||
|
||||
- Restored multi-key rotation for `SCRAPECREATORS_API_KEY` accidentally dropped in v3.0.6 (Eric Oberhofer, salvaged from #287). Comma-separated keys round-robin via `random.choice` per run.
|
||||
|
||||
**Windows compatibility**
|
||||
|
||||
- `os.killpg` in `_cleanup_children()` guarded with `hasattr(os, "killpg")`, falls back to `os.kill(SIGTERM)` (gujishh, salvaged from #226).
|
||||
- POSIX-style secret-permission warning skipped on Windows ([#357](https://github.com/mvanhorn/last30days-skill/pull/357)).
|
||||
- Render uses forward slashes in save-path footer for Windows ([#338](https://github.com/mvanhorn/last30days-skill/pull/338)).
|
||||
|
||||
**xAI / X / xurl**
|
||||
|
||||
- `parse_x_response` now raises `http.HTTPError` on empty output, missing JSON, or decode failure — surfaces in `errors_by_source` instead of silently returning an empty result list (Kaustav Mishra, salvaged from #155).
|
||||
- `xurl` treats `PermissionError` from PATH lookup as unavailable ([#322](https://github.com/mvanhorn/last30days-skill/pull/322)).
|
||||
|
||||
**YouTube**
|
||||
|
||||
- SC YouTube + multi-token HN searches unblocked ([#388](https://github.com/mvanhorn/last30days-skill/pull/388)).
|
||||
- Transcript-fetch ratio surfaced + degraded-run nudge for stale `yt-dlp` ([#340](https://github.com/mvanhorn/last30days-skill/pull/340)).
|
||||
|
||||
**bird_x / HTTP**
|
||||
|
||||
- Subprocess retry on non-JSON stdout to handle X anti-bot HTML interstitials ([#383](https://github.com/mvanhorn/last30days-skill/pull/383)).
|
||||
- HTTP retry budget expanded + exponential backoff on DNS resolution failure ([#382](https://github.com/mvanhorn/last30days-skill/pull/382)).
|
||||
- Parallel AI search aligned with current API schema ([#341](https://github.com/mvanhorn/last30days-skill/pull/341)).
|
||||
- Parallel web backend routed through grounding ([#354](https://github.com/mvanhorn/last30days-skill/pull/354)).
|
||||
|
||||
**Planner and sources**
|
||||
|
||||
- `xquik` registered in `SOURCE_CAPABILITIES` ([#336](https://github.com/mvanhorn/last30days-skill/pull/336), fixes [#319](https://github.com/mvanhorn/last30days-skill/issues/319)).
|
||||
- Honor explicit optional source requests ([#356](https://github.com/mvanhorn/last30days-skill/pull/356)).
|
||||
- ScrapeCreators source-gating aligned between code and docs ([#415](https://github.com/mvanhorn/last30days-skill/pull/415)).
|
||||
- OpenClaw works without ScrapeCreators key ([#392](https://github.com/mvanhorn/last30days-skill/pull/392), by @thinkun).
|
||||
|
||||
**Render, version display, hosting paths**
|
||||
|
||||
- Hardcoded `v3.0.0` in render replaced with dynamic `_skill_version()` ([#365](https://github.com/mvanhorn/last30days-skill/pull/365)).
|
||||
- Comparison HTML artifacts saved correctly ([#389](https://github.com/mvanhorn/last30days-skill/pull/389)).
|
||||
- `OPENROUTER_DEFAULT` model ID corrected ([#323](https://github.com/mvanhorn/last30days-skill/pull/323)).
|
||||
- OpenClaw poll-timing initialized once ([#358](https://github.com/mvanhorn/last30days-skill/pull/358)).
|
||||
- Prefer sandboxed Safari cookie path ([#343](https://github.com/mvanhorn/last30days-skill/pull/343)).
|
||||
- Preserve clean mode for last-run state ([#334](https://github.com/mvanhorn/last30days-skill/pull/334)).
|
||||
- Replaced hardcoded `/Users/mvanhorn/...` paths in `test-v1-vs-v2.sh` with portable env-var overrides (Dave Morin, salvaged from #297).
|
||||
|
||||
**Hooks**
|
||||
|
||||
- `check-config.sh` path-quoting fix for paths with spaces ([#337](https://github.com/mvanhorn/last30days-skill/pull/337)).
|
||||
- Replaced unsafe `eval` with `declare` in `check-config.sh` ([#364](https://github.com/mvanhorn/last30days-skill/pull/364)).
|
||||
|
||||
**Sync and version metadata**
|
||||
|
||||
- `sync.sh` pointed at this repo's plugin cache, not the private repo's ([#402](https://github.com/mvanhorn/last30days-skill/pull/402)).
|
||||
- Sync cache target bumped to 3.2.1 to match SKILL.md ([#397](https://github.com/mvanhorn/last30days-skill/pull/397)).
|
||||
- ScrapeCreators free-tier credit count corrected to 100 in docs ([#369](https://github.com/mvanhorn/last30days-skill/pull/369), fixes [#367](https://github.com/mvanhorn/last30days-skill/issues/367)).
|
||||
- Gemini extension version synced ([#349](https://github.com/mvanhorn/last30days-skill/pull/349)).
|
||||
- Various stale path/link fixes ([#345](https://github.com/mvanhorn/last30days-skill/pull/345), [#346](https://github.com/mvanhorn/last30days-skill/pull/346), [#347](https://github.com/mvanhorn/last30days-skill/pull/347), [#348](https://github.com/mvanhorn/last30days-skill/pull/348), [#351](https://github.com/mvanhorn/last30days-skill/pull/351)).
|
||||
|
||||
### Contributors
|
||||
|
||||
First-time contributors whose fixes shipped in this release (most via PR triage salvage — fix re-applied directly to main with co-author credit when path migration made the original branch un-rebaseable):
|
||||
|
||||
- Dave Morin — portable test-harness paths
|
||||
- Alex Key — `removeprefix("r/")` for subreddit names
|
||||
- Eric Oberhofer — multi-key rotation restored
|
||||
- gujishh — Windows process cleanup
|
||||
- Franco Carballar — Reddit browser-like headers
|
||||
- Jonathan Oppenheim — Reddit 402 fallback chain
|
||||
- Kaustav Mishra — xAI error surfacing
|
||||
- [@thinkun](https://github.com/thinkun) ([#363](https://github.com/mvanhorn/last30days-skill/pull/363)) — OpenClaw ScrapeCreators-key-optional fix
|
||||
|
||||
Full PR list at [github.com/mvanhorn/last30days-skill/releases/tag/v3.3.0](https://github.com/mvanhorn/last30days-skill/releases/tag/v3.3.0).
|
||||
|
||||
## [3.2.0] - 2026-05-09
|
||||
|
||||
### Added
|
||||
|
||||
- Add `--emit=html` for shareable, print-friendly HTML research briefs.
|
||||
- **Digg AI 1000 source** (auto-enabled when `digg-pp-cli` is on PATH). Surfaces curated story clusters from the AI 1000 leaderboard and pulls attributable X-post quotes into the brief as `[@handle](xUrl) via Digg AI 1000: ...` lines. Footer line: `⛏️ Digg AI 1000: N clusters │ K posts │ M authors`. No X auth required for the inline quotes since they flow through Digg's read-only endpoints.
|
||||
|
||||
## [3.1.1] - 2026-04-24
|
||||
|
||||
### Fixed
|
||||
|
||||
- **Codex plugin layout.** Move the canonical runtime payload under `skills/last30days/` and update Codex/Claude plugin metadata and tests for the relocated engine path.
|
||||
- **Claude Code cache resolution.** Resolve Claude plugin installs to `skills/last30days/scripts/last30days.py` after the plugin-layout restructure.
|
||||
|
||||
## [3.1.0] - 2026-04-22
|
||||
|
||||
Consolidates the 3.0.10 to 3.0.14 dev cycle (commenter handles, `--competitors`, per-entity Step 0.55, vs-mode N passes, comparison title attribution) and republishes the OpenClaw bundle, which had been frozen on ClawHub at `3.0.0-open` since April 8.
|
||||
|
||||
### Added
|
||||
|
||||
- **OpenClaw republish.** `clawhub install last30days-official` now resolves to `3.1.0-open`, matching current main. Closes [#307](https://github.com/mvanhorn/last30days-skill/issues/307), [#195](https://github.com/mvanhorn/last30days-skill/issues/195), [#236](https://github.com/mvanhorn/last30days-skill/issues/236). The ClawHub bundle had shipped a broken `env.py get_config()` and stale SKILL.md path references since April; both are fixed at source on main and the republish carries the fixes to installers.
|
||||
|
||||
### Fixed
|
||||
|
||||
- **Claude Code plugin manifest path-escape.** The `.claude-plugin/plugin.json` `skills` key was removed in commit `93fbed2` but never shipped in a tagged release. Installing via `/plugin install last30days-skill` could hit `/doctor`'s `Path escapes plugin directory: ./ (skills)` error. This release ships the fix. Closes [#306](https://github.com/mvanhorn/last30days-skill/issues/306).
|
||||
- **Broken README link.** The README's "source of truth" link pointed at root `SKILL.md`, which is no longer maintained after the plugin-layout restructure. Fixed to point at `skills/last30days/SKILL.md`.
|
||||
|
||||
### Dev cycle journal (3.0.10 - 3.0.14, not separately tagged)
|
||||
|
||||
Individual changelog entries for 3.0.10 through 3.0.14 below document the incremental work consolidated into this release.
|
||||
|
||||
## [3.0.14] - 2026-04-22
|
||||
|
||||
### Changed
|
||||
|
||||
- **Comparison-mode title attribution.** The synthesis title for vs-mode and `--competitors` outputs changes from `What the Community Says (Last 30 Days)` to `What the Community Says (/Last30Days)`. Surfaces the slash-command identity instead of restating the date range. Three SKILL.md occurrences updated; pure documentation change.
|
||||
|
||||
## [3.0.13] - 2026-04-22
|
||||
|
||||
### Changed
|
||||
|
||||
- **vs mode runs N full passes in parallel, one per entity.** Architectural revert of the 3-pass → 1-pass latency optimization from an earlier version. `/last30days "OpenAI vs Anthropic vs xAI"` now runs three full `pipeline.run()` calls in parallel via the same fanout `--competitors` uses, producing three `*-raw.md` save files plus a merged comparison output. Each entity gets its own Step 0.55-grade targeting, own primary X handle weight, own subreddit scoping — apples-to-apples depth instead of the one-pool merged retrieval the single-pass path produced. Parallel execution keeps wall clock ≈ single pass.
|
||||
- **`--competitors` is now a SKILL.md-level shortcut for vs-mode with auto-discovery.** The hosting reasoning model (Claude Code, Codex, Hermes, Gemini, any agent with WebSearch) performs discovery and Step 0.55 per entity via its own WebSearch tool, then invokes the engine with a vs-topic and `--competitors-plan` JSON. The engine flag remains for headless/cron use with BRAVE/EXA/SERPER/PARALLEL/OPENROUTER keys (engine-internal `auto_resolve` stays as fallback).
|
||||
- **LAW 7-style stderr for `--competitors` with no backend** now leads with the hosting-model path (WebSearch + Step 0.55 + `--competitors-plan`) instead of `BRAVE_API_KEY`. API-key framing moved to a secondary "headless" section.
|
||||
|
||||
### Added
|
||||
|
||||
- **`--competitors-plan` JSON flag** for per-entity Step 0.55 targeting. Schema: `{entity_name: {x_handle?, x_related?, subreddits?, github_user?, github_repos?, context?}}`. Accepts inline JSON or a file path (matches `--plan`). When present for an entity, skips engine-internal `auto_resolve` and uses the provided values; missing fields fall back to `auto_resolve` (if backend) or planner defaults. Case-insensitive entity matching. The `subrun_kwargs_for` helper is the single source of truth for per-entity kwargs — no closure-default fallthrough from main scope.
|
||||
- **Per-entity save files** when `--save-dir` is set on a vs-mode or `--competitors` run. Each entity's sub-run produces its own `{slug}-raw.md` with a single-row Resolved Entities block — matches historical vs-mode behavior (N passes → N save files).
|
||||
- **`--polymarket-keywords "kw1,kw2"`** to filter Polymarket matches for ambiguous single-token topics (e.g., "Warriors" → `nba,gsw,golden-state` kills Glasgow Warriors rugby and Honor of Kings Rogue Warriors noise).
|
||||
|
||||
### Fixed
|
||||
|
||||
- **BRAVE/SERPER footer nudge suppressed** when `--plan` or `--competitors-plan` is present. The nudge told Claude Code users to set an API key when they already have WebSearch via the hosting model. Nudge still fires for true headless runs (no `--plan`, no backend) where the advice is correct.
|
||||
- **Override-leak regression testing.** 3.0.12 already fixed the main-topic `--subreddits` / `--x-handle` / `--github-*` from leaking into peer sub-runs via explicit per-entity kwargs scrubbing. This release adds a 4-test regression suite (`test_competitor_subrun_isolation.py`) locking in the invariant.
|
||||
|
||||
## [3.0.12] - 2026-04-22
|
||||
|
||||
### Fixed
|
||||
|
||||
- **Per-entity Step 0.55 resolution for competitor sub-runs.** In 3.0.11, only the main topic got X handle / subreddit / GitHub resolution; competitor sub-runs ran with planner defaults and produced visibly thinner evidence (Reddit 403 fallbacks, single-word queries). Each competitor sub-run now calls `resolve.auto_resolve()` inside `fanout.run_competitor_fanout` when a web backend is available, mirroring the main topic's pre-flight resolution. Per-entity X handle, subreddit list, GitHub user/repos, and news context are threaded into each sub-run's `pipeline.run()` call. Deep-copied config per sub-run prevents `_auto_resolve_context` cross-leak. Surfaces in a new `## Resolved Entities` output block so the resolution coverage is visible without reading stderr.
|
||||
- **LAW 7 false-positive on internal fan-out sub-runs.** Each competitor sub-run was emitting the `[Planner] No --plan passed... YOU ARE the planner` stderr warning. LAW 7 targets the hosting-reasoning-model path, not engine-internal fan-out. New `internal_subrun=True` keyword on `planner.plan_query` and `pipeline.run` suppresses the warning for sub-runs only; the default path is unchanged.
|
||||
- **Marketplace-stale SKILL.md trap.** Added a STEP 0 canonical-path self-check at the top of SKILL.md. Two of three 2026-04-22 test runs loaded SKILL.md from `plugins/marketplaces/last30days-skill/` (Claude-Code-managed git clone pinned to origin/main, lagging the versioned cache), then ran `--help` against the same stale path, did not see `--competitors`, and fell back to a manual comparison plan. The STEP 0 block forces any reader to verify they loaded from `plugins/cache/last30days-skill/last30days/{VERSION}/SKILL.md` and re-read from the versioned cache if not.
|
||||
|
||||
### Changed
|
||||
|
||||
- **Default `--competitors` count is now 2 (3-way total: original + 2 peers).** Previously 3. `--competitors=N` still customizes (range 1..6). Matches the feature description's canonical example (`Kanye vs Drake vs Kendrick`).
|
||||
|
||||
### Added
|
||||
|
||||
- **`## Resolved Entities` block** in `render_comparison_multi` output. Shows per-entity X handle, subreddits, GitHub user/repos, and truncated context for every entity in the comparison. Block is omitted entirely when no entity has a resolved payload (mock mode, no backend).
|
||||
|
||||
## [3.0.11] - 2026-04-22
|
||||
|
||||
### Added
|
||||
|
||||
- **`--competitors` flag for auto-discovered comparison fan-out.** Pass `--competitors` on a single-entity topic and the engine discovers 2-6 peer entities via web search, then runs the full pipeline on each in parallel and emits one N-way comparison. `last30days Kanye West --competitors` resolves Drake, Kendrick Lamar, and one more peer. `last30days OpenAI --competitors` resolves Anthropic, xAI, Google Gemini. `--competitors=N` controls count, `--competitors-list="A,B,C"` skips discovery and uses the explicit list. Discovery mirrors the `auto_resolve` pattern (Brave / Exa / Serper / Parallel) with deterministic text extraction - no internal LLM call. Sub-runs inherit the main `--quick`/`--deep`/`--days`, run in a `ThreadPoolExecutor`, and degrade gracefully when at least 2 entities survive. Output reuses the existing 9-axis `## Head-to-Head` scaffold.
|
||||
|
||||
## [3.0.10] - 2026-04-21
|
||||
|
||||
### Added
|
||||
|
||||
- **Commenter handles on evidence lines.** Top-comment rendering now includes the commenter's handle - `u/author` for Reddit, `@handle` for TikTok/YouTube/Instagram/Bluesky/X/Threads. The enrichment adapters already captured `author`; the render layer just was not using it. Evidence lines change from `- Comment (6822 upvotes): Finally, John Apple` to `- u/Cyrisaurus (6822 upvotes): Finally, John Apple`. Person-level citations make synthesis-side inline markdown links per LAW 8 much more natural. Both the compact and full render paths are covered.
|
||||
|
||||
### Fixed
|
||||
|
||||
- **TikTok author preference.** `_fetch_post_comments` in `scripts/lib/tiktok.py` preferred `user.nickname` over `user.unique_id`, so the engine captured display names ("Moosa Noormahomed") instead of @handles ("moosanoormahomed"). Flipped to prefer `unique_id`. Nickname still wins as a fallback when `unique_id` is missing. Display names can contain emoji, spaces, and non-Latin characters that do not round-trip to a profile URL; the @handle is the stable identifier.
|
||||
- **Single plugin payload layout.** The canonical runtime moved to `skills/last30days/` for both Claude Code and Codex plugin loading. Root-level `SKILL.md`, `scripts/`, `agents/`, and `assets/` are no longer maintained as duplicate copies.
|
||||
|
||||
### Behavior fallback
|
||||
|
||||
- When an author is empty, `[deleted]`, or `[removed]`, the render falls back to the legacy `Comment (...)` shape - no `u/` or `@` prefix with an empty handle is ever emitted.
|
||||
|
||||
## [3.0.9] - 2026-04-18 - The Self-Debug Release
|
||||
|
||||
### Highlights
|
||||
|
||||
v3.0.9 adds the engine-side Class 1 keyword-trap refuse-gate ("birthday gift for 40 year old" now gets a clarifying question, not 5 minutes of junk), promotes TikTok and YouTube top comments to the same first-class rendering Reddit's got, lands Hermes AI Agent as a first-class deploy target, and moves the SKILL.md formatting contract from line 1094 to the top of the file.
|
||||
|
||||
"The Self-Debug Release" refers to how the fixes in 3.0.6-3.0.9 were written: 5 separate Opus 4.7 instances each debugged their own failed outputs. Three converged on "SKILL.md is too big and the LAWs are too deep." Two converged on "the engine should refuse demographic-shopping queries." I shipped exactly what they said. Validation: 5/5 canonical compliance.
|
||||
|
||||
### Added
|
||||
|
||||
- **Engine Class 1 keyword-trap refuse-gate** (`scripts/lib/preflight.py`, new). Pattern-matches demographic-shopping queries at main() front-door. Exit code 2 with structured REFUSE message. Escape hatch: `LAST30DAYS_SKIP_PREFLIGHT=1`. 29 tests in `tests/test_preflight.py`.
|
||||
- **TikTok + YouTube top comments** rendered with same `💬 Top comment` prominence as Reddit's. Shipped in [#260](https://github.com/mvanhorn/last30days-skill/pull/260); enrichment fixed in [#265](https://github.com/mvanhorn/last30days-skill/pull/265).
|
||||
- **Hermes AI Agent as a deploy target** - thanks @stephenmcconnachie ([#228](https://github.com/mvanhorn/last30days-skill/pull/228)). `scripts/sync.sh` detects `~/.hermes/skills/research` and deploys automatically.
|
||||
- **Multi-key SCRAPECREATORS_API_KEY rotation** - thanks @zaydiscold ([#268](https://github.com/mvanhorn/last30days-skill/pull/268)). Set `SCRAPECREATORS_API_KEY_1`, `_2`, etc. Engine rotates on rate-limit.
|
||||
- **Offline quality evaluation fixture** - thanks @j-sperling ([#233](https://github.com/mvanhorn/last30days-skill/pull/233)). `eval_topics.json` lets contributors run quality regressions without burning live API credits.
|
||||
- **END-OF-CANONICAL-OUTPUT boundary** in `render_compact()`. Engine now emits an explicit pass-through instruction so re-synthesis requires actively ignoring a visible boundary.
|
||||
- **LAW 1 verbatim-pattern override.** LAW 1 now quotes the exact WebSearch tool-result reminder ("CRITICAL REQUIREMENT: MUST include Sources: section") and declares it OVERRIDDEN inside last30days output.
|
||||
|
||||
### Changed
|
||||
|
||||
- **SKILL.md restructure.** VOICE CONTRACT LAWs and BADGE MANDATORY block moved from line 1094 to lines 75-150. Grounded in 3 separate Opus 4.7 self-debugs.
|
||||
- **Engine emits the badge as stdout.** `🌐 last30days v3.0.9 · synced YYYY-MM-DD` is the first line of every compact emit. Pass-through is now the default-correct behavior.
|
||||
- **Reddit client HTTP consolidation** - thanks @iliaal ([#207](https://github.com/mvanhorn/last30days-skill/pull/207)). Migrated to `http.get(params=...)` helper.
|
||||
- **ScrapeCreators header consolidation** - thanks @iliaal ([#209](https://github.com/mvanhorn/last30days-skill/pull/209)). `_sc_headers` refactored into `http.scrapecreators_headers`.
|
||||
- **Simpler Hermes sync.** `scripts/sync.sh` Hermes branch now always uses main SKILL.md (previously had a `.hermes-plugin/SKILL.md` fallback that created a wrong-file-capture hazard).
|
||||
|
||||
### Fixed
|
||||
|
||||
- **Peter Steinberger trailing Sources leak.** 2026-04-18 validation failure where the model appended a TechCrunch / TED / Fortune / Wikipedia Sources list after the invitation. Now structurally prevented at three layers: engine emits the canonical body, LAW 1 quotes the exact WebSearch reminder, closing boundary names the anti-pattern.
|
||||
- **Wrong-file SKILL.md capture.** Deleted `.agents/skills/last30days/SKILL.md` (1382 lines, April 13 snapshot) and `.hermes-plugin/SKILL.md` (269 lines). One SKILL.md per plugin now, at the plugin root.
|
||||
- **GitHub date parsing garbage** - thanks @iliaal ([#208](https://github.com/mvanhorn/last30days-skill/pull/208)). `_parse_date` now rejects invalid input cleanly.
|
||||
- **Windows Bird X stability** - thanks @Chelebii ([#227](https://github.com/mvanhorn/last30days-skill/pull/227)).
|
||||
- **Linux `check_perms` false-warn** - thanks @george231224 ([#216](https://github.com/mvanhorn/last30days-skill/pull/216)). Uses GNU stat first.
|
||||
- **UTF-8 saved output** - thanks @Gujiassh ([#225](https://github.com/mvanhorn/last30days-skill/pull/225)).
|
||||
- **Version metadata alignment** - thanks @Gujiassh ([#217](https://github.com/mvanhorn/last30days-skill/pull/217)) and @shalomma ([#229](https://github.com/mvanhorn/last30days-skill/pull/229)).
|
||||
- **`--days` alias backcompat** - thanks @BryanTegomoh ([#230](https://github.com/mvanhorn/last30days-skill/pull/230)).
|
||||
- **`INCLUDE_SOURCES` env default** - thanks @hnshah ([#223](https://github.com/mvanhorn/last30days-skill/pull/223)).
|
||||
- **Bird X all-None engagement** - thanks @j-sperling ([#234](https://github.com/mvanhorn/last30days-skill/pull/234)).
|
||||
|
||||
### Contributors
|
||||
|
||||
@j-sperling, @stephenmcconnachie, @zaydiscold, @iliaal, @Chelebii, @Gujiassh, @hnshah, @george231224, @shalomma, @BryanTegomoh for PRs since v3.0.0. @uppinote20, @zerone0x, @thinkun, @thomasmktong, @fanispoulinakisai-boop, @pejmanjohn, @zl190, @Jah-yee, @dannyshmueli, @Cody-Coyote for issues and PRs that shaped the v3 roadmap.
|
||||
|
||||
### Recovery
|
||||
|
||||
```
|
||||
/plugin update last30days
|
||||
/reload-plugins
|
||||
```
|
||||
|
||||
Verify: `cat ~/.claude/plugins/cache/last30days-skill/last30days/*/.claude-plugin/plugin.json | grep version` returns `"version": "3.0.9"`.
|
||||
|
||||
Smoke test: `/last30days birthday gift for 40 year old` should ask a clarifying question before running.
|
||||
|
||||
## [3.0.5] - 2026-04-15
|
||||
|
||||
### Added
|
||||
|
||||
- **`/last30days` slash command for plugin users.** New `commands/last30days.md` registers a Claude Code slash command. Users type `/last30days <topic>` and Claude Code's autocomplete prefix-matches it to the canonical `/last30days:last30days` form (the same way `/ce:plan` resolves to `/compound-engineering:ce-plan`). The command delegates to the existing `last30days` skill body — no skill behavior changes.
|
||||
|
||||
### Removed
|
||||
|
||||
- **`skills/last30days-nux/`** — byte-identical duplicate of root `SKILL.md` that created confusing `/last30days:last30days-nux` autocomplete entries via Claude Code's plugin namespacing. The root `SKILL.md` remains the canonical skill source.
|
||||
|
||||
### Recovery
|
||||
|
||||
```
|
||||
/plugin update last30days
|
||||
/reload-plugins
|
||||
```
|
||||
|
||||
Then type `/last30days <topic>` to invoke the skill via slash command. Natural-language invocation ("search the last 30 days for X") continues to work unchanged.
|
||||
|
||||
## [3.0.4] - 2026-04-15
|
||||
|
||||
### Fixed
|
||||
|
||||
- **Cleared `/doctor` path-escape error on Claude Code v2.1.109+.** `.claude-plugin/plugin.json` previously declared `"skills": ["./"]`. That value shipped unchanged from v2.1.0 through v3.0.3 and worked on older Claude Code, but current versions reject `./` with `Path escapes plugin directory: ./ (skills)`. The `"skills"` key is now omitted entirely, matching the pattern used by every other plugin in the Claude Code marketplace ecosystem. Claude Code auto-discovers `skills/*/SKILL.md` when the key is absent.
|
||||
|
||||
### Recovery
|
||||
|
||||
If `/doctor` reports a path-escape error for last30days, run `/plugin update last30days` then `/reload-plugins`. If errors persist, uninstall and reinstall the plugin.
|
||||
|
||||
## [3.0.3] - 2026-04-15
|
||||
|
||||
### Fixed
|
||||
|
||||
- **Restored `skills/` and `.claude-plugin/` to the plugin install tarball.** v3.0.1 added `.gitattributes` rules that excluded both directories from `git archive` output to shrink the claude.ai `.skill` bundle. Claude Code's `/plugin install` fetches the same archive, so users installing v3.0.1 or v3.0.2 received a tarball with no plugin manifest and no skill files. `git archive v3.0.0` contained 8 files under those paths; `v3.0.1` and `v3.0.2` contained 0. This release reverts those `.gitattributes` lines.
|
||||
- **Reverted `plugin.json` `"skills"` field to `["./"]`.** v3.0.2 changed this to `["skills"]` based on a misdiagnosis — the manifest change had no effect because the manifest wasn't in the tarball at all. The historical `["./"]` value shipped in every release from v2.1.0 through v3.0.0 without issues and is restored here.
|
||||
|
||||
### Recovery
|
||||
|
||||
Users on v3.0.1 or v3.0.2: run `/plugin update last30days` then `/reload-plugins`. If autoUpdate is enabled, the next session start will pull v3.0.3 automatically. Users on cached v3.0.0 or earlier installs were unaffected.
|
||||
|
||||
### Notes
|
||||
|
||||
- The claude.ai `.skill` bundle built by `scripts/build-skill.sh` still works — the archive grew from 89 to 97 files, well under the 200-file cap.
|
||||
- claude.ai-specific exclusions (avoiding duplicate `SKILL.md` files in the bundle) should move into `scripts/build-skill.sh` rather than `.gitattributes` in a future release, since `.gitattributes` cannot distinguish between the two distribution channels.
|
||||
|
||||
## [3.0.2] - 2026-04-15
|
||||
|
||||
### Fixed
|
||||
|
||||
- **`/last30days` slash command now registers on Claude Code v2.1.105+.** `.claude-plugin/plugin.json` declared `"skills": ["./"]`, which newer Claude Code rejects with `Path escapes plugin directory: ./ (skills)`. The skill silently failed to register, so `/last30days <query>` returned "Unknown command" even though `/plugin list` showed the plugin as installed. Fix: `"skills": ["skills"]` so the loader scans the real skill subdirectory.
|
||||
- **Version drift between manifests.** `.claude-plugin/marketplace.json` was pinned to `3.0.0` while `.claude-plugin/plugin.json` advertised `3.0.1`. The `/plugin` resolver used the marketplace version and could install stale cached metadata alongside the correct build. Both manifests now agree on `3.0.2`.
|
||||
|
||||
### Recovery
|
||||
|
||||
If `/last30days` stopped working for you, run `/plugin update last30days` then `/reload-plugins`. If `/doctor` still reports errors, uninstall and reinstall the plugin from the marketplace.
|
||||
|
||||
## [3.0.1] - 2026-04-14
|
||||
|
||||
### Fixed
|
||||
|
||||
- **Skill upload packaging** - `scripts/build-skill.sh` produces a claude.ai-upload-ready `.skill` file that fits under the 200-file cap. Previously, zipping the repo hit 406 files and the "Upload skill" UI rejected it outright.
|
||||
- **SKILL.md description length** - trimmed from 228 to 167 chars (Anthropic caps descriptions at 200).
|
||||
|
||||
### Removed
|
||||
|
||||
- Unused root `vendor/` directory (215 files from an accidental commit in PR #48 - the real vendored X client lives at `scripts/lib/vendor/bird-search/`).
|
||||
- Legacy top-level `plans/` directory (superseded by `docs/plans/`; both plans described work that was already shipped in v3).
|
||||
|
||||
### Added
|
||||
|
||||
- `.gitattributes` with `export-ignore` entries so `git archive` drops tests, docs, fixtures, assets, historical manifests, and internal skill subdirs. Mirrors Anthropic's canonical `package_skill.py` exclusions.
|
||||
- `scripts/build-skill.sh` - one-command path to produce `dist/last30days.skill` with a single top-level `last30days/` folder, defensive `=200` file check, and dirty-tree refusal.
|
||||
- `README.md` section documenting the claude.ai skill upload workflow.
|
||||
|
||||
## [3.0.0] - 2026-04-11
|
||||
|
||||
### Highlights
|
||||
|
||||
Intelligent search, fun judge, cross-source cluster merging, single-pass comparisons, and OpenClaw as a first-class citizen. The v3 engine doesn't just search for your topic -- it figures out *where* to search before the search begins. Engine architecture by @j-sperling.
|
||||
|
||||
### Added
|
||||
|
||||
- **Intelligent pre-research** -- Resolves X handles, subreddits, TikTok hashtags, and YouTube channels via a new Python brain before any API calls fire. Bidirectional: person to company, product to founder.
|
||||
- **Fun judge / Best Takes** -- Second parallel LLM judge scores humor, cleverness, and virality. Surfaces the best reactions in a dedicated output section.
|
||||
- **Cross-source cluster merging** -- Entity-based overlap detection merges the same story across Reddit, X, YouTube into one cluster instead of three separate items.
|
||||
- **Single-pass comparisons** -- "X vs Y" runs one pass with entity-aware subqueries instead of three serial passes. 3 minutes instead of 12+.
|
||||
- **GitHub as a source** -- Stars, reactions, and comments from repos and issues.
|
||||
- **OpenClaw first-class citizen** -- Auto-resolve for engine-side pre-research. Device auth for frictionless ScrapeCreators signup.
|
||||
- **Per-author cap** -- Max 3 items per author prevents single-voice dominance.
|
||||
- **Entity disambiguation** -- Synthesis trusts resolved handles over keyword matches.
|
||||
- **Perplexity Sonar Pro as additive source** -- AI-synthesized research with citations via OpenRouter. Opt-in via `INCLUDE_SOURCES=perplexity`. Returns structured narratives that complement social data.
|
||||
- **Perplexity Deep Research** -- `--deep-research` flag for exhaustive 50+ citation reports (~$0.90/query). Premium opt-in for serious investigation.
|
||||
- **OpenRouter as reasoning provider** -- One OPENROUTER_API_KEY powers planning, reranking, and Perplexity search. Auto-detected after Gemini/OpenAI/xAI.
|
||||
- **Parallel AI grounding backend** -- `--web-backend parallel` or auto-detected via PARALLEL_API_KEY.
|
||||
- **Grounding in planner** -- Grounding source properly registered in SOURCE_CAPABILITIES instead of force-injected.
|
||||
|
||||
### Changed
|
||||
|
||||
- YouTube transcript candidate pool widened 3x past music videos to reach talk/review content with captions
|
||||
- Reddit comment enrichment sorted by total engagement (upvotes + comments), not just upvotes
|
||||
- Polymarket display shows % odds only; dollar volumes removed
|
||||
- 852 tests passing
|
||||
|
||||
### Fixed
|
||||
|
||||
- Marketplace validation: duplicate `name: last30days` collision in `skills/last30days/SKILL.md` caused strict validators to reject the plugin. Resolved by renaming the internal v3 architecture spec to `last30days-v3-spec` with `user-invocable: false`. Fixed in #214 (reported by @Cody-Coyote in #204).
|
||||
- Stale README link to the deleted `skills/last30days-v3/` path from the v3 directory rename. Fixed in #214.
|
||||
- OpenAI Codex CLI discoverability: added `.agents/skills/last30days/SKILL.md` as a real file (Codex's loader skips symlinked files) plus `.codex-plugin/plugin.json` as the namespace marker. The skill now registers as `last30days:last30days` when Codex runs in a checkout of the repo. Fixed in #219 (inspired by @Jah-yee in #153 and @dannyshmueli on X).
|
||||
|
||||
### Contributors
|
||||
|
||||
- @j-sperling -- v3 engine architecture, Python pre-research brain
|
||||
- @hnshah -- Watchlist features
|
||||
- @Cody-Coyote -- Marketplace validation bug report (#204)
|
||||
- @Jah-yee -- Codex CLI integration inspiration (#153)
|
||||
|
||||
## [2.9.4] - 2026-03-06
|
||||
|
||||
### Changed
|
||||
@@ -32,15 +903,15 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
||||
|
||||
### Highlights
|
||||
|
||||
Auto-save research briefings to `~/Documents/Last30Days/` as topic-named .md files. Every run now builds a personal research library automatically - no more manual copy-paste.
|
||||
Auto-save research briefings to the default memory directory as topic-named .md files. Every run now builds a personal research library automatically - no more manual copy-paste.
|
||||
|
||||
### Added
|
||||
|
||||
- Auto-save complete research briefings (synthesis, stats, follow-up suggestions) to `~/Documents/Last30Days/{topic-slug}.md` after every run
|
||||
- Auto-save complete research briefings (synthesis, stats, follow-up suggestions) to the default memory directory after every run
|
||||
- Kebab-case filename generation from topic (e.g., "Claude Code skills" -> `claude-code-skills.md`)
|
||||
- Duplicate topic handling: appends date suffix instead of overwriting (e.g., `claude-code-skills-2026-03-05.md`)
|
||||
- Agent mode (`--agent`) also saves research files
|
||||
- Brief confirmation after save: "Saved to ~/Documents/Last30Days/{slug}.md"
|
||||
- Brief confirmation after save with the saved file path
|
||||
|
||||
### Credits
|
||||
|
||||
@@ -147,7 +1018,6 @@ Three headline features: watchlists for always-on bots, YouTube transcripts as a
|
||||
|
||||
### Credits
|
||||
|
||||
- @steipete -- Bird CLI (vendored X search) and yt-dlp/summarize inspiration for YouTube transcripts
|
||||
- @galligan -- Marketplace plugin inspiration
|
||||
- @hutchins -- Pushed for YouTube feature
|
||||
|
||||
@@ -155,6 +1025,7 @@ Three headline features: watchlists for always-on bots, YouTube transcripts as a
|
||||
|
||||
Initial public release. Reddit + X search via OpenAI Responses API and xAI API.
|
||||
|
||||
[3.0.9]: https://github.com/mvanhorn/last30days-skill/compare/v3.0.5...v3.0.9
|
||||
[2.9.1]: https://github.com/mvanhorn/last30days-skill/compare/v2.9.0...v2.9.1
|
||||
[2.9.0]: https://github.com/mvanhorn/last30days-skill/compare/v2.8.0...v2.9.0
|
||||
[2.8.0]: https://github.com/mvanhorn/last30days-skill/compare/v2.6.0...v2.8.0
|
||||
|
||||
@@ -1,21 +1 @@
|
||||
# last30days Skill
|
||||
|
||||
Claude Code skill for researching any topic across Reddit, X, YouTube, and web.
|
||||
Python scripts with multi-source search aggregation.
|
||||
|
||||
## Structure
|
||||
- `scripts/last30days.py` — main research engine
|
||||
- `scripts/lib/` — search, enrichment, rendering modules
|
||||
- `scripts/lib/vendor/bird-search/` — vendored X search client
|
||||
- `SKILL.md` — skill definition (deployed to ~/.claude/skills/last30days/)
|
||||
|
||||
## Commands
|
||||
```bash
|
||||
python3 scripts/last30days.py "test query" --emit=compact # Run research
|
||||
bash scripts/sync.sh # Deploy to ~/.claude, ~/.agents, ~/.codex
|
||||
```
|
||||
|
||||
## Rules
|
||||
- `lib/__init__.py` must be bare package marker (comment only, NO eager imports)
|
||||
- After edits: run `bash scripts/sync.sh` to deploy
|
||||
- Git remotes: origin=private, upstream=public
|
||||
@AGENTS.md
|
||||
|
||||
+85
@@ -0,0 +1,85 @@
|
||||
# Concepts
|
||||
|
||||
Shared vocabulary for `last30days-skill`. Terms here have a precise project-specific meaning — distinct enough from their general technical sense that a new contributor would need them defined to follow conversations, PR descriptions, or the SKILL.md contract.
|
||||
|
||||
## The package
|
||||
|
||||
### Skill
|
||||
|
||||
A self-contained agent-instructions package consisting of a `SKILL.md` prose contract plus a sibling `scripts/` directory containing the executable code the SKILL.md invokes. The package conforms to the [Agent Skills](https://agentskills.io) open format and installs across every major harness (Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, and 50+ others) via `npx skills add`, harness-native plugin installers, or per-harness skill directories. A Skill is the unit of distribution; the Skill is the product.
|
||||
|
||||
### Engine
|
||||
|
||||
The Python script (`scripts/last30days.py`) the Skill's SKILL.md invokes to do the actual research work. The Engine and SKILL.md have a contract: SKILL.md tells the model which flags to pass (`--plan`, `--competitors-plan`, `--x-handle`, `--subreddits`, `--emit=compact`, etc.), and the Engine produces a specific output shape (badge line, ranked evidence clusters, emoji-tree footer) that the model is contractually required to pass through. The Engine is implementation; the SKILL.md prose is the agent-facing surface.
|
||||
|
||||
### Harness
|
||||
|
||||
The agent runtime that loads Skills and invokes them on the user's behalf. Claude Code is the most common Harness for this Skill but not the only one — Codex, Cursor, GitHub Copilot, Gemini CLI, and the rest of the Agent Skills ecosystem also count. "Multi-harness" describes a Skill that works correctly across every Harness it installs into; features written without multi-harness awareness (e.g., engine flags with no SKILL.md integration, or paths hardcoded to one Harness's install layout) regress on Harnesses other than the one they were tested against.
|
||||
|
||||
## Research pipeline
|
||||
|
||||
### Primary entity
|
||||
|
||||
The brand or proper-noun core of a research topic — the topic with its Intent modifier stripped. It is what the research is *about*, as distinct from how the user phrased the search.
|
||||
|
||||
### Intent modifier
|
||||
|
||||
A trailing word or phrase in a topic that expresses what the user wants to know rather than what the topic is ("review", "use cases", "pricing"). Stripped when deriving the Primary entity.
|
||||
|
||||
### Entity grounding
|
||||
|
||||
The check that a candidate item plausibly mentions the Primary entity before final ranking. Grounding keys on the head token (first word) of the Primary entity rather than the full phrase — trailing words are usually search descriptors, so requiring them falsely demotes on-entity items.
|
||||
|
||||
An item that fails grounding receives a decisive entity-miss demotion, designed so engagement cannot rescue off-entity content. Because the demotion is decisive, the grounding bar is deliberately conservative: its failure modes degrade toward "no penalty," never toward burying on-entity signal.
|
||||
|
||||
### Keyless path
|
||||
|
||||
The research flow available with no API keys: source data is gathered by scraping and RSS rather than authenticated APIs, and ranking falls back to local scoring instead of LLM-based reranking. This is the free tier of the Skill; lexical quality safeguards like Entity grounding matter most here, because no LLM is available to judge relevance semantically.
|
||||
|
||||
### Comment-enrichment slots
|
||||
|
||||
The small, depth-dependent budget of Reddit posts whose comments get fetched in the Keyless path. Slot selection is relevance-aware: posts that pass Entity grounding claim slots first, so the budget is not spent on high-engagement posts that final ranking will demote anyway.
|
||||
|
||||
## Discovery
|
||||
|
||||
### Discovery
|
||||
|
||||
The topic-less research mode: instead of researching a named topic, it finds what is worth researching. On a reasoning-model host it runs as a three-leg host-judged protocol: leg 1 sweeps the river listings and writes a nominations bundle, the host judges every Nomination (name, junk, worthiness) into a judgments file, leg 2 resumes from the bundle and runs the Enrichment passes, and leg 3 applies host-written content angles and renders the brief. Headless/cron runs keep the one-shot form - same sweep and enrichment, deterministic heuristics in place of the judge, no angles. Either way every surviving topic must clear the Confidence floor before it is shown. Global Discovery (no domain given) sweeps every river feed's own hot list with no keyword gate; domain Discovery scopes and keyword-gates the sweep.
|
||||
|
||||
### Nomination
|
||||
|
||||
A named candidate topic produced by Discovery's listing sweep: clustered items from the river feeds, given a short searchable name plus a Junk shape flag and a content-worthiness score that blends into its seed rank. On protocol runs the hosting model judges all three via the judgments file - the engine's deterministic heuristics only fill rows the host left absent; on headless one-shot runs deterministic distillation supplies the name and junk flag and no worthiness signal exists. A Nomination is only a candidate - its blended seed rank decides which topics deserve an Enrichment pass and the display order of survivors; the Confidence floor judgment and the displayed velocity score are computed from the enriched evidence, never the seed score. The Nomination's name doubles as its Enrichment pass search query and its research handoff, so naming happens before enrichment, never at render time.
|
||||
|
||||
### Handoff checkpoint
|
||||
|
||||
The persisted state that lets Discovery's protocol pause for host judgment and resume in a later invocation: the nominations bundle (the full judge pool with its seed evidence, written by leg 1, awaiting the host's judgments) and the pending report (the enriched, floored, ranked round written by leg 2, awaiting the host's angles). A checkpoint is identity-bound - every host-written file must echo the checkpoint's bundle id, and a mismatch is a fix-the-id-and-retry error, never a redo of the expensive leg - and time-bound by its own TTL so a stale round is rejected rather than resumed. Checkpoints also carry provenance the resume legs enforce: mock and real state never cross, degraded sweep coverage survives into later legs instead of reading as clean, and an explicitly scoped store is the only place its checkpoints are looked for. Structurally empty checkpoint state is treated as corruption and fails closed - it never becomes an authoritative-looking empty result.
|
||||
|
||||
### Enrichment pass
|
||||
|
||||
A full research-pipeline run executed on one Nomination's topic name during Discovery. This is what gives a trend card the whole multi-source corpus (community comments, prediction markets, keyword-driven sources that have no hot-list of their own) instead of thin listing evidence. Enrichment passes run in parallel against a wall-clock budget; a pass that fails or outruns the budget downgrades its topic to nomination-only evidence, never fails the run.
|
||||
|
||||
### Confidence floor
|
||||
|
||||
The absolute evidence bar every Discovery topic must clear before it may rank: an engagement junk-gate first, then either independent cross-source corroboration or a genuinely strong single-source spike. Topics with a Junk shape get a stricter read: the single-source spike bypass is off, and their corroboration is counted against the seed listing sources the sweep actually found - never the enriched corpus, because an Enrichment pass makes almost any topic look multi-source. The floor is absolute, not relative to the current pool - a relative bar would degrade with the pool, which is the failure it exists to prevent. Its thresholds are deliberately tunable; the behavior contract is only that sub-floor evidence never ranks.
|
||||
|
||||
### Nothing-solid
|
||||
|
||||
The honest empty outcome of a Discovery run in which zero topics cleared the Confidence floor. A first-class result, not an error: the run reports that nothing in the window was strong enough to call a trend, and names the closest sub-floor candidate (the weak signal, preferring a non-junk-shaped one) so the user knows where the signal petered out. Rendering junk instead of Nothing-solid is the named failure this outcome replaced.
|
||||
|
||||
### Junk shape
|
||||
|
||||
A classification applied to a Nomination whose leading item reads as a help-me question, beginner ask, or personal musing rather than a story - the post shapes that engagement alone cannot distinguish from news. Its force depends on who flagged it: a host junk verdict is authoritative and excludes the Nomination from Enrichment passes outright (it can still appear as the weak signal in a Nothing-solid brief), while a heuristic junk shape on a row the host never judged only removes the Confidence floor's single-source bypass, so that topic surfaces solely with independent seed-source corroboration.
|
||||
|
||||
### Topic queue
|
||||
|
||||
The persistent memory of what Discovery has surfaced: each surfaced topic is recorded per research store, so later runs can annotate repeats ("surfaced Nth time") and the user can mark stories Covered. On by default for every real Discovery run, with an engine toggle to disable; mock runs never write it.
|
||||
|
||||
Identity in the queue is annotate-only: a new topic name that closely matches an earlier row (exact normalized match, else entity overlap) annotates the rendered card but never merges or rewrites rows - a false match costs one noisy line, never a hidden story. Queue annotations always describe the state before the current run, and a failed queue write degrades to a warning; it must never destroy a finished run's output.
|
||||
|
||||
### Covered
|
||||
|
||||
The user-set status on a Topic queue row meaning "I already produced content for this story." Set by marking a topic covered by its exact name; surfaced is the only other status. A resurfacing never un-covers a row, and a new name that fuzzily matches a Covered row is born Covered - so the mark survives the judge (now the hosting model) renaming the same story across runs instead of silently re-pitching it.
|
||||
|
||||
## Flagged ambiguities
|
||||
|
||||
- "Enrichment" is used for two distinct things: Comment-enrichment slots (fetching comments for already-ranked Reddit posts in the Keyless path) and Discovery's Enrichment pass (a full research run per Nomination). Context disambiguates; prefer the full term when writing.
|
||||
@@ -0,0 +1,619 @@
|
||||
# Configuration
|
||||
|
||||
Everything you can tune in `/last30days` without editing the engine source.
|
||||
Three layers, in order of how often you'll touch them:
|
||||
|
||||
1. **Per-run flags** - what you pass on the command line.
|
||||
2. **Environment variables and `.env`** - what's enabled across all runs.
|
||||
3. **Optional trend-monitoring stack** - SQLite store, watchlist, briefings.
|
||||
|
||||
Per-client patterns and the experimental beta channel are at the bottom.
|
||||
|
||||
> Skip ahead: [Where output is saved](#where-output-is-saved) - [API keys](#api-keys-env) - [Reasoning provider](#reasoning-provider-priority) - [Web search backend](#web-search-backend-priority) - [Trend monitoring](#trend-monitoring-store--watchlist--briefings) - [Per-client patterns](#per-client-patterns) - [Beta channel](#beta-channel)
|
||||
|
||||
## Why this document exists
|
||||
|
||||
This is a focused **configuration reference** maintained alongside the engine. The runtime contract (the voice rules, the planner protocol, the LAWs the synthesizing model follows) lives in [`skills/last30days/SKILL.md`](skills/last30days/SKILL.md) - that file is authoritative when the two ever differ. This file's job is narrower: surface every knob a user or operator can turn, in one place, kept current with the code so client-facing setups stay reliable. New configuration knobs added to the engine should be reflected here in the same PR.
|
||||
|
||||
---
|
||||
|
||||
## Where output is saved
|
||||
|
||||
| Platform | Default path | Override |
|
||||
|---|---|---|
|
||||
| Linux / macOS | `LAST30DAYS_MEMORY_DIR` defaults to `~/Documents/Last30Days/` | set `LAST30DAYS_MEMORY_DIR=/path` |
|
||||
| Windows | `LAST30DAYS_MEMORY_DIR` defaults to `C:\Users\<you>\Documents\Last30Days\` | set `LAST30DAYS_MEMORY_DIR=C:\path` |
|
||||
|
||||
Each run produces one file per topic, slug-named:
|
||||
`<slug>-raw[-suffix].md`. Same topic + same suffix on the same day overwrites; same topic + same suffix on different days appends a date stamp.
|
||||
|
||||
### Recommended `.env` entry
|
||||
|
||||
`.env` files don't travel between machines or harnesses, so set `LAST30DAYS_MEMORY_DIR` explicitly in `~/.config/last30days/.env` once per host. The `/last30days` slash command works without it (the SKILL.md wrapper has its own default), but **bare engine invocations** — `python3 scripts/last30days.py ...` from cron jobs, scripts, or agents that bypass the wrapper — silently no-op the file save unless the engine sees the env var. Mirrors the `LAST30DAYS_STORE` env-or-flag convention.
|
||||
|
||||
```bash
|
||||
# ~/.config/last30days/.env (pick ONE — uncomment the line that matches your OS)
|
||||
LAST30DAYS_MEMORY_DIR=~/Documents/Last30Days # POSIX — defaults to this path when unset
|
||||
# LAST30DAYS_MEMORY_DIR=C:\Users\<user>\Documents\Last30Days # Windows
|
||||
# LAST30DAYS_LIBRARY_OWNER=Your Name # Optional Atom feed author
|
||||
# LAST30DAYS_LIBRARY_CONTEXT=off # Disable prior-run context (default: on)
|
||||
```
|
||||
|
||||
The engine's `.env` reader doesn't expand `$HOME` — only the tilde, via `Path().expanduser()` downstream. Use `~/...` or an absolute path; **don't** write the literal string `$HOME/...` into your `.env` (it gets stored verbatim and breaks path resolution).
|
||||
|
||||
**Per-run overrides:**
|
||||
|
||||
- `--save-dir <path>` - one-off output location. **Flag wins over env var.** If neither flag nor env var is set, the engine does not write a file (DB persistence is independent — see `LAST30DAYS_STORE` below).
|
||||
- `--output <file>` - write the rendered output to an exact file path, using the format selected by `--emit`.
|
||||
- `--json-profile {agent,raw}` - select the research JSON shape used with `--emit=json`. `agent` is the default, versioned workflow contract; `raw` preserves the full internal `Report` dump for debugging and power users. See the [JSON export reference](docs/reference/json-export.md).
|
||||
- `--corpus <dir>` - add a local `.md`/`.txt` directory as a private ranked source; repeat the flag for multiple directories. PDFs are extracted only when `pdftotext` is on PATH and otherwise skip with a note. File modification time supplies recency, so the normal research window applies.
|
||||
- `--corpus-all-time` - include relevant registered files whose modification time is older than the current research window. Without this flag, a 30-day run includes only files modified in those 30 days.
|
||||
- `--register {default,exec,dev,creator,eli5}` - shape a standard single-topic Markdown or HTML research brief for its audience. `exec` is decisions-first with five core findings and numbers up top; `dev` gives GitHub, code, and technical signals more room; `creator` leads with hooks, Best Takes, community reactions, and virality metrics; `eli5` keeps the established evidence layout and asks the synthesizing agent for accessible language. Registers do not change retrieval, JSON exports, discovery, drill, library feed/search, or comparison output.
|
||||
- `--discover [domain]` - trending discovery, two-stage: a river-listing sweep NOMINATES candidate topics, then each nomination gets a full research pass (Reddit with comments, X, YouTube, Techmeme, arXiv, HN, Polymarket, web) before ranking. Bare `--discover` (no domain) is **global trending**: every feed's own hot list (r/all rising/top-week, Hacker News front/best, Digg clusters when `digg-pp-cli` is on PATH) with no keyword gate; with a domain, the sweep is category-scoped and keyword-gated, and broad X activity joins when an X backend is authenticated. Every topic must clear a confidence floor (cross-source confirmation or a genuinely strong single-source spike); when nothing clears it the run reports "Nothing solid this window" instead of ranked noise. Run without a positional topic; it is mutually exclusive with `--drill`. `--emit=json` uses the separate versioned discovery contract (now with `outcome`, `weak_signal`, per-topic `top_comment` and `corroboration_count`) documented in the [JSON export reference](docs/reference/json-export.md).
|
||||
- `--discover-shallow` - skip discovery's per-topic research passes and rank on listing evidence only. Faster and thinner; the confidence floor still applies. An explicit `--search` source list bounds both the sweep and the research passes. On a protocol run (below), adding it to the `--nominate-only` leg marks the bundle quick-tier so the resume leg uses the faster shallow research pass.
|
||||
- `--nominate-only` - leg 1 of the three-command host-judged discovery protocol (agent hosts; SKILL.md drives it - one-shot `--discover` stays the scripting/cron form with deterministic topic names and no angles). With `--discover [domain]`: sweep the listings, write the nominations bundle (`discover-nominations.json` in the save dir, TTL one hour) for host judgment, print a judging digest, and stop - no enrichment, no queue writes. A zero-nomination sweep prints the nothing-solid brief directly.
|
||||
- `--judgments <path>` - leg 2: resume from the nominations bundle, applying the host judgments file (`{"bundle_id": "...", "judgments": [{"id", "name", "junk", "worthiness"}, ...]}`, bound to the bundle by `bundle_id`). Runs the per-topic research passes (deep tier by default; budget tunable via `LAST30DAYS_ENRICH_BUDGET_SECONDS` below), writes the pending report (`discover-pending.json`), and prints per-topic angle inputs. Requires `--discover`.
|
||||
- `--finalize` - leg 3: apply optional host angles to the pending report, render the final discovery brief, save artifacts, and record the topic queue (retries are idempotent - the pending file stays in place within its TTL). Offline; requires `--discover`.
|
||||
- `--angles <path>` - optional host angles file for `--discover --finalize` (`{"bundle_id": "...", "angles": [{"id", "podcast", "x_article"}, ...]}`, sentences capped at 200 chars); omitting it ships the brief without angle lines. All three protocol legs must share one `--save-dir` (handoff files live there, else in `~/.config/last30days/`); contract failures (missing/stale/unbound handoff files) exit 2 with the remedy on stderr, and `--mock` protocol legs require `--save-dir` to stay side-effect-free.
|
||||
- `--drill <target>` - deep follow-up over the fresh `~/.config/last30days/last-report.json` cache. Accepts a 1-based index (`--drill "cluster 3"` or `--drill "3"`) or a fuzzy cluster title/entity description. It re-fetches only sources that contributed to the matched cluster, enables their deep comment/transcript enrichment paths, merges/dedupes the evidence, and replaces the cache so drills can chain. Run it without a positional topic; if the cache is absent or expired, run a normal research pass first.
|
||||
- `--verify-freshness` - opt into an act-time verification pass for conservatively extracted, source-grounded claims (Polymarket odds/end dates, GitHub stars, StockTwits sentiment ratios, and explicit status assertions). With a topic, verification runs after research; without a topic, it re-verifies the fresh `last-report.json` cache without repeating research. Verdicts are `current`, `stale`, `contradicted`, or `unsupported` and include evidence timestamps. Set `LAST30DAYS_VERIFY_FRESHNESS=on` in `.env` to make the pass default for normal research runs.
|
||||
- `--save-suffix <name>` - distinguish runs of the same topic (e.g. per client: `--save-suffix=acme`).
|
||||
- `--no-browser-cookies` - hard-disable browser-cookie extraction for this run, even when `FROM_BROWSER` is configured. MCP and folder-mode hosts use this for safe defaults.
|
||||
- `--publish-html` - with `--emit=html`, publish the rendered HTML to `ht-ml.app` after local output/save-dir writes. This is explicit opt-in only; pages are public by default.
|
||||
- `library feed` - scan `LAST30DAYS_MEMORY_DIR` plus `~/.local/share/last30days/briefs/`, then write a self-contained `index.html`, valid Atom `feed.xml`, and browser-ready pages under `briefs/`. The index is reverse-chronological and grouped by topic. For direct engine use: `python3 skills/last30days/scripts/last30days.py library feed`; use `--save-dir <path>` to scan and write another library directory.
|
||||
- `library feed --publish` - publish each rendered brief and the HTML index through `ht-ml.app`. The generated `feed.xml` remains a first-class local artifact because this HTML host does not serve Atom with an XML content type. Host the output directory on any static host (for example, GitHub Pages) to make `feed.xml` subscribable. Publishing is explicit opt-in and pages are public by default; public pages may be crawled or indexed.
|
||||
- `library search "<query>"` - incrementally sync `LAST30DAYS_MEMORY_DIR` and `~/.local/share/last30days/briefs/` through the shared library scanner, then run offline SQLite FTS5 across those briefs plus dated per-run sightings in `~/.local/share/last30days/research.db`. Results are grouped by topic run. The sibling search index lives at `~/.local/share/last30days/library.db`; hand edits, renames, and deletes are picked up on sync, and a corrupt index is rebuilt automatically.
|
||||
- `LAST30DAYS_LIBRARY_OWNER=<name>` - optional feed-level Atom author. Defaults to `last30days research library`.
|
||||
- `LAST30DAYS_LIBRARY_CONTEXT=on|off` - controls passive prior-run context on fresh research reports. It defaults to `on`; matching saved research appears in a short `From your library` section. Set `off` to skip the local index read and leave reports unchanged. Mock runs, eval replays, and internal fan-out subruns do not load library context, keeping fixtures deterministic.
|
||||
- `--publish-password <password>` - optional shared password for `--publish-html` or `library feed --publish`. Prefer `LAST30DAYS_PUBLISH_PASSWORD=<password>` instead so the password is not visible in the process list or shell history. Use a unique non-personal password; never reuse the user's own password. The provider's update key is treated as secret and is not written to stdout, HTML, raw output, or `.publish.json` metadata.
|
||||
- `--preflight` - print a human-readable permission preflight. It reports config source, project config trust/ignore state, browser-cookie plan, planned writes, optional commands, source availability, and endpoint overrides without reading browser cookies, writing setup/config/report files, or running research. Add `--emit=json` for the separate machine-readable preflight contract (`--json-profile` does not change it); use `--diagnose` when you need the full source diagnostic JSON.
|
||||
- `--welcome` - print the first-run welcome text (engine-owned; the skill relays it verbatim on first run). Safe: prints and exits, no reads or writes.
|
||||
- `--record-fixtures <dir>` - developer-only, hidden flag that records scrubbed source responses for the offline research-quality eval harness. It writes `<dir>/http.json`; see the [eval reference](docs/reference/eval.md) before recording or committing fixtures.
|
||||
- `setup --github-start` / `setup --github-poll` - the two-command ScrapeCreators GitHub device-auth split. `--github-start` submits the device flow, copies the code to the clipboard, opens the browser, and returns the code immediately (foreground); `--github-poll` waits for you to authorize and persists the key. `setup --github` still runs both in one shot for back-compat.
|
||||
|
||||
The footer line `📎 Raw results saved to ${LAST30DAYS_MEMORY_DIR:-$HOME/Documents/Last30Days}/<slug>-raw.md` is the canonical pointer; if it shows backslashes on Windows update past v3.1.1.
|
||||
|
||||
Every completed research pass writes a structured `last-report.json` cache beside `last-run.json`. HTML follow-up renders use it so `--emit=html --synthesis-file` can reuse report metadata/footer without fetching sources again; `--drill <target>` uses it as the grounded starting point for targeted re-research; bare `--verify-freshness` updates only the cached report's claim verdicts. Reuse is intentionally short-lived: `LAST30DAYS_REPORT_CACHE_TTL_SECONDS` defaults to `3600` (one hour). Set it to another integer number of seconds to tune the window, or `0` to disable report-cache reuse and post-run follow-ups.
|
||||
|
||||
---
|
||||
|
||||
## First-run onboarding
|
||||
|
||||
On the very first `/last30days` run (no `~/.config/last30days/.env`, or `SETUP_COMPLETE` not set), the skill runs a consent-driven onboarding the model drives in chat. It takes one of two forms depending on the host:
|
||||
|
||||
- **Claude Code Modal Flow** - the restored v3.0.0 guided NUX, used on hosts with `AskUserQuestion` (Claude Code). A welcome message, then modals for Auto/Manual/Skip setup, cookie consent, the ScrapeCreators signup offer, a TikTok/Instagram `INCLUDE_SOURCES` opt-in, and a first-topic picker.
|
||||
- **Non-Modal Prose Flow** - the same work done conversationally on hosts without modals (OpenClaw, Codex, Cursor, Gemini CLI, Grok, raw CLI).
|
||||
|
||||
Both share the same consent points:
|
||||
|
||||
1. **Browser cookies** - the model asks before reading anything. On yes it runs `setup --allow-browser-cookies`, which extracts Firefox/Safari cookies (never Chrome unless `FROM_BROWSER=auto` or a named Chromium browser is explicitly configured) to unlock X/Twitter and other logged-in sources, and installs yt-dlp + the keyless Digg CLI. On no it runs setup without `--allow-browser-cookies` (or with `FROM_BROWSER=off`), which skips all cookie reads and still installs the tools.
|
||||
2. **Full Disk Access (macOS)** - if a cookie read is permission-denied, the model surfaces the System Settings > Privacy & Security > Full Disk Access fix and offers one retry.
|
||||
3. **ScrapeCreators GitHub signup** - offered on every first run (10,000 free calls). On consent it runs `setup --github`, which opens a browser for GitHub device-auth (or registers instantly via the `gh` CLI when installed) and, on success, **persists `SCRAPECREATORS_API_KEY` automatically** (0o600, masked in output) so TikTok, Instagram, empty-path Reddit search backup, and the YouTube transcript fallback activate on the next run. Decline anytime; you can run it later by asking to set up ScrapeCreators. The Step 5 opt-in has two tiers, both comment-enabled: **Recommended** (TikTok + Instagram posts AND top comments, plus YouTube comments — `INCLUDE_SOURCES=tiktok,instagram,youtube_comments,tiktok_comments,instagram_comments`) and **Everything**, which also adds Threads + Pinterest. Comments are on by default; Threads and Pinterest are the only opt-in extras.
|
||||
|
||||
Re-run onboarding by deleting `~/.config/last30days/.env`. The mechanical work lives in `scripts/lib/setup_wizard.py`; the consent conversation and both host flows are specified in `skills/last30days/SKILL.md` Step 0. The original v3.0.0 wizard is captured at `docs/reference/old-nux-wizard-v3.0.0.md`.
|
||||
|
||||
---
|
||||
|
||||
## API keys (`.env`)
|
||||
|
||||
The skill reads keys from a `.env` file. Two locations are supported:
|
||||
|
||||
1. **`~/.config/last30days/.env`** at the user level (global default) - loaded by default.
|
||||
2. **`.claude/last30days.env`** in the current project directory (project-scoped) - loaded only when trusted by setting `LAST30DAYS_TRUST_PROJECT_CONFIG=1` in the process environment or global config.
|
||||
|
||||
Override the global location with `LAST30DAYS_CONFIG_DIR=/path` (or `LAST30DAYS_CONFIG_DIR=""` for no-config mode). File permissions should be `600` on POSIX hosts - the engine warns on every run if they aren't.
|
||||
|
||||
The project-scoped file is useful for **intentional per-client setups**: drop a `.claude/last30days.env` into each client folder (`SCRAPECREATORS_API_KEY`, `INCLUDE_SOURCES`, `LAST30DAYS_MEMORY_DIR`, `BSKY_HANDLE`, etc), then opt in with `LAST30DAYS_TRUST_PROJECT_CONFIG=1` from your shell or `~/.config/last30days/.env`. Folder-mode hosts such as Codex desktop do not trust hidden project config by default, and discovery stops at the git root so unrelated parent folders cannot silently influence runs. The SessionStart status hook (`hooks/scripts/check-config.sh`) uses the same trust gate — an untrusted repo's `.claude/last30days.env` is not read at session start.
|
||||
|
||||
**`LAST30DAYS_API_KEY`** + **`LAST30DAYS_API_BASE`** - optional remote-API backend. Set BOTH to route research through a remote API endpoint instead of running the local sources: `LAST30DAYS_API_BASE` is the endpoint (there is no built-in default), and `LAST30DAYS_API_KEY` is the bearer key for it. When both are set (and `--mock` is not passed), the engine submits the topic to that endpoint, polls with progress on stderr, and prints the server's report; none of the per-source keys below are used for that run. A configured local corpus is the privacy exception: the engine bypasses the hosted backend and runs locally rather than forwarding file-derived input. Non-default `--register` selections are forwarded with the request so server-side synthesis uses the same audience preset. Leave either unset to run local sources exactly as normal. Unlike the other keys here, these two are read only from the **process environment** (export them in your shell or host config) - they are deliberately not loaded from the `.env` files above, so a project-scoped `.env` can never silently redirect research to a remote endpoint. The remote endpoint does not return the local `Report` needed for the versioned agent JSON profile; use `--emit=json --json-profile=raw` for its existing server-response JSON contract.
|
||||
|
||||
**`BRIGHTDATA_API_KEY`** - optional, for the `amazon` source. The Bright Data CLI normally owns its own auth via `brightdata login`, so this is only needed if you would rather keep an explicit key in `.env` or the keychain. It is resolved through the standard config layering and passed to the CLI through the child process environment, never on the command line (where it would be readable from `/proc/<pid>/cmdline` by other local users on a shared host).
|
||||
|
||||
**`LAST30DAYS_AMAZON_DOMAIN`** - optional, default `https://www.amazon.com`. The marketplace the `amazon` source searches; set it to `https://www.amazon.co.uk`, `https://www.amazon.de`, and so on. Product URLs are validated against this host, so records from other marketplaces are rejected.
|
||||
|
||||
### Local corpus (your files)
|
||||
|
||||
Register persistent directories with `LAST30DAYS_CORPUS_DIRS`. Separate paths with `:` on macOS/Linux (the platform path separator is `;` on Windows):
|
||||
|
||||
```bash
|
||||
# ~/.config/last30days/.env
|
||||
LAST30DAYS_CORPUS_DIRS=~/notes:~/meeting-transcripts
|
||||
# LAST30DAYS_CORPUS_IN_EXPORT=1 # explicit agent-JSON opt-in; off by default
|
||||
```
|
||||
|
||||
The slash-command experience remains primary: ask `/last30days` to include your registered notes. For direct engine scripting or development, the equivalent one-off invocation is:
|
||||
|
||||
```bash
|
||||
python3 skills/last30days/scripts/last30days.py "MCP servers" \
|
||||
--corpus ~/notes --corpus ~/meeting-transcripts
|
||||
```
|
||||
|
||||
**Privacy:** corpus files are read locally, never sent through a source HTTP client, never forwarded to `LAST30DAYS_API_BASE`, never included in remote reranker/fun-scoring prompts, and do not consume network-source concurrency or retry budget. Matches appear in a badged **From your files** section. Corpus candidates are removed from `--publish-html`, `library feed --publish`, and the versioned agent JSON export by default, including corpus-derived cluster titles and source outcomes. Set `LAST30DAYS_CORPUS_IN_EXPORT=1` only when you intentionally want corpus results in the agent JSON written to local stdout/files. The unversioned `--json-profile=raw` debug dump remains a full local report and can contain corpus text; do not redirect it to an external system unless that is intentional. Extracted text is cached by file mtime in `~/.config/last30days/corpus-cache.json` with mode `0600`; a corpus-bearing `last-report.json` cache is also tightened to `0600`. Delete either cache at any time to clear it.
|
||||
|
||||
**Source-by-source** - what each key unlocks:
|
||||
|
||||
| Source | Key(s) | Required for | Free tier |
|
||||
|---|---|---|---|
|
||||
| Local corpus | `--corpus <dir>` or `LAST30DAYS_CORPUS_DIRS` | private `.md`/`.txt`; `.pdf` when `pdftotext` is on PATH | yes (offline) |
|
||||
| Reddit (public) | none (default free keyless path). With `SCRAPECREATORS_API_KEY`: empty-only search backup by default; `LAST30DAYS_REDDIT_SC_MIN_ITEMS=<N>` backfills thin free runs; `LAST30DAYS_REDDIT_BACKEND=scrapecreators` pins SC primary with free fallback | always on; SC knobs require `SCRAPECREATORS_API_KEY` | yes |
|
||||
| Hacker News | none | always on | yes |
|
||||
| Polymarket | none | always on | yes |
|
||||
| StockTwits | none | auto-on for ticker/crypto topics only (gated by symbol detection); never registered for non-financial topics | yes (public API, ~200 req/hr per IP) |
|
||||
| DripStack | none | opt-in only: per run with `--search dripstack`, or persistently with `INCLUDE_SOURCES=dripstack` in `.env`. Searches premium financial newsletters and analyst writeups via a free, public search API — no key needed. Never active without the opt-in. | yes when opted in (public API, no auth) |
|
||||
| GitHub | `gh` CLI installed (uses your GitHub auth) | always on if `gh` present | yes |
|
||||
| YouTube | `yt-dlp` CLI installed; `SCRAPECREATORS_API_KEY` adds a server-side transcript fallback used only when yt-dlp fails (429 / bot-gate) | always on if `yt-dlp` present; SC transcript fallback default-on when key set (no credit spent unless yt-dlp fails) | yes |
|
||||
| YouTube comments | `yt-dlp` CLI installed — **free and keyless, no API key and no opt-in needed**. Falls back to `SCRAPECREATORS_API_KEY` + `INCLUDE_SOURCES` containing `youtube_comments` only when yt-dlp is absent. Suppress with `EXCLUDE_SOURCES=youtube_comments`. | top comments (by likes) on the top ~3 videos by engagement | yes — free via yt-dlp (no credits spent) |
|
||||
| TikTok comments | `SCRAPECREATORS_API_KEY` + `INCLUDE_SOURCES` contains `tiktok_comments` (**on by default** — Step 5 Recommended tier) | top comments (by `digg_count`) on the top ~3 TikTok posts | ~3 calls/run; 10K free calls |
|
||||
| Instagram comments | `SCRAPECREATORS_API_KEY` + `INCLUDE_SOURCES` contains `instagram_comments` (**on by default** — Step 5 Recommended tier) | top comments (by `comment_like_count`) on the top ~3 Instagram posts, via `/v2/instagram/post/comments` | ~3 calls/run; 10K free calls |
|
||||
| Digg | `digg-pp-cli` on PATH (auto-installed during first-run setup via `npx -y @mvanhorn/printing-press-library@0.1.16 install digg --cli-only`; binary defaults to `$HOME/.local/bin` — Hermes/OpenClaw agent subprocesses must inherit that dir on PATH for Digg to activate; prior pp-digg installs use the same path) | always on if `digg-pp-cli` on PATH | yes (free, keyless, read-only) |
|
||||
| arXiv | `arxiv-pp-cli` on PATH (auto-installed during first-run setup via `npx -y @mvanhorn/printing-press-library@0.1.16 install arxiv --cli-only`) | always on if `arxiv-pp-cli` on PATH; fires on research/technical topics and stays quiet otherwise (relevance + 365-day recency gating) | yes (free, keyless) |
|
||||
| Techmeme | `techmeme-pp-cli` on PATH (auto-installed via `... install techmeme --cli-only`) | always on if `techmeme-pp-cli` on PATH; searches Techmeme's live archive and keeps only headlines dated within the research window (undated headlines flow through as low-confidence) | yes (free, keyless) |
|
||||
| Trustpilot | `trustpilot-pp-cli` on PATH (NOT auto-installed; install on demand via `npx -y @mvanhorn/printing-press-library@0.1.16 install trustpilot --cli-only`) + (`INCLUDE_SOURCES` contains `trustpilot` **or** an explicit `--trustpilot-domain` / plan-level `trustpilot_domain`) | **opt-in, off by default**; `--trustpilot-domain=<domain>` (and per-entity `trustpilot_domain` in `--competitors-plan`) auto-activates the source for that run and bypasses the brand-shape gate. Persist with `INCLUDE_SOURCES=trustpilot` to skip per-run auto-enable. `EXCLUDE_SOURCES=trustpilot` still wins. Bare company names auto-resolve to the review-page domain via the CLI's search only when the source is already active. The session warms once before the search fan-out; a stale session does a ~10s headless-Chrome WAF-cookie harvest (set `LAST30DAYS_TRUSTPILOT_NO_BROWSER=1` to disable in cron/CI) | yes (no API key; cookie-replay after the one-time harvest) |
|
||||
| Amazon | `brightdata` CLI on PATH **and logged in** (NOT auto-installed: `npm i -g @brightdata/cli` then `brightdata login`) + (`INCLUDE_SOURCES` contains `amazon` **or** `--search` includes `amazon`) | product records with live rating, rating count, and price, plus a capped sample of recent written reviews woven as buyer voice; the emoji footer shows each product's all-time-vs-last-30-days drift | **opt-in, off by default**. Free tier is 5,000 requests/month (~$7.50 equivalent); a typical run spends 4 (1 product search + up to 3 review pulls) regardless of how many reviews come back, since billing is per request. Past the free tier it bills the account balance at $1.50 per 1,000 records (~$0.32 for a default run). `--amazon-query=<keyword>` sets the product keyword when it differs from the topic; `LAST30DAYS_AMAZON_DOMAIN` selects a non-US marketplace. `EXCLUDE_SOURCES=amazon` wins. Never auto-fires: the model requests it per run or the user enables it durably |
|
||||
| X / Twitter | one of: a signed-in `grok` CLI (no X credential), `AUTH_TOKEN` + `CT0` (browser cookies, Bird CLI), `XAI_API_KEY`, `XQUIK_API_KEY`, `SCRAPECREATORS_API_KEY`, or `FROM_BROWSER` (cookie-jar auth) | X items in results | grok = no X credential, draws on your Grok plan; cookie-jar / Bird = free; Xquik / xAI / ScrapeCreators = key-based |
|
||||
| TikTok | `SCRAPECREATORS_API_KEY` + `INCLUDE_SOURCES` contains `tiktok` | TikTok items | 10K free calls |
|
||||
| Instagram | `SCRAPECREATORS_API_KEY` + `INCLUDE_SOURCES` contains `instagram` | Instagram Reels | 10K free calls; raise `LAST30DAYS_TRANSCRIPT_TIMEOUT` (default 30s) if SC is slow on your network |
|
||||
| Threads | `SCRAPECREATORS_API_KEY` + `INCLUDE_SOURCES` contains `threads` | Threads items | 10K free calls |
|
||||
| Pinterest | `SCRAPECREATORS_API_KEY` + `INCLUDE_SOURCES` contains `pinterest` | Pinterest items | 10K free calls |
|
||||
| LinkedIn | `SCRAPECREATORS_API_KEY` + `INCLUDE_SOURCES` contains `linkedin` | LinkedIn posts + articles (articles rank as high signal on person topics) | 10K free calls; power-user opt-in, not offered during first-run onboarding |
|
||||
| Xiaohongshu (RED) | logged-in x-mcp browser plugin or `xiaohongshu-mcp` service; optional `XIAOHONGSHU_API_BASE` for custom URLs | requested-only via `--search xhs` or `--search xiaohongshu`; auto-probes `http://localhost:18060` then `http://host.docker.internal:18060` | no last30days API key; depends on your local browser-session service |
|
||||
| Bluesky | `BSKY_HANDLE` + `BSKY_APP_PASSWORD` | Bluesky items | yes (app password at bsky.app) |
|
||||
| TruthSocial | `TRUTHSOCIAL_TOKEN` | TruthSocial items | yes |
|
||||
| Web search | one of: `BRAVE_API_KEY`, `EXA_API_KEY`, `SERPER_API_KEY`, `PARALLEL_API_KEY` | `--auto-resolve` and Step 2 supplements | Brave has a free tier; native WebSearch on Claude Code / Codex / Gemini works as a fallback |
|
||||
| Perplexity Sonar / Search API / Deep Research | `PERPLEXITY_API_KEY` (preferred) or `OPENROUTER_API_KEY` (Sonar fallback) | `INCLUDE_SOURCES=perplexity`; `--deep-research` flag (~$0.90/query) | no |
|
||||
| Caption-free transcription | `GROQ_API_KEY` (free tier, preferred) or `OPENAI_API_KEY` (paid backstop); requires `ffmpeg` | Whisper transcription for audio/video without captions (groundwork: module shipped, not yet auto-invoked by the engine) | Groq free tier is generous; needs ffmpeg installed |
|
||||
| Jobs / careers pages | none for public ATS pages; web backend improves fallback discovery | `--hiring-signals` and strong Hiring Signals in standard company reports | yes |
|
||||
| Apify (alternate scraper) | `APIFY_API_TOKEN` | fallback for Reddit/TikTok/Instagram when ScrapeCreators is exhausted | yes (limited) |
|
||||
|
||||
**YouTube transcript tuning.** `LAST30DAYS_YT_SUB_LANGS` controls the comma-separated caption-language priority passed to yt-dlp and defaults to `en,es,pt`. When `SCRAPECREATORS_API_KEY` is available, yt-dlp uses one fast attempt before the paid fallback; set `LAST30DAYS_YT_TRANSCRIPT_FAST_TIMEOUT` to the number of seconds allowed for that attempt when a throttled host needs longer than the 12-second default. A VTT completed before the timeout is reused rather than discarded. `LAST30DAYS_YT_SEARCH_TIMEOUT` sets the per-search yt-dlp deadline (default 120s). Comparison-mode fan-out also caps concurrent yt-dlp processes process-wide and caches identical searches within a run so redundant `ytsearch` calls do not self-throttle the same IP.
|
||||
|
||||
**X backend priority (bird first).** The default X backend chain is bird (browser cookies) → xai (API key) → xurl (OAuth2 CLI) → xquik (API key). Cookies beat `XAI_API_KEY` when both are present. A leftover grok login never steals the X lane; see below.
|
||||
|
||||
**Grok CLI (opt-in backup).** Install the Grok CLI (`curl -fsSL https://x.ai/cli/install.sh | bash`) and run `grok login`, and X can work with no X account, no browser cookies, and no `XAI_API_KEY`. However, grok is **opt-in only**: a leftover `~/.grok/auth.json` must never steal the X lane. Pin `LAST30DAYS_X_BACKEND=grok` to enable it. It is not "free" in the way the cookie path is: calls draw on your Grok plan, and depth costs several calls per run because the underlying tool caps each search at 10 posts. Results are validated before use — every returned post's ID is decoded to confirm it falls inside the requested date range, because the retrieval is performed by a language model and can otherwise return confident, well-formed posts that were never searched for.
|
||||
|
||||
**X on cookie-less hosts.** Bird (the free X source) scrapes X using your logged-in browser cookies (`AUTH_TOKEN`/`CT0`), which agent hosts like OpenClaw, CI, or headless runs often can't supply — and scraping carries some account risk. On those, set `XQUIK_API_KEY` (or `XAI_API_KEY`) for full, ranked X coverage from a single API key: the same engagement-based ranking, first-party authorship, and handle (from/mentions) lanes the native X source gets. `--diagnose` reports whether the key is working (and flags an unpaid key).
|
||||
|
||||
**Example `.env` skeleton** (placeholders only - replace with your own values):
|
||||
|
||||
```bash
|
||||
# Reasoning + planning (one provider; see priority below)
|
||||
GOOGLE_API_KEY=<your-gemini-key>
|
||||
|
||||
# Web search backend (one is enough; Brave is the cheapest)
|
||||
BRAVE_API_KEY=<your-brave-key>
|
||||
|
||||
# Optional sources
|
||||
SCRAPECREATORS_API_KEY=<your-scrapecreators-key>
|
||||
INCLUDE_SOURCES=tiktok,instagram
|
||||
# Xiaohongshu is requested-only: run with --search xhs after starting a local
|
||||
# browser-session service. Defaults probe localhost, then host.docker.internal.
|
||||
# XIAOHONGSHU_API_BASE=http://localhost:18060
|
||||
# Add perplexity to INCLUDE_SOURCES when you want the paid Perplexity source.
|
||||
# PERPLEXITY_API_KEY=<your-perplexity-key>
|
||||
# INCLUDE_SOURCES=tiktok,instagram,perplexity
|
||||
# LAST30DAYS_PERPLEXITY_MODE=sonar # sonar | search | both
|
||||
# LAST30DAYS_PERPLEXITY_MODEL=sonar-pro # sonar | sonar-pro | sonar-reasoning-pro
|
||||
|
||||
# X authentication (one option only)
|
||||
AUTH_TOKEN=<your-auth-token>
|
||||
CT0=<your-ct0-token>
|
||||
# OR xAI API key (paid)
|
||||
# XAI_API_KEY=<your-xai-key>
|
||||
# OR Xquik key-based X search
|
||||
# XQUIK_API_KEY=<your-xquik-key>
|
||||
# OR cookie-jar (free; logs in via your browser session).
|
||||
# Unset = no browser-cookie reads. FROM_BROWSER=auto tries Firefox/Safari and
|
||||
# the Chromium family (Chrome, Brave, Edge, Vivaldi, Opera, Arc, Chromium); it
|
||||
# only prompts for macOS Keychain access on the browser that actually holds your
|
||||
# X cookies. Or name a single browser, e.g. brave/edge. On Windows only Firefox
|
||||
# is supported.
|
||||
# FROM_BROWSER=firefox
|
||||
|
||||
# Bluesky
|
||||
BSKY_HANDLE=<your-handle>.bsky.social
|
||||
BSKY_APP_PASSWORD=<your-app-password>
|
||||
```
|
||||
|
||||
After editing: `chmod 600 ~/.config/last30days/.env` (or `chmod 600 .claude/last30days.env` if using the project-scoped variant).
|
||||
|
||||
**Troubleshooting:** if a source you expected to see isn't appearing in results, run `python3 scripts/last30days.py --preflight` for a human permission summary or `python3 scripts/last30days.py --diagnose` for full JSON diagnostics. Both are safe: they report source availability, config source, browser-cookie plan, external command availability, write destinations, and ignored untrusted project config without reading browser cookies or running live provider probes.
|
||||
|
||||
### Perplexity source modes
|
||||
|
||||
Perplexity is a paid opt-in source. A direct `PERPLEXITY_API_KEY` unlocks first-party Perplexity features. `OPENROUTER_API_KEY` remains a Sonar compatibility fallback only; Perplexity Search API and async Deep Research call Perplexity directly.
|
||||
|
||||
`LAST30DAYS_PERPLEXITY_MODE` controls normal `perplexity` source runs:
|
||||
|
||||
| Value | Behavior | Calls |
|
||||
|---|---|---|
|
||||
| `sonar` (default) | Sonar synthesis plus citations. | one Sonar call |
|
||||
| `search` | Raw ranked Search API rows; best when you want source aggregation over prose. | one Search API call |
|
||||
| `both` | Sonar synthesis plus raw ranked Search API rows, deduped by URL. | one Search API call and one Sonar call |
|
||||
|
||||
`--deep-research` ignores `LAST30DAYS_PERPLEXITY_MODE` and uses `sonar-deep-research`. With `PERPLEXITY_API_KEY`, it submits to Perplexity's async Sonar endpoint and polls with a hard wall-clock timeout. The async request uses a deterministic idempotency key derived from the request body. If the request is still running at timeout, fails remotely, or polling hits a transport/rate-limit error after the async id exists, the raw artifact records the async request id, idempotency key, last status, lifecycle timestamps returned by Perplexity, poll count, and timeout/error fields so you can inspect or resume by id outside the run. With only `OPENROUTER_API_KEY`, it keeps the OpenRouter synchronous fallback.
|
||||
|
||||
Perplexity-specific env vars:
|
||||
|
||||
| Env var | Default | Applies to | Notes |
|
||||
|---|---|---|---|
|
||||
| `LAST30DAYS_PERPLEXITY_MODE` | `sonar` | normal Perplexity source runs | `sonar`, `search`, or `both`; `search` and `both` require `PERPLEXITY_API_KEY`. |
|
||||
| `LAST30DAYS_PERPLEXITY_MODEL` | `sonar-pro` | direct Sonar only | Supported: `sonar`, `sonar-pro`, `sonar-reasoning-pro`. `--deep-research` forces `sonar-deep-research`. |
|
||||
| `LAST30DAYS_PERPLEXITY_MAX_RESULTS` | `10` | Search API | Clamped to Perplexity's 1..20 range. |
|
||||
| `LAST30DAYS_PERPLEXITY_SEARCH_CONTEXT_SIZE` | provider default | Search API | `low`, `medium`, or `high`; omitted unless set. |
|
||||
| `LAST30DAYS_PERPLEXITY_SEARCH_MODE` | provider default | direct Sonar | `web`, `academic`, or `sec`. |
|
||||
| `LAST30DAYS_PERPLEXITY_DOMAIN_FILTER` | unset | Search API and direct Sonar | Comma-separated domains, max 20. |
|
||||
| `LAST30DAYS_PERPLEXITY_LANGUAGE_FILTER` | unset | Search API and direct Sonar | Comma-separated ISO 639-1 language codes, max 20. |
|
||||
| `LAST30DAYS_PERPLEXITY_COUNTRY` | unset | Search API | Two-letter country code such as `US`. |
|
||||
| `LAST30DAYS_PERPLEXITY_RECENCY_FILTER` | unset | Search API and direct Sonar | `hour`, `day`, `week`, `month`, or `year`. |
|
||||
| `LAST30DAYS_PERPLEXITY_REASONING_EFFORT` | unset | direct Sonar | `minimal`, `low`, `medium`, or `high`. |
|
||||
| `LAST30DAYS_PERPLEXITY_DEEP_TIMEOUT_SECONDS` | `600` | direct async Deep Research | Wall-clock polling deadline. |
|
||||
|
||||
### Encrypted credential sources (Keychain / pass)
|
||||
|
||||
If you'd rather not keep keys in a plaintext `.env`, the loader has two
|
||||
encrypted sources that decrypt secrets transiently at call time (never written
|
||||
to disk, never logged). Both are **lowest-priority and additive** — an explicit
|
||||
`.env` or process-env value always overrides them, so you can mix and match. The
|
||||
`pass` source is only consulted for keys still missing after the higher-priority
|
||||
sources, so a box that merely has `pass` installed pays no decrypt cost when
|
||||
everything is already in `.env`.
|
||||
|
||||
Effective credential priority is: process env > trusted project config
|
||||
(`.claude/last30days.env`) > global config (`~/.config/last30days/.env`) >
|
||||
macOS Keychain > `pass`(1). The SessionStart status hook also checks for
|
||||
Keychain item **presence** under `last30days-<KEY>` without reading secret
|
||||
values, so a Keychain-only setup is treated as configured instead of showing the
|
||||
first-run welcome again.
|
||||
|
||||
| Platform | Source | Store keys with | Lookup convention |
|
||||
|---|---|---|---|
|
||||
| macOS | Keychain | `scripts/setup-keychain.sh` | service name `last30days-<KEY>` |
|
||||
| Linux / Unix (anywhere `pass` exists, incl. macOS) | [`pass`(1)](https://www.passwordstore.org/) | `scripts/setup-pass.sh` | pass path `last30days/<KEY>` |
|
||||
|
||||
```bash
|
||||
# macOS Keychain
|
||||
./scripts/setup-keychain.sh # interactive; --list / --delete KEY
|
||||
|
||||
# pass(1) — Linux/Unix analog
|
||||
./scripts/setup-pass.sh # interactive; --list / --delete KEY
|
||||
./scripts/setup-pass.sh SCRAPECREATORS_API_KEY # just one key
|
||||
```
|
||||
|
||||
The `pass` source honors `PASSWORD_STORE_DIR`. If your store organizes secrets
|
||||
under a different prefix, point the loader at it with `LAST30DAYS_PASS_PREFIX`
|
||||
(works from your `.env` too, and must match where `setup-pass.sh` wrote them).
|
||||
The prefix is used verbatim, so keep the trailing separator:
|
||||
|
||||
```bash
|
||||
export LAST30DAYS_PASS_PREFIX="secrets/last30days/" # default: last30days/
|
||||
```
|
||||
|
||||
Both sources cover the same key set as the `.env` skeleton above.
|
||||
|
||||
#### Reusing existing macOS Keychain items
|
||||
|
||||
If you already have keys stored under another Keychain naming convention, you
|
||||
can reference them without copying the secret by setting non-secret alias
|
||||
metadata in `LAST30DAYS_KEYCHAIN_ALIASES`. The loader still checks
|
||||
`last30days-<KEY>` first; aliases are fallback lookups only.
|
||||
|
||||
```bash
|
||||
# ~/.config/last30days/.env
|
||||
LAST30DAYS_KEYCHAIN_ALIASES={"XAI_API_KEY":{"account":"keychain-user","service":"existing-xai-api-key"},"BRAVE_API_KEY":"existing-brave-api-key"}
|
||||
```
|
||||
|
||||
Each JSON key must be one of the supported env-var names (`XAI_API_KEY`,
|
||||
`SCRAPECREATORS_API_KEY`, `BRAVE_API_KEY`, etc). A string value means "use this
|
||||
service name with the current user account"; an object can specify both
|
||||
`account` and `service`. Lists are allowed for fallback order:
|
||||
|
||||
```bash
|
||||
LAST30DAYS_KEYCHAIN_ALIASES={"XAI_API_KEY":[{"account":"keychain-user","service":"existing-xai-api-key"},{"service":"last-resort-xai"}]}
|
||||
```
|
||||
|
||||
The alias value contains no secret material; it is safe to keep in `.env` as
|
||||
configuration. The secret itself remains in its original Keychain item and is
|
||||
read directly by the engine process.
|
||||
|
||||
Write `LAST30DAYS_KEYCHAIN_ALIASES` as a single-line JSON value in `.env`.
|
||||
Multiline JSON formatting is not supported because `.env` files are parsed
|
||||
line-by-line.
|
||||
|
||||
### Bluesky app-password format and search host
|
||||
|
||||
`BSKY_APP_PASSWORD` should be a 19-char app password in `xxxx-xxxx-xxxx-xxxx` format (lowercase alphanumeric, three hyphens). Generate one at <https://bsky.app/settings/app-passwords>. The AT Protocol's `createSession` endpoint also accepts your main account login password, but that's bad hygiene — main passwords have no scope (an app password can be limited to non-DM access) and can't be revoked individually.
|
||||
|
||||
The skill defaults to `api.bsky.app` for `searchPosts`, which is the canonical authenticated AppView. The previous default `public.api.bsky.app` is the unauthenticated public mirror and is currently blocked by BunnyCDN for `searchPosts` regardless of auth header (verified 2026-05-04). If Bluesky migrates infrastructure again, override the host without a code change by setting `BSKY_SEARCH_HOST` in your `.env`:
|
||||
|
||||
```bash
|
||||
BSKY_SEARCH_HOST=api.bsky.app # default — change only if Bluesky moves
|
||||
```
|
||||
|
||||
### Default source set (`LAST30DAYS_DEFAULT_SEARCH`)
|
||||
|
||||
By default the engine decides the source set per query (everything available, minus `EXCLUDE_SOURCES`). To pin a **fixed** source set for every run without passing `--search` each time — and without patching `SKILL.md`, which a release would overwrite — set:
|
||||
|
||||
```bash
|
||||
LAST30DAYS_DEFAULT_SEARCH=reddit,x,youtube,hn
|
||||
```
|
||||
|
||||
Accepts the same comma-separated names and aliases as `--search` (`web` → grounding, `hn` → hackernews, `bsky` → bluesky, `xhs` → xiaohongshu). Precedence: an explicit `--search` on the command line always wins; `LAST30DAYS_DEFAULT_SEARCH` applies only when the flag is omitted; when neither is set, per-query behavior is unchanged. `INCLUDE_SOURCES` / `EXCLUDE_SOURCES` keep their existing additive/subtractive roles on whichever set is selected.
|
||||
|
||||
### Audience register (`LAST30DAYS_REGISTER`)
|
||||
|
||||
The default standard brief stays balanced and byte-compatible with prior releases. To keep a named audience preset across runs, set one of the supported values:
|
||||
|
||||
```bash
|
||||
LAST30DAYS_REGISTER=exec # default | exec | dev | creator | eli5
|
||||
```
|
||||
|
||||
An explicit `--register` wins over `LAST30DAYS_REGISTER`; the environment/config value defaults to `default`. Presets are intentionally named and bounded - arbitrary prompt or template files are not accepted. Existing `ELI5_MODE=true` configurations continue to resolve to the `eli5` register when no explicit register is selected, but new configuration should use `LAST30DAYS_REGISTER=eli5`.
|
||||
|
||||
---
|
||||
|
||||
## Reasoning provider priority
|
||||
|
||||
`/last30days` needs one reasoning model for planning + reranking when you don't pass `--plan` yourself. Auto-detect priority (set `LAST30DAYS_REASONING_PROVIDER=<name>` to pin one):
|
||||
|
||||
1. **Gemini** - `GOOGLE_API_KEY` / `GEMINI_API_KEY` / `GOOGLE_GENAI_API_KEY`
|
||||
2. **OpenAI** - `OPENAI_API_KEY` only. Codex ChatGPT auth at `~/.codex/auth.json` is intentionally not used as an OpenAI provider credential.
|
||||
3. **xAI** - `XAI_API_KEY`
|
||||
4. **OpenRouter** - `OPENROUTER_API_KEY` (Sonar fallback for the Perplexity source / `--deep-research`; also usable as a reasoning provider)
|
||||
5. **Local / deterministic** - always available, lowest quality
|
||||
|
||||
When you invoke `/last30days` from Claude Code, Codex, or Gemini, the host model **is** the reasoning provider for plan + synthesis - you don't need any of the keys above unless you also run the script headlessly (cron, CI, watchlist).
|
||||
|
||||
---
|
||||
|
||||
## Web search backend priority
|
||||
|
||||
The search-source preference ladder, strict best-to-floor:
|
||||
|
||||
1. **Host web search** - whatever web-search capability the agent session already has: built-in search, a deferred web-search tool that must be loaded first, or an installed connector such as Brave, Firecrawl, Exa, Serper, or another provider. Best results; used automatically on hosts that have it. A failed lookup for one specific tool name is not fatal when another web-search capability is available. Signalled to the engine via `LAST30DAYS_NATIVE_SEARCH=1` (the skill sets this for you when your agent session has web search) so the engine does not run a worse search underneath it.
|
||||
2. **Paid engine backend** - one of `BRAVE_API_KEY`, `EXA_API_KEY`, `SERPER_API_KEY`, `PARALLEL_API_KEY`, auto-detected in that order. Override per-run with `--web-backend=<name>`.
|
||||
3. **Keyless engine floor** - zero-key web search (DuckDuckGo, plus an optional SearXNG instance) and zero-key page fetch (Jina Reader). Runs only when the agent session has **no** host web search **and** no paid key is set, so headless/cron and hosts without a search tool still get general-web coverage. Force it explicitly with `--web-backend=keyless`.
|
||||
|
||||
Relevant env vars:
|
||||
|
||||
| Var | Effect |
|
||||
| --- | --- |
|
||||
| `LAST30DAYS_NATIVE_SEARCH=1` | Tells the engine your agent session has host-side web search; suppresses the keyless floor. Set automatically by the skill when web search is available. Leave unset when the agent has no web-search tool so the floor runs. |
|
||||
| `LAST30DAYS_SEARXNG_URL=<base-url>` | Optional. A SearXNG instance used as the keyless-search fallback rung when DuckDuckGo returns nothing. |
|
||||
| `LAST30DAYS_TRUSTPILOT_NO_BROWSER=1` | Optional. Truthy value disables the Trustpilot source's one-time headless-Chrome WAF-cookie harvest, so an automated/headless run (cron, CI, the eval harness) never spawns a browser. Trustpilot still degrades to empty gracefully. |
|
||||
|
||||
Privacy note: the keyless floor sends the query (to DuckDuckGo / your SearXNG instance) and any fetched URL (to Jina Reader) to those third parties. It is intended for public-research use; results may be cached snapshots. It never runs when native search or a paid backend is in play.
|
||||
|
||||
Visible quality difference between hosts with vs without native search or a configured backend. If your client setup produces thinner results than yours, this is usually why.
|
||||
|
||||
---
|
||||
|
||||
### `--hiring-signals` flag
|
||||
|
||||
Use `--hiring-signals` for a focused company hiring-signal report:
|
||||
|
||||
```bash
|
||||
python3 skills/last30days/scripts/last30days.py "Listen Labs" --hiring-signals
|
||||
```
|
||||
|
||||
The engine treats public jobs/careers postings as evidence of focus or priority shifts, not exact roadmap predictions. Standard company runs may include Hiring Signals automatically when multiple current roles support the same interpretation; weak or unavailable hiring evidence is omitted.
|
||||
|
||||
---
|
||||
|
||||
## Health check (`doctor`)
|
||||
|
||||
One command answers "what could be on, what's turned on, what's working, and what isn't" — a four-state audit (WORKING / TURNED ON - UNVERIFIED / NOT WORKING / COULD BE ON), one line per source, with a CLI-health block for sources that need a downloaded binary, indented backup/comment sub-lanes, the backend the next run will use (for chained sources), and an exact fix on anything that isn't working:
|
||||
|
||||
```bash
|
||||
python3 skills/last30days/scripts/last30days.py doctor # four-state audit (text)
|
||||
python3 skills/last30days/scripts/last30days.py doctor --json # machine contract
|
||||
python3 skills/last30days/scripts/last30days.py doctor --cached # serve the cached report while fresh
|
||||
python3 skills/last30days/scripts/last30days.py doctor --postmortem # what actually broke on the last run
|
||||
python3 skills/last30days/scripts/last30days.py doctor --probe # bounded live test (free/CLI sources)
|
||||
```
|
||||
|
||||
Slash-command form: `/last30days doctor`. Reporting problems is a successful run — the exit code is always 0, no browser cookies are read, and no secret values appear anywhere (key presence is booleans only). Backends within a chained source are probed sequentially with a 5-second budget per binary probe, so a chained source's worst-case check time is additive across its backends (only reached when several binaries hang at once).
|
||||
|
||||
`doctor --postmortem` reads the last run's `last-report.json` (any age, labeled) and reports what actually happened per source — Failed / Partial / Succeeded / Skipped, with details and fix hints — so a run that returned less than expected can be diagnosed after the fact. It makes no network calls.
|
||||
|
||||
**Network note:** plain `doctor` with a fresh run, `--cached`, and `--json` make **no** network calls. `doctor --probe` — and a plain `doctor` when there is **no** fresh run to learn from — run a **bounded** live test to verify WORKING instead of guessing. The probe is scoped to free HTTP endpoints (Reddit, Hacker News, Polymarket, GitHub) plus keyless CLIs; credit-gated sources (X, TikTok, Instagram, Threads, …) are never probed, so no ScrapeCreators credits are spent and no auth rate limits are tripped. Each source is probed concurrently under a per-source deadline so a slow source can never hang the command.
|
||||
|
||||
Every live run writes its JSON result to `~/.config/last30days/doctor-cache.json` (beside `last-run.json`; honors `LAST30DAYS_CONFIG_DIR`). `doctor --cached` returns that stored report when it is younger than the TTL, and falls through to a live run — rewriting the cache — when it is stale, absent, or corrupt. The cache also self-invalidates on configuration change: the payload carries a schema stamp plus a fingerprint of non-secret config signals (which credentials are present as booleans, the `LAST30DAYS_X_BACKEND` / `LAST30DAYS_REDDIT_BACKEND` pin values, and `INCLUDE_SOURCES`), so adding or removing a key, changing a pin, or toggling an opt-in source makes the next `--cached` call run live — no raw secret ever enters the fingerprint or the file. Every report also carries `from_cache` (true/false) and `generated_at` (when the report was built), in the `--json` top level and as a final `generated: … (cached|live)` text line, so you can always tell how old a cached answer is. A failed cache write is never fatal — doctor prints a one-line stderr warning and continues. An explicit `doctor` without `--cached` always runs live and refreshes the cache.
|
||||
|
||||
| Var | Effect |
|
||||
| --- | --- |
|
||||
| `LAST30DAYS_DOCTOR_TTL` | Freshness window for `doctor --cached`, in **seconds**. Defaults to `900` (15 minutes). `0` makes every `--cached` call run live. |
|
||||
| `LAST30DAYS_DOCTOR_PROBE_TIMEOUT` | Per-source deadline (**seconds**) for `doctor --probe` live checks. Defaults to `10`. Caps each concurrent probe so a slow source cannot hang the command. |
|
||||
| `LAST30DAYS_X_BACKEND` | Pins the X backend (`bird` / `xai` / `xurl` / `xquik` / `grok`); doctor renders the pin and predicts "will use" accordingly. The unpinned auto chain is bird → xai → xurl → xquik (grok is opt-in only). Pin `grok` to enable it; a leftover `~/.grok/auth.json` is never auto-selected. |
|
||||
| `LAST30DAYS_REDDIT_BACKEND` | `scrapecreators` makes ScrapeCreators the primary Reddit backend; doctor renders Reddit's conditional routing with the pin applied. |
|
||||
| `LAST30DAYS_REDDIT_SC_MIN_ITEMS` | Integer thinness floor for ScrapeCreators Reddit **search** backfill. Default `0` = empty-only (free path keeps any non-empty result; no credit spend). Set above `0` to backfill when free yield is below that count; merged results dedupe by post id. Requires `SCRAPECREATORS_API_KEY`. Ignored when `LAST30DAYS_REDDIT_BACKEND=scrapecreators` (SC is already primary). |
|
||||
|
||||
Web search has **no** env pin — pin it per-run with `--web-backend=<name>` only (see [Web search backend priority](#web-search-backend-priority)).
|
||||
|
||||
### Strict exit for degraded runs
|
||||
|
||||
By default a research run exits `0` even when a source failed mid-run (rate-limited, auth-failed, unreachable, timeout, schema-drift) — the report still renders, with the failure annotated in the per-source footer and a partial-coverage warning. Wrappers that need to distinguish degraded coverage from success (cron briefs, CI, downstream agents) can opt in:
|
||||
|
||||
| Var | Effect |
|
||||
| --- | --- |
|
||||
| `LAST30DAYS_STRICT_EXIT` | Truthy (`1`/`true`/`yes`/`on`): the engine exits `3` when any source outcome is neither `ok`, `no-results`, nor `skipped-unconfigured`. A one-line `strict-exit: degraded sources: ...` note goes to stderr. Default (unset): exit `0`, unchanged behavior. |
|
||||
|
||||
Exit codes with the flag on: `0` clean run, `3` completed-but-degraded (report was produced), non-zero others unchanged (hard failures). Same hybrid pattern as `LAST30DAYS_DEBUG` — works shell-exported or in `.env`.
|
||||
|
||||
---
|
||||
|
||||
## Debug mode (`--debug`)
|
||||
|
||||
Add `--debug` to any run to emit verbose `[DEBUG]` log lines to stderr from the source modules (X API, HTTP, etc.). Helpful for diagnosing API errors or unexpected behavior.
|
||||
|
||||
**Always-on alternative:** set `LAST30DAYS_DEBUG=true` in your `.env` or export it from your shell. The flag still works as before; the env var is purely additive — works whether shell-exported or set in `.env`.
|
||||
|
||||
---
|
||||
|
||||
## Trend monitoring (`--store` + watchlist + briefings)
|
||||
|
||||
The default behavior - one slug-named file per topic, overwritten on rerun - is the snapshot mode. For continuous monitoring, the repo ships three components most users miss:
|
||||
|
||||
### `--store` flag
|
||||
|
||||
Adding `--store` to any run persists every finding to a SQLite database (default at `~/.local/share/last30days/research.db`). Findings dedupe on the `source_url` column (UNIQUE constraint), so the same URL across runs updates the existing row instead of creating a duplicate. The markdown file still saves; the SQLite is the time-series substrate.
|
||||
|
||||
**Always-on alternative:** set `LAST30DAYS_STORE=1` in your `.env` instead of remembering `--store` on every invocation. The flag still works as before; the env var is purely additive. Same hybrid pattern as `LAST30DAYS_DEBUG` — works whether shell-exported or in `.env`.
|
||||
|
||||
Relevant tables: `topics`, `research_runs`, `findings`, `settings`. Schema: [`scripts/store.py`](skills/last30days/scripts/store.py).
|
||||
|
||||
### Discovery topic queue (`LAST30DAYS_DISCOVERY_QUEUE`)
|
||||
|
||||
`--discover` runs remember what they surfaced (table `discovery_topics` in the same research.db). Re-surfaced topics get a `**Pipeline:**` line on their card ("surfaced 2nd time", "marked covered") so the discovery brief doubles as a podcast / X-article content pipeline. On by default for real runs; `--mock` runs never write. With `--save-dir`, queue rows land in that directory's scoped `research.db`, never the global one.
|
||||
|
||||
| Var | Effect |
|
||||
| --- | --- |
|
||||
| `LAST30DAYS_DISCOVERY_QUEUE` | Set to `off` to disable queue writes and card annotations. Any other value (or unset) keeps the queue on. Works shell-exported or in `.env`. |
|
||||
| `LAST30DAYS_ENRICH_BUDGET_SECONDS` | Wall-clock budget (seconds) for the deep-tier per-topic research batch on the discovery resume leg (`--discover --judgments <file>`). Default `450`; unset/invalid/non-positive values fall back to it. The one-shot `--discover` path keeps its fixed quick-tier 240s budget regardless. Works shell-exported or in `.env`. |
|
||||
|
||||
Manage the queue from the engine CLI:
|
||||
|
||||
```bash
|
||||
# Uncovered surfaced topics (name, domain, surface_count, last_surfaced, status)
|
||||
python3 skills/last30days/scripts/last30days.py queue list
|
||||
|
||||
# Mark a topic done after you record the episode / publish the article.
|
||||
# Requires the exact topic name; unknown names exit 2 instead of no-opping.
|
||||
python3 skills/last30days/scripts/last30days.py queue cover "Gemma 4 chat templates"
|
||||
```
|
||||
|
||||
Both respect `--save-dir` scoping.
|
||||
|
||||
### `watchlist.py` - recurring topics
|
||||
|
||||
[`scripts/watchlist.py`](skills/last30days/scripts/watchlist.py) manages topics that should be researched on a schedule. Subcommands: `add`, `remove`, `list`, `run-one`, `run-all`, `config`. Built-in delivery to Slack incoming webhooks (`hooks.slack.com/...`) or any HTTPS endpoint, fired only when new findings appear.
|
||||
|
||||
Two-step flow (the watchlist holds the topic; an external scheduler invokes the run):
|
||||
|
||||
```bash
|
||||
# 1. Add the topic to the watchlist
|
||||
# Default schedule daily 8am; --weekly switches to Mondays 8am
|
||||
python3 scripts/watchlist.py add "british airways middle east" --weekly
|
||||
|
||||
# 2. Configure delivery and budget (optional)
|
||||
python3 scripts/watchlist.py config delivery "https://hooks.slack.com/services/..."
|
||||
python3 scripts/watchlist.py config budget 5.00
|
||||
|
||||
# 3. Trigger via cron / Task Scheduler / GitHub Actions
|
||||
python3 scripts/watchlist.py run-one "british airways middle east"
|
||||
# or run every enabled topic, gated by daily_budget
|
||||
python3 scripts/watchlist.py run-all
|
||||
```
|
||||
|
||||
The schedule field stored on each topic is metadata - the actual cron / Task Scheduler invocation is your responsibility. Watchlist runs hardcode `--quick` and `--lookback-days 90` when spawning the underlying engine.
|
||||
|
||||
### `briefing.py` - daily / weekly digests
|
||||
|
||||
[`scripts/briefing.py`](skills/last30days/scripts/briefing.py) reads the SQLite store and emits structured data the agent then synthesizes into prose. Modes: `generate` (daily), `generate --weekly`, `show [--date DATE]` (display a saved briefing). Briefs save to `~/.local/share/last30days/briefs/`.
|
||||
|
||||
### Recommended cadence pattern
|
||||
|
||||
| Step | Cadence | Command |
|
||||
|---|---|---|
|
||||
| Baseline | one-time per topic | `/last30days "<topic>" --days=30 --store` |
|
||||
| Add to watchlist | one-time per topic | `python3 scripts/watchlist.py add "<topic>" --weekly` |
|
||||
| Recurring run | daily or weekly (external scheduler) | `python3 scripts/watchlist.py run-all` |
|
||||
| Digest | weekly | `python3 scripts/briefing.py generate --weekly` |
|
||||
|
||||
---
|
||||
|
||||
## Per-client patterns
|
||||
|
||||
The skill is built to flex around different client environments. Four patterns that compose well:
|
||||
|
||||
**Codex note:** the repository includes `.codex-plugin/plugin.json` so Codex can treat the existing
|
||||
`skills/last30days/SKILL.md` tree as plugin metadata without maintaining a separate Codex copy.
|
||||
The Codex marketplace catalog points at the repository root URL: Codex clones the repo, reads the
|
||||
root `.codex-plugin/plugin.json`, and loads skills from `./skills/`. The Agent Skills install
|
||||
command documented in the README remains the broadest cross-host path.
|
||||
|
||||
**Grok note:** the repository includes `.grok-plugin/plugin.json` and `.grok-plugin/marketplace.json`
|
||||
so xAI's Grok Build CLI (`grok`) can install last30days as a native plugin. Grok also reads the
|
||||
Claude Code manifests for compatibility; the native pair is the first-class lane. The Grok
|
||||
marketplace catalog uses a bare Git URL source (no commit pin) so `grok plugin marketplace add
|
||||
mvanhorn/last30days-skill` tracks HEAD — the same pattern as the Codex catalog. `npx skills add`
|
||||
remains a valid cross-host fallback.
|
||||
|
||||
### 1. Trusted per-client `.claude/last30days.env`
|
||||
|
||||
When each client has its own working directory, drop a `.claude/last30days.env` into the client folder and opt in with `LAST30DAYS_TRUST_PROJECT_CONFIG=1` from your shell or global `~/.config/last30days/.env`. The skill loads the project file only after that trust signal. Typical contents:
|
||||
|
||||
```bash
|
||||
LAST30DAYS_MEMORY_DIR=C:\Users\<you>\Clients\acme\Research\Last30Days
|
||||
SCRAPECREATORS_API_KEY=<acme-scoped-key-or-shared>
|
||||
INCLUDE_SOURCES=tiktok,instagram
|
||||
BSKY_HANDLE=<acme-bluesky-handle>.bsky.social
|
||||
```
|
||||
|
||||
`cd` into the client folder, run `/last30days <topic>` as normal, no wrappers. Combine with `--save-suffix=<client-slug>` per run if you also need to differentiate filenames within that folder.
|
||||
|
||||
### 2. Per-client save dir + suffix wrapper
|
||||
|
||||
For workflows where you don't `cd` into a client folder (running from anywhere, scripted batches), a tiny shell function isolates each client's research without engine changes.
|
||||
|
||||
PowerShell example:
|
||||
|
||||
```powershell
|
||||
function Run-L30D-Client {
|
||||
param([string]$ClientSlug, [Parameter(ValueFromRemainingArguments=$true)]$Args)
|
||||
$env:LAST30DAYS_MEMORY_DIR = "C:\Users\$env:USERNAME\Clients\$ClientSlug\Research\Last30Days"
|
||||
/last30days @Args --save-suffix=$ClientSlug
|
||||
}
|
||||
# Usage: Run-L30D-Client acme "british airways middle east"
|
||||
```
|
||||
|
||||
Bash example:
|
||||
|
||||
```bash
|
||||
l30d-client() {
|
||||
local client=$1; shift
|
||||
LAST30DAYS_MEMORY_DIR="$HOME/Clients/$client/Research/Last30Days" \
|
||||
/last30days "$@" --save-suffix="$client"
|
||||
}
|
||||
# Usage: l30d-client acme "british airways middle east"
|
||||
```
|
||||
|
||||
### 3. Custom category-peer subreddits
|
||||
|
||||
[`scripts/lib/categories.py`](skills/last30days/scripts/lib/categories.py) holds a table of `(category_id, trigger_keywords, peer_subreddits)`. If a client lives in a vertical that isn't covered (legal-tech, real-estate-tech, B2B HR SaaS), add a row. Pure data, no logic.
|
||||
|
||||
Section 2a of `SKILL.md` documents the merging rule the skill applies when your topic matches a category.
|
||||
|
||||
### 4. Pre-built `--competitors-plan` JSON
|
||||
|
||||
For competitor-vs-comparisons that recur, a pre-written JSON skeleton per client industry saves real time:
|
||||
|
||||
```json
|
||||
{
|
||||
"Competitor B": {
|
||||
"x_handle": "competitor_b_handle",
|
||||
"subreddits": ["sub1", "sub2"],
|
||||
"github_user": "competitor-b-org",
|
||||
"context": "Founded 2019, focused on ..."
|
||||
},
|
||||
"Competitor C": { ... }
|
||||
}
|
||||
```
|
||||
|
||||
Pass as `--competitors-plan @client/competitors-plan.json` (or as a string). See `SKILL.md` section "If QUERY_TYPE = COMPARISON" for the full schema.
|
||||
|
||||
---
|
||||
|
||||
## Beta channel
|
||||
|
||||
Experimental customizations live on a private companion repo (`mvanhorn/last30days-skill-private`) installed as `/last30days-beta`. Never ship beta-only changes to the public marketplace without a review PR against the public repo. Workflow guide: `BETA.md` in the private repo.
|
||||
|
||||
This is the right home for client-specific changes you don't intend to upstream - custom category rows, internal subreddit lists, per-vertical plan templates.
|
||||
|
||||
---
|
||||
|
||||
## Cross-references
|
||||
|
||||
- The CLI flag surface: `python3 scripts/last30days.py --help`
|
||||
- The skill contract (voice, LAWs, pre-flight protocol): [`skills/last30days/SKILL.md`](skills/last30days/SKILL.md)
|
||||
- Shared package vocabulary and engine/harness terminology: [`CONCEPTS.md`](CONCEPTS.md)
|
||||
- Contributor guidance: [`CONTRIBUTORS.md`](CONTRIBUTORS.md)
|
||||
@@ -0,0 +1,57 @@
|
||||
# Contributing
|
||||
|
||||
Thanks for helping with last30days. Most PRs here are opened by coding agents following [`AGENTS.md`](AGENTS.md); this file is the short path for humans and agents alike.
|
||||
|
||||
## Setup
|
||||
|
||||
Python **3.12+**. From the repo root:
|
||||
|
||||
```bash
|
||||
uv sync --group dev
|
||||
uv run pytest
|
||||
```
|
||||
|
||||
That installs pytest/coverage and **towncrier** into the project env. You do **not** need a global towncrier install for normal contributions.
|
||||
|
||||
## Day-to-day PRs (no towncrier CLI)
|
||||
|
||||
1. Make your change and add/update tests.
|
||||
2. If it should show up in the next release notes, add a fragment:
|
||||
```bash
|
||||
# Prefer the PR or issue number when you know it:
|
||||
# changelog.d/<number>.<type>.md
|
||||
# Orphan (no number yet):
|
||||
# changelog.d/+short-slug.<type>.md
|
||||
```
|
||||
Types: `added`, `changed`, `fixed`, `removed`, `deprecated`, `security`.
|
||||
Details: [`changelog.d/README.md`](changelog.d/README.md).
|
||||
3. Fill out [`.github/PULL_REQUEST_TEMPLATE.md`](.github/PULL_REQUEST_TEMPLATE.md) — Summary (“what does this PR do”), Testing, Changelog, Agent disclosure, Relationship.
|
||||
4. Do **not** edit `CHANGELOG.md` and do **not** bump version strings in `pyproject.toml`, `SKILL.md`, plugin/marketplace JSON, or `uv.lock`. CI enforces that.
|
||||
|
||||
Chores with nothing for the release notes: check Skip changelog in the template and add the `skip-changelog` label.
|
||||
|
||||
Fragments are plain Markdown files. **towncrier is only used when cutting a release** (locally via `uv run` or in GitHub Actions) — contributors never run it for a feature PR.
|
||||
|
||||
## Releases (maintainers)
|
||||
|
||||
Prefer **Actions → Prepare release** (patch / minor / major). That opens a lockstep version PR (towncrier builds `CHANGELOG.md`, bumps every plugin/marketplace surface). Merging to `main` tags `vX.Y.Z` and the existing Release workflow publishes artifacts.
|
||||
|
||||
Local equivalent (after `uv sync --group dev`):
|
||||
|
||||
```bash
|
||||
uv run python .github/scripts/prepare_release.py --bump patch # or --version X.Y.Z
|
||||
```
|
||||
|
||||
More detail: `AGENTS.md` § Changelog and releases, and `docs/solutions/workflow-issues/towncrier-lockstep-release.md`.
|
||||
|
||||
## Tests
|
||||
|
||||
```bash
|
||||
uv run pytest
|
||||
uv run pytest tests/test_dedupe_v3.py -k some_case
|
||||
uv run pytest --cov
|
||||
```
|
||||
|
||||
## Security
|
||||
|
||||
Never commit real API keys, cookies, tokens, or `.env` contents. Use dummy values in tests and fixtures.
|
||||
@@ -0,0 +1,60 @@
|
||||
# Contributors
|
||||
|
||||
last30days is built by [@mvanhorn](https://github.com/mvanhorn) with help from the community.
|
||||
|
||||
## v3 Inspiration
|
||||
|
||||
These contributors submitted PRs and issues that directly inspired v3 features. The v3 engine was a ground-up rewrite, so their original code wasn't merged, but their ideas shaped what shipped.
|
||||
|
||||
Want to claim your entry? Submit a PR replacing the placeholder line below your name with your bio, website, or anything you'd like.
|
||||
|
||||
---
|
||||
|
||||
### @uppinote20
|
||||
[PR #143](https://github.com/mvanhorn/last30days-skill/pull/143) - Rich Reddit comments, top 3 per post
|
||||
v3 ships top comments with upvote counts on every thread.
|
||||
> _Add your bio, website, or anything you'd like here._
|
||||
|
||||
### @zerone0x
|
||||
[Issue #134](https://github.com/mvanhorn/last30days-skill/issues/134) + [PR #136](https://github.com/mvanhorn/last30days-skill/pull/136) - GitHub as a first-class data source
|
||||
v3 has full GitHub search: issues, PRs, person-mode profiles, project-mode repos with live star counts.
|
||||
> _Add your bio, website, or anything you'd like here._
|
||||
|
||||
### @thinkun
|
||||
[PR #116](https://github.com/mvanhorn/last30days-skill/pull/116) - Resilient Reddit, prevent enrichment timeout from discarding results
|
||||
v3 has parallel enrichment with per-item timeouts. No results are ever dropped.
|
||||
> Thinker, technologist, AI expert, music-tinkerer. Founder of [Thinkun](https://thinkun.com). [@thinkun on GitHub](https://github.com/thinkun) · [@unthink on X](https://x.com/unthink)
|
||||
|
||||
### @thomasmktong
|
||||
[PR #124](https://github.com/mvanhorn/last30days-skill/pull/124) - Pure Python Reddit fallback
|
||||
v3 Reddit is 100% pure Python with zero external dependencies.
|
||||
> _Add your bio, website, or anything you'd like here._
|
||||
|
||||
### @fanispoulinakisai-boop
|
||||
[Issue #100](https://github.com/mvanhorn/last30days-skill/issues/100) - Reddit timeout report
|
||||
Drove the timeout resilience work that made v3 Reddit bulletproof.
|
||||
> _Add your bio, website, or anything you'd like here._
|
||||
|
||||
### @pejmanjohn
|
||||
[Issue #78](https://github.com/mvanhorn/last30days-skill/issues/78) - ScrapeCreators silent failures
|
||||
v3 surfaces all API errors with clear diagnostics instead of silently returning empty results.
|
||||
> Repping the mighty MI; home of the most cracked agentic engineers. https://github.com/pejmanjohn
|
||||
|
||||
### @zl190
|
||||
[PR #115](https://github.com/mvanhorn/last30days-skill/pull/115) - HN trending merge
|
||||
v3 merges trending and keyword HN results with deduplication for better coverage.
|
||||
> Healthcare AI engineer. [Blog](https://zl190.github.io/blog)
|
||||
|
||||
### @hnshah
|
||||
[PR #84](https://github.com/mvanhorn/last30days-skill/pull/84), [#85](https://github.com/mvanhorn/last30days-skill/pull/85), [#86](https://github.com/mvanhorn/last30days-skill/pull/86) - Watchlist delivery, 90-day scanning window, HN/Polymarket storage
|
||||
v3 has durable watchlist with multi-source storage and extended time windows.
|
||||
> Hiten Shah. Founder. Builds in public. https://github.com/hnshah
|
||||
|
||||
---
|
||||
|
||||
## Past Contributors
|
||||
|
||||
- [@23241a6749](https://github.com/23241a6749) - Windows cp1252 fixes ([#549](https://github.com/mvanhorn/last30days-skill/pull/549)); Windows killpg guard ([#552](https://github.com/mvanhorn/last30days-skill/pull/552)); browser promo clarity ([#387](https://github.com/mvanhorn/last30days-skill/pull/561)); setup wizard fix ([#574](https://github.com/mvanhorn/last30days-skill/pull/578)); check-config xargs fix ([#506](https://github.com/mvanhorn/last30days-skill/issues/506)); check-config clean-exit on missing last-run ([#463](https://github.com/mvanhorn/last30days-skill/issues/463)); Firefox multi-profile cookies ([#498](https://github.com/mvanhorn/last30days-skill/issues/498)); X/Twitter CT0 template ([#396](https://github.com/mvanhorn/last30days-skill/issues/396)); .env permission auto-fix ([#573](https://github.com/mvanhorn/last30days-skill/pull/599)); MCP Go tests in CI ([#621](https://github.com/mvanhorn/last30days-skill/issues/621))
|
||||
- [@JosephOIbrahim](https://github.com/JosephOIbrahim) - Windows Unicode fix ([#17](https://github.com/mvanhorn/last30days-skill/pull/17))
|
||||
- [@levineam](https://github.com/levineam) - Model fallback for unverified orgs ([#16](https://github.com/mvanhorn/last30days-skill/pull/16))
|
||||
- [@jonthebeef](https://github.com/jonthebeef) - Early testing and feedback
|
||||
+115
@@ -0,0 +1,115 @@
|
||||
# Hermes Setup Guide for last30days
|
||||
|
||||
This guide covers installing last30days on Hermes AI Agent.
|
||||
|
||||
## Prerequisites
|
||||
|
||||
1. **Hermes installed** - See https://github.com/NousResearch/hermes-agent
|
||||
2. **Python 3.12+** - `brew install python@3.12` or similar
|
||||
3. **yt-dlp** (optional, for YouTube) - `brew install yt-dlp`
|
||||
|
||||
## Installation
|
||||
|
||||
```bash
|
||||
hermes skills install mvanhorn/last30days-skill/skills/last30days --force
|
||||
```
|
||||
|
||||
The explicit `skills/last30days` path fetches the skill straight from this repo's current default branch and deploys it under `~/.hermes/skills/`. `--force` is required because Hermes's install-time security scanner returns a `caution` verdict for this skill — it flags benign patterns such as reading your own API keys from the environment and calling `subprocess` to run `yt-dlp`/`bird`. `--force` accepts the caution verdict and installs (it also reinstalls over any existing copy).
|
||||
|
||||
**Why the explicit path?** The shorter `hermes skills install mvanhorn/last30days-skill` currently resolves through the skills.sh index, which is serving an older cached snapshot of this repo (from before the skill moved under `skills/last30days/`). Use the explicit `.../skills/last30days` path above until the index re-crawls — tracked in [vercel-labs/skills#1602](https://github.com/vercel-labs/skills/issues/1602).
|
||||
|
||||
### Developer / live-edit alternative
|
||||
|
||||
If you're hacking on the skill locally and want edits to propagate to Hermes without re-installing, symlink your working tree:
|
||||
|
||||
```bash
|
||||
git clone https://github.com/mvanhorn/last30days-skill.git
|
||||
mkdir -p ~/.hermes/skills/research
|
||||
ln -s "$(pwd)/last30days-skill/skills/last30days" ~/.hermes/skills/research/last30days
|
||||
```
|
||||
|
||||
## Usage
|
||||
|
||||
In Hermes, invoke with:
|
||||
|
||||
```
|
||||
last30days "your research topic"
|
||||
```
|
||||
|
||||
Or with options:
|
||||
```
|
||||
last30days "best mechanical keyboards 2025" --search=reddit,youtube
|
||||
last30days "AI news" --days=7 --deep
|
||||
```
|
||||
|
||||
## First Run Setup
|
||||
|
||||
On first run, the skill will guide you through setup:
|
||||
|
||||
1. **Auto setup** (~30 seconds)
|
||||
- Scans browser cookies for X/Twitter
|
||||
- Checks/installs yt-dlp for YouTube
|
||||
- Best-effort install of `digg-pp-cli` for Digg AI-news clusters (via `@mvanhorn/printing-press-library`; binary lands in `$HOME/.local/bin` — ensure your Hermes gateway PATH includes it, or Digg stays off even after install)
|
||||
- Configures free sources (Reddit, HN, Polymarket)
|
||||
|
||||
2. **Optional: ScrapeCreators**
|
||||
- Adds TikTok, Instagram, Reddit backup
|
||||
- 100 free credits (no expiration)
|
||||
- Sign up at scrapecreators.com
|
||||
|
||||
3. **Optional: API Keys**
|
||||
- XAI_API_KEY for X/Twitter (alternative to browser cookies)
|
||||
- BRAVE_API_KEY for web search
|
||||
|
||||
## Available Sources
|
||||
|
||||
### Free (No API Key)
|
||||
- **Reddit** - Public discussions and comments
|
||||
- **Hacker News** - Tech discussions via Algolia
|
||||
- **Polymarket** - Prediction markets
|
||||
- **YouTube** - Search and transcripts (requires yt-dlp)
|
||||
- **Digg** - AI-news story clusters (requires `digg-pp-cli` on the agent PATH; auto-installed to `$HOME/.local/bin` during setup when `npx` is available)
|
||||
|
||||
### Requires API Key
|
||||
- **X/Twitter** - xAI API key or browser cookies
|
||||
- **TikTok** - ScrapeCreators API
|
||||
- **Instagram** - ScrapeCreators API
|
||||
- **Web Search** - Brave Search API
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
### Python not found
|
||||
```bash
|
||||
# Find Python 3.12+
|
||||
which python3.12 python3.13 python3.14
|
||||
|
||||
# If not installed
|
||||
brew install python@3.12
|
||||
```
|
||||
|
||||
### yt-dlp not found
|
||||
```bash
|
||||
brew install yt-dlp
|
||||
# or
|
||||
pip install yt-dlp
|
||||
```
|
||||
|
||||
### Check what's configured
|
||||
```bash
|
||||
cd ~/.hermes/skills/research/last30days
|
||||
python3.12 scripts/last30days.py --diagnose
|
||||
```
|
||||
|
||||
## Updating
|
||||
|
||||
```bash
|
||||
hermes skills install mvanhorn/last30days-skill --force
|
||||
```
|
||||
|
||||
If you symlinked your working tree (developer alternative above), just `git pull` in the repo — edits propagate live, no re-install step.
|
||||
|
||||
## Support
|
||||
|
||||
- Original repo: https://github.com/mvanhorn/last30days-skill
|
||||
- Hermes: https://github.com/mercurial-tf/hermes
|
||||
- Issues: Please report in the original repo
|
||||
+383
@@ -0,0 +1,383 @@
|
||||
# /last30days
|
||||
|
||||
[English](README.md) | [Français](README.fr.md) | Deutsch | [Español](README.es.md) | [Português (Brasil)](README.pt-BR.md) | [日本語](README.ja.md) | [简体中文](README.zh-CN.md)
|
||||
|
||||
<p align="center">
|
||||
<img src="media/pr-assets/last30days-ad.gif" width="720" alt="last30days - an AI agent-led search engine that searches people, not editors" />
|
||||
</p>
|
||||
|
||||
<p align="center">
|
||||
<a href="https://github.com/mvanhorn/last30days-skill">
|
||||
<img src="https://img.shields.io/badge/%231-Repository%20Of%20The%20Day-6f42c1?style=for-the-badge&logo=github&label=GITHUB%20TRENDING" alt="GitHub Trending #1 Repository Of The Day" />
|
||||
</a>
|
||||
<br/>
|
||||
<a href="https://trendshift.io/repositories/21997" target="_blank">
|
||||
<img src="https://trendshift.io/api/badge/repositories/21997" alt="mvanhorn/last30days-skill | Trendshift" style="width: 250px; height: 55px;" width="250" height="55"/>
|
||||
</a>
|
||||
</p>
|
||||
|
||||
**Eine von einem KI-Agenten gesteuerte Suchmaschine, die nach Upvotes, Likes und echtem Geld gewichtet – nicht nach Redaktionen.**
|
||||
|
||||
Dieses README beschreibt die aktuelle v3-Pipeline. Die Laufzeitspezifikation der Skill liegt in [skills/last30days/SKILL.md](skills/last30days/SKILL.md) und ist maßgeblich für das aktuelle Verhalten von Befehlen und Setup.
|
||||
|
||||
**Claude Code (empfohlen – automatische Updates über den Marketplace):**
|
||||
```
|
||||
/plugin marketplace add mvanhorn/last30days-skill
|
||||
/plugin install last30days
|
||||
```
|
||||
|
||||
**Codex, Cursor, Copilot, Gemini CLI oder einer von 50+ [Agent Skills](https://agentskills.io)-Hosts:**
|
||||
```
|
||||
npx skills add mvanhorn/last30days-skill -g
|
||||
```
|
||||
(`-g` installiert global für deinen Benutzer, also in allen Projekten verfügbar. Lass das Flag weg, wenn du die Installation auf ein Projekt beschränken willst.)
|
||||
|
||||
Weitere Installationswege (claude.ai im Browser, OpenClaw, manuell) findest du unten im Abschnitt [Installation](#installation).
|
||||
|
||||
Null Konfiguration. Reddit, HN, Polymarket und GitHub funktionieren sofort. Führe die Skill einmal aus, und der Setup-Assistent schaltet X, YouTube, TikTok, arXiv, Techmeme und mehr in 30 Sekunden frei.
|
||||
|
||||
---
|
||||
|
||||
Upvotes von Reddit. Likes von X. YouTube-Transkripte. TikTok-Engagement. Polymarket-Quoten, gedeckt durch echtes Geld und Insiderwissen. Das sind Millionen Menschen, die jeden Tag mit ihrer Aufmerksamkeit und ihrem Geldbeutel abstimmen. /last30days durchsucht all das parallel, gewichtet nach dem, womit echte Menschen tatsächlich interagieren, und ein KI-Agent fasst es als Juror zu einem einzigen Briefing zusammen.
|
||||
|
||||
Google aggregiert Redaktionen. /last30days durchsucht Menschen.
|
||||
|
||||
Diese Suche bekommst du nirgendwo sonst, weil keine einzelne KI Zugriff auf alles hat. Google erfasst weder Reddit-Kommentare noch X-Beiträge. ChatGPT hat einen Deal mit Reddit, kann aber weder X noch TikTok durchsuchen. Gemini hat YouTube, aber kein Reddit. Claude hat nichts davon nativ. Jede Plattform ist ein abgeschotteter Garten mit eigener API, eigenen Tokens, eigener Authentifizierung. Aber du kannst deine eigenen Schlüssel und Browser-Sessions mitbringen – und plötzlich durchsucht ein KI-Agent alle gleichzeitig, wägt sie gegeneinander ab und sagt dir, was wirklich zählt.
|
||||
|
||||
Das ist der eigentliche Durchbruch. Keine bessere Suchmaschine, sondern ein Dutzend getrennter Plattformen, die ein Agent miteinander verbindet.
|
||||
|
||||
```
|
||||
/last30days Peter Steinberger
|
||||
```
|
||||
|
||||
Du hast morgen ein Meeting. Du googelst die Person. Du bekommst ihr LinkedIn-Profil von 2023. /last30days zeigt dir, was sie diesen Monat wirklich macht: bei OpenAI eingestiegen, um an Codex zu arbeiten, kämpft gegen Anthropics Verbot von Drittanbieter-Agenten, hat 23 PRs mit 85 % Merge-Rate geliefert, baut „LobsterOS“ für geräteübergreifende Agentensteuerung – und ein Thread in r/ClaudeCode kam auf 569 Upvotes bei der Frage, ob sie ein Held oder „unerträglich“ ist. Verteilt über X-Beiträge, Reddit-Threads, YouTube-Transkripte und GitHub-Commits. Nichts davon stand bei Google.
|
||||
|
||||
## Warum es das gibt
|
||||
|
||||
Ich habe es gebaut, um bei KI Schritt zu halten. Alles ändert sich täglich, und die Nerds auf Reddit und X wissen es immer zuerst. Ich brauchte bessere Prompts, und die Trainingsdaten lagen immer Monate hinter dem, was die Community längst herausgefunden hatte.
|
||||
|
||||
Daraus wurde etwas Größeres. Heute lasse ich es vor einem Sales-Call laufen, um die Wahrheit der letzten 30 Tage über ein Unternehmen zu kennen. Vor einem Meeting, um die aktuellen Tweets und Podcast-Transkripte meines Gegenübers zu lesen. Vor einer Reise nach Disney World, um zu wissen, welche Attraktionen geschlossen sind und was die Community über Genie+ sagt. Bevor ich irgendetwas baue, um zu wissen, an welchen Problemen die Leute wirklich hängen.
|
||||
|
||||
Wenn du dich mit einem CEO triffst: Hast du alle Tweets und YouTube-Transkripte der letzten 30 Tage gelesen? Ich schon.
|
||||
|
||||
## Quellen, gewichtet von den Menschen
|
||||
|
||||
| Quelle | Was dir die Menschen sagen |
|
||||
|--------|--------------------------|
|
||||
| **Reddit** | Die ungefilterte Meinung. Top-Kommentare mit echten Upvote-Zahlen, kostenlos, ohne API-Schlüssel. Die echten Meinungen, die Google vergräbt. |
|
||||
| **X / Twitter** | Die spontane Einschätzung, der Experten-Thread, die erste Reaktion auf eine Eilmeldung. Zuerst informiert, zuerst am Streiten. |
|
||||
| **YouTube** | Die 45-minütige Tiefenanalyse. Vollständige Transkripte, durchsucht nach den 5 zitierfähigen Sätzen, auf die es ankommt. |
|
||||
| **TikTok** | Der Creator, der 3,6 Millionen Menschen mit einer Sichtweise erreicht, die du bei Google nie findest. |
|
||||
| **Instagram Reels** | Die Perspektive der Influencer, inklusive Transkript des Gesprochenen. Das Signal der visuellen Kultur. |
|
||||
| **Hacker News** | Der Konsens der Entwickler. 825 Punkte, 899 Kommentare. Wo technische Leute wirklich streiten. |
|
||||
| **Polymarket** | Keine Meinungen. Quoten. Gedeckt durch echtes Geld. 96 % Wahrscheinlichkeit bei Albumverkäufen. 4 % bei einer Übernahme. |
|
||||
| **GitHub** | Für Personen: PR-Tempo, Top-Repos nach Sternen, Release Notes. Für Themen: Issues und Discussions. |
|
||||
| **Digg** | Kuratierte Story-Cluster aus Diggs AI-1000-Leaderboard (rund 1000 KI-Accounts mit hohem Signal auf X), mit zuordenbaren Inline-Zitaten und ganz ohne X-Authentifizierung. Wird automatisch aktiv, sobald `digg-pp-cli` im PATH liegt. |
|
||||
| **arXiv** | Die Fachartikel hinter dem Hype. Neue Forschung im Zeitfenster, kostenlos, ohne API-Schlüssel. Wird automatisch aktiv, sobald `arxiv-pp-cli` im PATH liegt (das Erst-Setup installiert es). |
|
||||
| **Techmeme** | Die redaktionelle Ebene der Tech-News, begrenzt auf dein 30-Tage-Fenster. Kostenlos, ohne API-Schlüssel. Wird automatisch aktiv, sobald `techmeme-pp-cli` im PATH liegt (das Erst-Setup installiert es). |
|
||||
| **LinkedIn** | Das berufliche Signal. Beiträge und Artikel, wobei Artikel als starkes Signal gewichtet werden. |
|
||||
| **StockTwits** | Die Stimmung der Trader. Aktiviert sich automatisch, wenn dein Thema ein Ticker oder eine Kryptowährung ist. |
|
||||
| **Threads** | Die Textebene nach Twitter. Gespräche von Creators und Marken. |
|
||||
| **Pinterest** | Visuelle Entdeckung. Pins, gespeicherte Beiträge und Kommentare zu Produkten und Ideen. |
|
||||
| **Xiaohongshu (RED)** | Chinesische Signale zu Lifestyle, Produkten und Creators. Wird ausdrücklich mit `--search xhs` angefordert, wenn lokal ein eingeloggtes x-mcp-Browser-Plugin oder ein `xiaohongshu-mcp`-Dienst läuft. |
|
||||
| **Bluesky** | Die dezentrale soziale Ebene. AT-Protocol-Beiträge aus der Abwanderung nach Twitter. |
|
||||
| **Perplexity** | Belegte Sonar-Synthese, Rohtreffer der Search API und Deep Research. |
|
||||
| **Web** | Die redaktionelle Berichterstattung, die Blog-Vergleiche. Ein Signal von vielen, nicht das einzige. |
|
||||
|
||||
Die Community steuert laufend weitere bei. Truth Social und andere Nischenquellen stecken bereits in der Engine, weitere folgen.
|
||||
|
||||
Ein Reddit-Thread mit 1.500 Upvotes ist ein stärkeres Signal als ein Blogbeitrag, den niemand gelesen hat. Ein TikTok mit 3,6 Millionen Aufrufen sagt mehr darüber aus, was kulturell relevant ist, als jede Pressemitteilung. Polymarket-Quoten mit 66.000 $ Handelsvolumen dahinter lassen sich schwerer wegdiskutieren als die Vermutung eines Kommentators.
|
||||
|
||||
Die Synthese sortiert nach dem, womit echte Menschen tatsächlich interagiert haben. Soziale Relevanz, nicht SEO-Relevanz.
|
||||
|
||||
## Wofür die Leute es wirklich nutzen
|
||||
|
||||
**Vor einem Meeting.** `/last30days Peter Steinberger` – beim Codex-Team von OpenAI eingestiegen, kämpft gegen Anthropics Verbot von Drittanbieter-Agenten, 23 PRs mit 85 % Merge-Rate auf GitHub gemergt, baut LobsterOS für geräteübergreifende Agentensteuerung. r/ClaudeCode: „Seit OpenClaw erschienen ist, war allgemein bekannt: Wer es über etwas anderes als die API laufen lässt, fliegt irgendwann raus“ (227 Upvotes). Das steht so nicht auf LinkedIn.
|
||||
|
||||
**Um Hiring-Signale zu lesen.** `/last30days Listen Labs --hiring-signals` – aktuelle Stellenanzeigen und Karriereseiten werden zu zitierten Belegen für Schwerpunktverschiebungen: Einstellungen in Enterprise Security, Customer Success, Infrastruktur oder Produktausbau. Der Bericht sagt, was das Hiring zu signalisieren scheint, nicht was die Roadmap liefern wird.
|
||||
|
||||
**Um ein Thema vor seinem Höhepunkt zu finden.** Frag `/last30days what's exploding in AI agents?`, und die Skill wechselt in den Discovery-Modus: Die Engine durchkämmt Reddit-Kategorielisten, die Front- und Best-Stories von Hacker News, Diggs AI-1000-Feed und X, sofern du authentifiziert bist. Dein Agent bewertet die Vorschläge (Namen, Müllfilterung, inhaltliche Relevanz) und schreibt Podcast- und X-Artikel-Ansätze. Am Ende bekommst du 5 bis 10 nach Velocity sortierte Themen. Jedes Ergebnis enthält quellenübergreifende Zahlen, ein Momentum-Label und einen startklaren Folgebefehl `/last30days "<topic>"`.
|
||||
|
||||
**Wenn etwas erscheint.** `/last30days Kanye West` – Großbritannien hat sein Visum blockiert, das Wireless Festival wurde abgesagt, die Sponsoren sind abgesprungen. Aber BULLY stieg auf Platz 2 der Billboard-Charts ein. Fantano kam aus seinem „Yay sabbatical“ zurück, um es zu rezensieren (653.000 Aufrufe). Beim SoFi Homecoming holte er Lauryn Hill und Travis Scott für 44 Songs auf die Bühne. Polymarket: „Wird Kanye wieder twittern?“ 86 % Ja. 23 Reddit-Threads, 17 YouTube-Videos, 86.000 Upvotes.
|
||||
|
||||
**Um Tools zu vergleichen.** `/last30days OpenClaw vs Hermes vs Paperclip` – „Das sind keine Konkurrenten, das sind Schichten.“ OpenClaw ist die ausführende Ebene (351.000 GitHub-Sterne, produktiv), Hermes ist das sich selbst verbessernde Gehirn (31.000 Sterne), Paperclip ist das Organigramm (49.000 Sterne). Die Sternzahlen kommen live aus der GitHub-API, nicht aus veralteten Blogbeiträgen. Vergleichstabelle mit Architektur, Speicher, Sicherheit und idealem Einsatzzweck. Laut @IMJustinBrooke: „OpenClaw = Glumanda, Hermes = Glurak.“
|
||||
|
||||
**Um die Welt zu verstehen.** `/last30days Iran vs USA` – Tag 38 des Krieges. Trumps Ultimatum bis Dienstag, damit der Iran die Straße von Hormus wieder öffnet. Zwei US-Kampfjets abgeschossen. Öl bei 126 $ pro Barrel. Die IEA nannte es „die größte Versorgungsstörung in der Geschichte des globalen Ölmarkts“. Polymarket: Waffenstillstand bis zum 31. Dezember bei 74 %. 27 X-Beiträge, 10 YouTube-Videos, 20 Prognosemärkte.
|
||||
|
||||
**Vor einer Reise.** `/last30days Universal Epic Universe` – die Erweiterung ist bereits im Bau. Baugenehmigung „Project 680“ eingereicht. Eine Feuerwerksshow ist über die Infrastruktur belegt, aber noch nicht angekündigt. Wartezeiten: Mine-Cart Madness im Schnitt 148 Minuten. Noch keine Jahreskarte, und die Einheimischen sind genervt. Stardust Racers steht bis zum 5. April wegen Renovierung still.
|
||||
|
||||
**Um schnell etwas zu lernen.** `/last30days Nano Banana Pro prompting` – JSON-strukturierte Prompts lösen den Tag-Wildwuchs ab. Das verschachtelte Format von @pictsbyai verhindert „Concept Bleeding“. Bearbeiten schlägt neu generieren. Und danach schreibt dir die Skill einen produktionsreifen Prompt, der genau das umsetzt, was die Community als funktionierend beschrieben hat.
|
||||
|
||||
## Was neu ist
|
||||
|
||||
Seit der Ankündigung von v3.3 im Mai und mit Stand v3.11.1 (Juli 2026): 175 gemergte PRs – 122 davon von 52 Beitragenden aus der Community – verteilt auf 15 Releases. Das ist gelandet.
|
||||
|
||||
### Erstklassig auf OpenAI Codex
|
||||
|
||||
/last30days ist jetzt ein natives Codex-Plugin mit geführtem Setup – keine Portierung, sondern ein vollwertiger Bürger. Renderer-bewusste Zitate sorgen dafür, dass die Codex-Ausgabe sich wie ein Briefing liest und nicht wie eine URL-Suppe (#694), und dieselbe Engine läuft auf Claude Code, Cursor, Copilot, Gemini CLI, Claude Desktop, OpenClaw und 50+ Agent-Skills-Hosts. Codex-Plugin-Manifest von [@rfoust](https://github.com/rfoust) (#686), Codex-Auth-Fix von [@tmchow](https://github.com/tmchow) (#698).
|
||||
|
||||
### arXiv, Techmeme und Digg – kostenlos, ohne API-Schlüssel
|
||||
|
||||
arXiv liefert die Fachartikel hinter dem Hype, Techmeme die redaktionelle Tech-News-Ebene – kostenlos, ohne einen einzigen Schlüssel, und das Erst-Setup installiert ihre CLIs, sodass sie sich von selbst aktivieren (#709). Diggs AI-1000-Story-Cluster kommen genauso ohne X-Authentifizierung an: Das Setup installiert dir die kostenlose Digg-CLI (#590). Trustpilot ist optional zuschaltbar für Recherchen zu Consumer-Marken.
|
||||
|
||||
### Reddit gratis, mit echten Scores und Top-Kommentaren
|
||||
|
||||
Reddits öffentliche .json-API ist gestorben; der kostenlose Weg kam stärker zurück. Schlüsselloses RSS plus Shreddit-Scraping (#457), gezielte Subreddit-Suche mit echten Upvote-Zahlen über arctic-shift (#696) und eine Relevanzschwelle, damit ein viraler Off-Topic-Beitrag dein Briefing nicht kapert (#488, danke [@rzachsmith](https://github.com/rzachsmith)). Kein API-Schlüssel. Echte Scores. Top-Kommentare inklusive.
|
||||
|
||||
### Die besten Kommentare in jedem Briefing
|
||||
|
||||
Kommentare sind jetzt eine quellenübergreifend standardmäßig aktive Ebene: Instagram-Kommentare mit rangbasierter Vielfalt, damit fünf zugespitzte Meinungen nicht alle aus einem einzigen Beitrag stammen (#751), YouTube-Kommentare plus ein Transkript-Backup über ScrapeCreators, falls yt-dlp scheitert (#637), und von der Community hochgevotete Kommentare, die in die Best-Takes-Wertung einfließen, damit die witzigsten Zeilen die Bewertung überleben (#592, #608).
|
||||
|
||||
### Ein einziger doctor-Befehl
|
||||
|
||||
Bitte um einen Health-Check: doctor prüft jede Quelle und verschreibt dann die genauen Korrekturen – welcher Schlüssel fehlt, welche CLI nicht im PATH liegt, welches Cookie abgelaufen ist (#753). Kein Rätselraten mehr, warum X so wenig geliefert hat.
|
||||
|
||||
### Die X-Suche, neu gebaut
|
||||
|
||||
Die X-Pipeline wurde von Grund auf überarbeitet: FROM- und ABOUT-Lanes, damit sowohl die eigenen Beiträge einer Person als auch das Gespräch über sie einsortiert werden (#610), personenbezogene Auflösung mehrdeutiger Unterabfragen (#611), Verifizierung der Urheberschaft aus erster Hand samt Ranking nach Interaktionssignalen (#613) und eine einzige X-Quelle mit automatischem Backend-Failover (#622). Dazu ein ehrliches `--diagnose`, das die Authentifizierung wirklich prüft (#609).
|
||||
|
||||
### Weitere Quellen sind dazugekommen
|
||||
|
||||
LinkedIn über ScrapeCreators, mit Artikeln als starkem Signal ([@ravstr](https://github.com/ravstr), #702). StockTwits aktiviert sich automatisch bei Ticker- und Krypto-Themen ([@wtiwana](https://github.com/wtiwana), #658). Perplexity hat direkte API-Modi und asynchrone Deep Research dazubekommen ([@sk-holmes](https://github.com/sk-holmes), #629).
|
||||
|
||||
### Von der Community gehärtet
|
||||
|
||||
Die Sicherheitswelle war fast vollständig Community-Arbeit: Fixes für Stored XSS im HTML-Renderer ([@iliaal](https://github.com/iliaal), [@aaronjmars](https://github.com/aaronjmars)), abgesicherte temporäre Cookie-Dateien, eine gegen Supply-Chain-Angriffe gehärtete CI mit OpenSSF Scorecard und Build-Provenance-Attestierung ([@shaanmajid](https://github.com/shaanmajid), [@hammadxcm](https://github.com/hammadxcm), [@aniruddh909](https://github.com/aniruddh909)), Semgrep- und OSV-Scanner-Scans plus ein Dependency-Review-Gate für jeden PR ([@23241a6749](https://github.com/23241a6749)), eine Mindestgrenze für die Testabdeckung, eingeführt bei 60 % und inzwischen auf 84 % angehoben ([@gourab5139014](https://github.com/gourab5139014)), und ein Hermes-Sicherheitsscan, der inzwischen keinen einzigen CRITICAL-Befund mehr enthält (#768).
|
||||
|
||||
### Reicht weiter
|
||||
|
||||
Hebräisch und andere nichtlateinische Sprachen ([@dudyme](https://github.com/dudyme)). CJK-taugliche Tokenisierung für chinesische Quellen ([@An-idd](https://github.com/An-idd)). Eine Welle an Windows-Kompatibilität. Cookie-Extraktion für die gesamte Chromium-Familie – Brave, Edge, Vivaldi, Opera, Arc ([@andrey-esipov](https://github.com/andrey-esipov)) – plus macOS Keychain und pass(1) unter Linux als Quellen für Zugangsdaten. Historischer Rückblick mit `--as-of` ([@chiyi-creator](https://github.com/chiyi-creator)). Automatisch bereitgestelltes Python 3.12 über uv ([@buntysomroy](https://github.com/buntysomroy)). `--hiring-signals` zum Auslesen der Stellenseiten eines Unternehmens. Watchlist-Deltas zwischen zwei Durchläufen.
|
||||
|
||||
### Weiterhin ab Werk dabei seit v3
|
||||
|
||||
Die Grundlagen aus v3 sind alle noch da: das Pre-Research-Hirn, das die richtigen Handles, Subreddits und Hashtags ermittelt, bevor ein einziger API-Aufruf rausgeht (gebaut von [@j-sperling](https://github.com/j-sperling)); die Best-Takes-Wertung, die Humor und Viralität neben Relevanz berücksichtigt; quellenübergreifendes Cluster-Merging; Vergleiche in einem Durchgang („CLI vs MCP“ in 3 Minuten statt 12); automatisch gefundene `--competitors`-Vergleiche; der GitHub-Personenmodus (`--github-user=steipete`); der ELI5-Modus („eli5 on“ nach jedem Durchlauf); und teilbare, in sich geschlossene HTML-Briefings (`--emit=html`). Die Konfigurationsschalter stehen in [CONFIGURATION.md](CONFIGURATION.md).
|
||||
|
||||
## Installation
|
||||
|
||||
| Umgebung | Installation | Updates |
|
||||
|---------|---------|---------|
|
||||
| **Claude Code** (empfohlen) | `/plugin marketplace add mvanhorn/last30days-skill` | Automatisch über den Marketplace, oder `claude plugin update last30days@last30days-skill` |
|
||||
| **Grok** (xAI Build CLI) | `grok plugin marketplace add mvanhorn/last30days-skill`, dann `grok plugin install last30days` | `grok plugin update last30days` |
|
||||
| **Codex, Cursor, Copilot, Gemini CLI oder einer von 50+ [Agent Skills](https://agentskills.io)-Hosts** | `npx skills add mvanhorn/last30days-skill -g` | `npx skills update last30days -g` |
|
||||
| **claude.ai** (Browser) | [`last30days.skill` herunterladen](https://github.com/mvanhorn/last30days-skill/releases/latest/download/last30days.skill) und über claude.ai > Customize > Skills > + > Create skill > Upload a skill hochladen | Neu herunterladen und erneut hochladen |
|
||||
| **Claude Desktop** | [Die `.mcpb` für deine Plattform herunterladen](https://github.com/mvanhorn/last30days-skill/releases/latest) und in Settings > Extensions ziehen | Neu herunterladen und das neue Bundle hineinziehen |
|
||||
| **OpenClaw** | `clawhub install last30days-official` | `clawhub update last30days-official` |
|
||||
|
||||
### Claude Code (empfohlen)
|
||||
|
||||
```
|
||||
/plugin marketplace add mvanhorn/last30days-skill
|
||||
```
|
||||
|
||||
Empfohlen, weil der Claude-Code-Marketplace die Updates für dich übernimmt: Der Plugin-Cache ist versioniert und aktualisiert sich automatisch, sobald ein neues Release erscheint. Mit `claude plugin update last30days@last30days-skill` erzwingst du eine Prüfung.
|
||||
|
||||
Wenn du lieber den Agent-Skills-Installationsweg unter Claude Code nutzt, wird auch der unterstützt:
|
||||
|
||||
```
|
||||
npx skills add mvanhorn/last30days-skill -g -a claude-code
|
||||
```
|
||||
|
||||
Das native Plugin und die `npx skills`-Installation können nebeneinander existieren. Beachte aber: Claude Code dedupliziert nicht über Installationsmethoden hinweg. Wenn sowohl das Marketplace-Plugin als auch die `npx skills`-Kopie aktiv sind, taucht `/last30days` doppelt auf. Nutze pro Rechner eine Installationsmethode.
|
||||
|
||||
### Grok (xAI Build CLI)
|
||||
|
||||
[Grok Build](https://docs.x.ai/build/features/skills-plugins-marketplaces) (`grok`) installiert last30days als natives Plugin. Die direkte Installation folgt dem Repository:
|
||||
|
||||
```bash
|
||||
grok plugin install mvanhorn/last30days-skill
|
||||
```
|
||||
|
||||
Oder füge dieses Repository als Marketplace-Quelle hinzu und installiere anschließend über den Plugin-Namen:
|
||||
|
||||
```bash
|
||||
grok plugin marketplace add mvanhorn/last30days-skill
|
||||
grok plugin install last30days
|
||||
```
|
||||
|
||||
Mit `--trust` überspringst du die Installationsbestätigung. Aktualisieren kannst du mit `grok plugin update last30days`. Grok liest aus Kompatibilitätsgründen auch die Claude-Code-Manifeste; das native `.grok-plugin/`-Paar ist der bevorzugte Weg – und genau darauf verweist ein offizieller Eintrag im [xAI-Marketplace](https://github.com/xai-org/plugin-marketplace). `npx skills add` bleibt ein gültiger Fallback über alle Hosts hinweg.
|
||||
|
||||
### Codex, Cursor, Copilot, Gemini CLI und weitere Agent-Skills-Hosts
|
||||
|
||||
Installiere über die offene [Agent Skills](https://agentskills.io)-CLI – sie unterstützt 50+ Hosts, darunter `codex`, `cursor`, `github-copilot`, `gemini-cli`, `claude-code`, `windsurf`, `cline`, `continue`, `roo`, `aider-desk`, `opencode`, `goose` und weitere (vollständige Liste im [Repository vercel-labs/skills](https://github.com/vercel-labs/skills)).
|
||||
|
||||
```bash
|
||||
npx skills add mvanhorn/last30days-skill -g
|
||||
```
|
||||
|
||||
Das Flag `-g` (global) installiert in dein Benutzerverzeichnis, sodass die Skill in allen Projekten verfügbar ist. Ohne `-g` installiert `npx skills` projektlokal nach `./.skills/` (und wird mit dem Repository eingecheckt). Für ein Werkzeug, mit dem du die ganze Welt recherchierst, willst du die globale Installation.
|
||||
|
||||
Codex Desktop und andere Hosts, die auf Ordnerebene arbeiten, funktionieren sowohl in gewöhnlichen Ordnern als auch in Git-Repositories. Bitte den Host-Agenten vor der ersten Recherche, das mitgelieferte `scripts/last30days.py --preflight` aus dem geladenen Skill-Verzeichnis auszuführen; in einem Checkout des Quellcodes lautet der entsprechende Befehl `python3 skills/last30days/scripts/last30days.py --preflight`. Er zeigt dir, woher die Konfiguration stammt, welche Browser-Cookies gelesen würden, welche Dateien geschrieben würden, welche optionalen Befehle es gibt und welche Projektkonfiguration ignoriert wird – ohne Cookies zu lesen, Dateien zu schreiben oder eine Recherche zu starten.
|
||||
|
||||
Standardmäßig wird für den Host installiert, den `npx skills` erkennt. Um gezielt einen (oder mehrere) anzusprechen:
|
||||
|
||||
```bash
|
||||
npx skills add mvanhorn/last30days-skill -g -a codex
|
||||
npx skills add mvanhorn/last30days-skill -g -a cursor
|
||||
npx skills add mvanhorn/last30days-skill -g -a gemini-cli
|
||||
npx skills add mvanhorn/last30days-skill -g -a codex -a cursor
|
||||
```
|
||||
|
||||
Später aktualisieren mit:
|
||||
|
||||
```bash
|
||||
npx skills update last30days -g
|
||||
```
|
||||
|
||||
Oder aktualisiere alles, was du global über `npx skills` installiert hast:
|
||||
|
||||
```bash
|
||||
npx skills update -g
|
||||
```
|
||||
|
||||
Auflisten und entfernen kannst du mit `npx skills list -g` und `npx skills remove last30days -g`.
|
||||
|
||||
### claude.ai (Browser)
|
||||
|
||||
1. [`last30days.skill` herunterladen](https://github.com/mvanhorn/last30days-skill/releases/latest/download/last30days.skill) – aus dem neuesten Release
|
||||
2. Geh zu [claude.ai > Customize > Skills](https://claude.ai/customize/skills)
|
||||
3. Klicke im Skills-Panel auf `+`, dann auf `Create skill` > `Upload a skill`, und wähle die Datei aus oder zieh sie hinein
|
||||
|
||||
Aktiviere vorher unter Capabilities die Option „Code execution and file creation“ – ohne sie laufen Skills nicht.
|
||||
|
||||
### Claude Desktop
|
||||
|
||||
Claude Desktop installiert `/last30days` als MCP-Server über ein `.mcpb`-Bundle (ein Model-Context-Protocol-Paket zum Ein-Klick-Installieren).
|
||||
|
||||
1. Öffne das [neueste Release](https://github.com/mvanhorn/last30days-skill/releases/latest) und lade die `.mcpb` für deine Plattform herunter:
|
||||
- macOS Apple Silicon: `last30days-pp-mcp-darwin-arm64.mcpb`
|
||||
- macOS Intel: `last30days-pp-mcp-darwin-amd64.mcpb`
|
||||
- Linux x86_64: `last30days-pp-mcp-linux-amd64.mcpb`
|
||||
2. Öffne Claude Desktop, geh zu Settings > Extensions und zieh die Datei hinein.
|
||||
3. Füge auf Nachfrage die API-Schlüssel für die Quellen ein, die du aktivieren willst. Jedes Feld ist optional – überspringst du alle, fällt die Engine auf den reinen Web-Modus zurück. Die Schlüssel landen im Schlüsselbund deines Betriebssystems.
|
||||
4. Starte Claude Desktop neu. Bitte Claude, „zu Peter Steinberger zu recherchieren“ oder zu einem beliebigen anderen Thema, und es ruft das Tool `research` auf.
|
||||
|
||||
**Voraussetzung auf dem Host:** Python 3.12+ im PATH. Das Bundle bringt den Quellcode der Engine mit, nutzt aber deinen lokalen Python-Interpreter. Unter Windows installierst du ihn von [python.org](https://www.python.org/downloads/); macOS und die meisten Linux-Distributionen bringen bereits eine kompatible Version mit.
|
||||
|
||||
**Die Schlüssel werden nicht mit der Claude-Code-Skill geteilt.** Claude Desktop und Claude Code halten bewusst getrennte Speicher für Zugangsdaten. Wenn du `~/.config/last30days/.env` bereits für die Claude-Code-Skill eingerichtet hast, gibst du dieselben Schlüssel hier einmalig erneut ein.
|
||||
|
||||
Windows-Unterstützung ist zurückgestellt, bis die plattformspezifischen Einstiegspunkte im Manifest geklärt sind; verfolgt wird das in einem eigenen Issue.
|
||||
|
||||
### OpenClaw
|
||||
|
||||
```bash
|
||||
clawhub install last30days-official
|
||||
```
|
||||
|
||||
Für X/Twitter-Aktionen außerhalb der `/last30days`-Recherche – Tweets oder
|
||||
Antworten posten, Follower exportieren, Medien verwalten, Accounts beobachten
|
||||
und Verlosungen auswerten – nutzt du [TweetClaw](https://github.com/Xquik-dev/tweetclaw)
|
||||
als ergänzendes OpenClaw-Plugin. TweetClaw wird von Xquik-dev gepflegt und ist
|
||||
hier nur als optionale Ergänzung aufgeführt, nicht als Abhängigkeit oder
|
||||
Empfehlung von last30days.
|
||||
|
||||
### Manuell (für Entwickler)
|
||||
|
||||
```bash
|
||||
git clone https://github.com/mvanhorn/last30days-skill.git
|
||||
ln -s "$(pwd)/last30days-skill/skills/last30days" ~/.claude/skills/last30days
|
||||
```
|
||||
|
||||
Der Symlink hält die Installation beim Bearbeiten mit deinem Arbeitsverzeichnis synchron – erneutes Kopieren entfällt. Für `claude.ai` baust du die `.skill`-Datei aus dem Quellcode: `bash skills/last30days/scripts/build-skill.sh` erzeugt `dist/last30days.skill`.
|
||||
|
||||
Reddit (mit Kommentaren), Hacker News, Polymarket und GitHub funktionieren sofort. Null Konfiguration. Führe `/last30days` einmal aus, und der Setup-Assistent schaltet in 30 Sekunden weitere Quellen frei, darunter die kostenlosen CLIs für arXiv und Techmeme.
|
||||
|
||||
## Bring deine eigenen Schlüssel mit
|
||||
|
||||
Diese Plattformen haben nichts miteinander zu tun. X weiß nicht, was Reddit denkt. YouTube sieht TikTok nicht. Aber du kannst deine eigenen API-Schlüssel und Browser-Tokens mitbringen – und hast auf einen Schlag Zugriff auf alle gleichzeitig.
|
||||
|
||||
| Quellen | Was du brauchst | Kosten |
|
||||
|---------|---------------|------|
|
||||
| Reddit (mit Kommentaren) + HN + Polymarket + GitHub + StockTwits | Nichts | Kostenlos |
|
||||
| arXiv + Techmeme | Kostenlose CLIs, die das Erst-Setup automatisch installiert | Kostenlos |
|
||||
| X / Twitter | In einem beliebigen Browser bei x.com anmelden, oder `XQUIK_API_KEY` / `XAI_API_KEY` setzen | Browser-Cookies sind kostenlos; Schlüssel hängen vom Anbieter ab |
|
||||
| YouTube | `brew install yt-dlp` | Kostenlos |
|
||||
| Bluesky | App-Passwort von bsky.app | Kostenlos |
|
||||
| TikTok + Instagram + Threads + Pinterest + LinkedIn + YouTube-Kommentare | Ein ScrapeCreators-Schlüssel | 10.000 kostenlose Aufrufe, danach nutzungsabhängig |
|
||||
| Xiaohongshu (RED) | Ein eingeloggtes x-mcp-Browser-Plugin oder einen `xiaohongshu-mcp`-Dienst laufen lassen und die Quelle mit `--search xhs` pro Durchlauf oder `INCLUDE_SOURCES=xiaohongshu` in `.env` zuschalten; last30days probiert automatisch `http://localhost:18060` und danach `http://host.docker.internal:18060`, oder du setzt `XIAOHONGSHU_API_BASE` für eine eigene URL | Kein last30days-API-Schlüssel nötig; hängt von deinem lokalen Browser-Session-Dienst ab |
|
||||
| DripStack (Premium-Finanznewsletter) | Zuschaltbar: `--search dripstack` pro Durchlauf, oder `INCLUDE_SOURCES=dripstack` in `.env` | Kein Schlüssel; kostenlose öffentliche Such-API |
|
||||
| Perplexity Sonar / Search API / Deep Research | Ein Perplexity-Schlüssel, oder ein OpenRouter-Schlüssel als Sonar-Fallback | Nutzungsabhängig |
|
||||
| Websuche | Ein Brave-Search-Schlüssel | 2.000 kostenlose Anfragen pro Monat |
|
||||
|
||||
### macOS Keychain (optional)
|
||||
|
||||
Unter macOS kannst du Schlüssel im System-Schlüsselbund statt in einer `.env`-Datei ablegen. Die Skill liest sie automatisch aus, allerdings mit der niedrigsten Priorität – bei einer Kollision gewinnen weiterhin `.env`-Dateien und die Prozessumgebung.
|
||||
|
||||
```bash
|
||||
# Interactive setup — prompts for each known key, skip with empty input
|
||||
skills/last30days/scripts/setup-keychain.sh
|
||||
|
||||
# Or store a single key by hand
|
||||
security add-generic-password -a "$USER" -s last30days-XAI_API_KEY -w "xai-..."
|
||||
|
||||
# Inspect / clean up
|
||||
skills/last30days/scripts/setup-keychain.sh --list
|
||||
skills/last30days/scripts/setup-keychain.sh --delete XAI_API_KEY
|
||||
```
|
||||
|
||||
Die Einträge werden für den aktuellen Benutzer unter dem Dienstnamen `last30days-<KEY>` gespeichert. Auf Nicht-Darwin-Plattformen tut der Loader nichts, für Linux- und Windows-Nutzer ändert sich also am Verhalten nichts.
|
||||
|
||||
Du hast bereits Schlüssel unter anderen Keychain-Dienstnamen? Dann setz das nicht geheime Mapping `LAST30DAYS_KEYCHAIN_ALIASES`, das in [CONFIGURATION.md](CONFIGURATION.md#reusing-existing-macos-keychain-items) beschrieben ist, statt Geheimnisse zu kopieren.
|
||||
|
||||
Die vollständige Schlüsselmatrix pro Quelle, die Priorität der Reasoning-Anbieter und die Priorität der Websuche-Backends stehen in [CONFIGURATION.md](CONFIGURATION.md).
|
||||
|
||||
## Konfiguration
|
||||
|
||||
Zwei Dinge, die du vermutlich schon am ersten Tag wissen willst:
|
||||
|
||||
**Wo die Rechercheergebnisse landen.** `LAST30DAYS_MEMORY_DIR` zeigt standardmäßig auf `~/Documents/Last30Days/` (unter Windows: `C:\Users\<you>\Documents\Last30Days\`). Überschreib das, indem du die Umgebungsvariable in deiner Shell auf einen beliebigen Pfad setzt, oder mit `--save-dir <path>` pro Durchlauf. Nutze `--output <file>`, wenn du das gerenderte Ergebnis an einem exakten Pfad brauchst – im Format, das `--emit` vorgibt. Mit `--save-suffix=<name>` hältst du mehrere Varianten desselben Themas auseinander (etwa pro Kunde). Jeder Durchlauf mit `--save-dir` erzeugt `<slug>-raw[-suffix].md`. Mit `python3 skills/last30days/scripts/last30days.py --preflight` siehst du vor einer Recherche, welche Dateien geschrieben würden.
|
||||
|
||||
**Strukturierte Ausgabe für Agenten und Workflows.** Bitte `/last30days` um maschinenlesbares JSON, dann bekommst du das stabile, versionierte Agentenprofil. Für den direkten Einsatz der Engine in Skripten oder in der Entwicklung führst du `python3 skills/last30days/scripts/last30days.py "AI coding agents" --emit=json` aus; `--json-profile=raw` brauchst du nur, wenn du den unversionierten internen `Report`-Dump willst. Siehe die [Feldreferenz des JSON-Exports samt Versionierungsrichtlinie](docs/reference/json-export.md).
|
||||
|
||||
**Discovery ohne festes Thema.** Frag `/last30days what's trending in AI agents?`, um ein sortiertes Discovery-Briefing zu bekommen, statt ein Thema zu recherchieren, das du ohnehin kennst. Auf einem Agenten-Host läuft dafür das dreistufige, vom Host bewertete Protokoll (das Modell benennt Themen, filtert Müll heraus, bewertet ihre Relevanz und schreibt die inhaltlichen Ansätze). Für den direkten Einsatz der Engine in Skripten oder per Cron führst du `python3 skills/last30days/scripts/last30days.py --discover "AI agents"` aus (einmaliger Lauf: deterministische Themennamen, keine Ansätze); mit `--emit=json` bekommst du den versionierten Discovery-Vertrag. Discovery schließt ein positionsbasiertes Thema und `--drill` gegenseitig aus.
|
||||
|
||||
**Trendbeobachtung über mehrere Durchläufe.** Der Standardmodus erzeugt pro Durchlauf einen frischen Markdown-Snapshot. Um Erkenntnisse über die Zeit zu sammeln, hängst du `--store` an, damit sie in einer SQLite-Datenbank landen, und nutzt dann [`scripts/watchlist.py`](skills/last30days/scripts/watchlist.py) für geplante Durchläufe (auf Wunsch mit Zustellung per Slack oder Webhook bei neuen Funden) sowie [`scripts/briefing.py`](skills/last30days/scripts/briefing.py) für tägliche oder wöchentliche Zusammenfassungen. Das vollständige Taktmuster steht in [CONFIGURATION.md](CONFIGURATION.md#trend-monitoring-store--watchlist--briefings).
|
||||
|
||||
**Eine abonnierbare Recherche-Bibliothek.** Bitte `/last30days`, deinen Bibliotheks-Feed zu bauen, oder nutze für Skripting und Entwicklung direkt `python3 skills/last30days/scripts/last30days.py library feed`. Das verwandelt gespeicherte Briefings in eine `index.html`, ein lokales Atom-`feed.xml` und lesbare Briefing-Seiten. Hänge `--publish` nur an, wenn der HTML-Index und die Briefing-Seiten gehostet werden sollen; das Veröffentlichen ist eine bewusste Entscheidung und standardmäßig öffentlich. Damit der Atom-Feed wirklich abonnierbar wird, hoste das erzeugte Ausgabeverzeichnis bei einem statischen Anbieter wie GitHub Pages.
|
||||
|
||||
**Durchsuche alles, was du schon recherchiert hast.** Frag `/last30days search my library for MCP servers` oder `/last30days have I researched MCP servers before?`. Für den direkten Einsatz der Engine führst du `python3 skills/last30days/scripts/last30days.py library search "MCP servers"` aus. Die Suche läuft offline und deterministisch: Sie indexiert nach und nach dieselben gespeicherten Briefings, die auch der Bibliotheks-Feed nutzt, führt passende Treffer aus dem Store je Durchlauf zusammen und gruppiert die Ergebnisse nach Thema und Datum. Neue Durchläufe blenden außerdem einen kompakten Abschnitt **From your library** („aus deiner Bibliothek“) ein, wenn frühere Recherchen das aktuelle Thema überschneiden; mit `LAST30DAYS_LIBRARY_CONTEXT=off` schaltest du diesen passiven Kontext ab.
|
||||
|
||||
Wrapper-Skripte pro Kunde, eigene Kategorie-Subreddits und der experimentelle Beta-Kanal für Anpassungen in Arbeit sind ebenfalls in [CONFIGURATION.md](CONFIGURATION.md) dokumentiert.
|
||||
|
||||
## Showcase: Recherche-Feeds aus der Community
|
||||
|
||||
Du hast mit last30days ein wiederkehrendes KI-Update, eine Marktbeobachtung oder eine herrlich spezielle Obsession veröffentlicht? Teil die URL deiner öffentlichen Bibliothek – oder die Atom-URL, sobald `feed.xml` bei einem statischen Anbieter liegt – im [Showcase-Thread der Community](https://github.com/mvanhorn/last30days-skill/issues/532). Community-Feeds werden hier verlinkt, sobald ihre Besitzer sie einreichen; bis dahin ist der Thread die Sammelstelle.
|
||||
|
||||
## So funktioniert es
|
||||
|
||||
1. **Du tippst ein Thema ein.** Person, Unternehmen, Produkt, Technologie, „X vs Y“. Alles ist möglich.
|
||||
2. **Der Agent klärt, wer zählt.** Er findet X-Handles (auch die von Gründerinnen und Gründern), GitHub-Repos, Subreddits, TikTok-Hashtags und YouTube-Kanäle. Bei „Kanye West“ weiß er, dass r/hiphopheads, @kanyewest und „bully review“ auf YouTube dazugehören. Bei „OpenClaw“ löst er openclaw/openclaw auf GitHub auf und holt die aktuellen Sternzahlen.
|
||||
3. **Alle Quellen werden parallel durchsucht.** Erweiterung über mehrere Suchanfragen. Ergebnisse gewichtet nach Engagement, Relevanz und Aktualität.
|
||||
4. **Die Tiefe, die sonst niemand hat.** Vollständige YouTube-Transkripte aus Reaktionsvideos. Die besten Reddit-Kommentare samt Upvote-Zahlen. TikTok-Captions. Polymarket-Quoten. Nicht nur Titel und Links.
|
||||
5. **Dieselbe Geschichte, zusammengeführt.** Das Wireless Festival auf Reddit angekündigt, auf X diskutiert, Ticketpreise auf TikTok – das ergibt einen Cluster, nicht drei getrennte Einträge.
|
||||
6. **Zu einem Briefing verdichtet.** Auf konkreten Daten fußend. Nach Quelle belegt. Sortiert nach dem, womit Menschen wirklich interagieren. Nicht „hier ist, was ich gefunden habe“, sondern „hier ist, was zählt“.
|
||||
7. **Danach wird es dein Experte.** Nach einem einzigen Durchlauf weiß deine Claude-Sitzung alles, was die Community weiß. Stell Rückfragen. Lass sie Prompts schreiben, E-Mails entwerfen, Reisen planen, Systeme entwerfen – immer verankert in dem, was gerade wirklich stimmt.
|
||||
|
||||
## Was die Leute sagen
|
||||
|
||||
> „Ich habe eine Claude-Code-Skill gefunden, die zu jedem Thema die letzten 30 Tage auf Reddit, X, YouTube und HN recherchiert. Und dann schreibt sie dir die Prompts. Vor jedem Text, den ich schreibe, habe ich das bisher von Hand auf Reddit und X gemacht. Tab für Tab. Thread für Thread. Genau das ist der Teil, der 90 Minuten frisst. Der fällt jetzt weg.“ – @itsjasonai
|
||||
|
||||
> „Diese eine Skill hat meinen kompletten Recherche-Workflow ersetzt. Du gibst ihr ein Thema, sie holt sich von Reddit, X und dem Web, worüber die Leute wirklich reden. Keine alten Blogbeiträge. Echte Gespräche aus den letzten 30 Tagen.“ – @itswilsoncharles
|
||||
|
||||
> „5 der 10 Trending-Repos heute auf GitHub sind Claude-Tools. Nummer 1: mvanhorn/last30days-skill“ – @yieldhunter95
|
||||
|
||||
## Open Source
|
||||
|
||||
MIT-Lizenz. Kein Tracking. Keine Analytics. Deine Recherche bleibt auf deinem Rechner. Über 2.700 Tests.
|
||||
|
||||
Gebaut mit Python 3.12+, yt-dlp, Node.js (mitgelieferter Bird-Client für die X-Suche) und der ScrapeCreators-API. Architektur der v3-Engine von [@j-sperling](https://github.com/j-sperling).
|
||||
|
||||
Wie du einen PR aufmachst, steht in [CONTRIBUTING.md](CONTRIBUTING.md), die vollständige Liste der Community-Beitragenden in [CONTRIBUTORS.md](CONTRIBUTORS.md) und die Versionshistorie in [CHANGELOG.md](CHANGELOG.md).
|
||||
|
||||
## Sternverlauf
|
||||
|
||||
<a href="https://star-history.com/#mvanhorn/last30days-skill&Date">
|
||||
<picture>
|
||||
<source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/svg?repos=mvanhorn/last30days-skill&type=Date&theme=dark" />
|
||||
<source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/svg?repos=mvanhorn/last30days-skill&type=Date" />
|
||||
<img alt="Star History Chart" src="https://api.star-history.com/svg?repos=mvanhorn/last30days-skill&type=Date" />
|
||||
</picture>
|
||||
</a>
|
||||
|
||||
---
|
||||
|
||||
**@slashlast30days** · [github.com/mvanhorn/last30days-skill](https://github.com/mvanhorn/last30days-skill)
|
||||
+383
@@ -0,0 +1,383 @@
|
||||
# /last30days
|
||||
|
||||
[English](README.md) | [Français](README.fr.md) | [Deutsch](README.de.md) | Español | [Português (Brasil)](README.pt-BR.md) | [日本語](README.ja.md) | [简体中文](README.zh-CN.md)
|
||||
|
||||
<p align="center">
|
||||
<img src="media/pr-assets/last30days-ad.gif" width="720" alt="last30days - an AI agent-led search engine that searches people, not editors" />
|
||||
</p>
|
||||
|
||||
<p align="center">
|
||||
<a href="https://github.com/mvanhorn/last30days-skill">
|
||||
<img src="https://img.shields.io/badge/%231-Repository%20Of%20The%20Day-6f42c1?style=for-the-badge&logo=github&label=GITHUB%20TRENDING" alt="GitHub Trending #1 Repository Of The Day" />
|
||||
</a>
|
||||
<br/>
|
||||
<a href="https://trendshift.io/repositories/21997" target="_blank">
|
||||
<img src="https://trendshift.io/api/badge/repositories/21997" alt="mvanhorn/last30days-skill | Trendshift" style="width: 250px; height: 55px;" width="250" height="55"/>
|
||||
</a>
|
||||
</p>
|
||||
|
||||
**Un buscador dirigido por un agente de IA que puntúa por votos positivos, likes y dinero real, no por redacciones.**
|
||||
|
||||
Este README documenta el pipeline v3 actual. La especificación de ejecución de la skill vive en [skills/last30days/SKILL.md](skills/last30days/SKILL.md), que es la referencia definitiva sobre el comportamiento de los comandos y la configuración.
|
||||
|
||||
**Claude Code (recomendado — actualizaciones automáticas vía marketplace):**
|
||||
```
|
||||
/plugin marketplace add mvanhorn/last30days-skill
|
||||
/plugin install last30days
|
||||
```
|
||||
|
||||
**Codex, Cursor, Copilot, Gemini CLI, o cualquiera de los 50+ hosts de [Agent Skills](https://agentskills.io):**
|
||||
```
|
||||
npx skills add mvanhorn/last30days-skill -g
|
||||
```
|
||||
(`-g` instala de forma global para tu usuario, así que la tienes disponible en todos tus proyectos. Omite ese flag si prefieres limitar la instalación a un proyecto.)
|
||||
|
||||
Más formas de instalarlo (claude.ai web, OpenClaw, manual) en la sección [Instalación](#instalación) de más abajo.
|
||||
|
||||
Cero configuración. Reddit, HN, Polymarket y GitHub funcionan de inmediato. Ejecútalo una vez y el asistente de configuración desbloquea X, YouTube, TikTok, arXiv, Techmeme y más en 30 segundos.
|
||||
|
||||
---
|
||||
|
||||
Los votos positivos de Reddit. Los likes de X. Las transcripciones de YouTube. La interacción en TikTok. Las cuotas de Polymarket, respaldadas por dinero real y por información privilegiada. Eso son millones de personas votando cada día con su atención y su cartera. /last30days lo busca todo en paralelo, lo puntúa según aquello con lo que la gente interactúa de verdad, y un agente de IA hace de juez para sintetizarlo en un único informe.
|
||||
|
||||
Google agrega redacciones. /last30days busca personas.
|
||||
|
||||
Esta búsqueda no la consigues en ningún otro sitio, porque ninguna IA tiene acceso a todo. Google no toca los comentarios de Reddit ni las publicaciones de X. ChatGPT tiene un acuerdo con Reddit, pero no puede buscar en X ni en TikTok. Gemini tiene YouTube, pero no Reddit. Claude no tiene ninguno de forma nativa. Cada plataforma es un jardín amurallado con su propia API, sus propios tokens y su propia autenticación. Pero tú puedes aportar tus claves y tus sesiones de navegador y, de golpe, un agente de IA las consulta todas a la vez, las compara entre sí y te dice qué importa de verdad.
|
||||
|
||||
Ese es el desbloqueo. No se trata de un buscador mejor, sino de una docena de plataformas incomunicadas que un agente conecta entre sí.
|
||||
|
||||
```
|
||||
/last30days Peter Steinberger
|
||||
```
|
||||
|
||||
Mañana tienes una reunión. Buscas a la persona en Google. Te sale su LinkedIn de 2023. /last30days te da lo que está haciendo de verdad este mes: se ha incorporado a OpenAI para trabajar en Codex, pelea contra el veto de Anthropic a los agentes de terceros, ha entregado 23 PR con un 85 % de tasa de merge, construye «LobsterOS» para controlar agentes entre dispositivos, y un hilo de r/ClaudeCode llegó a 569 votos positivos debatiendo si es un héroe o un «insoportable». Todo repartido entre publicaciones de X, hilos de Reddit, transcripciones de YouTube y commits de GitHub. Nada de eso estaba en Google.
|
||||
|
||||
## Por qué existe esto
|
||||
|
||||
Lo construí para no quedarme atrás en IA. Todo cambia cada día y los frikis de Reddit y de X siempre se enteran primero. Necesitaba mejores prompts, y los datos de entrenamiento siempre iban meses por detrás de lo que la comunidad ya había averiguado.
|
||||
|
||||
Pero acabó siendo algo más grande. Ahora lo lanzo antes de una llamada comercial, para conocer la verdad de los últimos 30 días sobre una empresa. Antes de una reunión, para leer los tuits recientes y las transcripciones de podcasts de la otra persona. Antes de un viaje a Disney World, para saber qué atracciones están cerradas y qué opina la comunidad sobre Genie+. Antes de construir nada, para saber con qué problemas se está encontrando la gente de verdad.
|
||||
|
||||
Si te vas a reunir con un CEO, ¿te has leído todos sus tuits y todas sus transcripciones de YouTube de los últimos 30 días? Yo sí.
|
||||
|
||||
## Fuentes, puntuadas por la gente
|
||||
|
||||
| Fuente | Lo que te dice la gente |
|
||||
|--------|--------------------------|
|
||||
| **Reddit** | La opinión sin filtros. Los mejores comentarios con su recuento real de votos positivos, gratis y sin clave de API. Las opiniones reales que Google entierra. |
|
||||
| **X / Twitter** | La reacción en caliente, el hilo del experto, la primera respuesta a una noticia de última hora. Los primeros en enterarse, los primeros en discutir. |
|
||||
| **YouTube** | El análisis a fondo de 45 minutos. Transcripciones completas, rastreadas para sacar las 5 frases citables que importan. |
|
||||
| **TikTok** | El creador que llega a 3,6 millones de personas con una lectura que nunca encontrarás en Google. |
|
||||
| **Instagram Reels** | La mirada de los influencers, con transcripción de lo que dicen. La señal de la cultura visual. |
|
||||
| **Hacker News** | El consenso de los desarrolladores. 825 puntos, 899 comentarios. Donde la gente técnica discute de verdad. |
|
||||
| **Polymarket** | No son opiniones. Son cuotas. Respaldadas por dinero real. 96 % de probabilidad en ventas de un álbum. 4 % en una adquisición. |
|
||||
| **GitHub** | Para personas: ritmo de PR, mejores repositorios por estrellas, notas de versión. Para temas: issues y discusiones. |
|
||||
| **Digg** | Grupos de noticias seleccionados del ranking AI 1000 de Digg (unas 1000 cuentas de IA con mucha señal en X), con citas atribuibles integradas y sin necesidad de autenticarte en X. Se activa solo cuando `digg-pp-cli` está en el PATH. |
|
||||
| **arXiv** | Los artículos científicos que hay detrás del ruido. Investigación nueva dentro de la ventana, gratis y sin clave de API. Se activa solo cuando `arxiv-pp-cli` está en el PATH (la configuración inicial lo instala). |
|
||||
| **Techmeme** | La capa editorial de la actualidad tecnológica, acotada a tu ventana de 30 días. Gratis y sin clave de API. Se activa solo cuando `techmeme-pp-cli` está en el PATH (la configuración inicial lo instala). |
|
||||
| **LinkedIn** | La señal profesional. Publicaciones y artículos, con los artículos ponderados como señal fuerte. |
|
||||
| **StockTwits** | El sentimiento de los traders. Se activa automáticamente cuando tu tema es un ticker o una criptomoneda. |
|
||||
| **Threads** | La capa de texto posterior a Twitter. Conversaciones de creadores y marcas. |
|
||||
| **Pinterest** | Descubrimiento visual. Pines, guardados y comentarios sobre productos e ideas. |
|
||||
| **Xiaohongshu (RED)** | Señales chinas sobre estilo de vida, productos y creadores. Se pide de forma explícita con `--search xhs` cuando tienes corriendo en local un plugin de navegador x-mcp con sesión iniciada o un servicio `xiaohongshu-mcp`. |
|
||||
| **Bluesky** | La capa social descentralizada. Publicaciones de AT Protocol surgidas de la migración posterior a Twitter. |
|
||||
| **Perplexity** | La síntesis fundamentada de Sonar, los resultados en bruto de la Search API y Deep Research. |
|
||||
| **Web** | La cobertura editorial, las comparativas de los blogs. Una señal entre muchas, no la única. |
|
||||
|
||||
La comunidad no para de sumar fuentes. Truth Social y otras fuentes de nicho ya están en el motor, y vienen más.
|
||||
|
||||
Un hilo de Reddit con 1.500 votos positivos es una señal más fuerte que una entrada de blog que no leyó nadie. Un TikTok con 3,6 millones de visualizaciones dice más sobre lo que es culturalmente relevante que cualquier nota de prensa. Unas cuotas de Polymarket respaldadas por 66.000 dólares de volumen son más difíciles de rebatir que la corazonada de un tertuliano.
|
||||
|
||||
La síntesis ordena según aquello con lo que la gente real ha interactuado de verdad. Relevancia social, no relevancia SEO.
|
||||
|
||||
## Para qué lo usa la gente en realidad
|
||||
|
||||
**Antes de una reunión.** `/last30days Peter Steinberger` — se ha incorporado al equipo de Codex de OpenAI, pelea contra el veto de Anthropic a los agentes de terceros, 23 PR mergeadas con un 85 % de tasa de merge en GitHub, construye LobsterOS para controlar agentes entre dispositivos. r/ClaudeCode: «Desde que salió OpenClaw, todo el mundo sabía que, si lo pasabas por algo que no fuera la API, acabarías baneado» (227 votos positivos). Eso no está en LinkedIn.
|
||||
|
||||
**Para leer señales de contratación.** `/last30days Listen Labs --hiring-signals` — las ofertas de empleo y las páginas de carreras actuales se convierten en pruebas citadas de un cambio de prioridades: contratación en seguridad para empresa, customer success, infraestructura o expansión de producto. El informe dice lo que la contratación parece señalar, no lo que la hoja de ruta va a entregar.
|
||||
|
||||
**Para encontrar el tema antes de su pico.** Pregunta `/last30days what's exploding in AI agents?` y la skill cambia a modo descubrimiento: el motor barre los listados por categoría de Reddit, la portada y las mejores historias de Hacker News, el feed AI 1000 de Digg y X si estás autenticado; tu agente evalúa las candidaturas (nombres, filtrado de ruido, interés real) y escribe enfoques para pódcast o para un artículo en X; después obtienes entre 5 y 10 temas ordenados por velocidad. Cada resultado incluye cifras de varias fuentes, una etiqueta de impulso y un comando `/last30days "<topic>"` listo para lanzar.
|
||||
|
||||
**Cuando sale algo nuevo.** `/last30days Kanye West` — el Reino Unido le bloqueó el visado, el Wireless Festival se canceló, los patrocinadores huyeron. Pero BULLY debutó en el número 2 del Billboard. Fantano volvió de su «Yay sabbatical» para reseñarlo (653.000 visualizaciones). En el SoFi Homecoming sacó al escenario a Lauryn Hill y a Travis Scott para 44 canciones. Polymarket: «¿Volverá Kanye a tuitear?» 86 % sí. 23 hilos de Reddit, 17 vídeos de YouTube, 86.000 votos positivos.
|
||||
|
||||
**Para comparar herramientas.** `/last30days OpenClaw vs Hermes vs Paperclip` — «No son competidores, son capas.» OpenClaw es la capa de ejecución (351.000 estrellas en GitHub, en producción), Hermes es el cerebro que se mejora a sí mismo (31.000 estrellas), Paperclip es el organigrama (49.000 estrellas). El número de estrellas se saca en directo de la API de GitHub, no de entradas de blog caducadas. Tabla comparativa con arquitectura, memoria, seguridad y caso de uso ideal. Según @IMJustinBrooke: «OpenClaw = Charmander, Hermes = Charizard.»
|
||||
|
||||
**Para entender el mundo.** `/last30days Iran vs USA` — día 38 de la guerra. El ultimátum de Trump, con plazo hasta el martes, para que Irán reabra el estrecho de Ormuz. Dos aviones de combate estadounidenses derribados. El petróleo a 126 dólares el barril. La AIE lo calificó como «la mayor interrupción de suministro de la historia del mercado mundial del petróleo». Polymarket: alto el fuego antes del 31 de diciembre al 74 %. 27 publicaciones de X, 10 vídeos de YouTube, 20 mercados de predicción.
|
||||
|
||||
**Antes de un viaje.** `/last30days Universal Epic Universe` — la ampliación ya está en obras. Licencia «Project 680» presentada. El espectáculo de fuegos artificiales está confirmado por la infraestructura, pero sin anunciar. Tiempos de espera: Mine-Cart Madness promedia 148 minutos. Todavía no hay pase anual, y los vecinos están hartos. Stardust Racers cerrada por reforma hasta el 5 de abril.
|
||||
|
||||
**Para aprender algo rápido.** `/last30days Nano Banana Pro prompting` — los prompts estructurados en JSON están sustituyendo al amontonamiento de etiquetas. El formato anidado de @pictsbyai evita el «concept bleeding». Editar gana a regenerar. Y después te escribe un prompt de producción aplicando exactamente lo que la comunidad ha dicho que funciona.
|
||||
|
||||
## Novedades
|
||||
|
||||
Desde el anuncio de la v3.3 en mayo y hasta la v3.11.1 (julio de 2026): 175 PR mergeadas —122 de ellas de 52 colaboradores de la comunidad— repartidas en 15 versiones. Esto es lo que ha entrado.
|
||||
|
||||
### Ciudadano de primera en OpenAI Codex
|
||||
|
||||
/last30days ya es un plugin nativo de Codex con configuración guiada: no es un port, es un ciudadano de primera. Las citas tienen en cuenta el renderizador, así que la salida en Codex se lee como un informe y no como una sopa de URL (#694), y el mismo motor funciona en Claude Code, Cursor, Copilot, Gemini CLI, Claude Desktop, OpenClaw y 50+ hosts de Agent Skills. Manifiesto del plugin de Codex por [@rfoust](https://github.com/rfoust) (#686), corrección de autenticación en Codex por [@tmchow](https://github.com/tmchow) (#698).
|
||||
|
||||
### arXiv, Techmeme y Digg: gratis y sin claves de API
|
||||
|
||||
arXiv aporta los artículos científicos que hay detrás del ruido y Techmeme la capa editorial de la actualidad tecnológica: gratis, sin una sola clave, y la configuración inicial instala sus CLI para que se activen solas (#709). Los grupos de noticias AI 1000 de Digg llegan igual, sin autenticarte en X: la configuración instala por ti la CLI gratuita de Digg (#590). Trustpilot está disponible como opción para investigar marcas de consumo.
|
||||
|
||||
### Reddit gratis, con puntuaciones reales y mejores comentarios
|
||||
|
||||
La API pública .json de Reddit desapareció; la vía gratuita volvió más fuerte. RSS sin clave y scraping de shreddit (#457), descubrimiento de subreddits específicos con recuentos reales de votos positivos vía arctic-shift (#696), y un umbral de relevancia para que una publicación viral fuera de tema no secuestre tu informe (#488, gracias [@rzachsmith](https://github.com/rzachsmith)). Sin clave de API. Puntuaciones reales. Con los mejores comentarios incluidos.
|
||||
|
||||
### Los mejores comentarios en cada informe
|
||||
|
||||
Los comentarios son ya una capa activada por defecto en todas las fuentes: comentarios de Instagram con diversidad basada en el ranking, para que cinco opiniones rotundas no salgan todas de la misma publicación (#751), comentarios de YouTube más un respaldo de transcripción vía ScrapeCreators para cuando yt-dlp falla (#637), y comentarios votados por la comunidad ponderados dentro de Best Takes, para que las mejores frases sobrevivan a la puntuación (#592, #608).
|
||||
|
||||
### Un único comando doctor
|
||||
|
||||
Pide una revisión y doctor comprueba todas las fuentes y receta los arreglos exactos: qué clave falta, qué CLI no está en el PATH, qué cookie ha caducado (#753). Se acabó adivinar por qué X ha devuelto tan poco.
|
||||
|
||||
### La búsqueda en X, reconstruida
|
||||
|
||||
El pipeline de X se rehízo de arriba abajo: carriles FROM y ABOUT para que se posicionen tanto las publicaciones de una persona como la conversación sobre ella (#610), desambiguación de subconsultas según la persona buscada (#611), verificación de la autoría de primera mano con ranking por señales de interacción (#613), y una única fuente X con conmutación automática entre backends (#622). Además, un `--diagnose` honesto que comprueba de verdad la autenticación (#609).
|
||||
|
||||
### Se han sumado más fuentes
|
||||
|
||||
LinkedIn vía ScrapeCreators, con los artículos como señal fuerte ([@ravstr](https://github.com/ravstr), #702). StockTwits se activa automáticamente en temas de tickers y cripto ([@wtiwana](https://github.com/wtiwana), #658). Perplexity ha ganado modos de API directos y Deep Research asíncrono ([@sk-holmes](https://github.com/sk-holmes), #629).
|
||||
|
||||
### Endurecido por la comunidad
|
||||
|
||||
La oleada de seguridad fue casi por completo trabajo de la comunidad: correcciones de XSS almacenado en el renderizador HTML ([@iliaal](https://github.com/iliaal), [@aaronjmars](https://github.com/aaronjmars)), archivos temporales de cookies blindados, CI endurecida frente a ataques a la cadena de suministro con OpenSSF Scorecard y atestación de procedencia de las builds ([@shaanmajid](https://github.com/shaanmajid), [@hammadxcm](https://github.com/hammadxcm), [@aniruddh909](https://github.com/aniruddh909)), análisis con Semgrep y OSV-Scanner más un control de revisión de dependencias en cada PR ([@23241a6749](https://github.com/23241a6749)), un mínimo de cobertura de pruebas fijado al 60 % y elevado desde entonces al 84 % ([@gourab5139014](https://github.com/gourab5139014)), y un análisis de seguridad de Hermes que ya no arroja ningún hallazgo CRITICAL (#768).
|
||||
|
||||
### Llega más lejos
|
||||
|
||||
Hebreo y otros idiomas no latinos ([@dudyme](https://github.com/dudyme)). Tokenización adaptada a CJK para las fuentes chinas ([@An-idd](https://github.com/An-idd)). Una oleada de compatibilidad con Windows. Extracción de cookies en toda la familia Chromium —Brave, Edge, Vivaldi, Opera, Arc ([@andrey-esipov](https://github.com/andrey-esipov))— además del llavero de macOS y pass(1) en Linux como orígenes de credenciales. Consulta histórica hacia atrás con `--as-of` ([@chiyi-creator](https://github.com/chiyi-creator)). Instalación automática de Python 3.12 mediante uv ([@buntysomroy](https://github.com/buntysomroy)). `--hiring-signals` para leer las páginas de empleo de una empresa. Diferencias de la lista de seguimiento entre ejecuciones.
|
||||
|
||||
### Lo que ya venía de serie desde la v3
|
||||
|
||||
Los cimientos de la v3 siguen todos aquí: el cerebro previo a la investigación, que identifica las cuentas, subreddits y hashtags correctos antes de que salga una sola llamada a la API (obra de [@j-sperling](https://github.com/j-sperling)); la puntuación Best Takes, que valora el humor y la viralidad además de la relevancia; la fusión de clústeres entre fuentes; las comparativas en una sola pasada («CLI vs MCP» en 3 minutos, no en 12); las comparativas `--competitors` descubiertas de forma automática; el modo persona de GitHub (`--github-user=steipete`); el modo ELI5 («eli5 on» después de cualquier ejecución); y los informes HTML autocontenidos y compartibles (`--emit=html`). Los ajustes de configuración están en [CONFIGURATION.md](CONFIGURATION.md).
|
||||
|
||||
## Instalación
|
||||
|
||||
| Entorno | Instalación | Actualizaciones |
|
||||
|---------|---------|---------|
|
||||
| **Claude Code** (recomendado) | `/plugin marketplace add mvanhorn/last30days-skill` | Automáticas vía marketplace, o `claude plugin update last30days@last30days-skill` |
|
||||
| **Grok** (xAI Build CLI) | `grok plugin marketplace add mvanhorn/last30days-skill` y después `grok plugin install last30days` | `grok plugin update last30days` |
|
||||
| **Codex, Cursor, Copilot, Gemini CLI, o cualquiera de los 50+ hosts de [Agent Skills](https://agentskills.io)** | `npx skills add mvanhorn/last30days-skill -g` | `npx skills update last30days -g` |
|
||||
| **claude.ai** (web) | [Descarga `last30days.skill`](https://github.com/mvanhorn/last30days-skill/releases/latest/download/last30days.skill) y súbelo desde claude.ai > Customize > Skills > + > Create skill > Upload a skill | Volver a descargar y volver a subir |
|
||||
| **Claude Desktop** | [Descarga el `.mcpb` de tu plataforma](https://github.com/mvanhorn/last30days-skill/releases/latest) y arrástralo a Settings > Extensions | Volver a descargar y arrastrar el nuevo paquete |
|
||||
| **OpenClaw** | `clawhub install last30days-official` | `clawhub update last30days-official` |
|
||||
|
||||
### Claude Code (recomendado)
|
||||
|
||||
```
|
||||
/plugin marketplace add mvanhorn/last30days-skill
|
||||
```
|
||||
|
||||
Es la opción recomendada porque el marketplace de Claude Code se encarga de las actualizaciones por ti: la caché del plugin está versionada y se refresca sola cuando se publica una versión nueva. Ejecuta `claude plugin update last30days@last30days-skill` para forzar una comprobación.
|
||||
|
||||
Si prefieres usar la vía de instalación de Agent Skills en Claude Code, también está soportada:
|
||||
|
||||
```
|
||||
npx skills add mvanhorn/last30days-skill -g -a claude-code
|
||||
```
|
||||
|
||||
El plugin nativo y la instalación con `npx skills` pueden convivir. Ojo: Claude Code no deduplica entre métodos de instalación. Si tienes activos a la vez el plugin del marketplace y la copia de `npx skills`, `/last30days` aparecerá dos veces. Usa un solo método de instalación por máquina.
|
||||
|
||||
### Grok (xAI Build CLI)
|
||||
|
||||
[Grok Build](https://docs.x.ai/build/features/skills-plugins-marketplaces) (`grok`) instala last30days como plugin nativo. La instalación directa sigue el repositorio:
|
||||
|
||||
```bash
|
||||
grok plugin install mvanhorn/last30days-skill
|
||||
```
|
||||
|
||||
O añade este repositorio como fuente de marketplace y luego instálalo por nombre de plugin:
|
||||
|
||||
```bash
|
||||
grok plugin marketplace add mvanhorn/last30days-skill
|
||||
grok plugin install last30days
|
||||
```
|
||||
|
||||
Añade `--trust` para saltarte la confirmación de instalación. Actualiza con `grok plugin update last30days`. Grok también lee los manifiestos de Claude Code por compatibilidad; el par nativo `.grok-plugin/` es la vía principal, y es a lo que apunta una entrada oficial en el [marketplace de xAI](https://github.com/xai-org/plugin-marketplace). `npx skills add` sigue siendo una alternativa válida para cualquier host.
|
||||
|
||||
### Codex, Cursor, Copilot, Gemini CLI y otros hosts de Agent Skills
|
||||
|
||||
Instálalo con la CLI abierta de [Agent Skills](https://agentskills.io): soporta 50+ hosts, entre ellos `codex`, `cursor`, `github-copilot`, `gemini-cli`, `claude-code`, `windsurf`, `cline`, `continue`, `roo`, `aider-desk`, `opencode`, `goose` y más (lista completa en el [repositorio vercel-labs/skills](https://github.com/vercel-labs/skills)).
|
||||
|
||||
```bash
|
||||
npx skills add mvanhorn/last30days-skill -g
|
||||
```
|
||||
|
||||
El flag `-g` (global) instala en tu directorio de usuario, de modo que la skill queda disponible en todos los proyectos. Sin `-g`, `npx skills` instala solo en el proyecto, dentro de `./.skills/` (y se versiona con el repositorio). Para una herramienta que sirve para investigar el mundo entero, lo que quieres es la instalación global.
|
||||
|
||||
Codex de escritorio y otros hosts que trabajan a nivel de carpeta funcionan tanto en carpetas normales como en repositorios Git. Antes de la primera investigación, pídele al agente anfitrión que ejecute el `scripts/last30days.py --preflight` incluido desde el directorio de la skill cargada; en un clon del código fuente, el comando equivalente es `python3 skills/last30days/scripts/last30days.py --preflight`. Te muestra de dónde sale la configuración, qué cookies del navegador se leerían, qué archivos se escribirían, qué comandos opcionales hay y qué configuración de proyecto se ignora, todo ello sin leer cookies, sin escribir archivos y sin lanzar ninguna investigación.
|
||||
|
||||
Por defecto se instala para el host que detecte `npx skills`. Para apuntar a uno concreto (o a varios):
|
||||
|
||||
```bash
|
||||
npx skills add mvanhorn/last30days-skill -g -a codex
|
||||
npx skills add mvanhorn/last30days-skill -g -a cursor
|
||||
npx skills add mvanhorn/last30days-skill -g -a gemini-cli
|
||||
npx skills add mvanhorn/last30days-skill -g -a codex -a cursor
|
||||
```
|
||||
|
||||
Para actualizar más adelante:
|
||||
|
||||
```bash
|
||||
npx skills update last30days -g
|
||||
```
|
||||
|
||||
O actualiza todo lo que hayas instalado globalmente con `npx skills`:
|
||||
|
||||
```bash
|
||||
npx skills update -g
|
||||
```
|
||||
|
||||
Puedes listarlo y desinstalarlo con `npx skills list -g` y `npx skills remove last30days -g`.
|
||||
|
||||
### claude.ai (web)
|
||||
|
||||
1. [Descarga `last30days.skill`](https://github.com/mvanhorn/last30days-skill/releases/latest/download/last30days.skill) de la última versión publicada
|
||||
2. Entra en [claude.ai > Customize > Skills](https://claude.ai/customize/skills)
|
||||
3. Pulsa el botón `+` del panel de Skills, luego `Create skill` > `Upload a skill`, y busca o arrastra el archivo
|
||||
|
||||
Activa antes «Code execution and file creation» en Capabilities: sin eso, las skills no se ejecutan.
|
||||
|
||||
### Claude Desktop
|
||||
|
||||
Claude Desktop instala `/last30days` como servidor MCP mediante un paquete `.mcpb` (un paquete de Model Context Protocol de un solo clic).
|
||||
|
||||
1. Entra en la [última versión publicada](https://github.com/mvanhorn/last30days-skill/releases/latest) y descarga el `.mcpb` de tu plataforma:
|
||||
- macOS Apple Silicon: `last30days-pp-mcp-darwin-arm64.mcpb`
|
||||
- macOS Intel: `last30days-pp-mcp-darwin-amd64.mcpb`
|
||||
- Linux x86_64: `last30days-pp-mcp-linux-amd64.mcpb`
|
||||
2. Abre Claude Desktop, ve a Settings > Extensions y arrastra el archivo ahí.
|
||||
3. Cuando te las pida, pega las claves de API de las fuentes que quieras activar. Todos los campos son opcionales: si los saltas todos, el motor se queda en modo solo web. Las claves se guardan en el llavero de tu sistema operativo.
|
||||
4. Reinicia Claude Desktop. Pídele a Claude que «investigue a Peter Steinberger», o cualquier otro tema, y llamará a la herramienta `research`.
|
||||
|
||||
**Requisito del anfitrión:** Python 3.12+ en el PATH. El paquete incluye el código del motor, pero usa tu intérprete de Python local. En Windows, instálalo desde [python.org](https://www.python.org/downloads/); macOS y la mayoría de distribuciones de Linux ya traen una versión compatible.
|
||||
|
||||
**Las claves no se comparten con la skill de Claude Code.** Claude Desktop y Claude Code mantienen almacenes de credenciales separados a propósito. Si ya configuraste `~/.config/last30days/.env` para la skill de Claude Code, aquí tendrás que introducir esas mismas claves una vez.
|
||||
|
||||
La compatibilidad con Windows queda aplazada hasta resolver los puntos de entrada por plataforma del manifiesto; el seguimiento se hace en una incidencia aparte.
|
||||
|
||||
### OpenClaw
|
||||
|
||||
```bash
|
||||
clawhub install last30days-official
|
||||
```
|
||||
|
||||
Para flujos de acción en X/Twitter fuera de la investigación de `/last30days` —publicar
|
||||
tuits o respuestas, exportar seguidores, gestionar medios, monitorizar cuentas y
|
||||
resolver sorteos— usa [TweetClaw](https://github.com/Xquik-dev/tweetclaw) como
|
||||
plugin complementario de OpenClaw. TweetClaw lo mantiene Xquik-dev y aparece aquí
|
||||
únicamente como opción complementaria: no es una dependencia ni una recomendación
|
||||
de last30days.
|
||||
|
||||
### Manual (para desarrolladores)
|
||||
|
||||
```bash
|
||||
git clone https://github.com/mvanhorn/last30days-skill.git
|
||||
ln -s "$(pwd)/last30days-skill/skills/last30days" ~/.claude/skills/last30days
|
||||
```
|
||||
|
||||
El enlace simbólico mantiene la instalación sincronizada con tu copia de trabajo a medida que editas, sin necesidad de volver a copiar nada. Para `claude.ai`, compila el archivo `.skill` desde el código fuente: `bash skills/last30days/scripts/build-skill.sh` genera `dist/last30days.skill`.
|
||||
|
||||
Reddit (con comentarios), Hacker News, Polymarket y GitHub funcionan de inmediato. Cero configuración. Ejecuta `/last30days` una vez y el asistente de configuración desbloquea más fuentes en 30 segundos, incluidas las CLI gratuitas de arXiv y Techmeme.
|
||||
|
||||
## Aporta tus propias claves
|
||||
|
||||
Estas plataformas no tienen ninguna relación entre sí. X no sabe lo que piensa Reddit. YouTube no ve TikTok. Pero tú puedes aportar tus claves de API y tus tokens de navegador y, de golpe, tienes acceso a todas a la vez.
|
||||
|
||||
| Fuentes | Lo que necesitas | Coste |
|
||||
|---------|---------------|------|
|
||||
| Reddit (con comentarios) + HN + Polymarket + GitHub + StockTwits | Nada | Gratis |
|
||||
| arXiv + Techmeme | CLI gratuitas, instaladas automáticamente por la configuración inicial | Gratis |
|
||||
| X / Twitter | Inicia sesión en x.com en cualquier navegador, o define `XQUIK_API_KEY` / `XAI_API_KEY` | Las cookies del navegador son gratis; las claves dependen del proveedor |
|
||||
| YouTube | `brew install yt-dlp` | Gratis |
|
||||
| Bluesky | Una contraseña de aplicación de bsky.app | Gratis |
|
||||
| TikTok + Instagram + Threads + Pinterest + LinkedIn + comentarios de YouTube | Una clave de ScrapeCreators | 10.000 llamadas gratis y luego pago por uso |
|
||||
| Xiaohongshu (RED) | Ten corriendo un plugin de navegador x-mcp con sesión iniciada o un servicio `xiaohongshu-mcp`, y activa la fuente con `--search xhs` por ejecución o con `INCLUDE_SOURCES=xiaohongshu` en `.env`; last30days prueba automáticamente `http://localhost:18060` y después `http://host.docker.internal:18060`, o usa `XIAOHONGSHU_API_BASE` para una URL propia | No hace falta clave de API de last30days; depende de tu servicio local de sesión de navegador |
|
||||
| DripStack (boletines financieros premium) | Opcional: `--search dripstack` por ejecución, o `INCLUDE_SOURCES=dripstack` en `.env` | Sin clave; API de búsqueda pública y gratuita |
|
||||
| Perplexity Sonar / Search API / Deep Research | Una clave de Perplexity, o una clave de OpenRouter como alternativa para Sonar | Pago por uso |
|
||||
| Búsqueda web | Una clave de Brave Search | 2.000 consultas gratis al mes |
|
||||
|
||||
### Llavero de macOS (opcional)
|
||||
|
||||
En macOS puedes guardar las claves en el llavero del sistema en lugar de en un archivo `.env`. La skill las recoge automáticamente como la fuente de menor prioridad: si hay conflicto, siguen ganando los archivos `.env` y el entorno del proceso.
|
||||
|
||||
```bash
|
||||
# Interactive setup — prompts for each known key, skip with empty input
|
||||
skills/last30days/scripts/setup-keychain.sh
|
||||
|
||||
# Or store a single key by hand
|
||||
security add-generic-password -a "$USER" -s last30days-XAI_API_KEY -w "xai-..."
|
||||
|
||||
# Inspect / clean up
|
||||
skills/last30days/scripts/setup-keychain.sh --list
|
||||
skills/last30days/scripts/setup-keychain.sh --delete XAI_API_KEY
|
||||
```
|
||||
|
||||
Las entradas se guardan con el nombre de servicio `last30days-<KEY>` para el usuario actual. En plataformas que no son Darwin el cargador no hace nada, así que para quienes usan Linux o Windows no cambia el comportamiento.
|
||||
|
||||
¿Ya tienes claves guardadas con otros nombres de servicio en el llavero? Define el mapeo no secreto `LAST30DAYS_KEYCHAIN_ALIASES` que se describe en [CONFIGURATION.md](CONFIGURATION.md#reusing-existing-macos-keychain-items), en lugar de copiar secretos.
|
||||
|
||||
Consulta [CONFIGURATION.md](CONFIGURATION.md) para ver la matriz completa de claves por fuente, el orden de prioridad de los proveedores de razonamiento y el de los backends de búsqueda web.
|
||||
|
||||
## Configuración
|
||||
|
||||
Dos cosas que seguramente querrás saber desde el primer día:
|
||||
|
||||
**Dónde se guardan los archivos de investigación.** `LAST30DAYS_MEMORY_DIR` apunta por defecto a `~/Documents/Last30Days/` (en Windows: `C:\Users\<you>\Documents\Last30Days\`). Puedes cambiarlo definiendo esa variable de entorno en tu shell con la ruta que quieras, o con `--save-dir <path>` en una ejecución concreta. Usa `--output <file>` cuando necesites el resultado renderizado en una ruta exacta, con el formato que elijas en `--emit`. Usa `--save-suffix=<name>` para mantener separadas varias variantes del mismo tema (por cliente, por ejemplo). Cada ejecución con `--save-dir` genera `<slug>-raw[-suffix].md`. Ejecuta `python3 skills/last30days/scripts/last30days.py --preflight` para revisar qué se va a escribir antes de lanzar una investigación.
|
||||
|
||||
**Salida estructurada para agentes y flujos de trabajo.** Pídele a `/last30days` JSON legible por máquina y obtendrás el perfil de agente estable y versionado. Para usar el motor directamente en scripts o en desarrollo, ejecuta `python3 skills/last30days/scripts/last30days.py "AI coding agents" --emit=json`; añade `--json-profile=raw` solo si necesitas el volcado interno sin versionar de `Report`. Consulta la [referencia de campos de la exportación JSON y la política de versionado](docs/reference/json-export.md).
|
||||
|
||||
**Descubrimiento sin tema.** Pregunta `/last30days what's trending in AI agents?` para obtener un informe de descubrimiento ordenado, en lugar de investigar un tema que ya conoces. En un host con agente esto ejecuta el protocolo de tres comandos arbitrado por el host (el modelo propone los temas, filtra el ruido, puntúa lo que merece la pena y escribe los enfoques de contenido). Para usar el motor directamente en scripts o en cron, ejecuta `python3 skills/last30days/scripts/last30days.py --discover "AI agents"` (una sola pasada: nombres de tema deterministas, sin enfoques); añade `--emit=json` para el contrato de descubrimiento versionado. El descubrimiento es incompatible con un tema posicional y con `--drill`.
|
||||
|
||||
**Seguimiento de tendencias entre ejecuciones.** El modo por defecto genera una instantánea Markdown nueva en cada ejecución. Para ir acumulando hallazgos con el tiempo, añade `--store` y se guardarán en una base de datos SQLite; después usa [`scripts/watchlist.py`](skills/last30days/scripts/watchlist.py) para ejecuciones programadas (con envío opcional por Slack o webhook cuando aparezcan hallazgos nuevos) y [`scripts/briefing.py`](skills/last30days/scripts/briefing.py) para resúmenes diarios o semanales. El patrón de cadencia completo está en [CONFIGURATION.md](CONFIGURATION.md#trend-monitoring-store--watchlist--briefings).
|
||||
|
||||
**Una biblioteca de investigación a la que suscribirse.** Pídele a `/last30days` que genere el feed de tu biblioteca, o usa directamente `python3 skills/last30days/scripts/last30days.py library feed` para scripting y desarrollo. Convierte los informes guardados en un `index.html`, un `feed.xml` Atom local y páginas de informe legibles. Añade `--publish` solo cuando quieras alojar el índice HTML y las páginas de informe; publicar es una decisión explícita y por defecto es público. Para que el feed Atom se pueda seguir de verdad, aloja el directorio de salida generado en un alojamiento estático como GitHub Pages.
|
||||
|
||||
**Busca en todo lo que ya has investigado.** Pregunta `/last30days search my library for MCP servers` o `/last30days have I researched MCP servers before?`. Para usar el motor directamente, ejecuta `python3 skills/last30days/scripts/last30days.py library search "MCP servers"`. La búsqueda es offline y determinista: indexa de forma incremental los mismos informes guardados que usa el feed de la biblioteca, fusiona las coincidencias registradas en el almacén de cada ejecución y agrupa los resultados por tema y fecha. Las ejecuciones nuevas muestran además una sección compacta **From your library** («desde tu biblioteca») cuando una investigación anterior se solapa con el tema actual; define `LAST30DAYS_LIBRARY_CONTEXT=off` para desactivar ese contexto pasivo.
|
||||
|
||||
Los scripts envoltorio por cliente, los subreddits de categoría personalizados y el canal beta experimental para personalizaciones en curso también están documentados en [CONFIGURATION.md](CONFIGURATION.md).
|
||||
|
||||
## Escaparate: feeds de investigación de la comunidad
|
||||
|
||||
¿Has publicado con last30days una actualización periódica sobre IA, un seguimiento de mercado o una obsesión maravillosamente específica? Comparte la URL de tu biblioteca pública —o la URL de Atom, una vez alojado `feed.xml` en un alojamiento estático— en [el hilo de escaparate de la comunidad](https://github.com/mvanhorn/last30days-skill/issues/532). Los feeds de la comunidad se irán enlazando aquí a medida que sus autores los envíen; mientras tanto, el hilo es el punto de recogida.
|
||||
|
||||
## Cómo funciona
|
||||
|
||||
1. **Escribes un tema.** Una persona, una empresa, un producto, una tecnología, «X vs Y». Lo que sea.
|
||||
2. **El agente averigua quién importa.** Encuentra las cuentas de X (incluidas las de fundadores), los repositorios de GitHub, los subreddits, los hashtags de TikTok y los canales de YouTube. Para «Kanye West» sabe que hay que mirar r/hiphopheads, @kanyewest y «bully review» en YouTube. Para «OpenClaw» resuelve openclaw/openclaw en GitHub y trae el número de estrellas en directo.
|
||||
3. **Todas las fuentes se consultan en paralelo.** Expansión con varias consultas. Resultados puntuados por interacción, relevancia y frescura.
|
||||
4. **La profundidad que no tiene nadie más.** Transcripciones completas de YouTube de vídeos de reacción. Los mejores comentarios de Reddit con su recuento de votos positivos. Los textos de los TikTok. Las cuotas de Polymarket. No solo títulos y enlaces.
|
||||
5. **La misma historia, fusionada.** El Wireless Festival anunciado en Reddit, comentado en X y con los precios de las entradas en TikTok: un solo clúster, no tres entradas distintas.
|
||||
6. **Sintetizado en un único informe.** Anclado en datos concretos. Citado por fuente. Ordenado según aquello con lo que la gente interactúa de verdad. No es «esto es lo que he encontrado», es «esto es lo que importa».
|
||||
7. **Y después se convierte en tu experto.** Tras una sola ejecución, tu sesión de Claude sabe todo lo que sabe la comunidad. Haz preguntas de seguimiento. Pídele que escriba prompts, redacte correos, planifique viajes o diseñe arquitecturas, todo anclado en lo que es real ahora mismo.
|
||||
|
||||
## Lo que dice la gente
|
||||
|
||||
> «He encontrado una skill de Claude Code que investiga cualquier tema en Reddit, X, YouTube y HN de los últimos 30 días. Y luego te escribe los prompts. Antes de cada contenido que escribo, hacía esa búsqueda a mano en Reddit y X. Pestaña a pestaña. Hilo a hilo. Esa es la parte que se lleva 90 minutos. Esto la elimina.» —@itsjasonai
|
||||
|
||||
> «Esta única skill ha sustituido todo mi flujo de investigación. Le das un tema y rastrea Reddit, X y la web para sacar de qué está hablando la gente de verdad. Nada de entradas de blog viejas. Conversaciones reales de los últimos 30 días.» —@itswilsoncharles
|
||||
|
||||
> «5 de los 10 repos en tendencia hoy en GitHub son herramientas de Claude. El número 1: mvanhorn/last30days-skill» —@yieldhunter95
|
||||
|
||||
## Código abierto
|
||||
|
||||
Licencia MIT. Sin rastreo. Sin analíticas. Tu investigación se queda en tu máquina. Más de 2.700 pruebas.
|
||||
|
||||
Construido con Python 3.12+, yt-dlp, Node.js (cliente Bird incorporado para la búsqueda en X) y la API de ScrapeCreators. Arquitectura del motor v3 de [@j-sperling](https://github.com/j-sperling).
|
||||
|
||||
Consulta [CONTRIBUTING.md](CONTRIBUTING.md) para abrir un PR, [CONTRIBUTORS.md](CONTRIBUTORS.md) para la lista completa de colaboradores de la comunidad y [CHANGELOG.md](CHANGELOG.md) para el historial de versiones.
|
||||
|
||||
## Evolución de las estrellas
|
||||
|
||||
<a href="https://star-history.com/#mvanhorn/last30days-skill&Date">
|
||||
<picture>
|
||||
<source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/svg?repos=mvanhorn/last30days-skill&type=Date&theme=dark" />
|
||||
<source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/svg?repos=mvanhorn/last30days-skill&type=Date" />
|
||||
<img alt="Star History Chart" src="https://api.star-history.com/svg?repos=mvanhorn/last30days-skill&type=Date" />
|
||||
</picture>
|
||||
</a>
|
||||
|
||||
---
|
||||
|
||||
**@slashlast30days** · [github.com/mvanhorn/last30days-skill](https://github.com/mvanhorn/last30days-skill)
|
||||
+383
@@ -0,0 +1,383 @@
|
||||
# /last30days
|
||||
|
||||
[English](README.md) | Français | [Deutsch](README.de.md) | [Español](README.es.md) | [Português (Brasil)](README.pt-BR.md) | [日本語](README.ja.md) | [简体中文](README.zh-CN.md)
|
||||
|
||||
<p align="center">
|
||||
<img src="media/pr-assets/last30days-ad.gif" width="720" alt="last30days - an AI agent-led search engine that searches people, not editors" />
|
||||
</p>
|
||||
|
||||
<p align="center">
|
||||
<a href="https://github.com/mvanhorn/last30days-skill">
|
||||
<img src="https://img.shields.io/badge/%231-Repository%20Of%20The%20Day-6f42c1?style=for-the-badge&logo=github&label=GITHUB%20TRENDING" alt="GitHub Trending #1 Repository Of The Day" />
|
||||
</a>
|
||||
<br/>
|
||||
<a href="https://trendshift.io/repositories/21997" target="_blank">
|
||||
<img src="https://trendshift.io/api/badge/repositories/21997" alt="mvanhorn/last30days-skill | Trendshift" style="width: 250px; height: 55px;" width="250" height="55"/>
|
||||
</a>
|
||||
</p>
|
||||
|
||||
**Un moteur de recherche piloté par un agent IA, qui classe les résultats selon les upvotes, les likes et l'argent réel — pas selon des rédacteurs.**
|
||||
|
||||
Ce README décrit le pipeline v3 actuel. La spécification d'exécution de la skill se trouve dans [skills/last30days/SKILL.md](skills/last30days/SKILL.md), qui fait référence pour le comportement des commandes et de la configuration.
|
||||
|
||||
**Claude Code (recommandé — mises à jour automatiques via la marketplace) :**
|
||||
```
|
||||
/plugin marketplace add mvanhorn/last30days-skill
|
||||
/plugin install last30days
|
||||
```
|
||||
|
||||
**Codex, Cursor, Copilot, Gemini CLI, ou l'un des 50+ hôtes [Agent Skills](https://agentskills.io) :**
|
||||
```
|
||||
npx skills add mvanhorn/last30days-skill -g
|
||||
```
|
||||
(`-g` installe la skill globalement pour votre utilisateur, donc disponible dans tous vos projets. Omettez ce flag pour une installation limitée au projet.)
|
||||
|
||||
D'autres options d'installation (claude.ai web, OpenClaw, manuelle) dans la section [Installation](#installation) ci-dessous.
|
||||
|
||||
Zéro configuration. Reddit, HN, Polymarket et GitHub fonctionnent immédiatement. Lancez la skill une fois : l'assistant de configuration débloque X, YouTube, TikTok, arXiv, Techmeme et d'autres sources en 30 secondes.
|
||||
|
||||
---
|
||||
|
||||
Les upvotes de Reddit. Les likes de X. Les transcriptions YouTube. L'engagement TikTok. Les cotes Polymarket, adossées à de l'argent réel et à des informations d'initiés. Ce sont des millions de personnes qui votent chaque jour avec leur attention et leur portefeuille. /last30days interroge tout cela en parallèle, classe les résultats selon ce avec quoi les gens interagissent vraiment, et un agent IA joue le rôle de juge pour en tirer un seul brief.
|
||||
|
||||
Google agrège des rédactions. /last30days interroge les gens.
|
||||
|
||||
Cette recherche est introuvable ailleurs, parce qu'aucune IA n'a accès à l'ensemble. Google ne touche ni aux commentaires Reddit ni aux posts X. ChatGPT a un accord avec Reddit mais ne sait chercher ni sur X ni sur TikTok. Gemini a YouTube mais pas Reddit. Claude n'a nativement accès à aucun des trois. Chaque plateforme est un jardin clos, avec son API, ses tokens et son authentification. Mais vous pouvez apporter vos propres clés et vos sessions de navigateur : d'un coup, un agent IA peut toutes les interroger en même temps, les comparer entre elles et vous dire ce qui compte vraiment.
|
||||
|
||||
C'est ça, le déclic. Pas un meilleur moteur de recherche. Une douzaine de plateformes cloisonnées, reliées par un agent.
|
||||
|
||||
```
|
||||
/last30days Peter Steinberger
|
||||
```
|
||||
|
||||
Vous avez une réunion demain. Vous cherchez la personne sur Google. Vous tombez sur son LinkedIn de 2023. /last30days vous donne ce qu'elle fait vraiment ce mois-ci : elle a rejoint OpenAI pour travailler sur Codex, elle conteste l'interdiction des agents tiers décrétée par Anthropic, elle a livré 23 PR avec un taux de merge de 85 %, elle construit « LobsterOS » pour piloter des agents entre appareils, et un fil r/ClaudeCode a atteint 569 upvotes en débattant de savoir si elle est un héros ou « insupportable ». Le tout dispersé entre des posts X, des fils Reddit, des transcriptions YouTube et des commits GitHub. Rien de tout ça n'était sur Google.
|
||||
|
||||
## Pourquoi ce projet existe
|
||||
|
||||
Je l'ai construit pour suivre le rythme de l'IA. Tout change chaque jour, et les passionnés de Reddit et de X sont toujours au courant les premiers. J'avais besoin de meilleurs prompts, et les données d'entraînement avaient toujours plusieurs mois de retard sur ce que la communauté avait déjà compris.
|
||||
|
||||
Mais c'est devenu quelque chose de plus large. Aujourd'hui je le lance avant un rendez-vous commercial, pour connaître la vérité des 30 derniers jours sur une entreprise. Avant une réunion, pour lire les tweets récents et les transcriptions de podcasts de mon interlocuteur. Avant un séjour à Disney World, pour savoir quelles attractions sont fermées et ce que la communauté pense de Genie+. Avant de construire quoi que ce soit, pour savoir sur quels problèmes les gens butent réellement.
|
||||
|
||||
Si vous rencontrez un PDG, avez-vous lu tous ses tweets et toutes ses transcriptions YouTube des 30 derniers jours ? Moi, oui.
|
||||
|
||||
## Les sources, classées par les gens
|
||||
|
||||
| Source | Ce que les gens vous disent |
|
||||
|--------|--------------------------|
|
||||
| **Reddit** | L'avis brut. Les meilleurs commentaires avec leur vrai nombre d'upvotes, gratuit, sans clé API. Les vraies opinions que Google enterre. |
|
||||
| **X / Twitter** | La réaction à chaud, le fil d'expert, la première réaction à l'actualité. Premiers informés, premiers à débattre. |
|
||||
| **YouTube** | L'analyse approfondie de 45 minutes. Des transcriptions complètes, fouillées pour en extraire les 5 phrases citables qui comptent. |
|
||||
| **TikTok** | Le créateur qui touche 3,6 millions de personnes avec un angle que vous ne trouverez jamais sur Google. |
|
||||
| **Instagram Reels** | Le regard des influenceurs, avec la transcription de ce qui est dit. Le signal de la culture visuelle. |
|
||||
| **Hacker News** | Le consensus des développeurs. 825 points, 899 commentaires. Là où les gens techniques débattent vraiment. |
|
||||
| **Polymarket** | Pas des opinions. Des cotes. Adossées à de l'argent réel. 96 % de probabilité sur des ventes d'album. 4 % sur une acquisition. |
|
||||
| **GitHub** | Pour les personnes : rythme des PR, meilleurs dépôts par étoiles, notes de version. Pour les sujets : issues et discussions. |
|
||||
| **Digg** | Des groupes d'articles sélectionnés depuis le classement AI 1000 de Digg (environ 1000 comptes IA à fort signal sur X), avec des citations attribuables intégrées (sans authentification X). Activé automatiquement quand `digg-pp-cli` est présent dans le PATH. |
|
||||
| **arXiv** | Les articles scientifiques derrière le battage médiatique. La recherche publiée dans la fenêtre, gratuit, sans clé API. Activé automatiquement quand `arxiv-pp-cli` est présent dans le PATH (la configuration initiale l'installe). |
|
||||
| **Techmeme** | La couche éditoriale de l'actu tech, restreinte à votre fenêtre de 30 jours. Gratuit, sans clé API. Activé automatiquement quand `techmeme-pp-cli` est présent dans le PATH (la configuration initiale l'installe). |
|
||||
| **LinkedIn** | Le signal professionnel. Posts et articles, les articles étant pondérés comme signal fort. |
|
||||
| **StockTwits** | Le sentiment des traders. S'active automatiquement quand votre sujet est un ticker ou une crypto. |
|
||||
| **Threads** | La couche texte de l'après-Twitter. Les conversations des créateurs et des marques. |
|
||||
| **Pinterest** | La découverte visuelle. Épingles, enregistrements et commentaires sur des produits et des idées. |
|
||||
| **Xiaohongshu (RED)** | Les signaux chinois sur le lifestyle, les produits et les créateurs. À demander explicitement avec `--search xhs` quand un plugin de navigateur x-mcp connecté ou un service `xiaohongshu-mcp` tourne en local. |
|
||||
| **Bluesky** | La couche sociale décentralisée. Les posts AT Protocol issus de la migration post-Twitter. |
|
||||
| **Perplexity** | La synthèse Sonar sourcée, les résultats bruts de la Search API et Deep Research. |
|
||||
| **Web** | La couverture éditoriale, les comparatifs de blogs. Un signal parmi d'autres, pas le seul. |
|
||||
|
||||
La communauté en ajoute sans cesse. Truth Social et d'autres sources de niche sont déjà dans le moteur, et d'autres arrivent.
|
||||
|
||||
Un fil Reddit à 1 500 upvotes est un signal plus fort qu'un billet de blog que personne n'a lu. Un TikTok à 3,6 millions de vues en dit plus sur ce qui compte culturellement qu'un communiqué de presse. Des cotes Polymarket adossées à 66 000 $ de volume sont plus difficiles à contester que l'intuition d'un éditorialiste.
|
||||
|
||||
La synthèse classe selon ce avec quoi de vraies personnes ont vraiment interagi. La pertinence sociale, pas la pertinence SEO.
|
||||
|
||||
## Ce que les gens en font vraiment
|
||||
|
||||
**Avant une réunion.** `/last30days Peter Steinberger` — a rejoint l'équipe Codex d'OpenAI, conteste l'interdiction des agents tiers décrétée par Anthropic, 23 PR mergées avec un taux de merge de 85 % sur GitHub, construit LobsterOS pour piloter des agents entre appareils. r/ClaudeCode : « Depuis la sortie d'OpenClaw, tout le monde savait que si vous passiez par autre chose que l'API, vous finiriez par être banni » (227 upvotes). Ça, ce n'est pas sur LinkedIn.
|
||||
|
||||
**Pour lire les signaux de recrutement.** `/last30days Listen Labs --hiring-signals` — les offres d'emploi et les pages carrières actuelles deviennent des preuves citées de changements de priorités : recrutements en sécurité entreprise, customer success, infrastructure ou expansion produit. Le rapport dit ce que le recrutement semble signaler, pas ce que la roadmap va livrer.
|
||||
|
||||
**Pour repérer un sujet avant son pic.** Demandez `/last30days what's exploding in AI agents?` et la skill bascule en mode découverte : le moteur balaie les listings de catégories Reddit, la une et les meilleures histoires de Hacker News, le flux AI 1000 de Digg, et X si vous êtes authentifié ; votre agent évalue les candidats (noms, filtrage du bruit, intérêt réel) et rédige des angles pour un podcast ou un article X ; vous obtenez ensuite 5 à 10 sujets classés par vélocité. Chaque résultat comprend des chiffres multi-sources, une étiquette de momentum et une commande `/last30days "<topic>"` prête à lancer.
|
||||
|
||||
**Quand quelque chose sort.** `/last30days Kanye West` — le Royaume-Uni a bloqué son visa, le Wireless Festival est annulé, les sponsors ont fui. Mais BULLY est entré n° 2 au Billboard. Fantano est revenu de son « Yay sabbatical » pour le chroniquer (653 000 vues). SoFi Homecoming a fait monter Lauryn Hill et Travis Scott sur scène pour 44 titres. Polymarket : « Kanye tweetera-t-il de nouveau ? » 86 % de oui. 23 fils Reddit, 17 vidéos YouTube, 86 000 upvotes.
|
||||
|
||||
**Pour comparer des outils.** `/last30days OpenClaw vs Hermes vs Paperclip` — « Ce ne sont pas des concurrents, ce sont des couches. » OpenClaw est la couche d'exécution (351 000 étoiles GitHub, en production), Hermes est le cerveau qui s'améliore tout seul (31 000 étoiles), Paperclip est l'organigramme (49 000 étoiles). Nombres d'étoiles récupérés en direct via l'API GitHub, pas repris de billets de blog périmés. Tableau comparatif avec architecture, mémoire, sécurité et cas d'usage idéal. Selon @IMJustinBrooke : « OpenClaw = Salamèche, Hermes = Dracaufeu. »
|
||||
|
||||
**Pour comprendre le monde.** `/last30days Iran vs USA` — 38e jour de guerre. Ultimatum de Trump, fixé à mardi, pour que l'Iran rouvre le détroit d'Ormuz. Deux avions de combat américains abattus. Le pétrole à 126 $ le baril. L'AIE parle de « la plus grande perturbation d'approvisionnement de l'histoire du marché pétrolier mondial ». Polymarket : cessez-le-feu avant le 31 décembre à 74 %. 27 posts X, 10 vidéos YouTube, 20 marchés de prédiction.
|
||||
|
||||
**Avant un voyage.** `/last30days Universal Epic Universe` — l'extension est déjà en construction. Permis « Project 680 » déposé. Spectacle de feux d'artifice confirmé par les travaux mais toujours pas annoncé. Temps d'attente : Mine-Cart Madness à 148 minutes en moyenne. Toujours pas de pass annuel, et les habitants s'agacent. Stardust Racers fermé pour rénovation jusqu'au 5 avril.
|
||||
|
||||
**Pour apprendre vite.** `/last30days Nano Banana Pro prompting` — les prompts structurés en JSON remplacent l'empilement de tags. Le format imbriqué de @pictsbyai évite le « concept bleeding ». Mieux vaut éditer que régénérer. Et ensuite, la skill vous écrit un prompt de production en appliquant exactement ce que la communauté a validé.
|
||||
|
||||
## Nouveautés
|
||||
|
||||
Depuis l'annonce de la v3.3 en mai, et jusqu'à la v3.11.1 (juillet 2026) : 175 PR mergées — dont 122 venant de 52 contributeurs de la communauté — réparties sur 15 versions. Voici ce qui a atterri.
|
||||
|
||||
### Citoyen de première classe sur OpenAI Codex
|
||||
|
||||
/last30days est désormais un plugin Codex natif avec configuration guidée : pas un portage, un vrai citoyen de première classe. Les citations tiennent compte du rendu, ce qui fait que la sortie Codex se lit comme un brief et non comme une soupe d'URL (#694), et le même moteur tourne sur Claude Code, Cursor, Copilot, Gemini CLI, Claude Desktop, OpenClaw et 50+ hôtes Agent Skills. Manifeste du plugin Codex par [@rfoust](https://github.com/rfoust) (#686), correctif d'authentification Codex par [@tmchow](https://github.com/tmchow) (#698).
|
||||
|
||||
### arXiv, Techmeme et Digg — gratuits, sans clé API
|
||||
|
||||
arXiv apporte les articles scientifiques derrière le battage médiatique et Techmeme la couche éditoriale de l'actu tech — gratuits, sans aucune clé, et la configuration initiale installe leurs CLI pour qu'ils s'activent tout seuls (#709). Les groupes d'articles AI 1000 de Digg arrivent de la même façon, sans authentification X : la configuration installe pour vous la CLI Digg gratuite (#590). Trustpilot est disponible en option pour la recherche sur les marques grand public.
|
||||
|
||||
### Reddit gratuit, avec de vrais scores et les meilleurs commentaires
|
||||
|
||||
L'API .json publique de Reddit a disparu ; la voie gratuite est revenue plus forte. Flux RSS sans clé et scraping de shreddit (#457), découverte de subreddits dédiés avec de vrais décomptes d'upvotes via arctic-shift (#696), et un seuil de pertinence pour qu'un post viral hors sujet ne détourne pas votre brief (#488, merci [@rzachsmith](https://github.com/rzachsmith)). Pas de clé API. De vrais scores. Les meilleurs commentaires inclus.
|
||||
|
||||
### Les meilleurs commentaires dans chaque brief
|
||||
|
||||
Les commentaires sont maintenant une couche activée par défaut sur toutes les sources : commentaires Instagram avec une diversité fondée sur le rang, pour que cinq avis tranchés ne viennent pas tous du même post (#751), commentaires YouTube plus une récupération de transcription via ScrapeCreators quand yt-dlp échoue (#637), et commentaires plébiscités par la communauté intégrés au scoring Best Takes, pour que les meilleures punchlines survivent au classement (#592, #608).
|
||||
|
||||
### Une seule commande doctor
|
||||
|
||||
Demandez un diagnostic : doctor teste chaque source, puis prescrit les correctifs exacts — quelle clé manque, quelle CLI est absente du PATH, quel cookie a expiré (#753). Fini de deviner pourquoi X est revenu à vide.
|
||||
|
||||
### La recherche X, reconstruite
|
||||
|
||||
Le pipeline X a été repensé de fond en comble : des voies FROM et ABOUT pour que les posts d'une personne et la conversation à son sujet soient classés tous les deux (#610), désambiguïsation des sous-requêtes selon la personne visée (#611), vérification de la paternité des posts avec classement par signaux d'interaction (#613), et une source X unique avec bascule automatique entre backends (#622). Plus un `--diagnose` honnête qui teste vraiment l'authentification (#609).
|
||||
|
||||
### De nouvelles sources
|
||||
|
||||
LinkedIn via ScrapeCreators, avec les articles comme signal fort ([@ravstr](https://github.com/ravstr), #702). StockTwits s'active automatiquement sur les sujets liés aux tickers et aux cryptos ([@wtiwana](https://github.com/wtiwana), #658). Perplexity a gagné des modes API directs et Deep Research en asynchrone ([@sk-holmes](https://github.com/sk-holmes), #629).
|
||||
|
||||
### Durci par la communauté
|
||||
|
||||
La vague sécurité est presque entièrement le fait de la communauté : correctifs XSS stocké dans le rendu HTML ([@iliaal](https://github.com/iliaal), [@aaronjmars](https://github.com/aaronjmars)), fichiers temporaires de cookies verrouillés, CI durcie contre les attaques de chaîne d'approvisionnement avec OpenSSF Scorecard et attestation de provenance des builds ([@shaanmajid](https://github.com/shaanmajid), [@hammadxcm](https://github.com/hammadxcm), [@aniruddh909](https://github.com/aniruddh909)), analyses Semgrep et OSV-Scanner plus un contrôle de revue des dépendances sur chaque PR ([@23241a6749](https://github.com/23241a6749)), un seuil plancher de couverture de tests instauré à 60 % puis relevé à 84 % ([@gourab5139014](https://github.com/gourab5139014)), et un audit de sécurité Hermes désormais sans aucune finding CRITICAL (#768).
|
||||
|
||||
### Une portée plus large
|
||||
|
||||
L'hébreu et les langues non latines ([@dudyme](https://github.com/dudyme)). Une tokenisation adaptée au CJK pour les sources chinoises ([@An-idd](https://github.com/An-idd)). Une vague d'améliorations sur Windows. L'extraction des cookies sur toute la famille Chromium — Brave, Edge, Vivaldi, Opera, Arc ([@andrey-esipov](https://github.com/andrey-esipov)) — plus le trousseau macOS et pass(1) sous Linux comme sources d'identifiants. Le retour en arrière historique avec `--as-of` ([@chiyi-creator](https://github.com/chiyi-creator)). L'installation automatique de Python 3.12 via uv ([@buntysomroy](https://github.com/buntysomroy)). `--hiring-signals` pour lire les pages emploi d'une entreprise. Les écarts de watchlist d'une exécution à l'autre.
|
||||
|
||||
### Toujours livré depuis la v3
|
||||
|
||||
Les fondations de la v3 sont toujours là : le cerveau de pré-recherche qui identifie les bons comptes, subreddits et hashtags avant le moindre appel API (construit par [@j-sperling](https://github.com/j-sperling)) ; le scoring Best Takes, qui prend en compte l'humour et la viralité en plus de la pertinence ; la fusion de clusters entre sources ; les comparaisons en une seule passe (« CLI vs MCP » en 3 minutes, pas 12) ; les comparaisons `--competitors` découvertes automatiquement ; le mode personne de GitHub (`--github-user=steipete`) ; le mode ELI5 (« eli5 on » après n'importe quelle exécution) ; et des briefs HTML autonomes et partageables (`--emit=html`). Les options de configuration sont détaillées dans [CONFIGURATION.md](CONFIGURATION.md).
|
||||
|
||||
## Installation
|
||||
|
||||
| Environnement | Installation | Mises à jour |
|
||||
|---------|---------|---------|
|
||||
| **Claude Code** (recommandé) | `/plugin marketplace add mvanhorn/last30days-skill` | Automatiques via la marketplace, ou `claude plugin update last30days@last30days-skill` |
|
||||
| **Grok** (xAI Build CLI) | `grok plugin marketplace add mvanhorn/last30days-skill` puis `grok plugin install last30days` | `grok plugin update last30days` |
|
||||
| **Codex, Cursor, Copilot, Gemini CLI, ou l'un des 50+ hôtes [Agent Skills](https://agentskills.io)** | `npx skills add mvanhorn/last30days-skill -g` | `npx skills update last30days -g` |
|
||||
| **claude.ai** (web) | [Téléchargez `last30days.skill`](https://github.com/mvanhorn/last30days-skill/releases/latest/download/last30days.skill) et envoyez-le via claude.ai > Customize > Skills > + > Create skill > Upload a skill | Retélécharger et renvoyer |
|
||||
| **Claude Desktop** | [Téléchargez le `.mcpb` de votre plateforme](https://github.com/mvanhorn/last30days-skill/releases/latest) et glissez-le dans Settings > Extensions | Retélécharger et glisser le nouveau bundle |
|
||||
| **OpenClaw** | `clawhub install last30days-official` | `clawhub update last30days-official` |
|
||||
|
||||
### Claude Code (recommandé)
|
||||
|
||||
```
|
||||
/plugin marketplace add mvanhorn/last30days-skill
|
||||
```
|
||||
|
||||
Recommandé parce que la marketplace Claude Code gère les mises à jour pour vous : le cache du plugin est versionné et se rafraîchit automatiquement à chaque nouvelle version publiée. Lancez `claude plugin update last30days@last30days-skill` pour forcer une vérification.
|
||||
|
||||
Si vous préférez passer par le chemin d'installation Agent Skills sur Claude Code, c'est également pris en charge :
|
||||
|
||||
```
|
||||
npx skills add mvanhorn/last30days-skill -g -a claude-code
|
||||
```
|
||||
|
||||
Le plugin natif et l'installation `npx skills` peuvent coexister. Attention : Claude Code ne déduplique pas entre méthodes d'installation. Si le plugin de la marketplace et la copie `npx skills` sont actifs tous les deux, `/last30days` apparaîtra en double. Utilisez une seule méthode d'installation par machine.
|
||||
|
||||
### Grok (xAI Build CLI)
|
||||
|
||||
[Grok Build](https://docs.x.ai/build/features/skills-plugins-marketplaces) (`grok`) installe last30days comme plugin natif. L'installation directe suit le dépôt :
|
||||
|
||||
```bash
|
||||
grok plugin install mvanhorn/last30days-skill
|
||||
```
|
||||
|
||||
Ou ajoutez ce dépôt comme source de marketplace, puis installez par nom de plugin :
|
||||
|
||||
```bash
|
||||
grok plugin marketplace add mvanhorn/last30days-skill
|
||||
grok plugin install last30days
|
||||
```
|
||||
|
||||
Ajoutez `--trust` pour sauter la confirmation d'installation. Mettez à jour avec `grok plugin update last30days`. Grok lit aussi les manifestes Claude Code par compatibilité ; la paire native `.grok-plugin/` reste la voie principale, et c'est elle que pointe une entrée officielle dans la [marketplace xAI](https://github.com/xai-org/plugin-marketplace). `npx skills add` reste une solution de repli valable, tous hôtes confondus.
|
||||
|
||||
### Codex, Cursor, Copilot, Gemini CLI et autres hôtes Agent Skills
|
||||
|
||||
Installez via la CLI ouverte [Agent Skills](https://agentskills.io) — elle prend en charge 50+ hôtes, dont `codex`, `cursor`, `github-copilot`, `gemini-cli`, `claude-code`, `windsurf`, `cline`, `continue`, `roo`, `aider-desk`, `opencode`, `goose` et d'autres (liste complète sur le [dépôt vercel-labs/skills](https://github.com/vercel-labs/skills)).
|
||||
|
||||
```bash
|
||||
npx skills add mvanhorn/last30days-skill -g
|
||||
```
|
||||
|
||||
Le flag `-g` (global) installe dans votre répertoire utilisateur, ce qui rend la skill disponible dans tous vos projets. Sans `-g`, `npx skills` installe localement dans `./.skills/` (versionné avec le dépôt). Pour un outil qui sert à explorer le monde entier, c'est bien l'installation globale que vous voulez.
|
||||
|
||||
Codex desktop et les autres hôtes qui travaillent au niveau du dossier fonctionnent aussi bien dans un dossier ordinaire que dans un dépôt Git. Avant la première recherche, demandez à l'agent hôte de lancer le `scripts/last30days.py --preflight` fourni depuis le répertoire de la skill chargée ; dans un clone du dépôt source, la commande équivalente est `python3 skills/last30days/scripts/last30days.py --preflight`. Elle affiche l'origine de la configuration, le plan de lecture des cookies de navigateur, les fichiers qui seront écrits, les commandes optionnelles et la configuration projet ignorée — sans lire de cookies, sans écrire de fichier et sans lancer de recherche.
|
||||
|
||||
Par défaut, l'installation cible l'hôte que `npx skills` détecte. Pour en viser un en particulier (ou plusieurs) :
|
||||
|
||||
```bash
|
||||
npx skills add mvanhorn/last30days-skill -g -a codex
|
||||
npx skills add mvanhorn/last30days-skill -g -a cursor
|
||||
npx skills add mvanhorn/last30days-skill -g -a gemini-cli
|
||||
npx skills add mvanhorn/last30days-skill -g -a codex -a cursor
|
||||
```
|
||||
|
||||
Pour mettre à jour plus tard :
|
||||
|
||||
```bash
|
||||
npx skills update last30days -g
|
||||
```
|
||||
|
||||
Ou mettez à jour tout ce que vous avez installé globalement via `npx skills` :
|
||||
|
||||
```bash
|
||||
npx skills update -g
|
||||
```
|
||||
|
||||
Listez et désinstallez avec `npx skills list -g` et `npx skills remove last30days -g`.
|
||||
|
||||
### claude.ai (web)
|
||||
|
||||
1. [Téléchargez `last30days.skill`](https://github.com/mvanhorn/last30days-skill/releases/latest/download/last30days.skill) depuis la dernière version publiée
|
||||
2. Allez sur [claude.ai > Customize > Skills](https://claude.ai/customize/skills)
|
||||
3. Cliquez sur le bouton `+` du panneau Skills, puis sur `Create skill` > `Upload a skill`, et déposez le fichier
|
||||
|
||||
Activez d'abord « Code execution and file creation » dans Capabilities — sans cela, les skills ne s'exécutent pas.
|
||||
|
||||
### Claude Desktop
|
||||
|
||||
Claude Desktop installe `/last30days` comme serveur MCP via un bundle `.mcpb` (un paquet Model Context Protocol en un clic).
|
||||
|
||||
1. Ouvrez la [dernière version publiée](https://github.com/mvanhorn/last30days-skill/releases/latest) et téléchargez le `.mcpb` correspondant à votre plateforme :
|
||||
- macOS Apple Silicon : `last30days-pp-mcp-darwin-arm64.mcpb`
|
||||
- macOS Intel : `last30days-pp-mcp-darwin-amd64.mcpb`
|
||||
- Linux x86_64 : `last30days-pp-mcp-linux-amd64.mcpb`
|
||||
2. Ouvrez Claude Desktop, allez dans Settings > Extensions et glissez-y le fichier.
|
||||
3. Quand l'application vous les demande, collez les clés API des sources que vous voulez activer. Tous les champs sont facultatifs : si vous les ignorez tous, le moteur se rabat sur le mode web uniquement. Les clés sont stockées dans le trousseau de votre système.
|
||||
4. Redémarrez Claude Desktop. Demandez à Claude de « faire des recherches sur Peter Steinberger », ou sur n'importe quel sujet, et il appellera l'outil `research`.
|
||||
|
||||
**Prérequis côté hôte :** Python 3.12+ dans le PATH. Le bundle embarque le code du moteur mais utilise votre interpréteur Python local. Installez-le depuis [python.org](https://www.python.org/downloads/) sous Windows ; macOS et la plupart des distributions Linux fournissent déjà une version compatible.
|
||||
|
||||
**Les clés ne sont pas partagées avec la skill Claude Code.** Claude Desktop et Claude Code maintiennent délibérément des stockages d'identifiants distincts. Si vous avez déjà configuré `~/.config/last30days/.env` pour la skill Claude Code, il faudra ressaisir les mêmes clés ici, une fois.
|
||||
|
||||
La prise en charge de Windows est reportée le temps de régler les points d'entrée par plateforme dans le manifeste ; le suivi se fait dans une issue dédiée.
|
||||
|
||||
### OpenClaw
|
||||
|
||||
```bash
|
||||
clawhub install last30days-official
|
||||
```
|
||||
|
||||
Pour les workflows d'action sur X/Twitter en dehors des recherches `/last30days` —
|
||||
publier des tweets ou des réponses, exporter des abonnés, gérer les médias,
|
||||
surveiller des comptes, organiser des tirages au sort — utilisez
|
||||
[TweetClaw](https://github.com/Xquik-dev/tweetclaw), le plugin OpenClaw
|
||||
complémentaire. TweetClaw est maintenu par Xquik-dev et n'est mentionné que comme
|
||||
option complémentaire : ce n'est ni une dépendance ni une recommandation de last30days.
|
||||
|
||||
### Installation manuelle (développeurs)
|
||||
|
||||
```bash
|
||||
git clone https://github.com/mvanhorn/last30days-skill.git
|
||||
ln -s "$(pwd)/last30days-skill/skills/last30days" ~/.claude/skills/last30days
|
||||
```
|
||||
|
||||
Le lien symbolique garde l'installation synchronisée avec votre copie de travail au fil de vos modifications — inutile de recopier quoi que ce soit. Pour `claude.ai`, construisez le fichier `.skill` depuis les sources : `bash skills/last30days/scripts/build-skill.sh` produit `dist/last30days.skill`.
|
||||
|
||||
Reddit (avec les commentaires), Hacker News, Polymarket et GitHub fonctionnent immédiatement. Zéro configuration. Lancez `/last30days` une fois : l'assistant de configuration débloque d'autres sources en 30 secondes, dont les CLI gratuites arXiv et Techmeme.
|
||||
|
||||
## Apportez vos propres clés
|
||||
|
||||
Ces plateformes n'ont aucune relation entre elles. X ignore ce que pense Reddit. YouTube ne voit pas TikTok. Mais vous pouvez apporter vos propres clés API et vos tokens de navigateur, et vous avez soudain accès à toutes en même temps.
|
||||
|
||||
| Sources | Ce qu'il vous faut | Coût |
|
||||
|---------|---------------|------|
|
||||
| Reddit (avec les commentaires) + HN + Polymarket + GitHub + StockTwits | Rien | Gratuit |
|
||||
| arXiv + Techmeme | Des CLI gratuites, installées automatiquement à la configuration initiale | Gratuit |
|
||||
| X / Twitter | Connectez-vous à x.com dans n'importe quel navigateur, ou définissez `XQUIK_API_KEY` / `XAI_API_KEY` | Les cookies de navigateur sont gratuits ; les clés dépendent du fournisseur |
|
||||
| YouTube | `brew install yt-dlp` | Gratuit |
|
||||
| Bluesky | Un mot de passe d'application depuis bsky.app | Gratuit |
|
||||
| TikTok + Instagram + Threads + Pinterest + LinkedIn + commentaires YouTube | Une clé ScrapeCreators | 10 000 appels gratuits, puis paiement à l'usage |
|
||||
| Xiaohongshu (RED) | Faites tourner un plugin de navigateur x-mcp connecté ou un service `xiaohongshu-mcp`, puis activez la source avec `--search xhs` pour une exécution ou `INCLUDE_SOURCES=xiaohongshu` dans `.env` ; last30days teste automatiquement `http://localhost:18060` puis `http://host.docker.internal:18060`, ou utilisez `XIAOHONGSHU_API_BASE` pour une URL personnalisée | Aucune clé API last30days ; dépend de votre service local de session de navigateur |
|
||||
| DripStack (newsletters financières premium) | Sur activation : `--search dripstack` pour une exécution, ou `INCLUDE_SOURCES=dripstack` dans `.env` | Aucune clé ; API de recherche publique et gratuite |
|
||||
| Perplexity Sonar / Search API / Deep Research | Une clé Perplexity, ou une clé OpenRouter en repli pour Sonar | Paiement à l'usage |
|
||||
| Recherche web | Une clé Brave Search | 2 000 requêtes gratuites par mois |
|
||||
|
||||
### Trousseau macOS (facultatif)
|
||||
|
||||
Sous macOS, vous pouvez stocker vos clés dans le trousseau système plutôt que dans un fichier `.env`. La skill les récupère automatiquement, comme source de plus faible priorité : en cas de conflit, les fichiers `.env` et les variables d'environnement du processus l'emportent toujours.
|
||||
|
||||
```bash
|
||||
# Interactive setup — prompts for each known key, skip with empty input
|
||||
skills/last30days/scripts/setup-keychain.sh
|
||||
|
||||
# Or store a single key by hand
|
||||
security add-generic-password -a "$USER" -s last30days-XAI_API_KEY -w "xai-..."
|
||||
|
||||
# Inspect / clean up
|
||||
skills/last30days/scripts/setup-keychain.sh --list
|
||||
skills/last30days/scripts/setup-keychain.sh --delete XAI_API_KEY
|
||||
```
|
||||
|
||||
Les entrées sont enregistrées sous le nom de service `last30days-<KEY>` pour l'utilisateur courant. Sur les plateformes non Darwin, le chargeur ne fait rien : aucun changement de comportement pour les utilisateurs Linux et Windows.
|
||||
|
||||
Vous avez déjà des clés sous d'autres noms de service dans le trousseau ? Définissez la correspondance non secrète `LAST30DAYS_KEYCHAIN_ALIASES` décrite dans [CONFIGURATION.md](CONFIGURATION.md#reusing-existing-macos-keychain-items), plutôt que de recopier vos secrets.
|
||||
|
||||
Voir [CONFIGURATION.md](CONFIGURATION.md) pour la matrice complète des clés par source, l'ordre de priorité des fournisseurs de raisonnement et celui des backends de recherche web.
|
||||
|
||||
## Configuration
|
||||
|
||||
Deux choses que vous voudrez sans doute savoir dès le premier jour :
|
||||
|
||||
**Où sont enregistrés les fichiers de recherche.** `LAST30DAYS_MEMORY_DIR` vaut par défaut `~/Documents/Last30Days/` (sous Windows : `C:\Users\<you>\Documents\Last30Days\`). Redéfinissez cette variable d'environnement dans votre shell pour pointer ailleurs, ou passez `--save-dir <path>` sur une exécution. Utilisez `--output <file>` quand vous voulez le résultat rendu à un chemin précis, dans le format choisi par `--emit`. Utilisez `--save-suffix=<name>` pour garder séparées plusieurs variantes d'un même sujet (par client, par exemple). Chaque exécution avec `--save-dir` produit `<slug>-raw[-suffix].md`. Lancez `python3 skills/last30days/scripts/last30days.py --preflight` pour vérifier les écritures prévues avant une recherche.
|
||||
|
||||
**Sortie structurée pour les agents et les workflows.** Demandez à `/last30days` du JSON exploitable par une machine pour obtenir le profil d'agent stable et versionné. Pour un usage direct du moteur en script ou en développement, lancez `python3 skills/last30days/scripts/last30days.py "AI coding agents" --emit=json` ; n'ajoutez `--json-profile=raw` que si vous avez besoin du dump interne non versionné de `Report`. Voir la [référence des champs de l'export JSON et la politique de versionnement](docs/reference/json-export.md).
|
||||
|
||||
**Découverte sans sujet imposé.** Demandez `/last30days what's trending in AI agents?` pour obtenir un brief de découverte classé, au lieu de rechercher un sujet que vous connaissez déjà. Sur un hôte agentique, cela déclenche le protocole en trois commandes arbitré par l'hôte (le modèle propose les sujets, écarte le bruit, note leur intérêt et rédige les angles éditoriaux). Pour un usage direct du moteur en script ou en cron, lancez `python3 skills/last30days/scripts/last30days.py --discover "AI agents"` (en une passe : noms de sujets déterministes, sans angles) ; ajoutez `--emit=json` pour le contrat de découverte versionné. La découverte est incompatible avec un sujet positionnel et avec `--drill`.
|
||||
|
||||
**Suivi des tendances d'une exécution à l'autre.** Le mode par défaut produit un instantané Markdown à chaque exécution. Pour accumuler les résultats dans le temps, ajoutez `--store` afin de les conserver dans une base SQLite, puis utilisez [`scripts/watchlist.py`](skills/last30days/scripts/watchlist.py) pour les exécutions planifiées (avec envoi facultatif sur Slack ou via webhook à chaque nouveau résultat) et [`scripts/briefing.py`](skills/last30days/scripts/briefing.py) pour des synthèses quotidiennes ou hebdomadaires. Le schéma de cadence complet est dans [CONFIGURATION.md](CONFIGURATION.md#trend-monitoring-store--watchlist--briefings).
|
||||
|
||||
**Une bibliothèque de recherche à laquelle s'abonner.** Demandez à `/last30days` de générer le flux de votre bibliothèque, ou utilisez directement `python3 skills/last30days/scripts/last30days.py library feed` pour vos scripts et vos développements. La commande transforme les briefs enregistrés en un `index.html`, un `feed.xml` Atom local et des pages de brief lisibles. N'ajoutez `--publish` que si vous voulez héberger l'index HTML et les pages de brief ; la publication est un choix explicite, et publique par défaut. Pour rendre le flux Atom réellement abonnable, hébergez le répertoire de sortie généré sur un hébergeur statique comme GitHub Pages.
|
||||
|
||||
**Cherchez dans tout ce que vous avez déjà recherché.** Demandez `/last30days search my library for MCP servers` ou `/last30days have I researched MCP servers before?`. Pour un usage direct du moteur, lancez `python3 skills/last30days/scripts/last30days.py library search "MCP servers"`. La recherche est hors ligne et déterministe : elle indexe au fil de l'eau les mêmes briefs enregistrés que le flux de bibliothèque, y fusionne les occurrences correspondantes conservées dans le store, et regroupe les résultats par sujet et par date. Les nouvelles exécutions affichent aussi une section compacte **From your library** (« depuis votre bibliothèque ») quand des recherches antérieures recoupent le sujet en cours ; définissez `LAST30DAYS_LIBRARY_CONTEXT=off` pour désactiver ce contexte passif.
|
||||
|
||||
Les scripts d'encapsulation par client, les subreddits de catégorie personnalisés et le canal bêta expérimental pour les personnalisations en cours sont également documentés dans [CONFIGURATION.md](CONFIGURATION.md).
|
||||
|
||||
## Vitrine : les flux de recherche de la communauté
|
||||
|
||||
Vous avez publié une veille IA récurrente, un suivi de marché ou une obsession merveilleusement pointue avec last30days ? Partagez l'URL de votre bibliothèque publique — ou l'URL Atom une fois `feed.xml` hébergé sur un hébergeur statique — dans [le fil vitrine de la communauté](https://github.com/mvanhorn/last30days-skill/issues/532). Les flux communautaires seront listés ici au fur et à mesure que leurs auteurs les proposeront ; en attendant, le fil sert de point de collecte.
|
||||
|
||||
## Comment ça marche
|
||||
|
||||
1. **Vous saisissez un sujet.** Une personne, une entreprise, un produit, une technologie, « X vs Y ». N'importe quoi.
|
||||
2. **L'agent identifie qui compte.** Il trouve les comptes X (y compris ceux des fondateurs), les dépôts GitHub, les subreddits, les hashtags TikTok, les chaînes YouTube. Pour « Kanye West », il sait qu'il faut r/hiphopheads, @kanyewest et « bully review » sur YouTube. Pour « OpenClaw », il identifie openclaw/openclaw sur GitHub et récupère le nombre d'étoiles en direct.
|
||||
3. **Toutes les sources interrogées en parallèle.** Expansion multi-requêtes. Résultats classés selon l'engagement, la pertinence et la fraîcheur.
|
||||
4. **Une profondeur que personne d'autre n'a.** Les transcriptions YouTube complètes des vidéos de réaction. Les meilleurs commentaires Reddit avec leur nombre d'upvotes. Les légendes TikTok. Les cotes Polymarket. Pas seulement des titres et des liens.
|
||||
5. **Une même histoire, fusionnée.** Le Wireless Festival annoncé sur Reddit, commenté sur X, avec le prix des billets sur TikTok : un seul cluster, pas trois entrées distinctes.
|
||||
6. **Synthétisé en un seul brief.** Ancré dans des données précises. Sourcé. Classé selon ce avec quoi les gens interagissent vraiment. Pas « voilà ce que j'ai trouvé », mais « voilà ce qui compte ».
|
||||
7. **Ensuite, la skill devient votre experte.** Après une seule exécution, votre session Claude sait tout ce que sait la communauté. Posez vos questions de suivi. Faites-lui écrire des prompts, rédiger des e-mails, planifier des voyages, concevoir des architectures — le tout ancré dans la réalité du moment.
|
||||
|
||||
## Ce que les gens en disent
|
||||
|
||||
> « J'ai trouvé une skill Claude Code qui fait des recherches sur n'importe quel sujet à travers Reddit, X, YouTube et HN sur les 30 derniers jours. Et elle écrit les prompts à votre place. Avant chaque contenu que j'écris, je faisais ces recherches à la main sur Reddit et X. Onglet par onglet. Fil par fil. C'est la partie qui prend 90 minutes. Elle disparaît. » — @itsjasonai
|
||||
|
||||
> « Cette seule skill a remplacé tout mon workflow de recherche. Vous lui donnez un sujet, elle récupère sur Reddit, X et le web ce dont les gens parlent vraiment. Pas de vieux billets de blog. De vraies conversations des 30 derniers jours. » — @itswilsoncharles
|
||||
|
||||
> « 5 des 10 dépôts tendance du jour sur GitHub sont des outils Claude. N° 1 : mvanhorn/last30days-skill » — @yieldhunter95
|
||||
|
||||
## Open source
|
||||
|
||||
Licence MIT. Aucun tracking. Aucune analytics. Vos recherches restent sur votre machine. Plus de 2 700 tests.
|
||||
|
||||
Construit avec Python 3.12+, yt-dlp, Node.js (client Bird intégré pour la recherche X) et l'API ScrapeCreators. Architecture du moteur v3 par [@j-sperling](https://github.com/j-sperling).
|
||||
|
||||
Voir [CONTRIBUTING.md](CONTRIBUTING.md) pour ouvrir une PR, [CONTRIBUTORS.md](CONTRIBUTORS.md) pour la liste complète des contributeurs de la communauté, et [CHANGELOG.md](CHANGELOG.md) pour l'historique des versions.
|
||||
|
||||
## Évolution des étoiles
|
||||
|
||||
<a href="https://star-history.com/#mvanhorn/last30days-skill&Date">
|
||||
<picture>
|
||||
<source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/svg?repos=mvanhorn/last30days-skill&type=Date&theme=dark" />
|
||||
<source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/svg?repos=mvanhorn/last30days-skill&type=Date" />
|
||||
<img alt="Star History Chart" src="https://api.star-history.com/svg?repos=mvanhorn/last30days-skill&type=Date" />
|
||||
</picture>
|
||||
</a>
|
||||
|
||||
---
|
||||
|
||||
**@slashlast30days** · [github.com/mvanhorn/last30days-skill](https://github.com/mvanhorn/last30days-skill)
|
||||
+382
@@ -0,0 +1,382 @@
|
||||
# /last30days
|
||||
|
||||
[English](README.md) | [Français](README.fr.md) | [Deutsch](README.de.md) | [Español](README.es.md) | [Português (Brasil)](README.pt-BR.md) | 日本語 | [简体中文](README.zh-CN.md)
|
||||
|
||||
<p align="center">
|
||||
<img src="media/pr-assets/last30days-ad.gif" width="720" alt="last30days - an AI agent-led search engine that searches people, not editors" />
|
||||
</p>
|
||||
|
||||
<p align="center">
|
||||
<a href="https://github.com/mvanhorn/last30days-skill">
|
||||
<img src="https://img.shields.io/badge/%231-Repository%20Of%20The%20Day-6f42c1?style=for-the-badge&logo=github&label=GITHUB%20TRENDING" alt="GitHub Trending #1 Repository Of The Day" />
|
||||
</a>
|
||||
<br/>
|
||||
<a href="https://trendshift.io/repositories/21997" target="_blank">
|
||||
<img src="https://trendshift.io/api/badge/repositories/21997" alt="mvanhorn/last30days-skill | Trendshift" style="width: 250px; height: 55px;" width="250" height="55"/>
|
||||
</a>
|
||||
</p>
|
||||
|
||||
**編集者ではなく、アップボート・いいね・実際に動いたお金でランク付けする、AIエージェント主導の検索エンジンです。**
|
||||
|
||||
このREADMEは現行のv3パイプラインについて説明しています。実行時のスキル仕様は [skills/last30days/SKILL.md](skills/last30days/SKILL.md) にあり、コマンドとセットアップの挙動についてはそちらが最新かつ正式なものです。
|
||||
|
||||
**Claude Code(推奨 — マーケットプレイス経由で自動更新):**
|
||||
```
|
||||
/plugin marketplace add mvanhorn/last30days-skill
|
||||
/plugin install last30days
|
||||
```
|
||||
|
||||
**Codex、Cursor、Copilot、Gemini CLI、その他50以上の [Agent Skills](https://agentskills.io) ホスト:**
|
||||
```
|
||||
npx skills add mvanhorn/last30days-skill -g
|
||||
```
|
||||
(`-g` を付けるとユーザー単位でグローバルにインストールされ、すべてのプロジェクトで使えます。プロジェクト単位に限定したい場合はこのフラグを外してください。)
|
||||
|
||||
その他のインストール方法(claude.aiのウェブ版、OpenClaw、手動)は下の [インストール](#インストール) セクションにあります。
|
||||
|
||||
設定は不要です。Reddit、HN、Polymarket、GitHub はすぐに使えます。一度実行すれば、セットアップウィザードが30秒で X、YouTube、TikTok、arXiv、Techmeme などを有効にします。
|
||||
|
||||
---
|
||||
|
||||
Reddit のアップボート。X のいいね。YouTube の文字起こし。TikTok のエンゲージメント。実際のお金とインサイダー情報に裏打ちされた Polymarket のオッズ。つまり、毎日何百万人もの人が自分の注意と財布で投票しているということです。/last30days はそのすべてを並行して検索し、実際に人々が反応したかどうかでスコアを付け、AIエージェントが判定役となって1本のブリーフにまとめます。
|
||||
|
||||
Google は編集者を束ねます。/last30days は人を検索します。
|
||||
|
||||
この検索は他のどこでも手に入りません。単独のAIがすべてにアクセスできないからです。Google の検索は Reddit のコメントにも X の投稿にも届きません。ChatGPT は Reddit と提携していますが、X も TikTok も検索できません。Gemini には YouTube がありますが Reddit がありません。Claude はそのどれもネイティブには持っていません。どのプラットフォームも、独自のAPI・独自のトークン・独自の認証を備えた閉じた庭です。しかし自分のキーとブラウザセッションを持ち込めば、AIエージェントが一度にすべてを検索し、互いに突き合わせてスコアを付け、本当に重要なことを教えてくれるようになります。
|
||||
|
||||
そこが突破口です。優れた検索エンジンが1つ増えるという話ではありません。断絶していた十数のプラットフォームを、エージェントが橋渡しするのです。
|
||||
|
||||
```
|
||||
/last30days Peter Steinberger
|
||||
```
|
||||
|
||||
明日、打ち合わせがあるとします。その人を Google で調べると、出てくるのは2023年の LinkedIn です。/last30days なら、その人が今月実際にやっていることが分かります。Codex に取り組むため OpenAI に参加し、サードパーティ製エージェントを禁じた Anthropic の方針と争い、23本のPRをマージ率85%で送り、デバイスをまたいでエージェントを操作する「LobsterOS」を作っていて、さらに r/ClaudeCode では彼が英雄なのか「鼻につく」のかという議論が569アップボートを集めている。それらは X の投稿、Reddit のスレッド、YouTube の文字起こし、GitHub のコミットに散らばっていて、どれも Google には出てきませんでした。
|
||||
|
||||
## なぜ作ったのか
|
||||
|
||||
AIの動きに追いつくために作りました。何もかもが日々変わり、Reddit と X の濃い人たちがいつも真っ先に把握しています。もっと良いプロンプトが必要でしたが、学習データはコミュニティがすでに突き止めたことより常に数か月遅れていました。
|
||||
|
||||
ただ、そこからもっと大きなものになりました。今では商談の前に走らせて、その会社について直近30日間の実情を押さえます。打ち合わせの前には、相手の最近のツイートやポッドキャストの文字起こしを読むために。ディズニー・ワールドに行く前には、どのアトラクションが休止中で、Genie+ についてコミュニティが何と言っているかを知るために。何かを作り始める前には、人々が実際にどんな問題にぶつかっているかを知るために。
|
||||
|
||||
CEOと会うとして、直近30日間のツイートと YouTube の文字起こしを全部読んできましたか。私は読んでいます。
|
||||
|
||||
## 人々がスコアを付けた情報源
|
||||
|
||||
| 情報源 | 人々が教えてくれること |
|
||||
|--------|--------------------------|
|
||||
| **Reddit** | フィルターのかかっていない本音。実際のアップボート数付きのトップコメントが、無料・APIキーなしで手に入ります。Google が埋もれさせてしまう本当の意見です。 |
|
||||
| **X / Twitter** | 勢いのある一言、専門家のスレッド、速報への最初の反応。誰よりも早く知り、誰よりも早く議論が始まります。 |
|
||||
| **YouTube** | 45分の掘り下げ。文字起こし全文を検索し、引用に値する5つの文だけを取り出します。 |
|
||||
| **TikTok** | Google では絶対に見つからない切り口で360万人に届いているクリエイター。 |
|
||||
| **Instagram Reels** | 話した内容の文字起こし付きで届く、インフルエンサーの視点。ビジュアル文化のシグナルです。 |
|
||||
| **Hacker News** | 開発者の総意。825ポイント、899コメント。技術寄りの人たちが本気で議論している場所です。 |
|
||||
| **Polymarket** | 意見ではなく、オッズ。実際のお金が裏付けています。アルバムの売上に96%、買収に4%といった具合です。 |
|
||||
| **GitHub** | 人物について: PRの勢い、スター数の多いリポジトリ、リリースノート。トピックについて: Issue と Discussion。 |
|
||||
| **Digg** | Digg の AI 1000 リーダーボード(X 上でシグナルの強いAI関連アカウント約1000件)から集めたストーリークラスター。出典をたどれるインライン引用付きで、X の認証は不要です。`digg-pp-cli` が PATH にあると自動的に有効になります。 |
|
||||
| **arXiv** | 話題の裏側にある論文。対象期間に出た新しい研究が、無料・APIキーなしで手に入ります。`arxiv-pp-cli` が PATH にあると自動的に有効になります(初回セットアップでインストールされます)。 |
|
||||
| **Techmeme** | テックニュースの編集レイヤーを、対象の30日間に絞って取得します。無料・APIキーなし。`techmeme-pp-cli` が PATH にあると自動的に有効になります(初回セットアップでインストールされます)。 |
|
||||
| **LinkedIn** | ビジネス面のシグナル。投稿と記事を拾い、記事は強いシグナルとして重み付けします。 |
|
||||
| **StockTwits** | トレーダーの温度感。調べる対象が銘柄コードや暗号資産のときに自動で有効になります。 |
|
||||
| **Threads** | Twitter 以後のテキストの層。クリエイターやブランドの会話です。 |
|
||||
| **Pinterest** | ビジュアル起点の発見。プロダクトやアイデアに対するピン・保存・コメント。 |
|
||||
| **Xiaohongshu(RED)** | 中国のライフスタイル・プロダクト・クリエイターのシグナル。ログイン済みの x-mcp ブラウザプラグイン、または `xiaohongshu-mcp` サービスがローカルで動いているときに、`--search xhs` で明示的に指定して使います。 |
|
||||
| **Bluesky** | 分散型のソーシャル層。Twitter 以後の移住で生まれた AT Protocol の投稿です。 |
|
||||
| **Perplexity** | 根拠付きの Sonar による統合、Search API の生の結果、そして Deep Research。 |
|
||||
| **Web** | 編集記事や、ブログの比較記事。数あるシグナルの1つであって、唯一のものではありません。 |
|
||||
|
||||
コミュニティが今も情報源を増やし続けています。Truth Social をはじめとするニッチな情報源もすでにエンジンに入っていて、さらに追加予定です。
|
||||
|
||||
1,500アップボートの Reddit スレッドは、誰にも読まれなかったブログ記事よりも強いシグナルです。360万回再生の TikTok は、プレスリリースよりも「今、文化的に何が効いているか」を語ります。6.6万ドルの出来高に裏打ちされた Polymarket のオッズは、評論家の当て推量よりも反論しにくいものです。
|
||||
|
||||
この統合処理は、実在の人々が実際に反応したかどうかで順位を付けます。SEO上の関連性ではなく、社会的な関連性です。
|
||||
|
||||
## みんなが実際に使っている場面
|
||||
|
||||
**打ち合わせの前に。** `/last30days Peter Steinberger` — OpenAI の Codex チームに参加、サードパーティ製エージェントを禁じた Anthropic の方針と対立、GitHub で23本のPRをマージ率85%でマージ、デバイスをまたいでエージェントを操作する LobsterOS を開発中。r/ClaudeCode では「OpenClaw が出てからずっと、API 以外の経路で動かせばいずれBANされると広く知られていた」(227アップボート)。これは LinkedIn には載っていません。
|
||||
|
||||
**採用シグナルを読むために。** `/last30days Listen Labs --hiring-signals` — 現在の求人ページやキャリアページが、注力領域の変化を示す引用可能な根拠になります。エンタープライズ向けセキュリティ、カスタマーサクセス、インフラ、プロダクト拡張といった採用の動きです。レポートが述べるのは「採用が何を示唆しているように見えるか」であって、「ロードマップが何を出すか」ではありません。
|
||||
|
||||
**ピークを迎える前の話題を見つけるために。** `/last30days what's exploding in AI agents?` と尋ねると、スキルはディスカバリーモードに切り替わります。エンジンが Reddit のカテゴリー一覧、Hacker News のフロントページとベストストーリー、Digg の AI 1000 フィード、そして認証済みであれば X を横断してさらいます。次にエージェントが候補を審査し(名前の妥当性、ノイズの除去、記事になるか)、ポッドキャストや X 記事の切り口を書きます。最後に、勢いの強さで並べた5〜10件のトピックが返ってきます。各結果には情報源をまたいだ数値、モメンタムのラベル、そしてそのまま実行できる `/last30days "<topic>"` が付いてきます。
|
||||
|
||||
**何かが出たとき。** `/last30days Kanye West` — イギリスがビザを却下、Wireless Festival は中止、スポンサーは離脱。それでも BULLY は Billboard 初登場2位。Fantano は「Yay sabbatical」から復帰してレビューを公開(65.3万回再生)。SoFi Homecoming では Lauryn Hill と Travis Scott を迎えて44曲を披露。Polymarket では「Kanye はまたツイートするか?」が「はい」86%。Reddit のスレッド23件、YouTube の動画17本、アップボート8.6万件。
|
||||
|
||||
**ツールを比べるために。** `/last30days OpenClaw vs Hermes vs Paperclip` — 「これらは競合ではなくレイヤーだ」。OpenClaw は実行を担うレイヤー(GitHub スター35.1万、稼働中)、Hermes は自己改善する頭脳(スター3.1万)、Paperclip は組織図(スター4.9万)。スター数は古いブログ記事からではなく GitHub API からその場で取得しています。アーキテクチャ、メモリ、セキュリティ、向いている用途を並べた比較表付き。@IMJustinBrooke いわく「OpenClaw = ヒトカゲ、Hermes = リザードン」。
|
||||
|
||||
**世界の動きを理解するために。** `/last30days Iran vs USA` — 開戦から38日目。トランプ大統領はイランに対し、ホルムズ海峡の再開について火曜日を期限とする最後通告。米軍機2機が撃墜。原油は1バレル126ドル。IEA はこれを「世界の石油市場の歴史上最大の供給途絶」と呼びました。Polymarket では12月31日までの停戦が74%。X の投稿27件、YouTube の動画10本、予測市場20件。
|
||||
|
||||
**旅行の前に。** `/last30days Universal Epic Universe` — 拡張エリアはすでに着工済み。「Project 680」の建設許可が申請されています。花火ショーはインフラの痕跡から確認できるものの、まだ発表はありません。待ち時間は Mine-Cart Madness が平均148分。年間パスはまだ出ておらず、地元の人たちは不満を漏らしています。Stardust Racers は4月5日まで改修で運休。
|
||||
|
||||
**手早く学ぶために。** `/last30days Nano Banana Pro prompting` — JSON で構造化したプロンプトが、タグの寄せ集めに取って代わりつつあります。@pictsbyai の入れ子形式は「コンセプトの混線」を防ぎます。作り直すより、編集を前提にしたワークフローのほうが結果が出ます。そのうえで、コミュニティが「これは効く」と言った内容をそのまま使って、実運用向けのプロンプトを書いてくれます。
|
||||
|
||||
## 最近の変更
|
||||
|
||||
5月の v3.3 発表以降、v3.11.1(2026年7月)時点までで、15回のリリースにわたり175本のPRがマージされました。うち122本はコミュニティの52人によるものです。以下がその内容です。
|
||||
|
||||
### OpenAI Codex での一級対応
|
||||
|
||||
/last30days は、ガイド付きセットアップを備えた Codex のネイティブプラグインになりました。移植版ではなく、一級の対応です。レンダラーを踏まえた引用処理によって、Codex での出力はURLの羅列ではなくブリーフとして読めるようになり(#694)、同じエンジンが Claude Code、Cursor、Copilot、Gemini CLI、Claude Desktop、OpenClaw、そして50以上の Agent Skills ホストで動きます。Codex のプラグインマニフェストは [@rfoust](https://github.com/rfoust)(#686)、Codex の認証まわりの修正は [@tmchow](https://github.com/tmchow)(#698)によるものです。
|
||||
|
||||
### arXiv、Techmeme、Digg — 無料、APIキー不要
|
||||
|
||||
arXiv は話題の裏側にある論文を、Techmeme はテックニュースの編集レイヤーを持ち込みます。いずれも無料でキーは一切不要、しかも初回セットアップが各CLIをインストールするので自動的に有効になります(#709)。Digg の AI 1000 ストーリークラスターも同じように、X の認証なしで届きます。セットアップが無料の Digg CLI を入れてくれます(#590)。Trustpilot は消費者向けブランドの調査用に、任意で有効にできます。
|
||||
|
||||
### 無料の Reddit が、実数のスコアとトップコメント付きで復活
|
||||
|
||||
Reddit の公開 .json API は終了しましたが、無料の経路はより強くなって戻ってきました。キー不要の RSS と shreddit のスクレイピング(#457)、arctic-shift 経由で実際のアップボート数まで取れるサブレディット特定(#696)、そして話題から外れたバズ投稿にブリーフを乗っ取られないようにする関連性の下限(#488、[@rzachsmith](https://github.com/rzachsmith) に感謝)。APIキーは不要。スコアは実数。トップコメントも込みです。
|
||||
|
||||
### どのブリーフにも最高のコメントを
|
||||
|
||||
コメントは今や、どの情報源でも既定で有効なレイヤーです。Instagram のコメントは順位に基づいて分散させ、尖った意見5件が同じ投稿ばかりから出ないようにしています(#751)。YouTube のコメントに加えて、yt-dlp が失敗したときのために ScrapeCreators による文字起こしのバックアップも用意しました(#637)。さらに、コミュニティの投票で支持されたコメントを Best Takes のスコアに反映し、いちばん面白い一言が選別を生き延びるようにしています(#592、#608)。
|
||||
|
||||
### doctor コマンド1つで
|
||||
|
||||
ヘルスチェックを頼めば、doctor がすべての情報源を試したうえで、必要な対処をそのまま提示します。どのキーが足りないのか、どのCLIが PATH に入っていないのか、どのクッキーが期限切れなのか(#753)。X の結果が薄かった理由を当てずっぽうで探す必要はもうありません。
|
||||
|
||||
### X 検索の作り直し
|
||||
|
||||
X のパイプラインを一から作り直しました。FROM レーンと ABOUT レーンを設けて、本人の投稿と本人についての会話の両方が順位付けされるようにし(#610)、対象人物に応じてサブクエリの曖昧さを解消し(#611)、本人による投稿かどうかを裏付けたうえでインタラクションのシグナルで順位を付け(#613)、バックエンドを自動で切り替える単一の X ソースにまとめました(#622)。さらに、認証を実際に確かめる正直な `--diagnose` も入っています(#609)。
|
||||
|
||||
### 情報源が増えました
|
||||
|
||||
ScrapeCreators 経由の LinkedIn。記事は強いシグナルとして扱います([@ravstr](https://github.com/ravstr)、#702)。StockTwits は銘柄コードや暗号資産の話題で自動的に有効になります([@wtiwana](https://github.com/wtiwana)、#658)。Perplexity は直接APIモードと非同期の Deep Research に対応しました([@sk-holmes](https://github.com/sk-holmes)、#629)。
|
||||
|
||||
### コミュニティによる堅牢化
|
||||
|
||||
セキュリティ面の改善は、ほぼすべてコミュニティの手によるものです。HTML レンダラーの格納型XSSの修正([@iliaal](https://github.com/iliaal)、[@aaronjmars](https://github.com/aaronjmars))、クッキーの一時ファイルの権限強化、OpenSSF Scorecard とビルド来歴の証明を組み込んだサプライチェーン耐性のあるCI([@shaanmajid](https://github.com/shaanmajid)、[@hammadxcm](https://github.com/hammadxcm)、[@aniruddh909](https://github.com/aniruddh909))、Semgrep と OSV-Scanner によるスキャンおよびPRごとの依存関係レビューゲート([@23241a6749](https://github.com/23241a6749))、60%で導入し現在は84%まで引き上げたテストカバレッジの下限([@gourab5139014](https://github.com/gourab5139014))、そして CRITICAL の指摘がゼロになった Hermes のセキュリティスキャン(#768)。
|
||||
|
||||
### 届く範囲が広がりました
|
||||
|
||||
ヘブライ語をはじめとする非ラテン文字の言語に対応([@dudyme](https://github.com/dudyme))。中国語の情報源向けに CJK を考慮したトークナイズ([@An-idd](https://github.com/An-idd))。Windows 対応の改善もまとめて入りました。Chromium 系ブラウザ全体(Brave、Edge、Vivaldi、Opera、Arc)からのクッキー抽出([@andrey-esipov](https://github.com/andrey-esipov))に加え、macOS のキーチェーンと Linux の pass(1) も認証情報の取得元として使えます。`--as-of` による過去時点の振り返り([@chiyi-creator](https://github.com/chiyi-creator))。uv 経由での Python 3.12 の自動セットアップ([@buntysomroy](https://github.com/buntysomroy))。企業の求人ページを読む `--hiring-signals`。実行と実行のあいだのウォッチリスト差分。
|
||||
|
||||
### v3 から引き続き入っているもの
|
||||
|
||||
v3 の土台はすべて健在です。APIコールを1件も投げる前に、適切なアカウント・サブレディット・ハッシュタグを特定する事前リサーチの頭脳([@j-sperling](https://github.com/j-sperling) が構築)。関連性だけでなくユーモアやバイラル性も見る Best Takes のスコアリング。情報源をまたいだクラスターの統合。1回のパスで済む比較(「CLI vs MCP」が12分ではなく3分)。自動で候補を見つける `--competitors` 比較。GitHub の人物モード(`--github-user=steipete`)。ELI5 モード(実行後に「eli5 on」)。そして共有できる自己完結型の HTML ブリーフ(`--emit=html`)。設定項目は [CONFIGURATION.md](CONFIGURATION.md) にまとまっています。
|
||||
|
||||
## インストール
|
||||
|
||||
| 環境 | インストール | 更新 |
|
||||
|---------|---------|---------|
|
||||
| **Claude Code**(推奨) | `/plugin marketplace add mvanhorn/last30days-skill` | マーケットプレイス経由で自動、または `claude plugin update last30days@last30days-skill` |
|
||||
| **Grok**(xAI Build CLI) | `grok plugin marketplace add mvanhorn/last30days-skill` のあとに `grok plugin install last30days` | `grok plugin update last30days` |
|
||||
| **Codex、Cursor、Copilot、Gemini CLI、その他50以上の [Agent Skills](https://agentskills.io) ホスト** | `npx skills add mvanhorn/last30days-skill -g` | `npx skills update last30days -g` |
|
||||
| **claude.ai**(ウェブ) | [`last30days.skill` をダウンロード](https://github.com/mvanhorn/last30days-skill/releases/latest/download/last30days.skill)し、claude.ai > Customize > Skills > + > Create skill > Upload a skill からアップロード | ダウンロードし直してアップロードし直す |
|
||||
| **Claude Desktop** | [お使いのプラットフォーム向けの `.mcpb` をダウンロード](https://github.com/mvanhorn/last30days-skill/releases/latest)し、Settings > Extensions にドラッグ | ダウンロードし直して新しいバンドルをドラッグ |
|
||||
| **OpenClaw** | `clawhub install last30days-official` | `clawhub update last30days-official` |
|
||||
|
||||
### Claude Code(推奨)
|
||||
|
||||
```
|
||||
/plugin marketplace add mvanhorn/last30days-skill
|
||||
```
|
||||
|
||||
Claude Code のマーケットプレイスが更新を代わりにやってくれるため、これが推奨です。プラグインのキャッシュはバージョン管理されていて、新しいリリースが公開されると自動で更新されます。`claude plugin update last30days@last30days-skill` を実行すれば、その場で確認を強制できます。
|
||||
|
||||
Claude Code で Agent Skills 経由のインストールを使いたい場合も、それはそれで対応しています。
|
||||
|
||||
```
|
||||
npx skills add mvanhorn/last30days-skill -g -a claude-code
|
||||
```
|
||||
|
||||
ネイティブプラグインと `npx skills` でのインストールは共存できます。ただし Claude Code はインストール方法をまたいだ重複排除を行いません。マーケットプレイス版のプラグインと `npx skills` のコピーを両方とも有効にしていると、`/last30days` が2件表示されます。1台につきインストール方法は1つにしてください。
|
||||
|
||||
### Grok(xAI Build CLI)
|
||||
|
||||
[Grok Build](https://docs.x.ai/build/features/skills-plugins-marketplaces)(`grok`)は last30days をネイティブプラグインとしてインストールします。直接インストールする場合はリポジトリを追跡します。
|
||||
|
||||
```bash
|
||||
grok plugin install mvanhorn/last30days-skill
|
||||
```
|
||||
|
||||
あるいは、このリポジトリをマーケットプレイスのソースとして追加してから、プラグイン名でインストールすることもできます。
|
||||
|
||||
```bash
|
||||
grok plugin marketplace add mvanhorn/last30days-skill
|
||||
grok plugin install last30days
|
||||
```
|
||||
|
||||
インストール時の確認を省きたい場合は `--trust` を付けてください。更新は `grok plugin update last30days` です。Grok は互換性のために Claude Code のマニフェストも読みますが、第一の経路はネイティブの `.grok-plugin/` のペアで、[xAI のマーケットプレイス](https://github.com/xai-org/plugin-marketplace)への公式掲載もこちらを指しています。`npx skills add` は、どのホストでも使える代替手段として引き続き有効です。
|
||||
|
||||
### Codex、Cursor、Copilot、Gemini CLI、その他の Agent Skills ホスト
|
||||
|
||||
オープンな [Agent Skills](https://agentskills.io) の CLI からインストールします。`codex`、`cursor`、`github-copilot`、`gemini-cli`、`claude-code`、`windsurf`、`cline`、`continue`、`roo`、`aider-desk`、`opencode`、`goose` など50以上のホストに対応しています(全一覧は [vercel-labs/skills リポジトリ](https://github.com/vercel-labs/skills)にあります)。
|
||||
|
||||
```bash
|
||||
npx skills add mvanhorn/last30days-skill -g
|
||||
```
|
||||
|
||||
`-g`(グローバル)フラグを付けるとユーザーディレクトリにインストールされ、スキルをすべてのプロジェクトで使えます。`-g` を付けない場合、`npx skills` はプロジェクト内の `./.skills/` にインストールし、リポジトリと一緒にコミットされます。世界中を調べるためのツールなので、通常はグローバルが向いています。
|
||||
|
||||
Codex のデスクトップ版など、フォルダ単位で動くホストは、Git リポジトリでも普通のフォルダでも動作します。最初の調査を始める前に、読み込み済みのスキルディレクトリから同梱の `scripts/last30days.py --preflight` を実行するようホストのエージェントに頼んでください。ソースをチェックアウトしている場合、同等のコマンドは `python3 skills/last30days/scripts/last30days.py --preflight` です。設定の取得元、ブラウザのクッキーをどう扱う予定か、どのファイルを書き込む予定か、任意で使えるコマンド、無視されるプロジェクト設定を表示します。クッキーの読み取りもファイルの書き込みも調査の実行もしません。
|
||||
|
||||
既定では、`npx skills` が検出したホスト向けにインストールされます。特定のホスト(または複数)を指定するには次のようにします。
|
||||
|
||||
```bash
|
||||
npx skills add mvanhorn/last30days-skill -g -a codex
|
||||
npx skills add mvanhorn/last30days-skill -g -a cursor
|
||||
npx skills add mvanhorn/last30days-skill -g -a gemini-cli
|
||||
npx skills add mvanhorn/last30days-skill -g -a codex -a cursor
|
||||
```
|
||||
|
||||
あとから更新するには次のようにします。
|
||||
|
||||
```bash
|
||||
npx skills update last30days -g
|
||||
```
|
||||
|
||||
`npx skills` でグローバルに入れたものをまとめて更新することもできます。
|
||||
|
||||
```bash
|
||||
npx skills update -g
|
||||
```
|
||||
|
||||
一覧表示と削除は `npx skills list -g` と `npx skills remove last30days -g` で行えます。
|
||||
|
||||
### claude.ai(ウェブ)
|
||||
|
||||
1. 最新リリースから [`last30days.skill` をダウンロード](https://github.com/mvanhorn/last30days-skill/releases/latest/download/last30days.skill)します
|
||||
2. [claude.ai > Customize > Skills](https://claude.ai/customize/skills) を開きます
|
||||
3. Skills パネルの `+` ボタンをクリックし、`Create skill` > `Upload a skill` と進んで、ファイルを選択するかドロップします
|
||||
|
||||
先に Capabilities で「Code execution and file creation」を有効にしてください。これがないとスキルは動きません。
|
||||
|
||||
### Claude Desktop
|
||||
|
||||
Claude Desktop では、`.mcpb` バンドル(ワンクリック版の Model Context Protocol パッケージ)を使って `/last30days` を MCP サーバーとしてインストールします。
|
||||
|
||||
1. [最新リリース](https://github.com/mvanhorn/last30days-skill/releases/latest)を開き、お使いのプラットフォーム向けの `.mcpb` をダウンロードします:
|
||||
- macOS Apple Silicon: `last30days-pp-mcp-darwin-arm64.mcpb`
|
||||
- macOS Intel: `last30days-pp-mcp-darwin-amd64.mcpb`
|
||||
- Linux x86_64: `last30days-pp-mcp-linux-amd64.mcpb`
|
||||
2. Claude Desktop を開き、Settings > Extensions に移動して、ファイルをドラッグします。
|
||||
3. 求められたら、有効にしたい情報源のAPIキーを貼り付けます。どの項目も任意です。すべて省略した場合、エンジンはウェブのみのモードに切り替わります。キーはOSのキーチェーンに保存されます。
|
||||
4. Claude Desktop を再起動します。Claude に「Peter Steinberger について調べて」などと頼めば、`research` ツールが呼び出されます。
|
||||
|
||||
**ホスト側の要件:** PATH の通った Python 3.12以上。バンドルにはエンジンのソースが含まれますが、実行にはローカルの Python インタプリタを使います。Windows では [python.org](https://www.python.org/downloads/) からインストールしてください。macOS とたいていの Linux ディストリビューションには、対応するバージョンが最初から入っています。
|
||||
|
||||
**キーは Claude Code のスキルとは共有されません。** Claude Desktop と Claude Code は、設計上それぞれ別に認証情報を保管しています。Claude Code のスキル用にすでに `~/.config/last30days/.env` を設定していても、ここで同じキーをもう一度だけ入力する必要があります。
|
||||
|
||||
Windows のサポートは、マニフェストのプラットフォーム別エントリーポイントが整理されるまで見送りとなっており、専用のIssueで追跡しています。
|
||||
|
||||
### OpenClaw
|
||||
|
||||
```bash
|
||||
clawhub install last30days-official
|
||||
```
|
||||
|
||||
`/last30days` の調査以外で X/Twitter を操作したい場合 — ツイートや返信の投稿、
|
||||
フォロワーのエクスポート、メディアの扱い、モニタリング、プレゼント企画の抽選など —
|
||||
には、OpenClaw の補助プラグインとして [TweetClaw](https://github.com/Xquik-dev/tweetclaw)
|
||||
を使ってください。TweetClaw は Xquik-dev が管理しており、ここでは任意の補助的な
|
||||
選択肢として挙げているだけです。last30days の依存でも推奨でもありません。
|
||||
|
||||
### 手動インストール(開発者向け)
|
||||
|
||||
```bash
|
||||
git clone https://github.com/mvanhorn/last30days-skill.git
|
||||
ln -s "$(pwd)/last30days-skill/skills/last30days" ~/.claude/skills/last30days
|
||||
```
|
||||
|
||||
シンボリックリンクにしておけば、編集するたびに作業ツリーとインストール先が同期するので、コピーし直す必要はありません。`claude.ai` 用には、ソースから `.skill` ファイルをビルドしてください。`bash skills/last30days/scripts/build-skill.sh` で `dist/last30days.skill` が生成されます。
|
||||
|
||||
Reddit(コメント込み)、Hacker News、Polymarket、GitHub はすぐに使えます。設定は不要です。`/last30days` を一度実行すれば、セットアップウィザードが30秒でさらに多くの情報源を有効にします。無料の arXiv と Techmeme の CLI も含まれます。
|
||||
|
||||
## 自分のキーを持ち込む
|
||||
|
||||
これらのプラットフォーム同士には何のつながりもありません。X は Reddit が何を考えているかを知りませんし、YouTube に TikTok は見えていません。しかし自分のAPIキーとブラウザのトークンを持ち込めば、それらすべてに一度にアクセスできるようになります。
|
||||
|
||||
| 情報源 | 必要なもの | 費用 |
|
||||
|---------|---------------|------|
|
||||
| Reddit(コメント込み)+ HN + Polymarket + GitHub + StockTwits | 不要 | 無料 |
|
||||
| arXiv + Techmeme | 無料のCLI。初回セットアップが自動でインストールします | 無料 |
|
||||
| X / Twitter | 任意のブラウザで x.com にログインするか、`XQUIK_API_KEY` / `XAI_API_KEY` を設定 | ブラウザのクッキーは無料。キーの料金は提供元によります |
|
||||
| YouTube | `brew install yt-dlp` | 無料 |
|
||||
| Bluesky | bsky.app のアプリパスワード | 無料 |
|
||||
| TikTok + Instagram + Threads + Pinterest + LinkedIn + YouTube のコメント | ScrapeCreators のキー | 1万リクエストまで無料、以降は従量課金 |
|
||||
| Xiaohongshu(RED) | ログイン済みの x-mcp ブラウザプラグインか `xiaohongshu-mcp` サービスを動かしたうえで、実行ごとに `--search xhs` を付けるか `.env` に `INCLUDE_SOURCES=xiaohongshu` を設定して有効化します。last30days は `http://localhost:18060`、次に `http://host.docker.internal:18060` の順に自動で接続を試し、独自のURLを使う場合は `XIAOHONGSHU_API_BASE` を指定します | last30days 側のAPIキーは不要。ローカルのブラウザセッションのサービス次第です |
|
||||
| DripStack(有料の金融ニュースレター) | 任意で有効化: 実行ごとに `--search dripstack`、または `.env` に `INCLUDE_SOURCES=dripstack` | キー不要。無料の公開検索APIを使います |
|
||||
| Perplexity Sonar / Search API / Deep Research | Perplexity のキー、または Sonar の代替として OpenRouter のキー | 従量課金 |
|
||||
| ウェブ検索 | Brave Search のキー | 月2,000クエリまで無料 |
|
||||
|
||||
### macOS のキーチェーン(任意)
|
||||
|
||||
macOS では、キーを `.env` ファイルではなくシステムのキーチェーンに保存できます。スキルは最も優先度の低い取得元として自動的に読み込むため、衝突した場合は `.env` ファイルとプロセスの環境変数が優先されます。
|
||||
|
||||
```bash
|
||||
# Interactive setup — prompts for each known key, skip with empty input
|
||||
skills/last30days/scripts/setup-keychain.sh
|
||||
|
||||
# Or store a single key by hand
|
||||
security add-generic-password -a "$USER" -s last30days-XAI_API_KEY -w "xai-..."
|
||||
|
||||
# Inspect / clean up
|
||||
skills/last30days/scripts/setup-keychain.sh --list
|
||||
skills/last30days/scripts/setup-keychain.sh --delete XAI_API_KEY
|
||||
```
|
||||
|
||||
項目は現在のユーザー向けに、サービス名 `last30days-<KEY>` で保存されます。Darwin 以外のプラットフォームではローダーは何もしないため、Linux や Windows のユーザーにとって挙動は変わりません。
|
||||
|
||||
すでに別のサービス名でキーチェーンにキーを保存している場合は、秘密情報をコピーする代わりに、[CONFIGURATION.md](CONFIGURATION.md#reusing-existing-macos-keychain-items) で説明している秘密情報ではないマッピング `LAST30DAYS_KEYCHAIN_ALIASES` を設定してください。
|
||||
|
||||
情報源ごとのキーの一覧、推論プロバイダーの優先順位、ウェブ検索バックエンドの優先順位については [CONFIGURATION.md](CONFIGURATION.md) を参照してください。
|
||||
|
||||
## 設定
|
||||
|
||||
初日に知っておくとよいことが2つあります。
|
||||
|
||||
**調査ファイルの保存先。** `LAST30DAYS_MEMORY_DIR` の既定値は `~/Documents/Last30Days/` です(Windows では `C:\Users\<you>\Documents\Last30Days\`)。変更したい場合は、シェルでこの環境変数に任意のパスを設定するか、実行ごとに `--save-dir <path>` を指定します。レンダリング結果を特定のパスに出力したいときは `--output <file>` を使い、形式は `--emit` で選びます。同じトピックの複数のバリエーションを分けて残したいときは `--save-suffix=<name>` を使ってください(クライアントごとに分ける場合など)。`--save-dir` を付けた実行では `<slug>-raw[-suffix].md` が生成されます。調査を走らせる前に書き込み予定を確認するには `python3 skills/last30days/scripts/last30days.py --preflight` を実行してください。
|
||||
|
||||
**エージェントやワークフロー向けの構造化出力。** `/last30days` に機械可読なJSONを求めると、安定したバージョン付きのエージェント向けプロファイルが返ります。スクリプトや開発でエンジンを直接使う場合は `python3 skills/last30days/scripts/last30days.py "AI coding agents" --emit=json` を実行してください。バージョン管理されていない内部の `Report` のダンプが必要なときだけ `--json-profile=raw` を追加します。[JSONエクスポートのフィールド一覧とバージョニング方針](docs/reference/json-export.md)も参照してください。
|
||||
|
||||
**トピックを決めないディスカバリー。** すでに知っているトピックを調べる代わりに、順位付きのディスカバリーブリーフがほしいときは `/last30days what's trending in AI agents?` と尋ねてください。エージェントを備えたホストでは、ホストが判定する3コマンドのプロトコルが走ります(モデルがトピックを挙げ、ノイズを除き、取り上げる価値を採点し、コンテンツの切り口を書きます)。スクリプトや cron でエンジンを直接使う場合は `python3 skills/last30days/scripts/last30days.py --discover "AI agents"` を実行します(単発実行。トピック名は決定論的で、切り口は付きません)。バージョン付きのディスカバリー契約がほしい場合は `--emit=json` を追加してください。ディスカバリーは、位置引数のトピックや `--drill` とは併用できません。
|
||||
|
||||
**実行をまたいだトレンド監視。** 既定のモードでは、実行のたびに新しい Markdown のスナップショットが作られます。時間をかけて結果を蓄積したい場合は `--store` を付けて SQLite データベースに保存し、定期実行には [`scripts/watchlist.py`](skills/last30days/scripts/watchlist.py)(新しい結果が出たときの Slack や Webhook への通知も任意で設定できます)、日次・週次のまとめには [`scripts/briefing.py`](skills/last30days/scripts/briefing.py) を使ってください。運用サイクルの全体像は [CONFIGURATION.md](CONFIGURATION.md#trend-monitoring-store--watchlist--briefings) にあります。
|
||||
|
||||
**購読できる調査ライブラリ。** `/last30days` にライブラリのフィードを作らせるか、スクリプトや開発用には `python3 skills/last30days/scripts/last30days.py library feed` を直接使ってください。保存済みのブリーフが `index.html`、ローカルの Atom 形式の `feed.xml`、読みやすいブリーフのページに変換されます。HTML のインデックスとブリーフのページをホスティングしたいときだけ `--publish` を付けてください。公開は明示的に選ぶ形で、既定では誰でも見られる状態になります。Atom フィードを実際に購読できるようにするには、生成された出力ディレクトリを GitHub Pages のような静的ホスティングに置いてください。
|
||||
|
||||
**これまで調べたものをすべて検索する。** `/last30days search my library for MCP servers` や `/last30days have I researched MCP servers before?` と尋ねてください。エンジンを直接使う場合は `python3 skills/last30days/scripts/last30days.py library search "MCP servers"` を実行します。この検索はオフラインかつ決定論的です。ライブラリのフィードが使うのと同じ保存済みブリーフを少しずつインデックス化し、実行ごとにストアへ記録された該当分をまとめ、トピックと日付で結果をグループ化します。新しく実行したときも、過去の調査が今回のトピックと重なっていれば、**From your library**(あなたのライブラリから)というコンパクトなセクションが表示されます。この受動的な文脈表示をやめたい場合は `LAST30DAYS_LIBRARY_CONTEXT=off` を設定してください。
|
||||
|
||||
クライアントごとのラッパースクリプト、カテゴリー用のサブレディットのカスタマイズ、作業中のカスタマイズを試す実験的なベータチャンネルについても [CONFIGURATION.md](CONFIGURATION.md) に記載しています。
|
||||
|
||||
## ショーケース: コミュニティの調査フィード
|
||||
|
||||
last30days で、定期的なAIのまとめ、市場ウォッチ、あるいは見事にニッチな偏愛を公開しましたか。公開ライブラリのURL(または `feed.xml` を静的ホスティングに置いたあとの Atom のURL)を[コミュニティのショーケーススレッド](https://github.com/mvanhorn/last30days-skill/issues/532)で共有してください。コミュニティのフィードは、作者から届き次第ここにリンクしていきます。それまでのあいだは、このスレッドが集約先です。
|
||||
|
||||
## 仕組み
|
||||
|
||||
1. **トピックを入力します。** 人物、企業、プロダクト、技術、「X vs Y」。何でもかまいません。
|
||||
2. **エージェントが「誰が重要か」を特定します。** X のアカウント(創業者を含む)、GitHub のリポジトリ、サブレディット、TikTok のハッシュタグ、YouTube のチャンネルを見つけます。「Kanye West」なら r/hiphopheads、@kanyewest、YouTube の「bully review」だと分かります。「OpenClaw」なら GitHub 上の openclaw/openclaw を特定し、スター数をその場で取得します。
|
||||
3. **すべての情報源を並行して検索します。** 複数クエリへの展開。結果はエンゲージメント、関連性、新しさでスコア付けされます。
|
||||
4. **他にはない深さ。** リアクション動画の YouTube 全文文字起こし。アップボート数付きの Reddit のトップコメント。TikTok のキャプション。Polymarket のオッズ。タイトルとリンクだけではありません。
|
||||
5. **同じ話題はまとめます。** Reddit で告知され、X で語られ、TikTok にチケット価格が出た Wireless Festival は、3件の別々の項目ではなく1つのクラスターになります。
|
||||
6. **1本のブリーフに統合します。** 具体的なデータに基づき、情報源を明示し、実際に人々が反応したかどうかで順位を付けます。「見つけたものはこれです」ではなく「重要なのはこれです」を返します。
|
||||
7. **そのあとは、あなたの専門家になります。** 一度実行すれば、あなたの Claude のセッションはコミュニティが知っていることをすべて把握しています。続けて質問してください。プロンプトを書かせる、メールを下書きさせる、旅程を立てさせる、システム構成を設計させる。どれも「今、実際に起きていること」に基づきます。
|
||||
|
||||
## 使っている人の声
|
||||
|
||||
> 「Reddit、X、YouTube、HN を横断して直近30日のあらゆるトピックを調べてくれる Claude Code のスキルを見つけた。しかもプロンプトまで書いてくれる。書く記事ごとに、これまでは Reddit と X を手作業で調べていた。タブごと、スレッドごとに。そこが90分かかっていた部分だ。それがなくなる。」 — @itsjasonai
|
||||
|
||||
> 「このスキル1つで、私の調査ワークフローがまるごと置き換わった。トピックを渡すと、Reddit、X、ウェブから人々が本当に話していることを拾ってくる。古いブログ記事ではなく、直近30日の生の会話だ。」 — @itswilsoncharles
|
||||
|
||||
> 「今日 GitHub でトレンド入りしているリポジトリ10件のうち5件が Claude 関連のツール。1位は mvanhorn/last30days-skill」 — @yieldhunter95
|
||||
|
||||
## オープンソース
|
||||
|
||||
MIT ライセンス。トラッキングなし。アナリティクスなし。調査結果はあなたのマシンに残ります。テストは2,700件以上。
|
||||
|
||||
Python 3.12以上、yt-dlp、Node.js(X 検索用に同梱した Bird クライアント)、ScrapeCreators API で構築しています。v3 のエンジンアーキテクチャは [@j-sperling](https://github.com/j-sperling) によるものです。
|
||||
|
||||
PRの出し方は [CONTRIBUTING.md](CONTRIBUTING.md)、コミュニティの貢献者の一覧は [CONTRIBUTORS.md](CONTRIBUTORS.md)、バージョン履歴は [CHANGELOG.md](CHANGELOG.md) を参照してください。
|
||||
|
||||
## スター数の推移
|
||||
|
||||
<a href="https://star-history.com/#mvanhorn/last30days-skill&Date">
|
||||
<picture>
|
||||
<source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/svg?repos=mvanhorn/last30days-skill&type=Date&theme=dark" />
|
||||
<source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/svg?repos=mvanhorn/last30days-skill&type=Date" />
|
||||
<img alt="Star History Chart" src="https://api.star-history.com/svg?repos=mvanhorn/last30days-skill&type=Date" />
|
||||
</picture>
|
||||
</a>
|
||||
|
||||
---
|
||||
|
||||
**@slashlast30days** · [github.com/mvanhorn/last30days-skill](https://github.com/mvanhorn/last30days-skill)
|
||||
+383
@@ -0,0 +1,383 @@
|
||||
# /last30days
|
||||
|
||||
[English](README.md) | [Français](README.fr.md) | [Deutsch](README.de.md) | [Español](README.es.md) | Português (Brasil) | [日本語](README.ja.md) | [简体中文](README.zh-CN.md)
|
||||
|
||||
<p align="center">
|
||||
<img src="media/pr-assets/last30days-ad.gif" width="720" alt="last30days - an AI agent-led search engine that searches people, not editors" />
|
||||
</p>
|
||||
|
||||
<p align="center">
|
||||
<a href="https://github.com/mvanhorn/last30days-skill">
|
||||
<img src="https://img.shields.io/badge/%231-Repository%20Of%20The%20Day-6f42c1?style=for-the-badge&logo=github&label=GITHUB%20TRENDING" alt="GitHub Trending #1 Repository Of The Day" />
|
||||
</a>
|
||||
<br/>
|
||||
<a href="https://trendshift.io/repositories/21997" target="_blank">
|
||||
<img src="https://trendshift.io/api/badge/repositories/21997" alt="mvanhorn/last30days-skill | Trendshift" style="width: 250px; height: 55px;" width="250" height="55"/>
|
||||
</a>
|
||||
</p>
|
||||
|
||||
**Um buscador conduzido por um agente de IA, que pontua por votos positivos, curtidas e dinheiro de verdade — não por redações.**
|
||||
|
||||
Este README descreve o pipeline v3 atual. A especificação de execução da skill fica em [skills/last30days/SKILL.md](skills/last30days/SKILL.md), que é a referência definitiva sobre o comportamento dos comandos e da configuração.
|
||||
|
||||
**Claude Code (recomendado — atualizações automáticas via marketplace):**
|
||||
```
|
||||
/plugin marketplace add mvanhorn/last30days-skill
|
||||
/plugin install last30days
|
||||
```
|
||||
|
||||
**Codex, Cursor, Copilot, Gemini CLI, ou qualquer um dos 50+ hosts do [Agent Skills](https://agentskills.io):**
|
||||
```
|
||||
npx skills add mvanhorn/last30days-skill -g
|
||||
```
|
||||
(`-g` instala globalmente para o seu usuário, então fica disponível em todos os projetos. Omita essa flag se quiser limitar a instalação a um projeto.)
|
||||
|
||||
Outras formas de instalar (claude.ai web, OpenClaw, manual) estão na seção [Instalação](#instalação), mais abaixo.
|
||||
|
||||
Configuração zero. Reddit, HN, Polymarket e GitHub funcionam de imediato. Rode uma vez e o assistente de configuração libera X, YouTube, TikTok, arXiv, Techmeme e mais em 30 segundos.
|
||||
|
||||
---
|
||||
|
||||
Os votos positivos do Reddit. As curtidas do X. As transcrições do YouTube. O engajamento no TikTok. As probabilidades do Polymarket, lastreadas em dinheiro de verdade e em informação privilegiada. São milhões de pessoas votando todo dia com a atenção e com o bolso. O /last30days busca tudo isso em paralelo, pontua pelo que as pessoas realmente engajam e um agente de IA atua como juiz para sintetizar tudo em um único briefing.
|
||||
|
||||
O Google agrega redações. O /last30days busca pessoas.
|
||||
|
||||
Essa busca você não encontra em nenhum outro lugar, porque nenhuma IA sozinha tem acesso a tudo. O Google não alcança nem os comentários do Reddit nem as publicações do X. O ChatGPT tem acordo com o Reddit, mas não consegue buscar no X nem no TikTok. O Gemini tem o YouTube, mas não o Reddit. O Claude não tem nenhum deles de forma nativa. Cada plataforma é um jardim murado, com API, tokens e autenticação próprios. Mas você pode trazer suas próprias chaves e sessões de navegador e, de repente, um agente de IA busca em todas ao mesmo tempo, compara umas com as outras e diz o que realmente importa.
|
||||
|
||||
É esse o destravamento. Não é um buscador melhor: é uma dúzia de plataformas isoladas, conectadas por um agente.
|
||||
|
||||
```
|
||||
/last30days Peter Steinberger
|
||||
```
|
||||
|
||||
Você tem uma reunião amanhã. Procura a pessoa no Google. Aparece o LinkedIn dela de 2023. O /last30days entrega o que ela está fazendo de fato neste mês: entrou na OpenAI para trabalhar no Codex, enfrenta o veto da Anthropic a agentes de terceiros, entregou 23 PRs com 85 % de taxa de merge, constrói o "LobsterOS" para controlar agentes entre dispositivos, e uma thread no r/ClaudeCode chegou a 569 votos positivos discutindo se ele é um herói ou "insuportável". Tudo espalhado entre publicações no X, threads no Reddit, transcrições do YouTube e commits no GitHub. Nada disso estava no Google.
|
||||
|
||||
## Por que isso existe
|
||||
|
||||
Construí para acompanhar o ritmo da IA. Tudo muda todo dia, e o pessoal do Reddit e do X sempre sabe primeiro. Eu precisava de prompts melhores, e os dados de treinamento estavam sempre meses atrás do que a comunidade já tinha descoberto.
|
||||
|
||||
Mas virou algo maior. Hoje eu rodo antes de uma call de vendas, para saber a verdade dos últimos 30 dias sobre uma empresa. Antes de uma reunião, para ler os tweets recentes e as transcrições de podcast de quem vou encontrar. Antes de uma viagem à Disney World, para saber quais brinquedos estão fechados e o que a comunidade acha do Genie+. Antes de construir qualquer coisa, para saber em quais problemas as pessoas realmente estão esbarrando.
|
||||
|
||||
Se você vai se reunir com um CEO, já leu todos os tweets e todas as transcrições do YouTube dos últimos 30 dias? Eu li.
|
||||
|
||||
## Fontes, pontuadas pelas pessoas
|
||||
|
||||
| Fonte | O que as pessoas te contam |
|
||||
|--------|--------------------------|
|
||||
| **Reddit** | A opinião sem filtro. Os melhores comentários com a contagem real de votos positivos, de graça e sem chave de API. As opiniões de verdade que o Google enterra. |
|
||||
| **X / Twitter** | A opinião quente, a thread do especialista, a primeira reação ao factual. Os primeiros a saber, os primeiros a discutir. |
|
||||
| **YouTube** | A análise de 45 minutos. Transcrições completas, garimpadas atrás das 5 frases citáveis que importam. |
|
||||
| **TikTok** | O criador que alcança 3,6 milhões de pessoas com uma leitura que você nunca vai achar no Google. |
|
||||
| **Instagram Reels** | O olhar dos influenciadores, com a transcrição do que é falado. O sinal da cultura visual. |
|
||||
| **Hacker News** | O consenso da turma de desenvolvimento. 825 pontos, 899 comentários. Onde o pessoal técnico discute de verdade. |
|
||||
| **Polymarket** | Não são opiniões. São probabilidades. Lastreadas em dinheiro de verdade. 96 % de confiança em vendas de um álbum. 4 % em uma aquisição. |
|
||||
| **GitHub** | Para pessoas: ritmo de PRs, principais repositórios por estrelas, notas de versão. Para assuntos: issues e discussions. |
|
||||
| **Digg** | Agrupamentos de histórias curados a partir do ranking AI 1000 do Digg (cerca de 1000 contas de IA com alto sinal no X), com citações atribuíveis embutidas e sem exigir autenticação no X. Ativa sozinho quando `digg-pp-cli` está no PATH. |
|
||||
| **arXiv** | Os artigos científicos por trás do hype. Pesquisa nova dentro da janela, de graça e sem chave de API. Ativa sozinho quando `arxiv-pp-cli` está no PATH (a configuração inicial instala). |
|
||||
| **Techmeme** | A camada editorial do noticiário de tecnologia, limitada à sua janela de 30 dias. De graça e sem chave de API. Ativa sozinho quando `techmeme-pp-cli` está no PATH (a configuração inicial instala). |
|
||||
| **LinkedIn** | O sinal profissional. Publicações e artigos, com os artigos ponderados como sinal forte. |
|
||||
| **StockTwits** | O humor dos traders. Ativa automaticamente quando seu assunto é um ticker ou uma cripto. |
|
||||
| **Threads** | A camada de texto do pós-Twitter. Conversas de criadores e marcas. |
|
||||
| **Pinterest** | Descoberta visual. Pins, itens salvos e comentários sobre produtos e ideias. |
|
||||
| **Xiaohongshu (RED)** | Sinais chineses sobre estilo de vida, produtos e criadores. É pedido explicitamente com `--search xhs` quando há um plugin de navegador x-mcp logado ou um serviço `xiaohongshu-mcp` rodando localmente. |
|
||||
| **Bluesky** | A camada social descentralizada. Publicações do AT Protocol vindas da migração pós-Twitter. |
|
||||
| **Perplexity** | A síntese fundamentada do Sonar, os resultados brutos da Search API e o Deep Research. |
|
||||
| **Web** | A cobertura editorial, as comparações de blog. Um sinal entre muitos, não o único. |
|
||||
|
||||
A comunidade não para de acrescentar fontes. Truth Social e outras fontes de nicho já estão no motor, e vêm mais por aí.
|
||||
|
||||
Uma thread do Reddit com 1.500 votos positivos é um sinal mais forte do que um post de blog que ninguém leu. Um TikTok com 3,6 milhões de visualizações diz mais sobre o que é culturalmente relevante do que qualquer release de imprensa. Probabilidades do Polymarket lastreadas em US$ 66 mil de volume são bem mais difíceis de contestar do que o palpite de um comentarista.
|
||||
|
||||
A síntese ordena pelo que as pessoas de verdade realmente engajaram. Relevância social, não relevância de SEO.
|
||||
|
||||
## Para que as pessoas realmente usam
|
||||
|
||||
**Antes de uma reunião.** `/last30days Peter Steinberger` — entrou no time do Codex na OpenAI, enfrenta o veto da Anthropic a agentes de terceiros, 23 PRs mergeados com 85 % de taxa de merge no GitHub, constrói o LobsterOS para controlar agentes entre dispositivos. r/ClaudeCode: "Desde que o OpenClaw saiu, todo mundo já sabia que, se você rodasse por qualquer coisa que não fosse a API, uma hora ia ser banido" (227 votos positivos). Isso não está no LinkedIn.
|
||||
|
||||
**Para ler sinais de contratação.** `/last30days Listen Labs --hiring-signals` — as vagas e páginas de carreira atuais viram evidência citada de mudança de prioridade: contratação em segurança para empresas, customer success, infraestrutura ou expansão de produto. O relatório diz o que a contratação parece sinalizar, não o que o roadmap vai entregar.
|
||||
|
||||
**Para achar o assunto antes do pico.** Pergunte `/last30days what's exploding in AI agents?` e a skill muda para o modo descoberta: o motor varre as listagens por categoria do Reddit, a capa e as melhores histórias do Hacker News, o feed AI 1000 do Digg e o X quando você está autenticado; seu agente avalia as indicações (nomes, filtragem de ruído, se rende conteúdo) e escreve ângulos para podcast ou para um artigo no X; depois você recebe de 5 a 10 assuntos ordenados por velocidade. Cada resultado traz números de várias fontes, um rótulo de momentum e um comando `/last30days "<topic>"` pronto para rodar.
|
||||
|
||||
**Quando alguma coisa é lançada.** `/last30days Kanye West` — o Reino Unido bloqueou o visto dele, o Wireless Festival foi cancelado, os patrocinadores fugiram. Mas BULLY estreou em 2º na Billboard. Fantano voltou do "Yay sabbatical" para resenhar o disco (653 mil visualizações). No SoFi Homecoming, ele levou Lauryn Hill e Travis Scott ao palco para 44 músicas. Polymarket: "Kanye vai tuitar de novo?" 86 % sim. 23 threads no Reddit, 17 vídeos no YouTube, 86 mil votos positivos.
|
||||
|
||||
**Para comparar ferramentas.** `/last30days OpenClaw vs Hermes vs Paperclip` — "Não são concorrentes, são camadas." O OpenClaw é a camada de execução (351 mil estrelas no GitHub, em produção), o Hermes é o cérebro que se aprimora sozinho (31 mil estrelas), o Paperclip é o organograma (49 mil estrelas). As contagens de estrelas vêm ao vivo da API do GitHub, não de posts de blog desatualizados. Tabela lado a lado com arquitetura, memória, segurança e melhor caso de uso. Segundo @IMJustinBrooke: "OpenClaw = Charmander, Hermes = Charizard."
|
||||
|
||||
**Para entender o mundo.** `/last30days Iran vs USA` — dia 38 da guerra. O ultimato de Trump, com prazo até terça, para o Irã reabrir o Estreito de Ormuz. Dois caças americanos abatidos. Petróleo a US$ 126 o barril. A AIE chamou o episódio de "a maior interrupção de fornecimento da história do mercado global de petróleo". Polymarket: cessar-fogo até 31 de dezembro a 74 %. 27 publicações no X, 10 vídeos no YouTube, 20 mercados de previsão.
|
||||
|
||||
**Antes de uma viagem.** `/last30days Universal Epic Universe` — a expansão já está em obras. Alvará do "Project 680" protocolado. Show de fogos confirmado pela infraestrutura, mas ainda não anunciado. Tempo de espera: Mine-Cart Madness com média de 148 minutos. Ainda sem passe anual, e os moradores estão irritados. Stardust Racers fechada para reforma até 5 de abril.
|
||||
|
||||
**Para aprender algo rápido.** `/last30days Nano Banana Pro prompting` — prompts estruturados em JSON estão substituindo a sopa de tags. O formato aninhado do @pictsbyai evita o "concept bleeding". Editar ganha de regerar. E depois a skill escreve um prompt de produção usando exatamente o que a comunidade disse que funciona.
|
||||
|
||||
## Novidades
|
||||
|
||||
Desde o anúncio da v3.3 em maio e até a v3.11.1 (julho de 2026): 175 PRs mergeados — 122 deles de 52 pessoas da comunidade — distribuídos em 15 versões. Foi isso que entrou.
|
||||
|
||||
### Cidadão de primeira classe no OpenAI Codex
|
||||
|
||||
O /last30days agora é um plugin nativo do Codex com configuração guiada: não é um port, é cidadão de primeira classe. As citações levam o renderizador em conta, então a saída no Codex se lê como um briefing e não como uma sopa de URLs (#694), e o mesmo motor roda no Claude Code, Cursor, Copilot, Gemini CLI, Claude Desktop, OpenClaw e em 50+ hosts do Agent Skills. Manifesto do plugin do Codex por [@rfoust](https://github.com/rfoust) (#686), correção de autenticação no Codex por [@tmchow](https://github.com/tmchow) (#698).
|
||||
|
||||
### arXiv, Techmeme e Digg — de graça, sem chaves de API
|
||||
|
||||
O arXiv traz os artigos científicos por trás do hype e o Techmeme traz a camada editorial do noticiário de tecnologia — de graça, sem nenhuma chave, e a configuração inicial instala as CLIs deles para que ativem sozinhos (#709). Os agrupamentos de histórias AI 1000 do Digg chegam do mesmo jeito, sem autenticação no X: a configuração instala a CLI gratuita do Digg para você (#590). O Trustpilot está disponível como opção para pesquisa de marcas de consumo.
|
||||
|
||||
### Reddit gratuito, com pontuações reais e melhores comentários
|
||||
|
||||
A API pública .json do Reddit morreu; o caminho gratuito voltou mais forte. RSS sem chave e scraping do shreddit (#457), descoberta de subreddits específicos com contagem real de votos positivos via arctic-shift (#696) e um piso de relevância para que um post viral fora do tema não sequestre seu briefing (#488, valeu [@rzachsmith](https://github.com/rzachsmith)). Sem chave de API. Pontuações reais. Melhores comentários incluídos.
|
||||
|
||||
### Os melhores comentários em cada briefing
|
||||
|
||||
Os comentários agora são uma camada ligada por padrão em todas as fontes: comentários do Instagram com diversidade baseada em ranking, para que cinco opiniões fortes não venham todas do mesmo post (#751), comentários do YouTube mais um backup de transcrição via ScrapeCreators para quando o yt-dlp falha (#637), e comentários votados pela comunidade entrando com peso no Best Takes, para que as melhores tiradas sobrevivam à pontuação (#592, #608).
|
||||
|
||||
### Um único comando doctor
|
||||
|
||||
Peça um diagnóstico: o doctor testa cada fonte e receita as correções exatas — qual chave está faltando, qual CLI não está no PATH, qual cookie expirou (#753). Chega de adivinhar por que o X voltou fraco.
|
||||
|
||||
### A busca no X, reconstruída
|
||||
|
||||
O pipeline do X foi refeito do zero: faixas FROM e ABOUT para que tanto as publicações da própria pessoa quanto a conversa sobre ela sejam ranqueadas (#610), desambiguação de subconsultas conforme a pessoa buscada (#611), verificação de autoria de primeira mão com ranqueamento por sinais de interação (#613) e uma única fonte X com failover automático entre backends (#622). Além de um `--diagnose` honesto, que testa a autenticação de verdade (#609).
|
||||
|
||||
### Mais fontes entraram
|
||||
|
||||
LinkedIn via ScrapeCreators, com artigos como sinal forte ([@ravstr](https://github.com/ravstr), #702). O StockTwits ativa sozinho em assuntos de ticker e cripto ([@wtiwana](https://github.com/wtiwana), #658). O Perplexity ganhou modos de API diretos e Deep Research assíncrono ([@sk-holmes](https://github.com/sk-holmes), #629).
|
||||
|
||||
### Endurecido pela comunidade
|
||||
|
||||
A onda de segurança foi quase toda trabalho da comunidade: correções de XSS armazenado no renderizador HTML ([@iliaal](https://github.com/iliaal), [@aaronjmars](https://github.com/aaronjmars)), arquivos temporários de cookie protegidos, CI endurecida contra ataques à cadeia de suprimentos com OpenSSF Scorecard e atestação de proveniência de build ([@shaanmajid](https://github.com/shaanmajid), [@hammadxcm](https://github.com/hammadxcm), [@aniruddh909](https://github.com/aniruddh909)), varreduras com Semgrep e OSV-Scanner mais um portão de revisão de dependências em cada PR ([@23241a6749](https://github.com/23241a6749)), um piso de cobertura de testes criado em 60 % e desde então elevado para 84 % ([@gourab5139014](https://github.com/gourab5139014)), e uma varredura de segurança do Hermes que hoje não tem nenhum achado CRITICAL (#768).
|
||||
|
||||
### Alcança mais longe
|
||||
|
||||
Hebraico e outras línguas não latinas ([@dudyme](https://github.com/dudyme)). Tokenização adaptada a CJK para fontes chinesas ([@An-idd](https://github.com/An-idd)). Uma onda de compatibilidade com Windows. Extração de cookies em toda a família Chromium — Brave, Edge, Vivaldi, Opera, Arc ([@andrey-esipov](https://github.com/andrey-esipov)) — além do Keychain do macOS e do pass(1) no Linux como origens de credenciais. Consulta retroativa com `--as-of` ([@chiyi-creator](https://github.com/chiyi-creator)). Provisionamento automático do Python 3.12 via uv ([@buntysomroy](https://github.com/buntysomroy)). `--hiring-signals` para ler as páginas de vagas de uma empresa. Deltas de watchlist entre execuções.
|
||||
|
||||
### O que já vinha de fábrica desde a v3
|
||||
|
||||
As bases da v3 continuam todas aqui: o cérebro de pré-pesquisa, que identifica os handles, subreddits e hashtags certos antes de disparar uma única chamada de API (construído por [@j-sperling](https://github.com/j-sperling)); a pontuação Best Takes, que considera humor e viralidade além de relevância; a fusão de clusters entre fontes; as comparações em uma única passada ("CLI vs MCP" em 3 minutos, não em 12); as comparações `--competitors` descobertas automaticamente; o modo pessoa do GitHub (`--github-user=steipete`); o modo ELI5 ("eli5 on" depois de qualquer execução); e os briefings HTML autocontidos e compartilháveis (`--emit=html`). Os ajustes de configuração estão em [CONFIGURATION.md](CONFIGURATION.md).
|
||||
|
||||
## Instalação
|
||||
|
||||
| Ambiente | Instalação | Atualizações |
|
||||
|---------|---------|---------|
|
||||
| **Claude Code** (recomendado) | `/plugin marketplace add mvanhorn/last30days-skill` | Automáticas via marketplace, ou `claude plugin update last30days@last30days-skill` |
|
||||
| **Grok** (xAI Build CLI) | `grok plugin marketplace add mvanhorn/last30days-skill` e depois `grok plugin install last30days` | `grok plugin update last30days` |
|
||||
| **Codex, Cursor, Copilot, Gemini CLI, ou qualquer um dos 50+ hosts do [Agent Skills](https://agentskills.io)** | `npx skills add mvanhorn/last30days-skill -g` | `npx skills update last30days -g` |
|
||||
| **claude.ai** (web) | [Baixe `last30days.skill`](https://github.com/mvanhorn/last30days-skill/releases/latest/download/last30days.skill) e envie por claude.ai > Customize > Skills > + > Create skill > Upload a skill | Baixar de novo e enviar de novo |
|
||||
| **Claude Desktop** | [Baixe o `.mcpb` da sua plataforma](https://github.com/mvanhorn/last30days-skill/releases/latest) e arraste para Settings > Extensions | Baixar de novo e arrastar o novo pacote |
|
||||
| **OpenClaw** | `clawhub install last30days-official` | `clawhub update last30days-official` |
|
||||
|
||||
### Claude Code (recomendado)
|
||||
|
||||
```
|
||||
/plugin marketplace add mvanhorn/last30days-skill
|
||||
```
|
||||
|
||||
Recomendado porque o marketplace do Claude Code cuida das atualizações por você: o cache do plugin é versionado e se atualiza sozinho quando sai uma versão nova. Rode `claude plugin update last30days@last30days-skill` para forçar uma verificação.
|
||||
|
||||
Se preferir usar o caminho de instalação do Agent Skills no Claude Code, ele também é suportado:
|
||||
|
||||
```
|
||||
npx skills add mvanhorn/last30days-skill -g -a claude-code
|
||||
```
|
||||
|
||||
O plugin nativo e a instalação com `npx skills` podem conviver. Só atenção: o Claude Code não deduplica entre métodos de instalação. Se você tiver ativos ao mesmo tempo o plugin do marketplace e a cópia do `npx skills`, o `/last30days` vai aparecer duas vezes. Use um método de instalação por máquina.
|
||||
|
||||
### Grok (xAI Build CLI)
|
||||
|
||||
O [Grok Build](https://docs.x.ai/build/features/skills-plugins-marketplaces) (`grok`) instala o last30days como plugin nativo. A instalação direta acompanha o repositório:
|
||||
|
||||
```bash
|
||||
grok plugin install mvanhorn/last30days-skill
|
||||
```
|
||||
|
||||
Ou adicione este repositório como fonte de marketplace e depois instale pelo nome do plugin:
|
||||
|
||||
```bash
|
||||
grok plugin marketplace add mvanhorn/last30days-skill
|
||||
grok plugin install last30days
|
||||
```
|
||||
|
||||
Acrescente `--trust` para pular a confirmação de instalação. Atualize com `grok plugin update last30days`. O Grok também lê os manifestos do Claude Code por compatibilidade; o par nativo `.grok-plugin/` é o caminho principal — e é para ele que aponta um registro oficial no [marketplace da xAI](https://github.com/xai-org/plugin-marketplace). O `npx skills add` continua sendo uma alternativa válida em qualquer host.
|
||||
|
||||
### Codex, Cursor, Copilot, Gemini CLI e outros hosts do Agent Skills
|
||||
|
||||
Instale pela CLI aberta do [Agent Skills](https://agentskills.io) — ela suporta 50+ hosts, entre eles `codex`, `cursor`, `github-copilot`, `gemini-cli`, `claude-code`, `windsurf`, `cline`, `continue`, `roo`, `aider-desk`, `opencode`, `goose` e outros (lista completa no [repositório vercel-labs/skills](https://github.com/vercel-labs/skills)).
|
||||
|
||||
```bash
|
||||
npx skills add mvanhorn/last30days-skill -g
|
||||
```
|
||||
|
||||
A flag `-g` (global) instala no seu diretório de usuário, então a skill fica disponível em todos os projetos. Sem `-g`, o `npx skills` instala só no projeto, dentro de `./.skills/` (e vai versionado junto com o repositório). Para uma ferramenta feita para pesquisar o mundo inteiro, o que você quer é a instalação global.
|
||||
|
||||
O Codex desktop e outros hosts que trabalham no nível de pasta funcionam tanto em pastas comuns quanto em repositórios Git. Antes da primeira pesquisa, peça ao agente host que rode o `scripts/last30days.py --preflight` que acompanha a skill, a partir do diretório da skill carregada; em um clone do código-fonte, o comando equivalente é `python3 skills/last30days/scripts/last30days.py --preflight`. Ele mostra de onde vem a configuração, quais cookies do navegador seriam lidos, quais arquivos seriam escritos, quais comandos opcionais existem e qual configuração de projeto está sendo ignorada — sem ler cookies, sem escrever arquivos e sem rodar pesquisa nenhuma.
|
||||
|
||||
Por padrão, a instalação vale para o host que o `npx skills` detectar. Para mirar em um específico (ou em vários):
|
||||
|
||||
```bash
|
||||
npx skills add mvanhorn/last30days-skill -g -a codex
|
||||
npx skills add mvanhorn/last30days-skill -g -a cursor
|
||||
npx skills add mvanhorn/last30days-skill -g -a gemini-cli
|
||||
npx skills add mvanhorn/last30days-skill -g -a codex -a cursor
|
||||
```
|
||||
|
||||
Para atualizar depois:
|
||||
|
||||
```bash
|
||||
npx skills update last30days -g
|
||||
```
|
||||
|
||||
Ou atualize tudo que você instalou globalmente pelo `npx skills`:
|
||||
|
||||
```bash
|
||||
npx skills update -g
|
||||
```
|
||||
|
||||
Dá para listar e remover com `npx skills list -g` e `npx skills remove last30days -g`.
|
||||
|
||||
### claude.ai (web)
|
||||
|
||||
1. [Baixe `last30days.skill`](https://github.com/mvanhorn/last30days-skill/releases/latest/download/last30days.skill) da versão mais recente
|
||||
2. Vá em [claude.ai > Customize > Skills](https://claude.ai/customize/skills)
|
||||
3. Clique no botão `+` no painel de Skills, depois em `Create skill` > `Upload a skill`, e escolha ou arraste o arquivo
|
||||
|
||||
Ative antes "Code execution and file creation" em Capabilities — sem isso, as skills não rodam.
|
||||
|
||||
### Claude Desktop
|
||||
|
||||
O Claude Desktop instala o `/last30days` como servidor MCP por meio de um pacote `.mcpb` (um pacote Model Context Protocol de um clique).
|
||||
|
||||
1. Vá até a [versão mais recente](https://github.com/mvanhorn/last30days-skill/releases/latest) e baixe o `.mcpb` da sua plataforma:
|
||||
- macOS Apple Silicon: `last30days-pp-mcp-darwin-arm64.mcpb`
|
||||
- macOS Intel: `last30days-pp-mcp-darwin-amd64.mcpb`
|
||||
- Linux x86_64: `last30days-pp-mcp-linux-amd64.mcpb`
|
||||
2. Abra o Claude Desktop, vá em Settings > Extensions e arraste o arquivo para lá.
|
||||
3. Quando for solicitado, cole as chaves de API das fontes que quiser ativar. Todo campo é opcional — se pular todos, o motor cai para o modo só web. As chaves ficam guardadas no chaveiro do seu sistema operacional.
|
||||
4. Reinicie o Claude Desktop. Peça ao Claude para "pesquisar sobre Peter Steinberger", ou sobre qualquer outro assunto, e ele vai chamar a ferramenta `research`.
|
||||
|
||||
**Requisito do host:** Python 3.12+ no PATH. O pacote traz o código do motor, mas usa o seu interpretador Python local. No Windows, instale a partir do [python.org](https://www.python.org/downloads/); o macOS e a maioria das distribuições Linux já vêm com uma versão compatível.
|
||||
|
||||
**As chaves não são compartilhadas com a skill do Claude Code.** O Claude Desktop e o Claude Code mantêm armazenamentos de credenciais separados de propósito. Se você já configurou o `~/.config/last30days/.env` para a skill do Claude Code, vai precisar digitar essas mesmas chaves aqui uma vez.
|
||||
|
||||
O suporte a Windows está adiado até que os pontos de entrada por plataforma no manifesto sejam resolvidos; o acompanhamento fica em uma issue à parte.
|
||||
|
||||
### OpenClaw
|
||||
|
||||
```bash
|
||||
clawhub install last30days-official
|
||||
```
|
||||
|
||||
Para fluxos de ação no X/Twitter fora da pesquisa do `/last30days` — publicar
|
||||
tweets ou respostas, exportar seguidores, cuidar de mídia, monitorar contas e
|
||||
apurar sorteios — use o [TweetClaw](https://github.com/Xquik-dev/tweetclaw) como
|
||||
plugin complementar do OpenClaw. O TweetClaw é mantido pelo Xquik-dev e aparece
|
||||
aqui apenas como opção complementar: não é dependência nem recomendação do
|
||||
last30days.
|
||||
|
||||
### Manual (para quem desenvolve)
|
||||
|
||||
```bash
|
||||
git clone https://github.com/mvanhorn/last30days-skill.git
|
||||
ln -s "$(pwd)/last30days-skill/skills/last30days" ~/.claude/skills/last30days
|
||||
```
|
||||
|
||||
O symlink mantém a instalação em sincronia com sua árvore de trabalho conforme você edita — não precisa copiar de novo. Para o `claude.ai`, compile o arquivo `.skill` a partir do código-fonte: `bash skills/last30days/scripts/build-skill.sh` gera `dist/last30days.skill`.
|
||||
|
||||
Reddit (com comentários), Hacker News, Polymarket e GitHub funcionam de imediato. Configuração zero. Rode `/last30days` uma vez e o assistente de configuração libera mais fontes em 30 segundos, incluindo as CLIs gratuitas do arXiv e do Techmeme.
|
||||
|
||||
## Traga suas próprias chaves
|
||||
|
||||
Essas plataformas não têm relação nenhuma entre si. O X não sabe o que o Reddit pensa. O YouTube não enxerga o TikTok. Mas você pode trazer suas próprias chaves de API e tokens de navegador e, de repente, tem acesso a todas ao mesmo tempo.
|
||||
|
||||
| Fontes | O que você precisa | Custo |
|
||||
|---------|---------------|------|
|
||||
| Reddit (com comentários) + HN + Polymarket + GitHub + StockTwits | Nada | De graça |
|
||||
| arXiv + Techmeme | CLIs gratuitas, instaladas automaticamente pela configuração inicial | De graça |
|
||||
| X / Twitter | Faça login em x.com em qualquer navegador, ou defina `XQUIK_API_KEY` / `XAI_API_KEY` | Os cookies do navegador são gratuitos; as chaves dependem do provedor |
|
||||
| YouTube | `brew install yt-dlp` | De graça |
|
||||
| Bluesky | Uma senha de aplicativo do bsky.app | De graça |
|
||||
| TikTok + Instagram + Threads + Pinterest + LinkedIn + comentários do YouTube | Uma chave do ScrapeCreators | 10.000 chamadas gratuitas e depois pagamento por uso |
|
||||
| Xiaohongshu (RED) | Deixe rodando um plugin de navegador x-mcp logado ou um serviço `xiaohongshu-mcp` e habilite a fonte com `--search xhs` por execução ou com `INCLUDE_SOURCES=xiaohongshu` no `.env`; o last30days testa automaticamente `http://localhost:18060` e depois `http://host.docker.internal:18060`, ou use `XIAOHONGSHU_API_BASE` para uma URL própria | Não precisa de chave de API do last30days; depende do seu serviço local de sessão de navegador |
|
||||
| DripStack (newsletters financeiras premium) | Opcional: `--search dripstack` por execução, ou `INCLUDE_SOURCES=dripstack` no `.env` | Sem chave; API de busca pública e gratuita |
|
||||
| Perplexity Sonar / Search API / Deep Research | Uma chave do Perplexity, ou uma chave do OpenRouter como alternativa para o Sonar | Pagamento por uso |
|
||||
| Busca na web | Uma chave do Brave Search | 2.000 consultas gratuitas por mês |
|
||||
|
||||
### Keychain do macOS (opcional)
|
||||
|
||||
No macOS você pode guardar as chaves no Keychain do sistema em vez de em um arquivo `.env`. A skill as encontra automaticamente como a origem de menor prioridade — em caso de conflito, os arquivos `.env` e o ambiente do processo continuam ganhando.
|
||||
|
||||
```bash
|
||||
# Interactive setup — prompts for each known key, skip with empty input
|
||||
skills/last30days/scripts/setup-keychain.sh
|
||||
|
||||
# Or store a single key by hand
|
||||
security add-generic-password -a "$USER" -s last30days-XAI_API_KEY -w "xai-..."
|
||||
|
||||
# Inspect / clean up
|
||||
skills/last30days/scripts/setup-keychain.sh --list
|
||||
skills/last30days/scripts/setup-keychain.sh --delete XAI_API_KEY
|
||||
```
|
||||
|
||||
Os itens ficam guardados sob o nome de serviço `last30days-<KEY>` para o usuário atual. Em plataformas que não são Darwin o carregador não faz nada, então não há mudança de comportamento para quem usa Linux ou Windows.
|
||||
|
||||
Já tem chaves guardadas com outros nomes de serviço no Keychain? Defina o mapeamento não secreto `LAST30DAYS_KEYCHAIN_ALIASES` descrito em [CONFIGURATION.md](CONFIGURATION.md#reusing-existing-macos-keychain-items), em vez de copiar segredos.
|
||||
|
||||
Veja [CONFIGURATION.md](CONFIGURATION.md) para a matriz completa de chaves por fonte, a ordem de prioridade dos provedores de raciocínio e a dos backends de busca web.
|
||||
|
||||
## Configuração
|
||||
|
||||
Duas coisas que você provavelmente vai querer saber no primeiro dia:
|
||||
|
||||
**Onde os arquivos de pesquisa são salvos.** O `LAST30DAYS_MEMORY_DIR` aponta por padrão para `~/Documents/Last30Days/` (no Windows: `C:\Users\<you>\Documents\Last30Days\`). Para mudar, defina essa variável de ambiente no seu shell com o caminho que quiser, ou use `--save-dir <path>` em uma execução específica. Use `--output <file>` quando precisar do resultado renderizado em um caminho exato, no formato escolhido por `--emit`. Use `--save-suffix=<name>` para manter separadas várias variações do mesmo assunto (por cliente, por exemplo). Cada execução com `--save-dir` gera `<slug>-raw[-suffix].md`. Rode `python3 skills/last30days/scripts/last30days.py --preflight` para conferir o que será escrito antes de disparar uma pesquisa.
|
||||
|
||||
**Saída estruturada para agentes e fluxos de trabalho.** Peça ao `/last30days` um JSON legível por máquina e você recebe o perfil de agente estável e versionado. Para usar o motor direto em scripts ou no desenvolvimento, rode `python3 skills/last30days/scripts/last30days.py "AI coding agents" --emit=json`; use `--json-profile=raw` só quando precisar do dump interno não versionado do `Report`. Veja a [referência de campos da exportação JSON e a política de versionamento](docs/reference/json-export.md).
|
||||
|
||||
**Descoberta sem assunto definido.** Pergunte `/last30days what's trending in AI agents?` para receber um briefing de descoberta ordenado, em vez de pesquisar um assunto que você já conhece. Em um host com agente, isso executa o protocolo de três comandos arbitrado pelo host (o modelo nomeia os assuntos, filtra ruído, avalia o que vale a pena e escreve os ângulos de conteúdo). Para usar o motor direto em scripts ou no cron, rode `python3 skills/last30days/scripts/last30days.py --discover "AI agents"` (passada única: nomes de assunto determinísticos, sem ângulos); acrescente `--emit=json` para o contrato de descoberta versionado. A descoberta é mutuamente exclusiva com um assunto posicional e com `--drill`.
|
||||
|
||||
**Monitoramento de tendências entre execuções.** O modo padrão gera um snapshot Markdown novo a cada execução. Para acumular achados ao longo do tempo, acrescente `--store` e eles ficam guardados em um banco SQLite; depois use [`scripts/watchlist.py`](skills/last30days/scripts/watchlist.py) para execuções agendadas (com envio opcional por Slack ou webhook quando surgirem achados novos) e [`scripts/briefing.py`](skills/last30days/scripts/briefing.py) para resumos diários ou semanais. O padrão de cadência completo está em [CONFIGURATION.md](CONFIGURATION.md#trend-monitoring-store--watchlist--briefings).
|
||||
|
||||
**Uma biblioteca de pesquisa que dá para assinar.** Peça ao `/last30days` que monte o feed da sua biblioteca, ou use direto `python3 skills/last30days/scripts/last30days.py library feed` para scripts e desenvolvimento. Ele transforma os briefings salvos em um `index.html`, um `feed.xml` Atom local e páginas de briefing legíveis. Acrescente `--publish` só quando quiser hospedar o índice HTML e as páginas de briefing; publicar é uma decisão explícita e, por padrão, é público. Para o feed Atom ficar realmente assinável, hospede o diretório de saída gerado em um serviço estático como o GitHub Pages.
|
||||
|
||||
**Busque em tudo que você já pesquisou.** Pergunte `/last30days search my library for MCP servers` ou `/last30days have I researched MCP servers before?`. Para usar o motor direto, rode `python3 skills/last30days/scripts/last30days.py library search "MCP servers"`. A busca é offline e determinística: ela indexa aos poucos os mesmos briefings salvos que o feed da biblioteca usa, junta as ocorrências correspondentes registradas no store a cada execução e agrupa os resultados por assunto e data. Execuções novas também exibem uma seção compacta **From your library** ("da sua biblioteca") quando pesquisas anteriores se sobrepõem ao assunto atual; defina `LAST30DAYS_LIBRARY_CONTEXT=off` para desativar esse contexto passivo.
|
||||
|
||||
Scripts wrapper por cliente, subreddits de categoria personalizados e o canal beta experimental para personalizações em andamento também estão documentados em [CONFIGURATION.md](CONFIGURATION.md).
|
||||
|
||||
## Vitrine: feeds de pesquisa da comunidade
|
||||
|
||||
Publicou com o last30days um panorama recorrente de IA, um acompanhamento de mercado ou uma obsessão maravilhosamente específica? Compartilhe a URL da sua biblioteca pública — ou a URL do Atom, depois de hospedar o `feed.xml` em um serviço estático — na [thread de vitrine da comunidade](https://github.com/mvanhorn/last30days-skill/issues/532). Os feeds da comunidade serão linkados aqui conforme as pessoas os enviarem; enquanto isso, a thread é o ponto de coleta.
|
||||
|
||||
## Como funciona
|
||||
|
||||
1. **Você digita um assunto.** Pessoa, empresa, produto, tecnologia, "X vs Y". Qualquer coisa.
|
||||
2. **O agente descobre quem importa.** Ele encontra os perfis do X (inclusive de fundadores), os repositórios do GitHub, os subreddits, as hashtags do TikTok e os canais do YouTube. Para "Kanye West" ele sabe que o caminho é r/hiphopheads, @kanyewest e "bully review" no YouTube. Para "OpenClaw" ele resolve openclaw/openclaw no GitHub e busca a contagem de estrelas ao vivo.
|
||||
3. **Todas as fontes buscadas em paralelo.** Expansão com várias consultas. Resultados pontuados por engajamento, relevância e frescor.
|
||||
4. **A profundidade que ninguém mais tem.** Transcrições completas do YouTube de vídeos de reação. Os melhores comentários do Reddit com a contagem de votos positivos. As legendas dos TikToks. As probabilidades do Polymarket. Não só títulos e links.
|
||||
5. **Mesma história, unificada.** O Wireless Festival anunciado no Reddit, discutido no X e com preço de ingresso no TikTok vira um cluster só, não três itens separados.
|
||||
6. **Sintetizado em um único briefing.** Ancorado em dados específicos. Citado por fonte. Ordenado pelo que as pessoas realmente engajam. Não é "olha o que eu encontrei", é "olha o que importa".
|
||||
7. **E então ele vira o seu especialista.** Depois de uma única execução, sua sessão do Claude sabe tudo o que a comunidade sabe. Faça perguntas de acompanhamento. Peça para escrever prompts, redigir e-mails, planejar viagens, desenhar arquiteturas — tudo ancorado no que é real agora.
|
||||
|
||||
## O que as pessoas estão dizendo
|
||||
|
||||
> "Achei uma skill do Claude Code que pesquisa qualquer assunto no Reddit, X, YouTube e HN dos últimos 30 dias. E ainda escreve os prompts pra você. Antes de cada conteúdo que eu escrevo, eu fazia essa busca na mão no Reddit e no X. Aba por aba. Thread por thread. É justamente essa a parte que leva 90 minutos. Isso elimina ela." — @itsjasonai
|
||||
|
||||
> "Essa skill sozinha substituiu todo o meu fluxo de pesquisa. Você dá um assunto e ela raspa Reddit, X e a web atrás do que as pessoas estão falando de verdade. Nada de post de blog velho. Conversas reais dos últimos 30 dias." — @itswilsoncharles
|
||||
|
||||
> "5 dos 10 repositórios em alta no GitHub hoje são ferramentas do Claude. O nº 1: mvanhorn/last30days-skill" — @yieldhunter95
|
||||
|
||||
## Código aberto
|
||||
|
||||
Licença MIT. Sem rastreamento. Sem analytics. Sua pesquisa fica na sua máquina. Mais de 2.700 testes.
|
||||
|
||||
Construído com Python 3.12+, yt-dlp, Node.js (cliente Bird embarcado para a busca no X) e a API do ScrapeCreators. Arquitetura do motor v3 por [@j-sperling](https://github.com/j-sperling).
|
||||
|
||||
Veja [CONTRIBUTING.md](CONTRIBUTING.md) para abrir um PR, [CONTRIBUTORS.md](CONTRIBUTORS.md) para a lista completa de quem contribuiu e [CHANGELOG.md](CHANGELOG.md) para o histórico de versões.
|
||||
|
||||
## Histórico de estrelas
|
||||
|
||||
<a href="https://star-history.com/#mvanhorn/last30days-skill&Date">
|
||||
<picture>
|
||||
<source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/svg?repos=mvanhorn/last30days-skill&type=Date&theme=dark" />
|
||||
<source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/svg?repos=mvanhorn/last30days-skill&type=Date" />
|
||||
<img alt="Star History Chart" src="https://api.star-history.com/svg?repos=mvanhorn/last30days-skill&type=Date" />
|
||||
</picture>
|
||||
</a>
|
||||
|
||||
---
|
||||
|
||||
**@slashlast30days** · [github.com/mvanhorn/last30days-skill](https://github.com/mvanhorn/last30days-skill)
|
||||
+381
@@ -0,0 +1,381 @@
|
||||
# /last30days
|
||||
|
||||
[English](README.md) | [Français](README.fr.md) | [Deutsch](README.de.md) | [Español](README.es.md) | [Português (Brasil)](README.pt-BR.md) | [日本語](README.ja.md) | 简体中文
|
||||
|
||||
<p align="center">
|
||||
<img src="media/pr-assets/last30days-ad.gif" width="720" alt="last30days——由 AI 智能体驱动、搜索真实用户而非编辑内容的搜索引擎" />
|
||||
</p>
|
||||
|
||||
<p align="center">
|
||||
<a href="https://github.com/mvanhorn/last30days-skill">
|
||||
<img src="https://img.shields.io/badge/%231-Repository%20Of%20The%20Day-6f42c1?style=for-the-badge&logo=github&label=GITHUB%20TRENDING" alt="GitHub Trending 单日排名第一的仓库" />
|
||||
</a>
|
||||
<br/>
|
||||
<a href="https://trendshift.io/repositories/21997" target="_blank">
|
||||
<img src="https://trendshift.io/api/badge/repositories/21997" alt="mvanhorn/last30days-skill | Trendshift" style="width: 250px; height: 55px;" width="250" height="55"/>
|
||||
</a>
|
||||
</p>
|
||||
|
||||
**一个由 AI 智能体驱动的搜索引擎:按赞同票、点赞和真金白银评分,而不是由编辑决定。**
|
||||
|
||||
本文档对应当前的 v3 流水线。运行时 Skill 规范位于 [skills/last30days/SKILL.md](skills/last30days/SKILL.md),最新命令与配置行为以该文件为准。
|
||||
|
||||
**Claude Code(推荐——通过 marketplace 自动更新):**
|
||||
|
||||
```
|
||||
/plugin marketplace add mvanhorn/last30days-skill
|
||||
/plugin install last30days
|
||||
```
|
||||
|
||||
**Codex、Cursor、Copilot、Gemini CLI,或其他 50 多个支持 [Agent Skills](https://agentskills.io) 的宿主:**
|
||||
|
||||
```
|
||||
npx skills add mvanhorn/last30days-skill -g
|
||||
```
|
||||
|
||||
(`-g` 会安装到当前用户的全局环境,所有项目均可使用;去掉该参数则仅安装到当前项目。)
|
||||
|
||||
更多安装方式(claude.ai 网页版、OpenClaw、手动安装)见下方[安装](#安装)章节。
|
||||
|
||||
开箱即用。Reddit、Hacker News、Polymarket 和 GitHub 无需配置即可搜索。首次运行时,配置向导会在 30 秒内帮你解锁 X、YouTube、TikTok、arXiv、Techmeme 等更多来源。
|
||||
|
||||
---
|
||||
|
||||
Reddit 的赞同票、X 的点赞、YouTube 的完整字幕、TikTok 的互动数据,以及由真金白银和内幕信息支撑的 Polymarket 概率——每天都有数百万人用注意力和钱包投票。`/last30days` 会并行搜索这些平台,按照真实用户的参与度评分,再由 AI 智能体裁判综合成一份简报。
|
||||
|
||||
Google 聚合编辑选出的内容,`/last30days` 搜索真实的人。
|
||||
|
||||
你无法从别的单一搜索产品获得这些结果,因为没有哪个 AI 天生能访问所有平台。Google 搜不到 Reddit 评论和 X 帖子;ChatGPT 虽然与 Reddit 合作,却无法搜索 X 或 TikTok;Gemini 能访问 YouTube,却没有 Reddit;Claude 原生不具备这些能力。每个平台都是一座围墙花园,有自己的 API、令牌和认证机制。但只要接入你自己的密钥和浏览器会话,AI 智能体就能同时搜索所有平台、横向比较信号,并告诉你真正值得关注的内容。
|
||||
|
||||
这才是关键:不是再造一个更好的搜索引擎,而是让一个智能体把十几个彼此割裂的平台连接起来。
|
||||
|
||||
```
|
||||
/last30days Peter Steinberger
|
||||
```
|
||||
|
||||
假设你明天要和一个人开会。用 Google 搜他,你看到的可能还是 2023 年的 LinkedIn 页面;`/last30days` 告诉你的则是他这个月真正做了什么:加入 OpenAI 参与 Codex、反对 Anthropic 禁止第三方智能体、提交 23 个 PR 且合并率达到 85%、打造用于跨设备智能体控制的 “LobsterOS”,以及 r/ClaudeCode 上一场获得 569 个赞同票的争论——他究竟是英雄,还是“令人难以忍受”。这些信息散落在 X 帖子、Reddit 讨论、YouTube 字幕和 GitHub 提交中,Google 上根本没有。
|
||||
|
||||
## 为什么要做这个项目
|
||||
|
||||
最初,我做它是为了跟上 AI 的变化。这个领域每天都在变,而 Reddit 和 X 上的极客通常最先发现新东西。我需要更好的提示词,但模型训练数据总比社区已经摸索出的经验慢几个月。
|
||||
|
||||
后来,它变成了更大的东西。现在,销售通话前,我用它了解一家公司过去 30 天的真实动态;开会前,我用它读完对方最近的推文和播客字幕;去迪士尼世界前,我用它确认哪些项目停运、社区怎么看 Genie+;开始做任何产品前,我用它找出人们真正遇到的问题。
|
||||
|
||||
如果你要见一位 CEO,你读过他过去 30 天的所有推文和 YouTube 字幕吗?我读过。
|
||||
|
||||
## 由真实用户评分的信息源
|
||||
|
||||
| 来源 | 人们会告诉你什么 |
|
||||
|------|------------------|
|
||||
| **Reddit** | 未经过滤的真实看法。免费获取带实际赞同数的热门评论,无需 API 密钥;那些常被 Google 埋没的真实意见。 |
|
||||
| **X / Twitter** | 犀利观点、专家长帖和突发事件的第一反应。最早知道,也最早争论。 |
|
||||
| **YouTube** | 45 分钟的深度内容。搜索完整字幕,只提取真正值得引用的 5 句话。 |
|
||||
| **TikTok** | 一个触达 360 万人的创作者观点——你永远不会在 Google 上搜到。 |
|
||||
| **Instagram Reels** | 带口播字幕的影响者视角,反映视觉文化的信号。 |
|
||||
| **Hacker News** | 开发者共识:825 分、899 条评论,技术从业者真正交锋的地方。 |
|
||||
| **Polymarket** | 不是观点,而是由真金白银支撑的概率:专辑销量 96%,收购概率 4%。 |
|
||||
| **GitHub** | 搜人时查看 PR 速度、按 Star 排名的热门仓库和发行说明;搜主题时查看 Issue 与 Discussion。 |
|
||||
| **Digg** | 来自 Digg AI 1000 排行榜(约 1,000 个高信号 X 账号)的精选话题聚类,包含可追溯的行内引用,无需 X 认证。当 PATH 中存在 `digg-pp-cli` 时自动启用。 |
|
||||
| **arXiv** | 热点背后的论文。免费查找时间窗口内的新研究,无需 API 密钥。当 PATH 中存在 `arxiv-pp-cli` 时自动启用(首次配置会安装)。 |
|
||||
| **Techmeme** | 科技新闻的编辑视角,并按你设定的 30 天窗口筛选。免费且无需 API 密钥。当 PATH 中存在 `techmeme-pp-cli` 时自动启用(首次配置会安装)。 |
|
||||
| **LinkedIn** | 职业领域的信号。搜索帖子和文章,其中文章被视为高价值信号。 |
|
||||
| **StockTwits** | 交易者情绪。当主题是股票代码或加密货币时自动启用。 |
|
||||
| **Threads** | 后 Twitter 时代的文字内容层,汇集创作者和品牌的讨论。 |
|
||||
| **Pinterest** | 视觉发现:围绕产品和创意的 Pin、收藏与评论。 |
|
||||
| **小红书(RED)** | 来自中国生活方式、产品和创作者的信号。当本机运行已登录的 x-mcp 浏览器插件或 `xiaohongshu-mcp` 服务时,通过 `--search xhs` 显式启用。 |
|
||||
| **Bluesky** | 去中心化的社交内容层,搜索 Twitter 用户迁移后产生的 AT Protocol 帖子。 |
|
||||
| **Perplexity** | 基于来源的 Sonar 综合结果、原始 Search API 数据和 Deep Research。 |
|
||||
| **Web** | 编辑报道和博客对比。它只是众多信号之一,而不是唯一来源。 |
|
||||
|
||||
社区贡献者仍在不断加入更多平台。Truth Social 等垂直来源已经进入引擎,更多来源也在路上。
|
||||
|
||||
一条获得 1,500 个赞同票的 Reddit 帖子,信号强度高于一篇无人阅读的博客;一个拥有 360 万次观看的 TikTok,比新闻稿更能说明当下的文化热点;一个有 6.6 万美元成交量支撑的 Polymarket 概率,也比评论员的猜测更难反驳。
|
||||
|
||||
综合排序依据的是人们真正参与过的内容——看社会相关性,而不是 SEO 相关性。
|
||||
|
||||
## 大家实际上怎么用它
|
||||
|
||||
**开会之前。** `/last30days Peter Steinberger`——加入 OpenAI Codex 团队、反对 Anthropic 禁止第三方智能体、GitHub 上合并了 23 个 PR 且合并率达 85%、正在开发跨设备智能体控制系统 LobsterOS。r/ClaudeCode 上的一条评论说:“自从 OpenClaw 发布之后,大家就知道,只要你不是通过 API 运行它,迟早会被封。”(227 个赞同票)。这些不会出现在 LinkedIn 上。
|
||||
|
||||
**判断招聘信号。** `/last30days Listen Labs --hiring-signals`——把最新职位和招聘页面变成有引用依据的证据,从中判断公司是否正转向企业安全、客户成功、基础设施或产品扩张。报告只解释招聘看起来释放了什么信号,不会武断预测路线图一定会交付什么。
|
||||
|
||||
**在话题爆发前发现它。** 输入 `/last30days what's exploding in AI agents?`,Skill 会切换到发现模式:引擎扫描 Reddit 分类列表、Hacker News 的 front/best 故事、Digg AI 1000 信息流,以及认证后的 X;随后由你的智能体评审候选主题(命名、过滤垃圾、判断内容价值),并写出播客或 X 长文的切入角度;最终给出 5–10 个按增长速度排序的话题。每条结果都包含跨平台数据、势头标签,以及可直接运行的 `/last30days "<topic>"` 后续命令。
|
||||
|
||||
**突发事件发生时。** `/last30days Kanye West`——英国拒绝其签证,Wireless Festival 取消演出,赞助商纷纷离场;但《BULLY》首周登上 Billboard 第二名。Fantano 结束自己的 “Yay sabbatical” 回归评测(65.3 万次观看);SoFi Homecoming 请来 Lauryn Hill 和 Travis Scott,共演出 44 首歌。Polymarket:“Kanye 还会再发推吗?”86% 认为会。共找到 23 个 Reddit 主题、17 个 YouTube 视频和 8.6 万次赞同。
|
||||
|
||||
**比较工具。** `/last30days OpenClaw vs Hermes vs Paperclip`——“它们并非竞品,而是处于不同层次。”OpenClaw 是执行层(GitHub 35.1 万 Star,已上线),Hermes 是会自我改进的大脑(3.1 万 Star),Paperclip 是组织结构图(4.9 万 Star)。Star 数来自 GitHub API 的实时数据,不是过期博客。报告会提供架构、记忆、安全性和适用场景的横向表格。正如 @IMJustinBrooke 所说:“OpenClaw = 小火龙,Hermes = 喷火龙。”
|
||||
|
||||
**理解世界。** `/last30days Iran vs USA`——战争进入第 38 天。特朗普要求伊朗在周二的最后期限前重新开放霍尔木兹海峡;两架美国战机被击落;油价涨至每桶 126 美元。IEA 称之为“全球石油市场史上最大规模的供应中断”。Polymarket 认为 12 月 31 日前停火的概率为 74%。共找到 27 条 X 帖子、10 个 YouTube 视频和 20 个预测市场。
|
||||
|
||||
**旅行之前。** `/last30days Universal Epic Universe`——扩建工程已经开工,“Project 680” 许可已提交;基础设施证实将有烟花表演,但官方尚未公布。Mine-Cart Madness 平均排队 148 分钟;年票仍未推出,当地居民对此不满;Stardust Racers 将停运翻修至 4 月 5 日。
|
||||
|
||||
**快速学习。** `/last30days Nano Banana Pro prompting`——JSON 结构化提示词正在取代标签堆砌;@pictsbyai 的嵌套格式能避免“概念串色”;以编辑为先的工作流优于反复重新生成。随后,它会严格依据社区验证有效的方法,为你写出一条可用于生产的提示词。
|
||||
|
||||
## 最近更新
|
||||
|
||||
自 5 月发布 v3.3 公告以来,截至 v3.11.1(2026 年 7 月),项目已在 15 个版本中合并 175 个 PR,其中 122 个来自 52 位社区贡献者。下面是主要变化。
|
||||
|
||||
### 正式支持 OpenAI Codex
|
||||
|
||||
`/last30days` 现在是带引导式配置的原生 Codex 插件——不是简单移植,而是一等公民。针对不同渲染器优化的引用格式,让 Codex 输出读起来像简报,而不是一团 URL(#694)。同一套引擎也运行在 Claude Code、Cursor、Copilot、Gemini CLI、Claude Desktop、OpenClaw 以及 50 多个 Agent Skills 宿主上。Codex 插件清单由 [@rfoust](https://github.com/rfoust) 贡献(#686),Codex 认证修复由 [@tmchow](https://github.com/tmchow) 贡献(#698)。
|
||||
|
||||
### arXiv、Techmeme 与 Digg——免费,无需 API 密钥
|
||||
|
||||
arXiv 提供热点背后的论文,Techmeme 提供科技新闻的编辑视角;二者均免费、无需密钥,首次配置会安装相应 CLI 并自动启用(#709)。Digg 的 AI 1000 话题聚类同样无需 X 认证——配置过程会自动安装免费的 Digg CLI(#590)。此外还加入了可选的 Trustpilot 来源,适合消费品牌研究。
|
||||
|
||||
### 免费 Reddit 搜索也有真实评分和热门评论
|
||||
|
||||
Reddit 的公开 `.json` API 停止工作后,免费的数据通路以更强的方式回归:无密钥 RSS + shreddit 抓取(#457)、通过 arctic-shift 发现垂直 subreddit 并获取真实赞同数(#696),以及相关性下限,防止病毒式传播但偏题的帖子劫持整份简报(#488,感谢 [@rzachsmith](https://github.com/rzachsmith))。无需 API 密钥,提供真实评分和热门评论。
|
||||
|
||||
### 每份简报都收录最好的评论
|
||||
|
||||
评论现在是各来源默认启用的一层:Instagram 评论采用基于排名的多样性机制,避免五条热门观点全来自同一篇帖子(#751);YouTube 评论配合 ScrapeCreators 字幕回退,以应对 yt-dlp 失效(#637);经过社区投票的评论还会计入 Best Takes 的权重,让最有趣的金句不会在评分中消失(#592、#608)。
|
||||
|
||||
### 一个 doctor 命令解决健康检查
|
||||
|
||||
要求执行健康检查时,doctor 会逐一测试所有来源,并给出精确修复建议:缺少哪个密钥、哪个 CLI 不在 PATH、哪个 Cookie 已过期(#753)。不必再猜为什么 X 的结果这么少。
|
||||
|
||||
### 重构 X 搜索
|
||||
|
||||
X 流水线经过彻底重构:新增 FROM 和 ABOUT 两条通路,让某人的原创帖子和外界对他的讨论都能进入排名(#610);按人物感知的子查询消歧(#611);基于第一方作者身份的信息归属,并结合互动信号排序(#613);统一的 X 来源与自动后端故障转移(#622)。另外,`--diagnose` 现在会真正探测认证状态,如实报告问题(#609)。
|
||||
|
||||
### 更多信息源加入
|
||||
|
||||
通过 ScrapeCreators 接入 LinkedIn,并将文章视为高价值信号([@ravstr](https://github.com/ravstr),#702)。StockTwits 会在股票代码和加密货币主题下自动启用([@wtiwana](https://github.com/wtiwana),#658)。Perplexity 新增直接 API 模式和异步 Deep Research([@sk-holmes](https://github.com/sk-holmes),#629)。
|
||||
|
||||
### 在社区协作下进一步加固
|
||||
|
||||
这一轮安全改进几乎全部来自社区:修复 HTML 渲染器中的存储型 XSS([@iliaal](https://github.com/iliaal)、[@aaronjmars](https://github.com/aaronjmars));收紧 Cookie 临时文件权限;通过 OpenSSF Scorecard 和构建来源证明加固 CI 供应链([@shaanmajid](https://github.com/shaanmajid)、[@hammadxcm](https://github.com/hammadxcm)、[@aniruddh909](https://github.com/aniruddh909));增加 Semgrep、OSV-Scanner 扫描以及 PR 依赖审查门禁([@23241a6749](https://github.com/23241a6749));测试覆盖率门槛从 60% 起步,现已提高到 84%([@gourab5139014](https://github.com/gourab5139014));Hermes 安全扫描中的所有 CRITICAL 问题也已清零(#768)。
|
||||
|
||||
### 覆盖范围更广
|
||||
|
||||
支持希伯来语和其他非拉丁文字语言([@dudyme](https://github.com/dudyme));为中文来源加入 CJK 感知的分词([@An-idd](https://github.com/An-idd));推进一系列 Windows 兼容性改进;支持从完整 Chromium 浏览器家族提取 Cookie——Brave、Edge、Vivaldi、Opera、Arc([@andrey-esipov](https://github.com/andrey-esipov))——并接入 macOS Keychain 和 Linux `pass(1)` 凭据来源。此外还有 `--as-of` 历史回溯([@chiyi-creator](https://github.com/chiyi-creator))、通过 uv 自动配置 Python 3.12([@buntysomroy](https://github.com/buntysomroy))、用于解读公司招聘页面的 `--hiring-signals`,以及多次运行之间的观察列表差异。
|
||||
|
||||
### v3 的核心能力仍然完整保留
|
||||
|
||||
v3 打下的基础都还在:真正调用 API 前先运行预研究模块,解析正确的账号、subreddit 和话题标签(由 [@j-sperling](https://github.com/j-sperling) 开发);Best Takes 评分在相关性之外也衡量幽默感和传播力;跨来源故事聚类;单次完成对比研究(例如 “CLI vs MCP” 只需 3 分钟,而不是 12 分钟);自动发现竞品的 `--competitors` 对比;GitHub 人物模式(`--github-user=steipete`);任何研究结束后可开启的 ELI5 模式(输入 “eli5 on”);以及可分享、自包含的 HTML 简报(`--emit=html`)。配置项详见 [CONFIGURATION.md](CONFIGURATION.md)。
|
||||
|
||||
## 安装
|
||||
|
||||
| 使用环境 | 安装方式 | 更新方式 |
|
||||
|---------|---------|---------|
|
||||
| **Claude Code**(推荐) | `/plugin marketplace add mvanhorn/last30days-skill` | 通过 marketplace 自动更新,或运行 `claude plugin update last30days@last30days-skill` |
|
||||
| **Grok**(xAI Build CLI) | 先运行 `grok plugin marketplace add mvanhorn/last30days-skill`,再运行 `grok plugin install last30days` | `grok plugin update last30days` |
|
||||
| **Codex、Cursor、Copilot、Gemini CLI,或其他 50 多个支持 [Agent Skills](https://agentskills.io) 的宿主** | `npx skills add mvanhorn/last30days-skill -g` | `npx skills update last30days -g` |
|
||||
| **claude.ai**(网页) | [下载 `last30days.skill`](https://github.com/mvanhorn/last30days-skill/releases/latest/download/last30days.skill),然后在 claude.ai 中依次进入 Customize > Skills > + > Create skill > Upload a skill 上传 | 重新下载并上传 |
|
||||
| **Claude Desktop** | 从[最新版本](https://github.com/mvanhorn/last30days-skill/releases/latest)下载适用于你的平台的 `.mcpb`,拖入 Settings > Extensions | 重新下载新包并拖入 |
|
||||
| **OpenClaw** | `clawhub install last30days-official` | `clawhub update last30days-official` |
|
||||
|
||||
### Claude Code(推荐)
|
||||
|
||||
```
|
||||
/plugin marketplace add mvanhorn/last30days-skill
|
||||
```
|
||||
|
||||
推荐这种方式,是因为 Claude Code marketplace 会替你处理更新:插件缓存按版本管理,每次发布新版本都会自动刷新。要强制检查更新,请运行 `claude plugin update last30days@last30days-skill`。
|
||||
|
||||
如果你更愿意在 Claude Code 中使用 Agent Skills 的安装方式,同样支持:
|
||||
|
||||
```
|
||||
npx skills add mvanhorn/last30days-skill -g -a claude-code
|
||||
```
|
||||
|
||||
原生插件和 `npx skills` 安装可以共存。但 Claude Code 不会对不同安装方式进行去重:若两者同时启用,`/last30days` 会出现两个条目。建议每台机器只选一种安装方式。
|
||||
|
||||
### Grok(xAI Build CLI)
|
||||
|
||||
[Grok Build](https://docs.x.ai/build/features/skills-plugins-marketplaces)(`grok`)可以将 last30days 安装为原生插件。直接安装会跟踪仓库更新:
|
||||
|
||||
```bash
|
||||
grok plugin install mvanhorn/last30days-skill
|
||||
```
|
||||
|
||||
也可以先把本仓库添加为 marketplace 来源,再按插件名安装:
|
||||
|
||||
```bash
|
||||
grok plugin marketplace add mvanhorn/last30days-skill
|
||||
grok plugin install last30days
|
||||
```
|
||||
|
||||
加入 `--trust` 可跳过安装确认;使用 `grok plugin update last30days` 更新。为兼容旧机制,Grok 也会读取 Claude Code 的清单文件;原生 `.grok-plugin/` 文件是首选通路,也是 [xAI marketplace](https://github.com/xai-org/plugin-marketplace) 官方目录条目指向的对象。`npx skills add` 仍是有效的跨宿主备用方案。
|
||||
|
||||
### Codex、Cursor、Copilot、Gemini CLI 与其他 Agent Skills 宿主
|
||||
|
||||
通过开放的 [Agent Skills](https://agentskills.io) CLI 安装。它支持 50 多种运行环境,包括 `codex`、`cursor`、`github-copilot`、`gemini-cli`、`claude-code`、`windsurf`、`cline`、`continue`、`roo`、`aider-desk`、`opencode`、`goose` 等(完整列表见 [vercel-labs/skills 仓库](https://github.com/vercel-labs/skills))。
|
||||
|
||||
```bash
|
||||
npx skills add mvanhorn/last30days-skill -g
|
||||
```
|
||||
|
||||
`-g`(全局)参数会把 Skill 安装到用户目录,因此所有项目均可使用。不加 `-g` 时,`npx skills` 会安装到当前项目的 `./.skills/` 中,并随仓库提交。对于一个用于研究整个世界的工具,全局安装通常更合适。
|
||||
|
||||
Codex 桌面版和其他以文件夹为工作区的宿主,不仅能在 Git 仓库中运行,也能在普通文件夹中工作。第一次研究前,请让宿主智能体从已加载的 Skill 目录运行随附的 `scripts/last30days.py --preflight`;若在源码仓库中,则运行等价命令 `python3 skills/last30days/scripts/last30days.py --preflight`。该命令会展示配置来源、浏览器 Cookie 方案、计划写入的文件、可选命令和被忽略的项目配置,但不会读取 Cookie、写入文件或执行研究。
|
||||
|
||||
默认情况下,`npx skills` 会安装到它自动检测到的宿主。若要指定一个或多个宿主:
|
||||
|
||||
```bash
|
||||
npx skills add mvanhorn/last30days-skill -g -a codex
|
||||
npx skills add mvanhorn/last30days-skill -g -a cursor
|
||||
npx skills add mvanhorn/last30days-skill -g -a gemini-cli
|
||||
npx skills add mvanhorn/last30days-skill -g -a codex -a cursor
|
||||
```
|
||||
|
||||
日后可通过以下命令更新:
|
||||
|
||||
```bash
|
||||
npx skills update last30days -g
|
||||
```
|
||||
|
||||
也可以一次更新所有通过 `npx skills` 全局安装的 Skill:
|
||||
|
||||
```bash
|
||||
npx skills update -g
|
||||
```
|
||||
|
||||
使用 `npx skills list -g` 查看列表,使用 `npx skills remove last30days -g` 卸载。
|
||||
|
||||
### claude.ai(网页)
|
||||
|
||||
1. 从最新版本[下载 `last30days.skill`](https://github.com/mvanhorn/last30days-skill/releases/latest/download/last30days.skill)
|
||||
2. 打开 [claude.ai > Customize > Skills](https://claude.ai/customize/skills)
|
||||
3. 在 Skills 面板点击 `+`,再选择 `Create skill` > `Upload a skill`,浏览或拖入文件
|
||||
|
||||
请先在 Capabilities 中启用 “Code execution and file creation”——否则 Skill 无法运行。
|
||||
|
||||
### Claude Desktop
|
||||
|
||||
Claude Desktop 通过 `.mcpb` 包(一种一键式 Model Context Protocol 软件包)将 `/last30days` 安装为 MCP 服务器。
|
||||
|
||||
1. 打开[最新版本](https://github.com/mvanhorn/last30days-skill/releases/latest),下载适用于你的平台的 `.mcpb`:
|
||||
- macOS Apple Silicon:`last30days-pp-mcp-darwin-arm64.mcpb`
|
||||
- macOS Intel:`last30days-pp-mcp-darwin-amd64.mcpb`
|
||||
- Linux x86_64:`last30days-pp-mcp-linux-amd64.mcpb`
|
||||
2. 打开 Claude Desktop,进入 Settings > Extensions,将文件拖入。
|
||||
3. 出现提示时,粘贴你想启用的数据源所需的 API 密钥。所有字段均可留空——如果全部跳过,引擎会降级为纯 Web 模式。密钥存储在操作系统的钥匙串中。
|
||||
4. 重启 Claude Desktop。让 Claude “research Peter Steinberger” 或研究任意主题,它就会调用 `research` 工具。
|
||||
|
||||
**宿主要求:** PATH 中需要 Python 3.12+。软件包自带引擎源码,但使用本地 Python 解释器。Windows 用户可从 [python.org](https://www.python.org/downloads/) 安装;macOS 和大多数 Linux 发行版通常已提供兼容版本。
|
||||
|
||||
**密钥不会与 Code Skill 同步。** Claude Desktop 与 Claude Code 采用彼此独立的凭据存储,这是有意的设计。即使你已为 Code Skill 配置 `~/.config/last30days/.env`,仍需在这里重新输入一次相同的密钥。
|
||||
|
||||
Windows 支持需要等各平台的清单入口点确定后再实现,请关注后续 Issue。
|
||||
|
||||
### OpenClaw
|
||||
|
||||
```bash
|
||||
clawhub install last30days-official
|
||||
```
|
||||
|
||||
如果你需要在 `/last30days` 研究之外执行 X/Twitter 操作,例如发布推文或回复、导出关注者、处理媒体、监控账号或抽奖,可使用 [TweetClaw](https://github.com/Xquik-dev/tweetclaw) 作为配套 OpenClaw 插件。TweetClaw 由 Xquik-dev 维护,这里仅将其列为可选配套方案;它不是 last30days 的依赖,也不代表本项目为其背书。
|
||||
|
||||
### 手动安装(开发者)
|
||||
|
||||
```bash
|
||||
git clone https://github.com/mvanhorn/last30days-skill.git
|
||||
ln -s "$(pwd)/last30days-skill/skills/last30days" ~/.claude/skills/last30days
|
||||
```
|
||||
|
||||
这个符号链接会让安装内容随工作区代码实时同步,无需重复复制。若用于 `claude.ai`,可从源码构建 `.skill` 文件:运行 `bash skills/last30days/scripts/build-skill.sh`,产物位于 `dist/last30days.skill`。
|
||||
|
||||
Reddit(含评论)、Hacker News、Polymarket 和 GitHub 无需任何配置即可使用。首次运行 `/last30days` 后,配置向导会在 30 秒内解锁更多来源,包括免费的 arXiv 与 Techmeme CLI。
|
||||
|
||||
## 使用你自己的密钥
|
||||
|
||||
这些平台之间互不相通:X 不知道 Reddit 在讨论什么,YouTube 也看不到 TikTok。但只要接入你自己的 API 密钥和浏览器令牌,就能一次访问所有平台。
|
||||
|
||||
| 来源 | 你需要准备什么 | 成本 |
|
||||
|------|----------------|------|
|
||||
| Reddit(含评论)+ HN + Polymarket + GitHub + StockTwits | 无 | 免费 |
|
||||
| arXiv + Techmeme | 免费 CLI,由首次配置自动安装 | 免费 |
|
||||
| X / Twitter | 在任意浏览器中登录 x.com,或设置 `XQUIK_API_KEY` / `XAI_API_KEY` | 浏览器 Cookie 免费;密钥费用取决于服务商 |
|
||||
| YouTube | `brew install yt-dlp` | 免费 |
|
||||
| Bluesky | 来自 bsky.app 的应用密码 | 免费 |
|
||||
| TikTok + Instagram + Threads + Pinterest + LinkedIn + YouTube 评论 | ScrapeCreators 密钥 | 前 10,000 次调用免费,之后按量付费 |
|
||||
| 小红书(RED) | 运行已登录的 x-mcp 浏览器插件或 `xiaohongshu-mcp` 服务,并在单次运行中通过 `--search xhs` 启用,或在 `.env` 中设置 `INCLUDE_SOURCES=xiaohongshu`;last30days 会依次自动探测 `http://localhost:18060` 和 `http://host.docker.internal:18060`,也可通过 `XIAOHONGSHU_API_BASE` 指定自定义地址 | last30days 不需要 API 密钥;依赖本地浏览器会话服务 |
|
||||
| DripStack(付费金融通讯) | 每次运行通过 `--search dripstack` 启用,或在 `.env` 中设置 `INCLUDE_SOURCES=dripstack` | 无需密钥;公共搜索 API 免费 |
|
||||
| Perplexity Sonar / Search API / Deep Research | Perplexity 密钥,或作为 Sonar 回退方案的 OpenRouter 密钥 | 按量付费 |
|
||||
| Web 搜索 | Brave Search 密钥 | 每月 2,000 次免费查询 |
|
||||
|
||||
### macOS Keychain(可选)
|
||||
|
||||
在 macOS 上,你可以把密钥存入系统 Keychain,而不是 `.env` 文件。Skill 会自动将其作为最低优先级的密钥来源;发生冲突时,`.env` 文件和进程环境变量仍然优先。
|
||||
|
||||
```bash
|
||||
# 交互式配置——逐个询问已知密钥,留空即可跳过
|
||||
skills/last30days/scripts/setup-keychain.sh
|
||||
|
||||
# 也可以手动存入单个密钥
|
||||
security add-generic-password -a "$USER" -s last30days-XAI_API_KEY -w "xai-..."
|
||||
|
||||
# 查看 / 清理
|
||||
skills/last30days/scripts/setup-keychain.sh --list
|
||||
skills/last30days/scripts/setup-keychain.sh --delete XAI_API_KEY
|
||||
```
|
||||
|
||||
密钥项以 `last30days-<KEY>` 作为服务名称,归当前用户所有。在非 Darwin 平台上,加载器不会执行任何操作,因此 Linux/Windows 用户的行为不受影响。
|
||||
|
||||
如果已有密钥使用其他 Keychain 服务名称,可按 [CONFIGURATION.md](CONFIGURATION.md#reusing-existing-macos-keychain-items) 中的说明设置不含秘密的 `LAST30DAYS_KEYCHAIN_ALIASES` 映射,无需复制密钥。
|
||||
|
||||
各来源的完整密钥矩阵、推理服务商优先级和 Web 搜索后端优先级,请参阅 [CONFIGURATION.md](CONFIGURATION.md)。
|
||||
|
||||
## 配置
|
||||
|
||||
第一天使用时,你大概最想知道以下两件事:
|
||||
|
||||
**研究文件保存在哪里。** `LAST30DAYS_MEMORY_DIR` 默认指向 `~/Documents/Last30Days/`(Windows:`C:\Users\<you>\Documents\Last30Days\`)。可以在 shell 中把该环境变量设为任意路径,也可以为单次运行传入 `--save-dir <path>`。若需要把渲染结果精确写入某个路径,请使用 `--output <file>`;文件格式由 `--emit` 决定。使用 `--save-suffix=<name>` 可分别保存同一主题的多个版本(例如按客户区分)。每次使用 `--save-dir` 都会生成 `<slug>-raw[-suffix].md`。研究前运行 `python3 skills/last30days/scripts/last30days.py --preflight`,可预览计划写入的内容。
|
||||
|
||||
**面向智能体和工作流的结构化输出。** 让 `/last30days` 输出机器可读的 JSON,即可获得稳定且带版本号的 agent profile。若在脚本或开发中直接调用引擎,可运行 `python3 skills/last30days/scripts/last30days.py "AI coding agents" --emit=json`;只有确实需要未版本化的内部 `Report` 转储时,才添加 `--json-profile=raw`。详见 [JSON 导出字段参考与版本策略](docs/reference/json-export.md)。
|
||||
|
||||
**无指定主题的趋势发现。** 输入 `/last30days what's trending in AI agents?`,会得到按排名整理的发现简报,而不是研究一个你已经知道的主题。在智能体宿主上,它会执行由宿主模型评审的三段式流程:模型命名主题、过滤垃圾、判断内容价值并撰写切入角度。在脚本或定时任务中直接调用引擎时,可运行 `python3 skills/last30days/scripts/last30days.py --discover "AI agents"`(单次执行:主题名称由确定性逻辑生成,不含内容角度);加入 `--emit=json` 可获得带版本号的发现数据契约。发现模式不能与位置参数主题或 `--drill` 同时使用。
|
||||
|
||||
**跨运行趋势监控。** 默认模式每次运行都会生成新的 Markdown 快照。若要长期积累结果,可添加 `--store` 写入 SQLite 数据库;随后使用 [`scripts/watchlist.py`](skills/last30days/scripts/watchlist.py) 定时运行(发现新内容时可发送到 Slack 或 Webhook),使用 [`scripts/briefing.py`](skills/last30days/scripts/briefing.py) 生成日报或周报。完整的周期配置见 [CONFIGURATION.md](CONFIGURATION.md#trend-monitoring-store--watchlist--briefings)。
|
||||
|
||||
**可订阅的研究资料库。** 让 `/last30days` 构建你的资料库信息流;在脚本和开发中也可以直接运行 `python3 skills/last30days/scripts/last30days.py library feed`。该命令会把已保存的简报整理成 `index.html`、本地 Atom `feed.xml` 和便于阅读的简报页面。仅在确实想托管 HTML 索引和简报页面时添加 `--publish`;发布必须显式开启,且默认公开。若要让 Atom 信息流可订阅,请将生成目录托管到 GitHub Pages 等静态站点服务。
|
||||
|
||||
**搜索你做过的所有研究。** 输入 `/last30days search my library for MCP servers` 或 `/last30days have I researched MCP servers before?`。直接调用引擎时,运行 `python3 skills/last30days/scripts/last30days.py library search "MCP servers"`。搜索完全离线且结果确定:它增量索引资料库信息流使用的同一批简报,合并每次运行存储的匹配记录,并按主题和日期分组。新的研究若与历史内容重叠,还会显示精简的 **From your library** 章节;设置 `LAST30DAYS_LIBRARY_CONTEXT=off` 可关闭这种被动上下文。
|
||||
|
||||
各客户端包装脚本、自定义分类同类 subreddit,以及用于试验进行中定制功能的 beta 通道,也都记录在 [CONFIGURATION.md](CONFIGURATION.md) 中。
|
||||
|
||||
## 展示:社区研究信息流
|
||||
|
||||
你是否用 last30days 发布了定期 AI 动态、市场观察,或某个小众到可爱的长期专题?欢迎在[社区展示帖](https://github.com/mvanhorn/last30days-skill/issues/532)分享公开资料库 URL;若已将 `feed.xml` 托管到静态站点,也可分享 Atom URL。社区成员提交后,我们会在这里陆续添加链接;在此之前,该讨论帖就是统一的收集入口。
|
||||
|
||||
## 工作原理
|
||||
|
||||
1. **你输入一个主题。** 人物、公司、产品、技术、“X vs Y”——任何内容都可以。
|
||||
2. **智能体识别关键对象。** 找出 X 账号(包括创始人)、GitHub 仓库、subreddit、TikTok 话题标签和 YouTube 频道。搜索 “Kanye West” 时,它知道该查 r/hiphopheads、@kanyewest,以及 YouTube 上的 “bully review”;搜索 “OpenClaw” 时,它会定位 GitHub 上的 openclaw/openclaw 并获取实时 Star 数。
|
||||
3. **并行搜索所有来源。** 扩展多个查询,再按互动度、相关性和新鲜度评分。
|
||||
4. **提供其他工具没有的深度。** 获取反应视频的完整 YouTube 字幕、带赞同数的 Reddit 热门评论、TikTok 文案和 Polymarket 概率,而不只是标题和链接。
|
||||
5. **合并同一事件。** Wireless Festival 在 Reddit 官宣、在 X 上引发讨论、TikTok 出现票价信息——这些会合并为一个故事聚类,而不是三条重复结果。
|
||||
6. **综合成一份简报。** 用具体数据作依据,为来源添加引用,并按真实互动排序。不是“这是我找到的内容”,而是“这是最重要的内容”。
|
||||
7. **随后成为你的领域专家。** 运行一次后,当前 Claude 会话就掌握社区知道的一切。你可以继续追问,让它写提示词、起草邮件、规划旅行或设计系统架构——所有回答都基于此刻真实存在的信息。
|
||||
|
||||
## 用户怎么评价
|
||||
|
||||
> “我发现了一个 Claude Code Skill,可以研究任意主题过去 30 天在 Reddit、X、YouTube 和 HN 上的内容,然后替你写提示词。以前每写一篇内容,我都得手动在 Reddit 和 X 上做研究:一个标签页接一个标签页,一条讨论接一条讨论。光这一步就要 90 分钟。它彻底省掉了这些工作。” ——@itsjasonai
|
||||
|
||||
> “仅仅这一个 Skill,就取代了我的整套研究工作流。给它一个主题,它会抓取 Reddit、X 和 Web 上人们真正在谈论的内容。不是陈旧的博客,而是过去 30 天里真实发生的讨论。” ——@itswilsoncharles
|
||||
|
||||
> “今天 GitHub 的 10 个趋势仓库中,有 5 个是 Claude 工具。第一名:mvanhorn/last30days-skill。” ——@yieldhunter95
|
||||
|
||||
## 开源
|
||||
|
||||
采用 MIT 许可证。无跟踪、无分析,你的研究数据始终留在本机。拥有 2,700 多项测试。
|
||||
|
||||
项目基于 Python 3.12+、yt-dlp、Node.js(内置用于 X 搜索的 Bird 客户端)和 ScrapeCreators API 构建。v3 引擎架构由 [@j-sperling](https://github.com/j-sperling) 设计。
|
||||
|
||||
提交 PR 请参阅 [CONTRIBUTING.md](CONTRIBUTING.md),完整社区贡献者名单见 [CONTRIBUTORS.md](CONTRIBUTORS.md),版本历史见 [CHANGELOG.md](CHANGELOG.md)。
|
||||
|
||||
## Star 历史
|
||||
|
||||
<a href="https://star-history.com/#mvanhorn/last30days-skill&Date">
|
||||
<picture>
|
||||
<source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/svg?repos=mvanhorn/last30days-skill&type=Date&theme=dark" />
|
||||
<source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/svg?repos=mvanhorn/last30days-skill&type=Date" />
|
||||
<img alt="Star 历史图" src="https://api.star-history.com/svg?repos=mvanhorn/last30days-skill&type=Date" />
|
||||
</picture>
|
||||
</a>
|
||||
|
||||
---
|
||||
|
||||
**@slashlast30days** · [github.com/mvanhorn/last30days-skill](https://github.com/mvanhorn/last30days-skill)
|
||||
@@ -1,391 +0,0 @@
|
||||
---
|
||||
name: last30days
|
||||
description: Research a topic from the last 30 days on Reddit + X + Web, become an expert, and write copy-paste-ready prompts for the user's target tool.
|
||||
argument-hint: "[topic] for [tool]" or "[topic]"
|
||||
context: fork
|
||||
agent: Explore
|
||||
disable-model-invocation: true
|
||||
allowed-tools: Bash, Read, Write, AskUserQuestion, WebSearch
|
||||
---
|
||||
|
||||
# last30days: Research Any Topic from the Last 30 Days
|
||||
|
||||
Research ANY topic across Reddit, X, and the web. Surface what people are actually discussing, recommending, and debating right now.
|
||||
|
||||
Use cases:
|
||||
- **Prompting**: "photorealistic people in Nano Banana Pro", "Midjourney prompts", "ChatGPT image generation" → learn techniques, get copy-paste prompts
|
||||
- **Recommendations**: "best Claude Code skills", "top AI tools" → get a LIST of specific things people mention
|
||||
- **News**: "what's happening with OpenAI", "latest AI announcements" → current events and updates
|
||||
- **General**: any topic you're curious about → understand what the community is saying
|
||||
|
||||
## CRITICAL: Parse User Intent
|
||||
|
||||
Before doing anything, parse the user's input for:
|
||||
|
||||
1. **TOPIC**: What they want to learn about (e.g., "web app mockups", "Claude Code skills", "image generation")
|
||||
2. **TARGET TOOL** (if specified): Where they'll use the prompts (e.g., "Nano Banana Pro", "ChatGPT", "Midjourney")
|
||||
3. **QUERY TYPE**: What kind of research they want:
|
||||
- **PROMPTING** - "X prompts", "prompting for X", "X best practices" → User wants to learn techniques and get copy-paste prompts
|
||||
- **RECOMMENDATIONS** - "best X", "top X", "what X should I use", "recommended X" → User wants a LIST of specific things
|
||||
- **NEWS** - "what's happening with X", "X news", "latest on X" → User wants current events/updates
|
||||
- **GENERAL** - anything else → User wants broad understanding of the topic
|
||||
|
||||
Common patterns:
|
||||
- `[topic] for [tool]` → "web mockups for Nano Banana Pro" → TOOL IS SPECIFIED
|
||||
- `[topic] prompts for [tool]` → "UI design prompts for Midjourney" → TOOL IS SPECIFIED
|
||||
- Just `[topic]` → "iOS design mockups" → TOOL NOT SPECIFIED, that's OK
|
||||
- "best [topic]" or "top [topic]" → QUERY_TYPE = RECOMMENDATIONS
|
||||
- "what are the best [topic]" → QUERY_TYPE = RECOMMENDATIONS
|
||||
|
||||
**IMPORTANT: Do NOT ask about target tool before research.**
|
||||
- If tool is specified in the query, use it
|
||||
- If tool is NOT specified, run research first, then ask AFTER showing results
|
||||
|
||||
**Store these variables:**
|
||||
- `TOPIC = [extracted topic]`
|
||||
- `TARGET_TOOL = [extracted tool, or "unknown" if not specified]`
|
||||
- `QUERY_TYPE = [RECOMMENDATIONS | NEWS | HOW-TO | GENERAL]`
|
||||
|
||||
---
|
||||
|
||||
## Setup Check
|
||||
|
||||
The skill works in three modes based on available API keys:
|
||||
|
||||
1. **Full Mode** (both keys): Reddit + X + WebSearch - best results with engagement metrics
|
||||
2. **Partial Mode** (one key): Reddit-only or X-only + WebSearch
|
||||
3. **Web-Only Mode** (no keys): WebSearch only - still useful, but no engagement metrics
|
||||
|
||||
**API keys are OPTIONAL.** The skill will work without them using WebSearch fallback.
|
||||
|
||||
### First-Time Setup (Optional but Recommended)
|
||||
|
||||
If the user wants to add API keys for better results:
|
||||
|
||||
```bash
|
||||
mkdir -p ~/.config/last30days
|
||||
cat > ~/.config/last30days/.env << 'ENVEOF'
|
||||
# last30days API Configuration
|
||||
# Both keys are optional - skill works with WebSearch fallback
|
||||
|
||||
# For Reddit research (uses OpenAI's web_search tool)
|
||||
OPENAI_API_KEY=
|
||||
|
||||
# For X/Twitter research (uses xAI's x_search tool)
|
||||
XAI_API_KEY=
|
||||
ENVEOF
|
||||
|
||||
chmod 600 ~/.config/last30days/.env
|
||||
echo "Config created at ~/.config/last30days/.env"
|
||||
echo "Edit to add your API keys for enhanced research."
|
||||
```
|
||||
|
||||
**DO NOT stop if no keys are configured.** Proceed with web-only mode.
|
||||
|
||||
---
|
||||
|
||||
## Research Execution
|
||||
|
||||
**IMPORTANT: The script handles API key detection automatically.** Run it and check the output to determine mode.
|
||||
|
||||
**Step 1: Run the research script**
|
||||
```bash
|
||||
python3 ~/.claude/skills/last30days/scripts/last30days.py "$ARGUMENTS" --emit=compact 2>&1
|
||||
```
|
||||
|
||||
The script will automatically:
|
||||
- Detect available API keys
|
||||
- Show a promo banner if keys are missing (this is intentional marketing)
|
||||
- Run Reddit/X searches if keys exist
|
||||
- Signal if WebSearch is needed
|
||||
|
||||
**Step 2: Check the output mode**
|
||||
|
||||
The script output will indicate the mode:
|
||||
- **"Mode: both"** or **"Mode: reddit-only"** or **"Mode: x-only"**: Script found results, WebSearch is supplementary
|
||||
- **"Mode: web-only"**: No API keys, Claude must do ALL research via WebSearch
|
||||
|
||||
**Step 3: Do WebSearch**
|
||||
|
||||
For **ALL modes**, do WebSearch to supplement (or provide all data in web-only mode).
|
||||
|
||||
Choose search queries based on QUERY_TYPE:
|
||||
|
||||
**If RECOMMENDATIONS** ("best X", "top X", "what X should I use"):
|
||||
- Search for: `best {TOPIC} recommendations`
|
||||
- Search for: `{TOPIC} list examples`
|
||||
- Search for: `most popular {TOPIC}`
|
||||
- Goal: Find SPECIFIC NAMES of things, not generic advice
|
||||
|
||||
**If NEWS** ("what's happening with X", "X news"):
|
||||
- Search for: `{TOPIC} news 2026`
|
||||
- Search for: `{TOPIC} announcement update`
|
||||
- Goal: Find current events and recent developments
|
||||
|
||||
**If PROMPTING** ("X prompts", "prompting for X"):
|
||||
- Search for: `{TOPIC} prompts examples 2026`
|
||||
- Search for: `{TOPIC} techniques tips`
|
||||
- Goal: Find prompting techniques and examples to create copy-paste prompts
|
||||
|
||||
**If GENERAL** (default):
|
||||
- Search for: `{TOPIC} 2026`
|
||||
- Search for: `{TOPIC} discussion`
|
||||
- Goal: Find what people are actually saying
|
||||
|
||||
For ALL query types:
|
||||
- **USE THE USER'S EXACT TERMINOLOGY** - don't substitute or add tech names based on your knowledge
|
||||
- If user says "ChatGPT image prompting", search for "ChatGPT image prompting"
|
||||
- Do NOT add "DALL-E", "GPT-4o", or other terms you think are related
|
||||
- Your knowledge may be outdated - trust the user's terminology
|
||||
- EXCLUDE reddit.com, x.com, twitter.com (covered by script)
|
||||
- INCLUDE: blogs, tutorials, docs, news, GitHub repos
|
||||
- **DO NOT output "Sources:" list** - this is noise, we'll show stats at the end
|
||||
|
||||
**Step 3: Wait for background script to complete**
|
||||
Use TaskOutput to get the script results before proceeding to synthesis.
|
||||
|
||||
**Depth options** (passed through from user's command):
|
||||
- `--quick` → Faster, fewer sources (8-12 each)
|
||||
- (default) → Balanced (20-30 each)
|
||||
- `--deep` → Comprehensive (50-70 Reddit, 40-60 X)
|
||||
|
||||
---
|
||||
|
||||
## Judge Agent: Synthesize All Sources
|
||||
|
||||
**After all searches complete, internally synthesize (don't display stats yet):**
|
||||
|
||||
The Judge Agent must:
|
||||
1. Weight Reddit/X sources HIGHER (they have engagement signals: upvotes, likes)
|
||||
2. Weight WebSearch sources LOWER (no engagement data)
|
||||
3. Identify patterns that appear across ALL three sources (strongest signals)
|
||||
4. Note any contradictions between sources
|
||||
5. Extract the top 3-5 actionable insights
|
||||
|
||||
**Do NOT display stats here - they come at the end, right before the invitation.**
|
||||
|
||||
---
|
||||
|
||||
## FIRST: Internalize the Research
|
||||
|
||||
**CRITICAL: Ground your synthesis in the ACTUAL research content, not your pre-existing knowledge.**
|
||||
|
||||
Read the research output carefully. Pay attention to:
|
||||
- **Exact product/tool names** mentioned (e.g., if research mentions "ClawdBot" or "@clawdbot", that's a DIFFERENT product than "Claude Code" - don't conflate them)
|
||||
- **Specific quotes and insights** from the sources - use THESE, not generic knowledge
|
||||
- **What the sources actually say**, not what you assume the topic is about
|
||||
|
||||
**ANTI-PATTERN TO AVOID**: If user asks about "clawdbot skills" and research returns ClawdBot content (self-hosted AI agent), do NOT synthesize this as "Claude Code skills" just because both involve "skills". Read what the research actually says.
|
||||
|
||||
### If QUERY_TYPE = RECOMMENDATIONS
|
||||
|
||||
**CRITICAL: Extract SPECIFIC NAMES, not generic patterns.**
|
||||
|
||||
When user asks "best X" or "top X", they want a LIST of specific things:
|
||||
- Scan research for specific product names, tool names, project names, skill names, etc.
|
||||
- Count how many times each is mentioned
|
||||
- Note which sources recommend each (Reddit thread, X post, blog)
|
||||
- List them by popularity/mention count
|
||||
|
||||
**BAD synthesis for "best Claude Code skills":**
|
||||
> "Skills are powerful. Keep them under 500 lines. Use progressive disclosure."
|
||||
|
||||
**GOOD synthesis for "best Claude Code skills":**
|
||||
> "Most mentioned skills: /commit (5 mentions), remotion skill (4x), git-worktree (3x), /pr (3x). The Remotion announcement got 16K likes on X."
|
||||
|
||||
### For all QUERY_TYPEs
|
||||
|
||||
Identify from the ACTUAL RESEARCH OUTPUT:
|
||||
- **PROMPT FORMAT** - Does research recommend JSON, structured params, natural language, keywords? THIS IS CRITICAL.
|
||||
- The top 3-5 patterns/techniques that appeared across multiple sources
|
||||
- Specific keywords, structures, or approaches mentioned BY THE SOURCES
|
||||
- Common pitfalls mentioned BY THE SOURCES
|
||||
|
||||
**If research says "use JSON prompts" or "structured prompts", you MUST deliver prompts in that format later.**
|
||||
|
||||
---
|
||||
|
||||
## THEN: Show Summary + Invite Vision
|
||||
|
||||
**CRITICAL: Do NOT output any "Sources:" lists. The final display should be clean.**
|
||||
|
||||
**Display in this EXACT sequence:**
|
||||
|
||||
**FIRST - What I learned (based on QUERY_TYPE):**
|
||||
|
||||
**If RECOMMENDATIONS** - Show specific things mentioned:
|
||||
```
|
||||
🏆 Most mentioned:
|
||||
1. [Specific name] - mentioned {n}x (r/sub, @handle, blog.com)
|
||||
2. [Specific name] - mentioned {n}x (sources)
|
||||
3. [Specific name] - mentioned {n}x (sources)
|
||||
4. [Specific name] - mentioned {n}x (sources)
|
||||
5. [Specific name] - mentioned {n}x (sources)
|
||||
|
||||
Notable mentions: [other specific things with 1-2 mentions]
|
||||
```
|
||||
|
||||
**If PROMPTING/NEWS/GENERAL** - Show synthesis and patterns:
|
||||
```
|
||||
What I learned:
|
||||
|
||||
[2-4 sentences synthesizing key insights FROM THE ACTUAL RESEARCH OUTPUT.]
|
||||
|
||||
KEY PATTERNS I'll use:
|
||||
1. [Pattern from research]
|
||||
2. [Pattern from research]
|
||||
3. [Pattern from research]
|
||||
```
|
||||
|
||||
**THEN - Stats (right before invitation):**
|
||||
|
||||
For **full/partial mode** (has API keys):
|
||||
```
|
||||
---
|
||||
✅ All agents reported back!
|
||||
├─ 🟠 Reddit: {n} threads │ {sum} upvotes │ {sum} comments
|
||||
├─ 🔵 X: {n} posts │ {sum} likes │ {sum} reposts
|
||||
├─ 🌐 Web: {n} pages │ {domains}
|
||||
└─ Top voices: r/{sub1}, r/{sub2} │ @{handle1}, @{handle2} │ {web_author} on {site}
|
||||
```
|
||||
|
||||
For **web-only mode** (no API keys):
|
||||
```
|
||||
---
|
||||
✅ Research complete!
|
||||
├─ 🌐 Web: {n} pages │ {domains}
|
||||
└─ Top sources: {author1} on {site1}, {author2} on {site2}
|
||||
|
||||
💡 Want engagement metrics? Add API keys to ~/.config/last30days/.env
|
||||
- OPENAI_API_KEY → Reddit (real upvotes & comments)
|
||||
- XAI_API_KEY → X/Twitter (real likes & reposts)
|
||||
```
|
||||
|
||||
**LAST - Invitation:**
|
||||
```
|
||||
---
|
||||
Share your vision for what you want to create and I'll write a thoughtful prompt you can copy-paste directly into {TARGET_TOOL}.
|
||||
```
|
||||
|
||||
**Use real numbers from the research output.** The patterns should be actual insights from the research, not generic advice.
|
||||
|
||||
**SELF-CHECK before displaying**: Re-read your "What I learned" section. Does it match what the research ACTUALLY says? If the research was about ClawdBot (a self-hosted AI agent), your summary should be about ClawdBot, not Claude Code. If you catch yourself projecting your own knowledge instead of the research, rewrite it.
|
||||
|
||||
**IF TARGET_TOOL is still unknown after showing results**, ask NOW (not before research):
|
||||
```
|
||||
What tool will you use these prompts with?
|
||||
|
||||
Options:
|
||||
1. [Most relevant tool based on research - e.g., if research mentioned Figma/Sketch, offer those]
|
||||
2. Nano Banana Pro (image generation)
|
||||
3. ChatGPT / Claude (text/code)
|
||||
4. Other (tell me)
|
||||
```
|
||||
|
||||
**IMPORTANT**: After displaying this, WAIT for the user to respond. Don't dump generic prompts.
|
||||
|
||||
---
|
||||
|
||||
## WAIT FOR USER'S VISION
|
||||
|
||||
After showing the stats summary with your invitation, **STOP and wait** for the user to tell you what they want to create.
|
||||
|
||||
When they respond with their vision (e.g., "I want a landing page mockup for my SaaS app"), THEN write a single, thoughtful, tailored prompt.
|
||||
|
||||
---
|
||||
|
||||
## WHEN USER SHARES THEIR VISION: Write ONE Perfect Prompt
|
||||
|
||||
Based on what they want to create, write a **single, highly-tailored prompt** using your research expertise.
|
||||
|
||||
### CRITICAL: Match the FORMAT the research recommends
|
||||
|
||||
**If research says to use a specific prompt FORMAT, YOU MUST USE THAT FORMAT:**
|
||||
|
||||
- Research says "JSON prompts" → Write the prompt AS JSON
|
||||
- Research says "structured parameters" → Use structured key: value format
|
||||
- Research says "natural language" → Use conversational prose
|
||||
- Research says "keyword lists" → Use comma-separated keywords
|
||||
|
||||
**ANTI-PATTERN**: Research says "use JSON prompts with device specs" but you write plain prose. This defeats the entire purpose of the research.
|
||||
|
||||
### Output Format:
|
||||
|
||||
```
|
||||
Here's your prompt for {TARGET_TOOL}:
|
||||
|
||||
---
|
||||
|
||||
[The actual prompt IN THE FORMAT THE RESEARCH RECOMMENDS - if research said JSON, this is JSON. If research said natural language, this is prose. Match what works.]
|
||||
|
||||
---
|
||||
|
||||
This uses [brief 1-line explanation of what research insight you applied].
|
||||
```
|
||||
|
||||
### Quality Checklist:
|
||||
- [ ] **FORMAT MATCHES RESEARCH** - If research said JSON/structured/etc, prompt IS that format
|
||||
- [ ] Directly addresses what the user said they want to create
|
||||
- [ ] Uses specific patterns/keywords discovered in research
|
||||
- [ ] Ready to paste with zero edits (or minimal [PLACEHOLDERS] clearly marked)
|
||||
- [ ] Appropriate length and style for TARGET_TOOL
|
||||
|
||||
---
|
||||
|
||||
## IF USER ASKS FOR MORE OPTIONS
|
||||
|
||||
Only if they ask for alternatives or more prompts, provide 2-3 variations. Don't dump a prompt pack unless requested.
|
||||
|
||||
---
|
||||
|
||||
## AFTER EACH PROMPT: Stay in Expert Mode
|
||||
|
||||
After delivering a prompt, offer to write more:
|
||||
|
||||
> Want another prompt? Just tell me what you're creating next.
|
||||
|
||||
---
|
||||
|
||||
## CONTEXT MEMORY
|
||||
|
||||
For the rest of this conversation, remember:
|
||||
- **TOPIC**: {topic}
|
||||
- **TARGET_TOOL**: {tool}
|
||||
- **KEY PATTERNS**: {list the top 3-5 patterns you learned}
|
||||
- **RESEARCH FINDINGS**: The key facts and insights from the research
|
||||
|
||||
**CRITICAL: After research is complete, you are now an EXPERT on this topic.**
|
||||
|
||||
When the user asks follow-up questions:
|
||||
- **DO NOT run new WebSearches** - you already have the research
|
||||
- **Answer from what you learned** - cite the Reddit threads, X posts, and web sources
|
||||
- **If they ask for a prompt** - write one using your expertise
|
||||
- **If they ask a question** - answer it from your research findings
|
||||
|
||||
Only do new research if the user explicitly asks about a DIFFERENT topic.
|
||||
|
||||
---
|
||||
|
||||
## Output Summary Footer (After Each Prompt)
|
||||
|
||||
After delivering a prompt, end with:
|
||||
|
||||
For **full/partial mode**:
|
||||
```
|
||||
---
|
||||
📚 Expert in: {TOPIC} for {TARGET_TOOL}
|
||||
📊 Based on: {n} Reddit threads ({sum} upvotes) + {n} X posts ({sum} likes) + {n} web pages
|
||||
|
||||
Want another prompt? Just tell me what you're creating next.
|
||||
```
|
||||
|
||||
For **web-only mode**:
|
||||
```
|
||||
---
|
||||
📚 Expert in: {TOPIC} for {TARGET_TOOL}
|
||||
📊 Based on: {n} web pages from {domains}
|
||||
|
||||
Want another prompt? Just tell me what you're creating next.
|
||||
|
||||
💡 Unlock Reddit & X data: Add API keys to ~/.config/last30days/.env
|
||||
```
|
||||
@@ -1,871 +0,0 @@
|
||||
---
|
||||
name: last30days
|
||||
version: "2.9.6"
|
||||
description: "Deep research engine covering the last 30 days across 10+ sources - Reddit, X/Twitter, YouTube, TikTok, Instagram, Hacker News, Polymarket, and the web. AI synthesizes findings into grounded, cited reports."
|
||||
argument-hint: 'last30 AI video tools, last30 best project management tools'
|
||||
allowed-tools: Bash, Read, Write, AskUserQuestion, WebSearch
|
||||
homepage: https://github.com/mvanhorn/last30days-skill
|
||||
repository: https://github.com/mvanhorn/last30days-skill
|
||||
author: mvanhorn
|
||||
license: MIT
|
||||
user-invocable: true
|
||||
metadata:
|
||||
openclaw:
|
||||
emoji: "📰"
|
||||
requires:
|
||||
env:
|
||||
- SCRAPECREATORS_API_KEY
|
||||
optionalEnv:
|
||||
- OPENAI_API_KEY
|
||||
- XAI_API_KEY
|
||||
- OPENROUTER_API_KEY
|
||||
- PARALLEL_API_KEY
|
||||
- BRAVE_API_KEY
|
||||
- APIFY_API_TOKEN
|
||||
- AUTH_TOKEN
|
||||
- CT0
|
||||
- BSKY_HANDLE
|
||||
- BSKY_APP_PASSWORD
|
||||
- TRUTHSOCIAL_TOKEN
|
||||
bins:
|
||||
- node
|
||||
- python3
|
||||
primaryEnv: SCRAPECREATORS_API_KEY
|
||||
files:
|
||||
- "scripts/*"
|
||||
homepage: https://github.com/mvanhorn/last30days-skill
|
||||
tags:
|
||||
- research
|
||||
- deep-research
|
||||
- reddit
|
||||
- x
|
||||
- twitter
|
||||
- youtube
|
||||
- tiktok
|
||||
- instagram
|
||||
- hackernews
|
||||
- polymarket
|
||||
- bluesky
|
||||
- truthsocial
|
||||
- trends
|
||||
- recency
|
||||
- news
|
||||
- citations
|
||||
- multi-source
|
||||
- social-media
|
||||
- analysis
|
||||
- web-search
|
||||
- ai-skill
|
||||
- clawhub
|
||||
---
|
||||
|
||||
# last30days v2.9.5: Research Any Topic from the Last 30 Days
|
||||
|
||||
> **Permissions overview:** Reads public web/platform data and optionally saves research briefings to `~/Documents/Last30Days/`. X/Twitter search uses optional user-provided tokens (AUTH_TOKEN/CT0 env vars). Bluesky search uses optional app password (BSKY_HANDLE/BSKY_APP_PASSWORD env vars - create at bsky.app/settings/app-passwords). All credential usage and data writes are documented in the [Security & Permissions](#security--permissions) section.
|
||||
|
||||
Research ANY topic across Reddit, X, YouTube, and other sources. Surface what people are actually discussing, recommending, betting on, and debating right now.
|
||||
|
||||
## Step 0: First-Run Setup Wizard
|
||||
|
||||
**CRITICAL: ALWAYS execute Step 0 BEFORE Step 1, even if the user provided a topic.** If the user typed `/last30days Mercer Island`, you MUST check for FIRST_RUN and present the wizard BEFORE running research. The topic "Mercer Island" is preserved — research runs immediately after the wizard completes. Do NOT skip the wizard because a topic was provided. The wizard takes 10 seconds and only runs once ever.
|
||||
|
||||
To detect first run: check if `~/.config/last30days/.env` exists. If it does NOT exist, this is a first run. **Do NOT run any Bash commands or show any command output to detect this — just check the file existence silently.** If the file exists and contains `SETUP_COMPLETE=true`, skip this section and proceed to Step 1.
|
||||
|
||||
**When first run is detected, you MUST follow these steps IN ORDER. Do NOT skip ahead to the topic picker or research. The sequence is: (1) welcome text → (2) setup modal → (3) run setup if chosen → (4) ScrapeCreators modal → (5) topic picker. You MUST start at step 1.**
|
||||
|
||||
**Step 1: Display the following welcome text ONCE as a normal message (not blockquoted). Then IMMEDIATELY call AskUserQuestion — do NOT repeat any of the welcome text inside the AskUserQuestion call.**
|
||||
|
||||
👋 Welcome to /last30days!
|
||||
|
||||
I research any topic across Reddit, X, YouTube, and other sources — synthesizing what people are actually saying right now.
|
||||
|
||||
To get the best results, I can:
|
||||
🔍 **Scan your browser** for X/Twitter cookies (free X search — reads x.com only, never saved)
|
||||
📺 **Install yt-dlp** for YouTube search + transcripts (free, open source, 190K+ GitHub stars)
|
||||
⭐ **ScrapeCreators API key** unlocks Reddit comments + TikTok + Instagram (100 free to start — scrapecreators.com)
|
||||
|
||||
We recommend all 3 before your first run — it's what makes the magic. More community sources available later. We get no kickbacks from any of these.
|
||||
|
||||
**Then call AskUserQuestion with ONLY this question and these options — no additional text:**
|
||||
|
||||
Question: "How would you like to set up?"
|
||||
Options:
|
||||
- "Auto setup (~30 seconds) — scans browser for X cookies (free X search) and installs yt-dlp (free YouTube transcripts)"
|
||||
- "Manual setup — show me what to configure"
|
||||
- "Skip for now — Reddit (threads only), HN, Polymarket, Web"
|
||||
|
||||
**If the user picks 1 (Auto setup):**
|
||||
Run the setup subcommand:
|
||||
```bash
|
||||
cd {SKILL_DIR} && python3 scripts/last30days.py setup
|
||||
```
|
||||
Show the user the results (what cookies were found, whether yt-dlp was installed).
|
||||
|
||||
**Then show the ScrapeCreators push (plain text, then modal):**
|
||||
|
||||
⭐ One more thing — Reddit comments are some of the best content on the internet. The top-voted replies often have sharper insights than the posts themselves. ScrapeCreators unlocks these (plus TikTok + Instagram) — 100 free to start, no credit card.
|
||||
|
||||
**Call AskUserQuestion:**
|
||||
Question: "Want to add Reddit comments to your research?"
|
||||
Options:
|
||||
- "Open scrapecreators.com to get my free key" — run `open https://scrapecreators.com` via Bash to open in the user's browser. Then ask them to paste the API key they get. When they paste it, write SCRAPECREATORS_API_KEY={key} to ~/.config/last30days/.env
|
||||
- "I have a key — let me paste it" — accept the key, write to .env
|
||||
- "Skip for now — start researching" — proceed without ScrapeCreators
|
||||
|
||||
**After ScrapeCreators modal (or skip), show the first research topic modal:**
|
||||
|
||||
**Call AskUserQuestion:**
|
||||
Question: "What do you want to research first?"
|
||||
Options:
|
||||
- "Claude Code vs Codex" — tech comparison
|
||||
- "Sam Altman" — person in the news
|
||||
- "Warriors Basketball" — sports
|
||||
- "AI Legal Prompting Techniques" — niche/professional
|
||||
- "Type my own topic"
|
||||
|
||||
If user picks an example, run research with that topic. If they pick "Type my own", ask them what they want to research. If the user originally provided a topic with the command (e.g., `/last30days Mercer Island`), skip this modal and use their topic directly.
|
||||
|
||||
**END OF FIRST-RUN WIZARD. Everything above in Step 0 ONLY runs on first run. If SETUP_COMPLETE=true exists in .env, skip ALL of Step 0 — no welcome, no setup, no ScrapeCreators modal, no topic picker. Go directly to Step 1 (Parse User Intent). The topic picker is ONLY for first-time users who haven't run /last30days before.**
|
||||
|
||||
**If the user picks 2 (Manual setup):**
|
||||
Show them this guide (present as plain text, not blockquoted):
|
||||
|
||||
**The magic of /last30days is Reddit comments + X posts together.** Here's how to unlock each source.
|
||||
|
||||
Add these to `~/.config/last30days/.env`:
|
||||
|
||||
**🔍 X/Twitter** (pick one — this is the most important):
|
||||
- `FROM_BROWSER=auto` — easiest, free. Scans your browser cookies for x.com login.
|
||||
- `AUTH_TOKEN=xxx` + `CT0=xxx` — paste your X cookies manually (x.com → F12 → Application → Cookies)
|
||||
- `XAI_API_KEY=xxx` — use an xAI/Grok API key instead (api.x.ai)
|
||||
|
||||
**⭐ Reddit Comments + TikTok + Instagram + YouTube backup** (one key, 5 platforms):
|
||||
- `SCRAPECREATORS_API_KEY=xxx` — 100 free to start at scrapecreators.com. This is the single most impactful key — Reddit comments are where the sharpest insights live.
|
||||
|
||||
**💡 Reddit discovery fallback** (optional):
|
||||
- `OPENAI_API_KEY=xxx` — ChatGPT web search for Reddit threads. Only used if ScrapeCreators isn't configured — SC is better.
|
||||
|
||||
**📺 YouTube** (primary engine):
|
||||
- Run `brew install yt-dlp` — free, open source. ScrapeCreators covers YouTube as backup if you skip this.
|
||||
|
||||
**Bonus sources** (add anytime):
|
||||
- `EXA_API_KEY=xxx` — semantic web search, 1K free/month (exa.ai)
|
||||
- `BSKY_HANDLE=you.bsky.social` + `BSKY_APP_PASSWORD=xxx` — Bluesky (free app password)
|
||||
- `BRAVE_API_KEY=xxx` — Brave web search
|
||||
- `OPENROUTER_API_KEY=xxx` — Perplexity Sonar Pro search
|
||||
|
||||
Always add this last line: `SETUP_COMPLETE=true`
|
||||
|
||||
You can paste your API keys right here and I'll write the file for you. Some people say giving LLMs your keys is risky, others live in YOLO mode. Your call.
|
||||
|
||||
**If the user pastes keys**, write them to `~/.config/last30days/.env` (create the file and parent dirs if needed, append without overwriting existing keys, always include `SETUP_COMPLETE=true`). Then proceed with research.
|
||||
|
||||
**If the user says they'll do it themselves**, tell them: "Save the file, then run `/last30days <topic>` to research anything." Then proceed with research using whatever sources are currently available.
|
||||
|
||||
**If the user picks Skip:**
|
||||
Proceed with research immediately using the user's original topic. Note: without setup, sources are limited to Reddit (threads only, no comments), HN, and Polymarket. X/Twitter and YouTube require setup.
|
||||
|
||||
---
|
||||
|
||||
## Do I Need API Keys?
|
||||
|
||||
When users ask about API keys, setup, or how to unlock more sources, reference this:
|
||||
|
||||
**You do NOT need API keys to use last30days.** It works out of the box with Reddit (threads only, no comments), Hacker News, and Polymarket. Browser cookies for X/Twitter are equivalent to an API key — just log into x.com in any browser and last30days will find your session automatically.
|
||||
|
||||
**Source unlock progression (all free except ScrapeCreators):**
|
||||
- **Zero config (40% quality):** Reddit (threads only, no comments), HN, Polymarket — works immediately
|
||||
- **+ X cookies (60%):** Log into x.com in any browser. last30days scans your cookies automatically. This is the same as having an API key — no signup required.
|
||||
- **+ yt-dlp (80%):** `brew install yt-dlp` — open source, 190K+ GitHub stars. Enables YouTube search and transcripts.
|
||||
- **+ ScrapeCreators (100%):** The only paid option worth mentioning. Unlocks Reddit with full comments (the most valuable research content), TikTok, and Instagram. 100 free API calls, no credit card — scrapecreators.com
|
||||
|
||||
**Key comparison:** X browser cookies = same access as an API key (free, no signup). ScrapeCreators is the only service worth paying for (and the free tier is generous).
|
||||
|
||||
last30days has no affiliation with any API provider — no referrals, no kickbacks.
|
||||
|
||||
---
|
||||
|
||||
## CRITICAL: Parse User Intent
|
||||
|
||||
Before doing anything, parse the user's input for:
|
||||
|
||||
1. **TOPIC**: What they want to learn about (e.g., "web app mockups", "Claude Code skills", "image generation")
|
||||
2. **TARGET TOOL** (if specified): Where they'll use the prompts (e.g., "Nano Banana Pro", "ChatGPT", "Midjourney")
|
||||
3. **QUERY TYPE**: What kind of research they want:
|
||||
- **PROMPTING** - "X prompts", "prompting for X", "X best practices" → User wants to learn techniques and get copy-paste prompts
|
||||
- **RECOMMENDATIONS** - "best X", "top X", "what X should I use", "recommended X" → User wants a LIST of specific things
|
||||
- **NEWS** - "what's happening with X", "X news", "latest on X" → User wants current events/updates
|
||||
- **COMPARISON** - "X vs Y", "X versus Y", "compare X and Y", "X or Y which is better" → User wants a side-by-side comparison
|
||||
- **GENERAL** - anything else → User wants broad understanding of the topic
|
||||
|
||||
Common patterns:
|
||||
- `[topic] for [tool]` → "web mockups for Nano Banana Pro" → TOOL IS SPECIFIED
|
||||
- `[topic] prompts for [tool]` → "UI design prompts for Midjourney" → TOOL IS SPECIFIED
|
||||
- Just `[topic]` → "iOS design mockups" → TOOL NOT SPECIFIED, that's OK
|
||||
- "best [topic]" or "top [topic]" → QUERY_TYPE = RECOMMENDATIONS
|
||||
- "what are the best [topic]" → QUERY_TYPE = RECOMMENDATIONS
|
||||
- "X vs Y" or "X versus Y" → QUERY_TYPE = COMPARISON, TOPIC_A = X, TOPIC_B = Y (split on ` vs ` or ` versus ` with spaces)
|
||||
|
||||
**IMPORTANT: Do NOT ask about target tool before research.**
|
||||
- If tool is specified in the query, use it
|
||||
- If tool is NOT specified, run research first, then ask AFTER showing results
|
||||
|
||||
**Store these variables:**
|
||||
- `TOPIC = [extracted topic]`
|
||||
- `TARGET_TOOL = [extracted tool, or "unknown" if not specified]`
|
||||
- `QUERY_TYPE = [RECOMMENDATIONS | NEWS | HOW-TO | COMPARISON | GENERAL]`
|
||||
- `TOPIC_A = [first item]` (only if COMPARISON)
|
||||
- `TOPIC_B = [second item]` (only if COMPARISON)
|
||||
|
||||
**DISPLAY your parsing to the user.** Before running any tools, output:
|
||||
|
||||
```
|
||||
I'll research {TOPIC} across Reddit, X, YouTube, and other sources to find what's been discussed in the last 30 days.
|
||||
|
||||
Parsed intent:
|
||||
- TOPIC = {TOPIC}
|
||||
- TARGET_TOOL = {TARGET_TOOL or "unknown"}
|
||||
- QUERY_TYPE = {QUERY_TYPE}
|
||||
|
||||
Research typically takes 2-8 minutes (niche topics take longer). Starting now.
|
||||
```
|
||||
|
||||
If TARGET_TOOL is known, mention it in the intro: "...to find {QUERY_TYPE}-style content for use in {TARGET_TOOL}."
|
||||
|
||||
This text MUST appear before you call any tools. It confirms to the user that you understood their request.
|
||||
|
||||
---
|
||||
|
||||
## Step 0.5: Resolve X Handle (if topic could have an X account)
|
||||
|
||||
If TOPIC looks like it could have its own X/Twitter account - **people, creators, brands, products, tools, companies, communities** (e.g., "Dor Brothers", "Jason Calacanis", "Nano Banana Pro", "Seedance", "Midjourney"), do ONE quick WebSearch:
|
||||
|
||||
```
|
||||
WebSearch("{TOPIC} X twitter handle site:x.com")
|
||||
```
|
||||
|
||||
From the results, extract their X/Twitter handle. Look for:
|
||||
- **Verified profile URLs** like `x.com/{handle}` or `twitter.com/{handle}`
|
||||
- Mentions like "@handle" in bios, articles, or social profiles
|
||||
- "Follow @handle on X" patterns
|
||||
|
||||
**Verify the account is real, not a parody/fan account.** Check for:
|
||||
- Verified/blue checkmark in the search results
|
||||
- Official website linking to the X account
|
||||
- Consistent naming (e.g., @thedorbrothers for "The Dor Brothers", not @DorBrosFan)
|
||||
- If results only show fan/parody/news accounts (not the entity's own account), skip - the entity may not have an X presence
|
||||
|
||||
If you find a clear, verified handle, pass it as `--x-handle={handle}` (without @). This searches that account's posts directly - finding content they posted that doesn't mention their own name.
|
||||
|
||||
**Skip this step if:**
|
||||
- TOPIC is clearly a generic concept, not an entity (e.g., "best rap songs 2026", "how to use Docker", "AI ethics debate")
|
||||
- TOPIC already contains @ (user provided the handle directly)
|
||||
- Using `--quick` depth
|
||||
- WebSearch shows no official X account exists for this entity
|
||||
|
||||
Store: `RESOLVED_HANDLE = {handle or empty}`
|
||||
|
||||
---
|
||||
|
||||
## Agent Mode (--agent flag)
|
||||
|
||||
If `--agent` appears in ARGUMENTS (e.g., `/last30days plaud granola --agent`):
|
||||
|
||||
1. **Skip** the intro display block ("I'll research X across Reddit...")
|
||||
2. **Skip** any `AskUserQuestion` calls - use `TARGET_TOOL = "unknown"` if not specified
|
||||
3. **Run** the research script and WebSearch exactly as normal
|
||||
4. **Skip** the "WAIT FOR USER RESPONSE" pause
|
||||
5. **Skip** the follow-up invitation ("I'm now an expert on X...")
|
||||
6. **Output** the complete research report and stop - do not wait for further input
|
||||
|
||||
Agent mode saves raw research data to `~/Documents/Last30Days/` automatically via `--save-dir` (handled by the script, no extra tool calls).
|
||||
|
||||
Agent mode report format:
|
||||
|
||||
```
|
||||
## Research Report: {TOPIC}
|
||||
Generated: {date} | Sources: Reddit, X, Bluesky, YouTube, TikTok, HN, Polymarket, Web
|
||||
|
||||
### Key Findings
|
||||
[3-5 bullet points, highest-signal insights with citations]
|
||||
|
||||
### What I learned
|
||||
{The full "What I learned" synthesis from normal output}
|
||||
|
||||
### Stats
|
||||
{The standard stats block}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## If QUERY_TYPE = COMPARISON
|
||||
|
||||
When the user asks "X vs Y", run THREE research passes in parallel:
|
||||
|
||||
**Pass 1 + 2 (parallel Bash calls):**
|
||||
```bash
|
||||
# Run BOTH of these as parallel Bash tool calls in a single message:
|
||||
python3 "${SKILL_ROOT}/scripts/last30days.py" {TOPIC_A} --emit=compact --no-native-web --save-dir=~/Documents/Last30Days
|
||||
python3 "${SKILL_ROOT}/scripts/last30days.py" {TOPIC_B} --emit=compact --no-native-web --save-dir=~/Documents/Last30Days
|
||||
```
|
||||
|
||||
**Pass 3 (after passes 1+2 complete):**
|
||||
```bash
|
||||
python3 "${SKILL_ROOT}/scripts/last30days.py" "{TOPIC_A} vs {TOPIC_B}" --emit=compact --no-native-web --save-dir=~/Documents/Last30Days
|
||||
```
|
||||
|
||||
Then do WebSearch for: `{TOPIC_A} vs {TOPIC_B} comparison 2026` and `{TOPIC_A} vs {TOPIC_B} which is better`.
|
||||
|
||||
**Skip the normal Step 1 below** - go directly to the comparison synthesis format (see "If QUERY_TYPE = COMPARISON" in the synthesis section).
|
||||
|
||||
---
|
||||
|
||||
## Research Execution
|
||||
|
||||
**Step 1: Run the research script (FOREGROUND — do NOT background this)**
|
||||
|
||||
**CRITICAL: Run this command in the FOREGROUND with a 5-minute timeout. Do NOT use run_in_background. The full output contains Reddit, X, AND YouTube data that you need to read completely.**
|
||||
|
||||
**IMPORTANT: The script handles API key/Codex auth detection automatically.** Run it and check the output to determine mode.
|
||||
|
||||
```bash
|
||||
# Find skill root — works in repo checkout, Claude Code, or Codex install
|
||||
for dir in \
|
||||
"." \
|
||||
"${CLAUDE_PLUGIN_ROOT:-}" \
|
||||
"${GEMINI_EXTENSION_DIR:-}" \
|
||||
"$HOME/.claude/plugins/marketplaces/last30days-skill" \
|
||||
"$HOME/.gemini/extensions/last30days-skill" \
|
||||
"$HOME/.gemini/extensions/last30days" \
|
||||
"$HOME/.claude/skills/last30days" \
|
||||
"$HOME/.agents/skills/last30days" \
|
||||
"$HOME/.codex/skills/last30days"; do
|
||||
[ -n "$dir" ] && [ -f "$dir/scripts/last30days.py" ] && SKILL_ROOT="$dir" && break
|
||||
done
|
||||
|
||||
if [ -z "${SKILL_ROOT:-}" ]; then
|
||||
echo "ERROR: Could not find scripts/last30days.py" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
python3 "${SKILL_ROOT}/scripts/last30days.py" $ARGUMENTS --emit=compact --no-native-web --save-dir=~/Documents/Last30Days # Add --x-handle=HANDLE if RESOLVED_HANDLE is set
|
||||
```
|
||||
|
||||
Use a **timeout of 300000** (5 minutes) on the Bash call. The script typically takes 1-3 minutes.
|
||||
|
||||
The script will automatically:
|
||||
- Detect available API keys
|
||||
- Run Reddit/X/YouTube/TikTok/Instagram/Hacker News/Polymarket searches
|
||||
- Output ALL results including YouTube transcripts, TikTok captions, Instagram captions, HN comments, and prediction market odds
|
||||
|
||||
**Read the ENTIRE output.** It contains EIGHT data sections in this order: Reddit items, X items, YouTube items, TikTok items, Instagram Reels items, Hacker News items, Polymarket items, and WebSearch items. If you miss sections, you will produce incomplete stats.
|
||||
|
||||
**YouTube items in the output look like:** `**{video_id}** (score:N) {channel_name} [N views, N likes]` followed by a title, URL, **transcript highlights** (pre-extracted quotable excerpts from the video), and an optional full transcript in a collapsible section. **Quote the highlights directly in your synthesis** - they are the YouTube equivalent of Reddit top comments. Attribute quotes to the channel name. Count them and include them in your synthesis and stats block.
|
||||
|
||||
**TikTok items in the output look like:** `**{TK_id}** (score:N) @{creator} [N views, N likes]` followed by a caption, URL, hashtags, and optional caption snippet. Count them and include them in your synthesis and stats block.
|
||||
|
||||
**Instagram Reels items in the output look like:** `**{IG_id}** (score:N) @{creator} (date) [N views, N likes]` followed by caption text, URL, and optional transcript. Count them and include them in your synthesis and stats block. Instagram provides unique creator/influencer perspective — weight it alongside TikTok.
|
||||
|
||||
---
|
||||
|
||||
## STEP 2: DO WEBSEARCH AFTER SCRIPT COMPLETES
|
||||
|
||||
After the script finishes, do WebSearch to supplement with blogs, tutorials, and news.
|
||||
|
||||
For **ALL modes**, do WebSearch to supplement (or provide all data in web-only mode).
|
||||
|
||||
Choose search queries based on QUERY_TYPE:
|
||||
|
||||
**If RECOMMENDATIONS** ("best X", "top X", "what X should I use"):
|
||||
- Search for: `best {TOPIC} recommendations`
|
||||
- Search for: `{TOPIC} list examples`
|
||||
- Search for: `most popular {TOPIC}`
|
||||
- Goal: Find SPECIFIC NAMES of things, not generic advice
|
||||
|
||||
**If NEWS** ("what's happening with X", "X news"):
|
||||
- Search for: `{TOPIC} news 2026`
|
||||
- Search for: `{TOPIC} announcement update`
|
||||
- Goal: Find current events and recent developments
|
||||
|
||||
**If PROMPTING** ("X prompts", "prompting for X"):
|
||||
- Search for: `{TOPIC} prompts examples 2026`
|
||||
- Search for: `{TOPIC} techniques tips`
|
||||
- Goal: Find prompting techniques and examples to create copy-paste prompts
|
||||
|
||||
**If GENERAL** (default):
|
||||
- Search for: `{TOPIC} 2026`
|
||||
- Search for: `{TOPIC} discussion`
|
||||
- Goal: Find what people are actually saying
|
||||
|
||||
For ALL query types:
|
||||
- **USE THE USER'S EXACT TERMINOLOGY** - don't substitute or add tech names based on your knowledge
|
||||
- EXCLUDE reddit.com, x.com, twitter.com (covered by script)
|
||||
- INCLUDE: blogs, tutorials, docs, news, GitHub repos
|
||||
- **DO NOT output a separate "Sources:" block** — instead, include the top 3-5 web
|
||||
source names as inline links on the 🌐 Web: stats line (see stats format below).
|
||||
The WebSearch tool requires citation; satisfy it there, not as a trailing section.
|
||||
|
||||
**Options** (passed through from user's command):
|
||||
- `--days=N` → Look back N days instead of 30 (e.g., `--days=7` for weekly roundup)
|
||||
- `--quick` → Faster, fewer sources (8-12 each)
|
||||
- (default) → Balanced (20-30 each)
|
||||
- `--deep` → Comprehensive (50-70 Reddit, 40-60 X)
|
||||
|
||||
---
|
||||
|
||||
## Judge Agent: Synthesize All Sources
|
||||
|
||||
**After all searches complete, internally synthesize (don't display stats yet):**
|
||||
|
||||
The Judge Agent must:
|
||||
1. Weight Reddit/X sources HIGHER (they have engagement signals: upvotes, likes)
|
||||
2. Weight YouTube sources HIGH (they have views, likes, and transcript content)
|
||||
3. Weight TikTok sources HIGH (they have views, likes, and caption content — viral signal)
|
||||
4. Weight WebSearch sources LOWER (no engagement data)
|
||||
5. **For Reddit: Pay special attention to top comments** — they often contain the wittiest, most insightful, or funniest take. When a top comment has high upvotes (shown as `💬 Top comment (N upvotes)`), quote it directly in your synthesis. Reddit's value is in the comments.
|
||||
6. **For YouTube: Quote transcript highlights directly in your synthesis.** These are pre-extracted key moments from the video - treat them like Reddit top comments. Attribute to the channel name and include the actual quote. YouTube's value is in what creators SAY, not just their view counts.
|
||||
7. Identify patterns that appear across ALL sources (strongest signals)
|
||||
8. Note any contradictions between sources
|
||||
9. Extract the top 3-5 actionable insights
|
||||
|
||||
7. **Cross-platform signals are the strongest evidence.** When items have `[also on: Reddit, HN]` or similar tags, it means the same story appears across multiple platforms. Lead with these cross-platform findings - they're the most important signals in the research.
|
||||
|
||||
### Prediction Markets (Polymarket)
|
||||
|
||||
**CRITICAL: When Polymarket returns relevant markets, prediction market odds are among the highest-signal data points in your research.** Real money on outcomes cuts through opinion. Treat them as strong evidence, not an afterthought.
|
||||
|
||||
**How to interpret and synthesize Polymarket data:**
|
||||
|
||||
1. **Prefer structural/long-term markets over near-term deadlines.** Championship odds > regular season title. Regime change > near-term strike deadline. IPO/major milestone > incremental update. Presidency > individual state primary. When multiple markets exist, the bigger question is more interesting to the user.
|
||||
|
||||
2. **When the topic is an outcome in a multi-outcome market, call out that specific outcome's odds and movement.** Don't just say "Polymarket has a #1 seed market" - say "Arizona has a 28% chance of being the #1 overall seed, up 10% this month." The user cares about THEIR topic's position in the market.
|
||||
|
||||
3. **Weave odds into the narrative as supporting evidence.** Don't isolate Polymarket data in its own paragraph. Instead: "Final Four buzz is building - Polymarket gives Arizona a 12% chance to win the championship (up 3% this week), and 28% to earn a #1 seed."
|
||||
|
||||
4. **Citation format:** Always include specific odds AND movement. "Polymarket has Arizona at 28% for a #1 seed (up 10% this month)" - not just "per Polymarket."
|
||||
|
||||
5. **When multiple relevant markets exist, highlight 3-5 of the most interesting ones** in your synthesis, ordered by importance (structural > near-term). Don't just pick the highest-volume one.
|
||||
|
||||
**Domain examples of market importance ranking:**
|
||||
- **Sports:** Championship/tournament odds > conference title > regular season > weekly matchup
|
||||
- **Geopolitics:** Regime change/structural outcomes > near-term strike deadlines > sanctions
|
||||
- **Tech/Business:** IPO, major product launch, company milestones > incremental updates
|
||||
- **Elections:** Presidency > primary > individual state
|
||||
|
||||
**Do NOT display stats here - they come at the end, right before the invitation.**
|
||||
|
||||
---
|
||||
|
||||
## FIRST: Internalize the Research
|
||||
|
||||
**CRITICAL: Ground your synthesis in the ACTUAL research content, not your pre-existing knowledge.**
|
||||
|
||||
Read the research output carefully. Pay attention to:
|
||||
- **Exact product/tool names** mentioned (e.g., if research mentions "ClawdBot" or "@clawdbot", that's a DIFFERENT product than "Claude Code" - don't conflate them)
|
||||
- **Specific quotes and insights** from the sources - use THESE, not generic knowledge
|
||||
- **What the sources actually say**, not what you assume the topic is about
|
||||
|
||||
**ANTI-PATTERN TO AVOID**: If user asks about "clawdbot skills" and research returns ClawdBot content (self-hosted AI agent), do NOT synthesize this as "Claude Code skills" just because both involve "skills". Read what the research actually says.
|
||||
|
||||
### If QUERY_TYPE = RECOMMENDATIONS
|
||||
|
||||
**CRITICAL: Extract SPECIFIC NAMES, not generic patterns.**
|
||||
|
||||
When user asks "best X" or "top X", they want a LIST of specific things:
|
||||
- Scan research for specific product names, tool names, project names, skill names, etc.
|
||||
- Count how many times each is mentioned
|
||||
- Note which sources recommend each (Reddit thread, X post, blog)
|
||||
- List them by popularity/mention count
|
||||
|
||||
**BAD synthesis for "best Claude Code skills":**
|
||||
> "Skills are powerful. Keep them under 500 lines. Use progressive disclosure."
|
||||
|
||||
**GOOD synthesis for "best Claude Code skills":**
|
||||
> "Most mentioned skills: /commit (5 mentions), remotion skill (4x), git-worktree (3x), /pr (3x). The Remotion announcement got 16K likes on X."
|
||||
|
||||
### If QUERY_TYPE = COMPARISON
|
||||
|
||||
Structure the output as a side-by-side comparison using data from all three research passes:
|
||||
|
||||
```
|
||||
# {TOPIC_A} vs {TOPIC_B}: What the Community Says (Last 30 Days)
|
||||
|
||||
## Quick Verdict
|
||||
[1-2 sentence data-driven summary: which one the community prefers and why, with source counts]
|
||||
|
||||
## {TOPIC_A}
|
||||
**Community Sentiment:** [Positive/Mixed/Negative] ({N} mentions across {sources})
|
||||
|
||||
**Strengths (what people love)**
|
||||
- [Point 1 with source attribution]
|
||||
- [Point 2]
|
||||
|
||||
**Weaknesses (common complaints)**
|
||||
- [Point 1 with source attribution]
|
||||
- [Point 2]
|
||||
|
||||
## {TOPIC_B}
|
||||
**Community Sentiment:** [Positive/Mixed/Negative] ({N} mentions across {sources})
|
||||
|
||||
**Strengths (what people love)**
|
||||
- [Point 1 with source attribution]
|
||||
- [Point 2]
|
||||
|
||||
**Weaknesses (common complaints)**
|
||||
- [Point 1 with source attribution]
|
||||
- [Point 2]
|
||||
|
||||
## Head-to-Head
|
||||
[Synthesis from the "A vs B" combined search - what people say when directly comparing]
|
||||
|
||||
| Dimension | {TOPIC_A} | {TOPIC_B} |
|
||||
|-----------|-----------|-----------|
|
||||
| [Key dimension 1] | [A's position] | [B's position] |
|
||||
| [Key dimension 2] | [A's position] | [B's position] |
|
||||
| [Key dimension 3] | [A's position] | [B's position] |
|
||||
|
||||
## The Bottom Line
|
||||
Choose {TOPIC_A} if... Choose {TOPIC_B} if... (based on actual community data, not assumptions)
|
||||
```
|
||||
|
||||
Then show combined stats from all three passes and the standard invitation section.
|
||||
|
||||
### For all QUERY_TYPEs
|
||||
|
||||
Identify from the ACTUAL RESEARCH OUTPUT:
|
||||
- **PROMPT FORMAT** - Does research recommend JSON, structured params, natural language, keywords?
|
||||
- The top 3-5 patterns/techniques that appeared across multiple sources
|
||||
- Specific keywords, structures, or approaches mentioned BY THE SOURCES
|
||||
- Common pitfalls mentioned BY THE SOURCES
|
||||
|
||||
---
|
||||
|
||||
## THEN: Show Summary + Invite Vision
|
||||
|
||||
**Display in this EXACT sequence:**
|
||||
|
||||
**FIRST - What I learned (based on QUERY_TYPE):**
|
||||
|
||||
**If RECOMMENDATIONS** - Show specific things mentioned with sources:
|
||||
```
|
||||
🏆 Most mentioned:
|
||||
|
||||
[Tool Name] - {n}x mentions
|
||||
Use Case: [what it does]
|
||||
Sources: @handle1, @handle2, r/sub, blog.com
|
||||
|
||||
[Tool Name] - {n}x mentions
|
||||
Use Case: [what it does]
|
||||
Sources: @handle3, r/sub2, Complex
|
||||
|
||||
Notable mentions: [other specific things with 1-2 mentions]
|
||||
```
|
||||
|
||||
**CRITICAL for RECOMMENDATIONS:**
|
||||
- Each item MUST have a "Sources:" line with actual @handles from X posts (e.g., @LONGLIVE47, @ByDobson)
|
||||
- Include subreddit names (r/hiphopheads) and web sources (Complex, Variety)
|
||||
- Parse @handles from research output and include the highest-engagement ones
|
||||
- Format naturally - tables work well for wide terminals, stacked cards for narrow
|
||||
|
||||
**If PROMPTING/NEWS/GENERAL** - Show synthesis and patterns:
|
||||
|
||||
CITATION RULE: Cite sources sparingly to prove research is real.
|
||||
- In the "What I learned" intro: cite 1-2 top sources total, not every sentence
|
||||
- In KEY PATTERNS: cite 1 source per pattern, short format: "per @handle" or "per r/sub"
|
||||
- Do NOT include engagement metrics in citations (likes, upvotes) - save those for stats box
|
||||
- Do NOT chain multiple citations: "per @x, @y, @z" is too much. Pick the strongest one.
|
||||
|
||||
CITATION PRIORITY (most to least preferred):
|
||||
1. @handles from X — "per @handle" (these prove the tool's unique value)
|
||||
2. r/subreddits from Reddit — "per r/subreddit" (when citing Reddit, prefer quoting top comments over just the thread title)
|
||||
3. YouTube channels — "per [channel name] on YouTube" (transcript-backed insights)
|
||||
4. TikTok creators — "per @creator on TikTok" (viral/trending signal)
|
||||
5. Instagram creators — "per @creator on Instagram" (influencer/creator signal)
|
||||
6. HN discussions — "per HN" or "per hn/username" (developer community signal)
|
||||
7. Polymarket — "Polymarket has X at Y% (up/down Z%)" with specific odds and movement
|
||||
8. Web sources — ONLY when Reddit/X/YouTube/TikTok/Instagram/HN/Polymarket don't cover that specific fact
|
||||
|
||||
The tool's value is surfacing what PEOPLE are saying, not what journalists wrote.
|
||||
When both a web article and an X post cover the same fact, cite the X post.
|
||||
|
||||
URL FORMATTING: NEVER paste raw URLs anywhere in the output — not in synthesis, not in stats, not in sources.
|
||||
- **BAD:** "per https://www.rollingstone.com/music/music-news/kanye-west-bully-1235506094/"
|
||||
- **GOOD:** "per Rolling Stone"
|
||||
- **BAD stats line:** `🌐 Web: 10 pages — https://later.com/blog/..., https://buffer.com/...`
|
||||
- **GOOD stats line:** `🌐 Web: 10 pages — Later, Buffer, CNN, SocialBee`
|
||||
Use the publication/site name, not the URL. The user doesn't need links — they need clean, readable text.
|
||||
|
||||
**BAD:** "His album is set for March 20 (per Rolling Stone; Billboard; Complex)."
|
||||
**GOOD:** "His album BULLY drops March 20 — fans on X are split on the tracklist, per @honest30bgfan_"
|
||||
**GOOD:** "Ye's apology got massive traction on r/hiphopheads"
|
||||
**OK** (web, only when Reddit/X don't have it): "The Hellwatt Festival runs July 4-18 at RCF Arena, per Billboard"
|
||||
|
||||
**Lead with people, not publications.** Start each topic with what Reddit/X
|
||||
users are saying/feeling, then add web context only if needed. The user came
|
||||
here for the conversation, not the press release.
|
||||
|
||||
```
|
||||
What I learned:
|
||||
|
||||
**{Topic 1}** — [1-2 sentences about what people are saying, per @handle or r/sub]
|
||||
|
||||
**{Topic 2}** — [1-2 sentences, per @handle or r/sub]
|
||||
|
||||
**{Topic 3}** — [1-2 sentences, per @handle or r/sub]
|
||||
|
||||
KEY PATTERNS from the research:
|
||||
1. [Pattern] — per @handle
|
||||
2. [Pattern] — per r/sub
|
||||
3. [Pattern] — per @handle
|
||||
```
|
||||
|
||||
**THEN - Quality Nudge (if present in the output):**
|
||||
|
||||
If the research output contains a `**🔍 Research Coverage:**` block, render it verbatim right before the stats block. This tells the user which core sources are missing and how to unlock them. Do NOT render this block if it is absent from the output (100% coverage = no nudge).
|
||||
|
||||
**THEN - Stats (right before invitation):**
|
||||
|
||||
**CRITICAL: Calculate actual totals from the research output.**
|
||||
- Count posts/threads from each section
|
||||
- Sum engagement: parse `[Xlikes, Yrt]` from each X post, `[Xpts, Ycmt]` from Reddit
|
||||
- Identify top voices: highest-engagement @handles from X, most active subreddits
|
||||
|
||||
**Copy this EXACTLY, replacing only the {placeholders}:**
|
||||
|
||||
```
|
||||
---
|
||||
✅ All agents reported back!
|
||||
├─ 🟠 Reddit: {N} threads │ {N} upvotes │ {N} comments
|
||||
├─ 🔵 X: {N} posts │ {N} likes │ {N} reposts
|
||||
├─ 🔴 YouTube: {N} videos │ {N} views │ {N} with transcripts
|
||||
├─ 🎵 TikTok: {N} videos │ {N} views │ {N} likes │ {N} with captions
|
||||
├─ 📸 Instagram: {N} reels │ {N} views │ {N} likes │ {N} with captions
|
||||
├─ 🟡 HN: {N} stories │ {N} points │ {N} comments
|
||||
├─ 🦋 Bluesky: {N} posts │ {N} likes │ {N} reposts
|
||||
├─ 🇺🇸 Truth Social: {N} posts │ {N} likes │ {N} reposts
|
||||
├─ 📊 Polymarket: {N} markets │ {short summary of up to 5 most relevant market odds, e.g. "Championship: 12%, #1 Seed: 28%, Big 12: 64%, vs Kansas: 71%"}
|
||||
├─ 🌐 Web: {N} pages — Source Name, Source Name, Source Name
|
||||
└─ 🗣️ Top voices: @{handle1} ({N} likes), @{handle2} │ r/{sub1}, r/{sub2}
|
||||
---
|
||||
```
|
||||
|
||||
**🌐 Web: line — how to extract site names from URLs:**
|
||||
Strip the protocol, path, and `www.` — use the recognizable publication name:
|
||||
- `https://later.com/blog/instagram-reels-trends/` → **Later**
|
||||
- `https://socialbee.com/blog/instagram-trends/` → **SocialBee**
|
||||
- `https://buffer.com/resources/instagram-algorithms/` → **Buffer**
|
||||
- `https://www.cnn.com/2026/02/22/tech/...` → **CNN**
|
||||
- `https://medium.com/the-ai-studio/...` → **Medium**
|
||||
- `https://radicaldatascience.wordpress.com/...` → **Radical Data Science**
|
||||
List as comma-separated plain names: `Later, SocialBee, Buffer, CNN, Medium`
|
||||
|
||||
**⚠️ WebSearch citation — ALREADY SATISFIED. DO NOT ADD A SOURCES SECTION.**
|
||||
The WebSearch tool mandates source citation. That requirement is FULLY satisfied by the source names on the 🌐 Web: line above. Do NOT append a separate "Sources:" section at the end of your response. Do NOT list URLs anywhere. The 🌐 Web: line IS your citation. Nothing more is needed.
|
||||
|
||||
**CRITICAL: Omit any source line that returned 0 results.** Do NOT show "0 threads", "0 stories", "0 markets", or "(no results this cycle)". If a source found nothing, DELETE that line entirely - don't include it at all.
|
||||
NEVER use plain text dashes (-) or pipe (|). ALWAYS use ├─ └─ │ and the emoji.
|
||||
|
||||
**SELF-CHECK before displaying**: Re-read your "What I learned" section. Does it match what the research ACTUALLY says? If you catch yourself projecting your own knowledge instead of the research, rewrite it.
|
||||
|
||||
**LAST - Invitation (adapt to QUERY_TYPE):**
|
||||
|
||||
**CRITICAL: Every invitation MUST include 2-3 specific example suggestions based on what you ACTUALLY learned from the research.** Don't be generic — show the user you absorbed the content by referencing real things from the results.
|
||||
|
||||
**If QUERY_TYPE = PROMPTING:**
|
||||
```
|
||||
---
|
||||
I'm now an expert on {TOPIC} for {TARGET_TOOL}. What do you want to make? For example:
|
||||
- [specific idea based on popular technique from research]
|
||||
- [specific idea based on trending style/approach from research]
|
||||
- [specific idea riffing on what people are actually creating]
|
||||
|
||||
Just describe your vision and I'll write a prompt you can paste straight into {TARGET_TOOL}.
|
||||
```
|
||||
|
||||
**If QUERY_TYPE = RECOMMENDATIONS:**
|
||||
```
|
||||
---
|
||||
I'm now an expert on {TOPIC}. Want me to go deeper? For example:
|
||||
- [Compare specific item A vs item B from the results]
|
||||
- [Explain why item C is trending right now]
|
||||
- [Help you get started with item D]
|
||||
```
|
||||
|
||||
**If QUERY_TYPE = NEWS:**
|
||||
```
|
||||
---
|
||||
I'm now an expert on {TOPIC}. Some things you could ask:
|
||||
- [Specific follow-up question about the biggest story]
|
||||
- [Question about implications of a key development]
|
||||
- [Question about what might happen next based on current trajectory]
|
||||
```
|
||||
|
||||
**If QUERY_TYPE = COMPARISON:**
|
||||
```
|
||||
---
|
||||
I've compared {TOPIC_A} vs {TOPIC_B} using the latest community data. Some things you could ask:
|
||||
- [Deep dive into {TOPIC_A} alone with /last30days {TOPIC_A}]
|
||||
- [Deep dive into {TOPIC_B} alone with /last30days {TOPIC_B}]
|
||||
- [Focus on a specific dimension from the comparison table]
|
||||
- [Look at a different time period with --days=7 or --days=90]
|
||||
```
|
||||
|
||||
**If QUERY_TYPE = GENERAL:**
|
||||
```
|
||||
---
|
||||
I'm now an expert on {TOPIC}. Some things I can help with:
|
||||
- [Specific question based on the most discussed aspect]
|
||||
- [Specific creative/practical application of what you learned]
|
||||
- [Deeper dive into a pattern or debate from the research]
|
||||
```
|
||||
|
||||
**Example invitations (to show the quality bar):**
|
||||
|
||||
For `/last30days nano banana pro prompts for Gemini`:
|
||||
> I'm now an expert on Nano Banana Pro for Gemini. What do you want to make? For example:
|
||||
> - Photorealistic product shots with natural lighting (the most requested style right now)
|
||||
> - Logo designs with embedded text (Gemini's new strength per the research)
|
||||
> - Multi-reference style transfer from a mood board
|
||||
>
|
||||
> Just describe your vision and I'll write a prompt you can paste straight into Gemini.
|
||||
|
||||
For `/last30days kanye west` (GENERAL):
|
||||
> I'm now an expert on Kanye West. Some things I can help with:
|
||||
> - What's the real story behind the apology letter — genuine or PR move?
|
||||
> - Break down the BULLY tracklist reactions and what fans are expecting
|
||||
> - Compare how Reddit vs X are reacting to the Bianca narrative
|
||||
|
||||
For `/last30days war in Iran` (NEWS):
|
||||
> I'm now an expert on the Iran situation. Some things you could ask:
|
||||
> - What are the realistic escalation scenarios from here?
|
||||
> - How is this playing differently in US vs international media?
|
||||
> - What's the economic impact on oil markets so far?
|
||||
|
||||
---
|
||||
|
||||
## WAIT FOR USER'S RESPONSE
|
||||
|
||||
**STOP and wait** for the user to respond. Do NOT call any tools after displaying the invitation. The research script already saved raw data to `~/Documents/Last30Days/` via `--save-dir`.
|
||||
|
||||
---
|
||||
|
||||
## WHEN USER RESPONDS
|
||||
|
||||
**Read their response and match the intent:**
|
||||
|
||||
- If they ask a **QUESTION** about the topic → Answer from your research (no new searches, no prompt)
|
||||
- If they ask to **GO DEEPER** on a subtopic → Elaborate using your research findings
|
||||
- If they describe something they want to **CREATE** → Write ONE perfect prompt (see below)
|
||||
- If they ask for a **PROMPT** explicitly → Write ONE perfect prompt (see below)
|
||||
|
||||
**Only write a prompt when the user wants one.** Don't force a prompt on someone who asked "what could happen next with Iran."
|
||||
|
||||
### Writing a Prompt
|
||||
|
||||
When the user wants a prompt, write a **single, highly-tailored prompt** using your research expertise.
|
||||
|
||||
### CRITICAL: Match the FORMAT the research recommends
|
||||
|
||||
**If research says to use a specific prompt FORMAT, YOU MUST USE THAT FORMAT.**
|
||||
|
||||
**ANTI-PATTERN**: Research says "use JSON prompts with device specs" but you write plain prose. This defeats the entire purpose of the research.
|
||||
|
||||
### Quality Checklist (run before delivering):
|
||||
- [ ] **FORMAT MATCHES RESEARCH** - If research said JSON/structured/etc, prompt IS that format
|
||||
- [ ] Directly addresses what the user said they want to create
|
||||
- [ ] Uses specific patterns/keywords discovered in research
|
||||
- [ ] Ready to paste with zero edits (or minimal [PLACEHOLDERS] clearly marked)
|
||||
- [ ] Appropriate length and style for TARGET_TOOL
|
||||
|
||||
### Output Format:
|
||||
|
||||
```
|
||||
Here's your prompt for {TARGET_TOOL}:
|
||||
|
||||
---
|
||||
|
||||
[The actual prompt IN THE FORMAT THE RESEARCH RECOMMENDS]
|
||||
|
||||
---
|
||||
|
||||
This uses [brief 1-line explanation of what research insight you applied].
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## IF USER ASKS FOR MORE OPTIONS
|
||||
|
||||
Only if they ask for alternatives or more prompts, provide 2-3 variations. Don't dump a prompt pack unless requested.
|
||||
|
||||
---
|
||||
|
||||
## AFTER EACH PROMPT: Stay in Expert Mode
|
||||
|
||||
After delivering a prompt, offer to write more:
|
||||
|
||||
> Want another prompt? Just tell me what you're creating next.
|
||||
|
||||
---
|
||||
|
||||
## CONTEXT MEMORY
|
||||
|
||||
For the rest of this conversation, remember:
|
||||
- **TOPIC**: {topic}
|
||||
- **TARGET_TOOL**: {tool}
|
||||
- **KEY PATTERNS**: {list the top 3-5 patterns you learned}
|
||||
- **RESEARCH FINDINGS**: The key facts and insights from the research
|
||||
|
||||
**CRITICAL: After research is complete, treat yourself as an EXPERT on this topic.**
|
||||
|
||||
When the user asks follow-up questions:
|
||||
- **DO NOT run new WebSearches** - you already have the research
|
||||
- **Answer from what you learned** - cite the Reddit threads, X posts, and web sources
|
||||
- **If they ask a question** - answer it from your research findings
|
||||
- **If they ask for a prompt** - write one using your expertise
|
||||
|
||||
Only do new research if the user explicitly asks about a DIFFERENT topic.
|
||||
|
||||
---
|
||||
|
||||
## Output Summary Footer (After Each Prompt)
|
||||
|
||||
After delivering a prompt, end with:
|
||||
|
||||
```
|
||||
---
|
||||
📚 Expert in: {TOPIC} for {TARGET_TOOL}
|
||||
📊 Based on: {n} Reddit threads ({sum} upvotes) + {n} X posts ({sum} likes) + {n} YouTube videos ({sum} views) + {n} TikTok videos ({sum} views) + {n} Instagram reels ({sum} views) + {n} HN stories ({sum} points) + {n} web pages
|
||||
|
||||
Want another prompt? Just tell me what you're creating next.
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Security & Permissions
|
||||
|
||||
**What this skill does:**
|
||||
- Sends search queries to ScrapeCreators API (`api.scrapecreators.com`) for Reddit search, subreddit discovery, and comment enrichment (requires SCRAPECREATORS_API_KEY — same key as TikTok + Instagram)
|
||||
- Legacy: Sends search queries to OpenAI's Responses API (`api.openai.com`) for Reddit discovery (fallback if no SCRAPECREATORS_API_KEY)
|
||||
- Sends search queries to Twitter's GraphQL API (via optional user-provided AUTH_TOKEN/CT0 env vars — no browser session access) or xAI's API (`api.x.ai`) for X search
|
||||
- Sends search queries to Algolia HN Search API (`hn.algolia.com`) for Hacker News story and comment discovery (free, no auth)
|
||||
- Sends search queries to Polymarket Gamma API (`gamma-api.polymarket.com`) for prediction market discovery (free, no auth)
|
||||
- Runs `yt-dlp` locally for YouTube search and transcript extraction (no API key, public data)
|
||||
- Sends search queries to ScrapeCreators API (`api.scrapecreators.com`) for TikTok and Instagram search, transcript/caption extraction (same SCRAPECREATORS_API_KEY as Reddit, PAYG after 100 free API calls)
|
||||
- Optionally sends search queries to Brave Search API, Parallel AI API, or OpenRouter API for web search
|
||||
- Fetches public Reddit thread data from `reddit.com` for engagement metrics
|
||||
- Stores research findings in local SQLite database (watchlist mode only)
|
||||
- Saves research briefings as .md files to ~/Documents/Last30Days/
|
||||
|
||||
**What this skill does NOT do:**
|
||||
- Does not post, like, or modify content on any platform
|
||||
- Does not access your Reddit, X, or YouTube accounts
|
||||
- Does not share API keys between providers (OpenAI key only goes to api.openai.com, etc.)
|
||||
- Does not log, cache, or write API keys to output files
|
||||
- Does not send data to any endpoint not listed above
|
||||
- Hacker News and Polymarket sources are always available (no API key, no binary dependency)
|
||||
- TikTok and Instagram sources require SCRAPECREATORS_API_KEY (same key covers both; 100 free API calls, then PAYG)
|
||||
- Can be invoked autonomously by agents via the Skill tool (runs inline, not forked); pass `--agent` for non-interactive report output
|
||||
|
||||
**Bundled scripts:** `scripts/last30days.py` (main research engine), `scripts/lib/` (search, enrichment, rendering modules), `scripts/lib/vendor/bird-search/` (vendored X search client, MIT licensed)
|
||||
|
||||
Review scripts before first use to verify behavior.
|
||||
@@ -1,77 +0,0 @@
|
||||
# last30days Skill Specification
|
||||
|
||||
## Overview
|
||||
|
||||
`last30days` is a Claude Code skill that researches a given topic across Reddit and X (Twitter) using the OpenAI Responses API and xAI Responses API respectively. It enforces a strict 30-day recency window, popularity-aware ranking, and produces actionable outputs including best practices, a prompt pack, and a reusable context snippet. OpenAI auth can come from `OPENAI_API_KEY` or Codex login credentials.
|
||||
|
||||
The skill operates in three modes depending on available API keys: **reddit-only** (OpenAI key), **x-only** (xAI key), or **both** (full cross-validation). It uses automatic model selection to stay current with the latest models from both providers, with optional pinning for stability.
|
||||
|
||||
## Architecture
|
||||
|
||||
The orchestrator (`last30days.py`) coordinates discovery, enrichment, normalization, scoring, deduplication, and rendering. Each concern is isolated in `scripts/lib/`:
|
||||
|
||||
- **env.py**: Load API keys from `~/.config/last30days/.env` and Codex auth from `~/.codex/auth.json`
|
||||
- **dates.py**: Date range calculation and confidence scoring
|
||||
- **cache.py**: 24-hour TTL caching keyed by topic + date range
|
||||
- **http.py**: stdlib-only HTTP client with retry logic
|
||||
- **models.py**: Auto-selection of OpenAI/xAI models with 7-day caching
|
||||
- **openai_reddit.py**: OpenAI Responses API + web_search for Reddit
|
||||
- **xai_x.py**: xAI Responses API + x_search for X
|
||||
- **reddit_enrich.py**: Fetch Reddit thread JSON for real engagement metrics
|
||||
- **hackernews.py**: Hacker News search via Algolia API (free, no auth)
|
||||
- **polymarket.py**: Polymarket prediction market search via Gamma API (free, no auth)
|
||||
- **normalize.py**: Convert raw API responses to canonical schema
|
||||
- **score.py**: Compute popularity-aware scores (relevance + recency + engagement)
|
||||
- **dedupe.py**: Near-duplicate detection via text similarity
|
||||
- **render.py**: Generate markdown and JSON outputs
|
||||
- **schema.py**: Type definitions and validation
|
||||
|
||||
## Embedding in Other Skills
|
||||
|
||||
Other skills can import the research context in several ways:
|
||||
|
||||
### Inline Context Injection
|
||||
```markdown
|
||||
## Recent Research Context
|
||||
!python3 ~/.claude/skills/last30days/scripts/last30days.py "your topic" --emit=context
|
||||
```
|
||||
|
||||
### Read from File
|
||||
```markdown
|
||||
## Research Context
|
||||
!cat ~/.local/share/last30days/out/last30days.context.md
|
||||
```
|
||||
|
||||
### Get Path for Dynamic Loading
|
||||
```bash
|
||||
CONTEXT_PATH=$(python3 ~/.claude/skills/last30days/scripts/last30days.py "topic" --emit=path)
|
||||
cat "$CONTEXT_PATH"
|
||||
```
|
||||
|
||||
### JSON for Programmatic Use
|
||||
```bash
|
||||
python3 ~/.claude/skills/last30days/scripts/last30days.py "topic" --emit=json > research.json
|
||||
```
|
||||
|
||||
## CLI Reference
|
||||
|
||||
```
|
||||
python3 ~/.claude/skills/last30days/scripts/last30days.py <topic> [options]
|
||||
|
||||
Options:
|
||||
--refresh Bypass cache and fetch fresh data
|
||||
--mock Use fixtures instead of real API calls
|
||||
--emit=MODE Output mode: compact|json|md|context|path (default: compact)
|
||||
--sources=MODE Source selection: auto|reddit|x|both (default: auto)
|
||||
```
|
||||
|
||||
## Output Files
|
||||
|
||||
All outputs are written to `~/.local/share/last30days/out/`:
|
||||
|
||||
- `report.md` - Human-readable full report
|
||||
- `report.json` - Normalized data with scores
|
||||
- `last30days.context.md` - Compact reusable snippet for other skills
|
||||
- `raw_openai.json` - Raw OpenAI API response
|
||||
- `raw_xai.json` - Raw xAI API response
|
||||
- `raw_reddit_threads_enriched.json` - Enriched Reddit thread data
|
||||
@@ -1,47 +0,0 @@
|
||||
# last30days Implementation Tasks
|
||||
|
||||
## Setup & Configuration
|
||||
- [x] Create directory structure
|
||||
- [x] Write SPEC.md
|
||||
- [x] Write TASKS.md
|
||||
- [x] Write SKILL.md with proper frontmatter
|
||||
|
||||
## Core Library Modules
|
||||
- [x] scripts/lib/env.py - Environment and API key loading
|
||||
- [x] scripts/lib/dates.py - Date range and confidence utilities
|
||||
- [x] scripts/lib/cache.py - TTL-based caching
|
||||
- [x] scripts/lib/http.py - HTTP client with retry
|
||||
- [x] scripts/lib/models.py - Auto model selection
|
||||
- [x] scripts/lib/schema.py - Data structures
|
||||
- [x] scripts/lib/openai_reddit.py - OpenAI Responses API
|
||||
- [x] scripts/lib/xai_x.py - xAI Responses API
|
||||
- [x] scripts/lib/reddit_enrich.py - Reddit thread JSON fetcher
|
||||
- [x] scripts/lib/normalize.py - Schema normalization
|
||||
- [x] scripts/lib/score.py - Popularity scoring
|
||||
- [x] scripts/lib/dedupe.py - Near-duplicate detection
|
||||
- [x] scripts/lib/render.py - Output rendering
|
||||
|
||||
## Main Script
|
||||
- [x] scripts/last30days.py - CLI orchestrator
|
||||
|
||||
## Fixtures
|
||||
- [x] fixtures/openai_sample.json
|
||||
- [x] fixtures/xai_sample.json
|
||||
- [x] fixtures/reddit_thread_sample.json
|
||||
- [x] fixtures/models_openai_sample.json
|
||||
- [x] fixtures/models_xai_sample.json
|
||||
|
||||
## Tests
|
||||
- [x] tests/test_dates.py
|
||||
- [x] tests/test_cache.py
|
||||
- [x] tests/test_models.py
|
||||
- [x] tests/test_score.py
|
||||
- [x] tests/test_dedupe.py
|
||||
- [x] tests/test_normalize.py
|
||||
- [x] tests/test_render.py
|
||||
|
||||
## Validation
|
||||
- [x] Run tests in mock mode
|
||||
- [x] Demo --emit=compact
|
||||
- [x] Demo --emit=context
|
||||
- [x] Verify file tree
|
||||
@@ -0,0 +1,37 @@
|
||||
# Changelog fragments
|
||||
|
||||
Feature and fix PRs add a fragment here. **Do not edit `CHANGELOG.md` or bump version manifests** — the release workflow does that.
|
||||
|
||||
You do **not** need the towncrier CLI to contribute. Fragments are ordinary Markdown files; towncrier runs only when a release is prepared. See [CONTRIBUTING.md](../CONTRIBUTING.md).
|
||||
|
||||
## Create a fragment
|
||||
|
||||
```bash
|
||||
# Prefer the PR or issue number when you know it:
|
||||
# changelog.d/<number>.<type>.md
|
||||
# Orphan (no linked issue/PR yet):
|
||||
# changelog.d/+.<type>.md or changelog.d/+short-slug.<type>.md
|
||||
```
|
||||
|
||||
### Types (Keep a Changelog)
|
||||
|
||||
| Suffix | Section |
|
||||
|--------|---------|
|
||||
| `security` | Security |
|
||||
| `removed` | Removed |
|
||||
| `deprecated` | Deprecated |
|
||||
| `added` | Added |
|
||||
| `changed` | Changed |
|
||||
| `fixed` | Fixed |
|
||||
|
||||
### Content
|
||||
|
||||
One or a few sentences of what shipped — behavior, docs, or install impact someone would care about in release notes. Link issues in the fragment body if useful; towncrier also links the number from the filename.
|
||||
|
||||
```markdown
|
||||
General reports no longer promote unanchored fallback entity misses into synthesis.
|
||||
```
|
||||
|
||||
### Skip
|
||||
|
||||
Pure chores (typos in comments, CI pin bumps with nothing for release notes) can omit a fragment and check **Skip changelog** in the PR template, or add the `skip-changelog` label.
|
||||
@@ -1,162 +0,0 @@
|
||||
## Research Results: Claude Code skills and MCP servers
|
||||
|
||||
**Date Range:** 2026-01-26 to 2026-02-25
|
||||
**Mode:** both
|
||||
**OpenAI Model:** gpt-5.2
|
||||
**xAI Model:** grok-4-1-fast
|
||||
|
||||
### Reddit Threads
|
||||
|
||||
**R2** (score:76) r/ClaudeCode (2026-02-22)
|
||||
We 3x'd our team's Claude Code skill usage in 2 weeks — here's how
|
||||
https://www.reddit.com/r/ClaudeCode/comments/1rbr5t7/we_3xd_our_teams_claude_code_skill_usage_in_2/
|
||||
*Discussion of Claude Code skills adoption/usage, plus mentions syncing skills/hooks/MCP configs.*
|
||||
|
||||
**R4** (score:75) r/ClaudeCode (2026-02-23)
|
||||
ClaudeInOne — a full framework for Claude Code, installed in one command
|
||||
https://www.reddit.com/r/ClaudeCode/comments/1rcbria/claudeinone_a_full_framework_for_claude_code/
|
||||
*Framework bundling many Claude Code skills/agents/commands; lots of skills-related discussion.*
|
||||
|
||||
**R1** (score:74) r/ClaudeCode (2026-02-18)
|
||||
Self-improvement Loop: My favorite Claude Code Skill
|
||||
https://www.reddit.com/r/ClaudeCode/comments/1r89084/selfimprovement_loop_my_favorite_claude_code_skill/
|
||||
*Directly about a Claude Code Skill (custom skill, how it works, SKILL.md).*
|
||||
|
||||
**R3** (score:66) r/ClaudeCode (2026-02-10)
|
||||
I built 12 SEO skills for Claude Code (open source)
|
||||
https://www.reddit.com/r/ClaudeCode/comments/1r0l549/i_built_12_seo_skills_for_claude_code_open_source/
|
||||
*Concrete example of building and sharing Claude Code skills.*
|
||||
|
||||
### X Posts
|
||||
|
||||
**X6** (score:86) @zeeg (2026-02-25) [4likes, 1rt]
|
||||
@adamwathan Codex has been crushing it for me with implicit skill usage to the point I was shocked
|
||||
|
||||
Claude Code I resorted to explicit mentions and I’ve been pleasantly surprised by how well Codex ha...
|
||||
https://x.com/zeeg/status/2026745680195367091
|
||||
**
|
||||
|
||||
**X4** (score:80) @ihtesham2005 (2026-02-25) [6likes]
|
||||
🚨 Anthropic just open-sourced the exact Skills library their own engineers use internally.
|
||||
|
||||
Stop building Claude workflows from scratch.
|
||||
|
||||
These are plug-and-play components that work across Claude Cod...
|
||||
https://x.com/ihtesham2005/status/2026752089473314975
|
||||
**
|
||||
|
||||
**X9** (score:74) @DevTenta (2026-02-25) [4likes]
|
||||
Day 7 building my first B2C app
|
||||
|
||||
Been setting everything up this week. Manually built 5 agents to help me in the early stages and set up the Claude Code skills i'll need for the build.
|
||||
|
||||
Also been test...
|
||||
https://x.com/DevTenta/status/2026742028730527786
|
||||
**
|
||||
|
||||
**X8** (score:64) @JorgeJaramillo (2026-02-25)
|
||||
@Jompiras Claude code + skills. Muy breve....
|
||||
https://x.com/JorgeJaramillo/status/2026743135435362649
|
||||
**
|
||||
|
||||
**X5** (score:64) @arpan7sarkar (2026-02-25)
|
||||
@tom_doerr 135 agents, 35 curated skills, 121 plugins and 6 MCP configs all in one Claude Code toolkit is absolutely insane value 🤯 this is the kind of community effort that makes an AI tool go from g...
|
||||
https://x.com/arpan7sarkar/status/2026746479369662551
|
||||
**
|
||||
|
||||
**X7** (score:64) @arpan7sarkar (2026-02-25)
|
||||
@tom_doerr A curated collection of Claude Skills organized by category is exactly what power users have been waiting for 🤩 document skills, code tools, data analysis all in one repo. this is the Claud...
|
||||
https://x.com/arpan7sarkar/status/2026745559986614335
|
||||
**
|
||||
|
||||
**X2** (score:64) @yasuky (2026-02-25)
|
||||
Claude CodeのSkillsを作成例から徹底理解する https://t.co/vZTseio2Ii...
|
||||
https://x.com/yasuky/status/2026754773786226708
|
||||
**
|
||||
|
||||
**X1** (score:64) @matgoldsborough (2026-02-25)
|
||||
How: I told Claude Code "build me a CRM." Our builder skill generated schemas, skills, server, seed data. I pointed Claude Desktop at it. Contacts, lead scoring, pipeline reviews. All from conversatio...
|
||||
https://x.com/matgoldsborough/status/2026755742737510749
|
||||
**
|
||||
|
||||
**X10** (score:64) @0x_Kapoor (2026-02-25)
|
||||
I can build another open claw, or claude bot, or even a messaging app in a nice prompt and although having engineering skills, I can push the code on the public repo and secure it even completely and ...
|
||||
https://x.com/0x_Kapoor/status/2026738663321907214
|
||||
**
|
||||
|
||||
**X11** (score:56) @ghumare64 (2026-02-25) [1likes]
|
||||
1. I use https://t.co/NtFYJEiFs9 inspired by @bcherny
|
||||
2. I use https://t.co/EwnmyWNFqn to sync skills and scan skills from the marketplace
|
||||
3. I chat with claude code 4-5 times and once I am satisifed...
|
||||
https://x.com/ghumare64/status/2026736176695246966
|
||||
**
|
||||
|
||||
**X12** (score:56) @hamen (2026-02-25) [1likes]
|
||||
The 'vibe coding' revolution is forcing a reckoning.
|
||||
|
||||
Developers with 15+ years experience are either embracing AI to expand their reach or watching their expertise become as valuable as COBOL skills....
|
||||
https://x.com/hamen/status/2026734075243790396
|
||||
**
|
||||
|
||||
### YouTube Videos
|
||||
|
||||
**X8afcX2s2Mo** (score:74) Grace Leung (2026-02-21) [47,474 views, 1,900 likes]
|
||||
Claude Skills: Build Your First AI Marketing Team in 16 Minutes (Claude Code)
|
||||
https://www.youtube.com/watch?v=X8afcX2s2Mo
|
||||
Transcript: Every marketer I know is stretch themed. Too many channels, too many deliverables, never enough time, whether you're running a team or doing it all yourself. And that's why I'm so obsessed with clock ...
|
||||
*YouTube video about claude code skills and mcp servers*
|
||||
|
||||
**0J2_YGuNrDo** (score:61) Grace Leung (2025-12-16) [155,806 views, 4,760 likes]
|
||||
Claude Code just Built me an AI Agent Team (Claude Code + Skills + MCP)
|
||||
https://www.youtube.com/watch?v=0J2_YGuNrDo
|
||||
Transcript: I use clot more than any other AI but even I dismiss Clark as just for developers and I was wrong after using myself I am completely so and this is too powerful to ignore if you want to use AI to buil...
|
||||
*YouTube video about claude code skills and mcp servers*
|
||||
|
||||
**vIUJ4Hd7be0** (score:59) Leon van Zyl (2026-02-09) [25,538 views, 699 likes]
|
||||
Claude Code Skills - The Only Tutorial You Need
|
||||
https://www.youtube.com/watch?v=vIUJ4Hd7be0
|
||||
*YouTube video about claude code skills and mcp servers*
|
||||
|
||||
**Gqh_KdHP1Xk** (score:56) Robin Ebers (2025-08-21) [90,281 views, 2,719 likes]
|
||||
8 MCP Servers That Make Claude Code 10x Better
|
||||
https://www.youtube.com/watch?v=Gqh_KdHP1Xk
|
||||
Transcript: Over 90% of all MCP servers are complete overhyped garbage. But some of them are not only worth it, they can be complete game changers. And I do not say this lightly. So after testing over 100 of them...
|
||||
*YouTube video about claude code skills and mcp servers*
|
||||
|
||||
**901VMcZq8X4** (score:51) Sean Kochel (2025-10-21) [44,602 views, 1,356 likes]
|
||||
These 5 Claude Code Skills Are Your New Unfair Advantage
|
||||
https://www.youtube.com/watch?v=901VMcZq8X4
|
||||
*YouTube video about claude code skills and mcp servers*
|
||||
|
||||
**l7qVtHpctic** (score:47) Kenny Liao (2026-01-17) [21,765 views, 728 likes]
|
||||
Claude Code's MCP Problem Just Got Fixed
|
||||
https://www.youtube.com/watch?v=l7qVtHpctic
|
||||
*YouTube video about claude code skills and mcp servers*
|
||||
|
||||
**M5CsRj6zSCA** (score:41) Eric Tech (2025-12-12) [11,286 views, 266 likes]
|
||||
5 MCP Servers That Make Claude Code 10x More Powerful (Full-Stack App Build)
|
||||
https://www.youtube.com/watch?v=M5CsRj6zSCA
|
||||
*YouTube video about claude code skills and mcp servers*
|
||||
|
||||
**qthyl0GCpDo** (score:35) Postman (2025-11-20) [7,045 views, 105 likes]
|
||||
Claude Skills vs MCP: What’s the Difference and When to Use Each?
|
||||
https://www.youtube.com/watch?v=qthyl0GCpDo
|
||||
*YouTube video about claude code skills and mcp servers*
|
||||
|
||||
**ZroGqu7GyXM** (score:34) Solo Swift Crafter (2025-10-27) [4,880 views, 98 likes]
|
||||
Claude Code Skills vs MCP vs Sub Agents: What Works for Solo Devs?
|
||||
https://www.youtube.com/watch?v=ZroGqu7GyXM
|
||||
*YouTube video about claude code skills and mcp servers*
|
||||
|
||||
**jzf7DQa2CAc** (score:31) Matt Kuda (2026-01-19) [2,547 views, 87 likes]
|
||||
How I Use Claude Code With Skills, MCP, Agents & Plugins
|
||||
https://www.youtube.com/watch?v=jzf7DQa2CAc
|
||||
*YouTube video about claude code skills and mcp servers*
|
||||
|
||||
---
|
||||
**Sources:**
|
||||
✅ Reddit: 4 threads
|
||||
✅ X: 11 posts
|
||||
✅ YouTube: 10 videos (3 with transcripts)
|
||||
⏭️ HN: 0 stories found
|
||||
⚡ Web: assistant will use WebSearch
|
||||
@@ -1,233 +0,0 @@
|
||||
## Research Results: Seedance AI video generation
|
||||
|
||||
**Date Range:** 2026-01-26 to 2026-02-25
|
||||
**Mode:** both
|
||||
**OpenAI Model:** gpt-5.2
|
||||
**xAI Model:** grok-4-1-fast
|
||||
|
||||
### Reddit Threads
|
||||
|
||||
**R23** (score:76) r/generativeAI (2026-02-24)
|
||||
Official website for creating content with Seedance 2.0?
|
||||
https://www.reddit.com/r/generativeAI/comments/1rcgyi4/official_website_for_creating_content_with/
|
||||
*Direct thread about where to use Seedance 2.0 for generating videos (and discussion of scams/third parties).*
|
||||
|
||||
**R19** (score:76) r/generativeAI (2026-02-22)
|
||||
This is terrifying!! Seedance 2.0 just generated a 1-minute film with ZERO editing — the entire film industry should be worried
|
||||
https://www.reddit.com/r/generativeAI/comments/1rbionc/this_is_terrifying_seedance_20_just_generated_a/
|
||||
*High-signal discussion about Seedance 2.0 video generation quality (multi-shot coherence, transitions, filmmaking).*
|
||||
|
||||
**R20** (score:75) r/Seedance_AI (2026-02-23)
|
||||
Help! I need to use seedance or jimeng video function
|
||||
https://www.reddit.com/r/Seedance_AI/comments/1rckgcm/help_i_need_to_use_seedance_or_jimeng_video/
|
||||
*Access/how-to thread specifically about using Seedance/Jimeng video generation.*
|
||||
|
||||
**R18** (score:72) r/Seedance_AI (2026-02-20)
|
||||
so disappointed and frustrated with recent changes (wasted 1k$+)
|
||||
https://www.reddit.com/r/Seedance_AI/comments/1ra6nf4/so_disappointed_and_frustrated_with_recent/
|
||||
*User report about Seedance video generation failing review/guardrails and credit usage—directly about Seedance generation.*
|
||||
|
||||
**R25** (score:71) r/SaasDevelopers (2026-02-24)
|
||||
Third-party Seedance 2.0 API
|
||||
https://www.reddit.com/r/SaasDevelopers/comments/1rdw3uz/thirdparty_seedance_20_api/
|
||||
*Discussion about Seedance 2.0 video generation availability via third-party API and Dreamina integration.*
|
||||
|
||||
**R21** (score:71) r/Seedance_AI (2026-02-23)
|
||||
What happened to doubao?
|
||||
https://www.reddit.com/r/Seedance_AI/comments/1rcox3z/what_happened_to_doubao/
|
||||
*Discussion around ByteDance/Doubao access issues while trying to use Seedance 2 (video generation availability).*
|
||||
|
||||
**R28** (score:68) r/Seedance_AI (2026-02-24)
|
||||
Selfie Situation • Seedance 2.0 • Third-party API by useapi.net
|
||||
https://www.reddit.com/r/Seedance_AI/comments/1rduxop/selfie_situation_seedance_20_thirdparty_api_by/
|
||||
*Seedance 2.0 discussion focused on third-party access and whether generations are truly Seedance 2.0 quality.*
|
||||
|
||||
**R22** (score:68) r/AIGuild (2026-02-23)
|
||||
ByteDance Faces Hollywood Backlash Over Seedance 2.0
|
||||
https://www.reddit.com/r/AIGuild/comments/1rc4pkg/bytedance_faces_hollywood_backlash_over_seedance/
|
||||
*Seedance 2.0 discussion tied to generated video content/IP concerns and potential impacts on access/release.*
|
||||
|
||||
**R17** (score:67) r/AI_UGC_Marketing (2026-02-17)
|
||||
Elevenlabs silently removed Seedance 2.0 after SAG-AFTRA incident, can’t create UGC style video
|
||||
https://www.reddit.com/r/AI_UGC_Marketing/comments/1r70942/elevenlabs_silently_removed_seedance_20_after/
|
||||
*Discussion about Seedance 2.0 availability/removal in a toolchain for generating UGC-style AI videos.*
|
||||
|
||||
**R27** (score:64) r/u_PoppyVonMiller (2026-02-24)
|
||||
Seedance 2.0 Music Video
|
||||
https://www.reddit.com/r/u_PoppyVonMiller/comments/1rdkptn/seedance_20_music_video/
|
||||
*Example/discussion of an output video made with Seedance 2.0 (AI video generation results).*
|
||||
|
||||
**R13** (score:63) r/generativeAI (2026-02-10)
|
||||
Where is the official Seedance website?
|
||||
https://www.reddit.com/r/generativeAI/comments/1r19eem/where_is_the_official_seedance_website/
|
||||
*Seedance access/official-site discussion (important for actually generating videos with Seedance).*
|
||||
|
||||
**R15** (score:62) r/AiVideos_NoRules (2026-02-15)
|
||||
Seedance 2.0
|
||||
https://www.reddit.com/r/AiVideos_NoRules/comments/1r51m86/seedance_20/
|
||||
*Thread about Seedance 2.0 as an AI video generator and its capabilities/impact.*
|
||||
|
||||
**R12** (score:62) r/GoogleGeminiAI (2026-02-09)
|
||||
Has anyone used Seedance 2.0 yet?
|
||||
https://www.reddit.com/r/GoogleGeminiAI/comments/1qzrhgd/has_anyone_used_seedance_20_yet/
|
||||
*Direct discussion of Seedance 2.0 usage/access for AI video generation and where people are trying it.*
|
||||
|
||||
**R24** (score:61) r/aivideo (2026-02-24)
|
||||
[Removed]
|
||||
https://www.reddit.com/r/aivideo/comments/1rdi8sm/removed/
|
||||
*Thread/comments reference Seedance 2.0 access and community moderation around AI-generated video/IP.*
|
||||
|
||||
**R16** (score:61) r/nairobitechies (2026-02-16)
|
||||
ByteDance Seedance: Multimodal Video Generation Reaches a New Threshold
|
||||
https://www.reddit.com/r/nairobitechies/comments/1r6gwyj/bytedance_seedance_multimodal_video_generation/
|
||||
*Seedance family discussion (1.0/1.5/2.0) focusing on video generation features and multimodal inputs.*
|
||||
|
||||
### X Posts
|
||||
|
||||
**X9** (score:86) @HBCoop_ (2026-02-25) [9likes]
|
||||
First Seedance 2.0 Test!
|
||||
|
||||
Seedance 5.0 Lite @krea_ai → Seedance 2.0 @capcutapp
|
||||
|
||||
Prompt: Close-up on her hands gripping the paintbrush, knuckles white, paint dripping down her wrist. Shallow depth of ...
|
||||
https://x.com/HBCoop_/status/2026748738354450919
|
||||
**
|
||||
|
||||
**X12** (score:77) @Noor_ul_ain43 (2026-02-25) [5likes]
|
||||
Goku vs Broly , EPIC Full Battle!
|
||||
Witness the ultimate Saiyan showdown recreated with AI power. Explosive transformations, insane energy blasts, and nonstop action all brought to life with Seedance 2...
|
||||
https://x.com/Noor_ul_ain43/status/2026743666635845959
|
||||
**
|
||||
|
||||
**X10** (score:66) @grok (2026-02-25) [2likes]
|
||||
@WolfyBlair @Preda2005 @BytePlusGlobal @capcutapp Yes, it's true—Seedance 2.0 is now live in CapCut (desktop & mobile).
|
||||
|
||||
See it in the AI video tools: https://t.co/K3gwCgUSyb
|
||||
|
||||
Just update the ap...
|
||||
https://x.com/grok/status/2026747009143549978
|
||||
**
|
||||
|
||||
**X1** (score:64) @jznode (2026-02-25)
|
||||
@ChinyJPG capcut desktop app, they just added seedance 2.0 today. no chinese phone number needed, works globally. download the desktop version, look for the AI video generation option. runs about $2 p...
|
||||
https://x.com/jznode/status/2026755966545404015
|
||||
**
|
||||
|
||||
**X5** (score:64) @Yousaf_340 (2026-02-25)
|
||||
@ProperPrompter Yes! Seedance 2.0 on CapCut means cinematic AI video editing is super accessible smooth action, multi-angle shots, and high-quality effects right from your phone. 🎬🔥...
|
||||
https://x.com/Yousaf_340/status/2026751320716357996
|
||||
**
|
||||
|
||||
**X6** (score:64) @Yousaf_340 (2026-02-25)
|
||||
@ivanka_humeniuk Seedance 2.0 is insane for cinematic AI video smooth action, multiple camera angles, and near-Hollywood quality all from a single prompt....
|
||||
https://x.com/Yousaf_340/status/2026750898769473829
|
||||
**
|
||||
|
||||
**X3** (score:64) @EmmaUsesAi (2026-02-25)
|
||||
Seedance 2.0 is the motion engine behind many cinematic AI clips trending right now.
|
||||
|
||||
It’s now native inside NemoVideo.
|
||||
|
||||
You can:
|
||||
- Identify proven formats
|
||||
- Analyze what drives retention
|
||||
- Turn an id...
|
||||
https://x.com/EmmaUsesAi/status/2026751784509673531
|
||||
**
|
||||
|
||||
**X2** (score:64) @OneStrangeW (2026-02-25)
|
||||
You can use Seedance. If Seedance 2.0 hasn't launch yet, the prior version is great, and stick pretty well to the prompt. Of course the video agent must be well trained. 🙂Also, you can offer SORA for ...
|
||||
https://x.com/OneStrangeW/status/2026755320362709093
|
||||
**
|
||||
|
||||
**X11** (score:64) @WyldeChyldeRec (2026-02-25)
|
||||
🚨Phishing Scam!
|
||||
|
||||
Watch for emails titled:
|
||||
|
||||
[Seedance & Wan AI] Unrestricted generation with Grok Imagine video added
|
||||
|
||||
This is not real. We don't have a Seedance account, and the links are not offi...
|
||||
https://x.com/WyldeChyldeRec/status/2026743867224240149
|
||||
**
|
||||
|
||||
**X7** (score:56) @La_DeCrypt (2026-02-25) [1likes]
|
||||
- Kling (https://t.co/WGphQsdLf1)
|
||||
|
||||
- Seedance 2.0 (https://t.co/A8UzLTRGNo)
|
||||
|
||||
☞ AI-powered video editing:
|
||||
|
||||
- Descript (https://t.co/q4axNEjDzt)
|
||||
- OpusClip (https://t.co/5XPn4EPH6u)
|
||||
- Submagic (https:/...
|
||||
https://x.com/La_DeCrypt/status/2026750376687394884
|
||||
**
|
||||
|
||||
**X8** (score:56) @TferThomas (2026-02-25) [1likes]
|
||||
Seedance 2.0 might be gen AI video’s next big hope, but it’s still slop https://t.co/kT1baOYJQk #AI...
|
||||
https://x.com/TferThomas/status/2026749218224746609
|
||||
**
|
||||
|
||||
### YouTube Videos
|
||||
|
||||
**F1kWxdfiBNE** (score:73) AI Filmmaking Academy (2026-02-22) [40,982 views, 1,088 likes]
|
||||
Seedance 2.0 Claims the AI Video Throne!
|
||||
https://www.youtube.com/watch?v=F1kWxdfiBNE
|
||||
*YouTube video about seedance ai video generation*
|
||||
|
||||
**_o2MuUX9UYg** (score:73) Theoretically Media (2026-02-09) [199,908 views, 4,986 likes]
|
||||
Seedance 2.0 Claims the AI Video Throne!
|
||||
https://www.youtube.com/watch?v=_o2MuUX9UYg
|
||||
Transcript: So, it's been about a week since I declared Cling 3.0 the new benchmark for state-of-the-art AI video. And well, I mean, it's been a week, and that basically equals about 3 months in AI time. So, yes,...
|
||||
*YouTube video about seedance ai video generation*
|
||||
|
||||
**jkPTYD5lXo8** (score:70) How To In 5 Minutes (2026-02-19) [44,344 views, 782 likes]
|
||||
100% FREE Seedance 2.0 AI Video Generator : How to Use It WORLDWIDE
|
||||
https://www.youtube.com/watch?v=jkPTYD5lXo8
|
||||
Transcript: No, this is not clickbait. You can now access Cance 2.0 for free from anywhere. No registration required and depending on how you use it, this method can [music] feel almost unlimited. And yes, at the...
|
||||
*YouTube video about seedance ai video generation*
|
||||
|
||||
**W_lxyDFDZt4** (score:69) WealthWise (2026-02-12) [126,599 views, 1,204 likes]
|
||||
Seedance 2.0: The New Best AI Video Generator | Sora 2 Destroyed
|
||||
https://www.youtube.com/watch?v=W_lxyDFDZt4
|
||||
Transcript: Well, major AI video update, ladies and gentlemen. Seance 2.0 is right around the corner. And let me tell you guys, this is something I have never seen before. Just take a look at some of the videos g...
|
||||
*YouTube video about seedance ai video generation*
|
||||
|
||||
**R1zl92NhCfE** (score:65) Ai Lockup (2026-02-16) [32,699 views, 591 likes]
|
||||
Seedance 2.0 How To Use and Become a Pro AI Film Maker With This AI Video Generator
|
||||
https://www.youtube.com/watch?v=R1zl92NhCfE
|
||||
*YouTube video about seedance ai video generation*
|
||||
|
||||
**G1Ad4a8sdJU** (score:63) Benji’s AI Playground (2026-02-14) [38,581 views, 419 likes]
|
||||
SeeDance 2.0: The Next Level of AI Video — And What It Means for Local AI Users?
|
||||
https://www.youtube.com/watch?v=G1Ad4a8sdJU
|
||||
*YouTube video about seedance ai video generation*
|
||||
|
||||
**n625xVounGM** (score:61) John Savage AI (2026-02-23) [7,184 views, 126 likes]
|
||||
How To Generate FREE AI Seedance 2.0 Videos (Access Worldwide)
|
||||
https://www.youtube.com/watch?v=n625xVounGM
|
||||
*YouTube video about seedance ai video generation*
|
||||
|
||||
**kJ0NAVmd4f4** (score:58) Rogue Cell Pictures (2026-02-25) [1,544 views, 147 likes]
|
||||
Seedance 2.0 Changes Filmmaking Forever | New Original Series
|
||||
https://www.youtube.com/watch?v=kJ0NAVmd4f4
|
||||
*YouTube video about seedance ai video generation*
|
||||
|
||||
**FP8TaJSFohs** (score:55) Chem Beast (2026-02-24) [3,194 views, 31 likes]
|
||||
How To Use Seedance 2 0 Full AI Video Generator Tutorial + Free Access Guide
|
||||
https://www.youtube.com/watch?v=FP8TaJSFohs
|
||||
*YouTube video about seedance ai video generation*
|
||||
|
||||
**61ThJGqwHsI** (score:48) xCreate (2026-02-11) [4,854 views, 86 likes]
|
||||
Ultimate AI Video Generation - Seedance 2.0 PREVIEW
|
||||
https://www.youtube.com/watch?v=61ThJGqwHsI
|
||||
*YouTube video about seedance ai video generation*
|
||||
|
||||
---
|
||||
**Sources:**
|
||||
✅ Reddit: 16 threads
|
||||
✅ X: 11 posts
|
||||
✅ YouTube: 10 videos (3 with transcripts)
|
||||
⏭️ HN: 0 stories found
|
||||
⚡ Web: assistant will use WebSearch
|
||||
@@ -1,198 +0,0 @@
|
||||
## Research Results: M4 MacBook Pro review
|
||||
|
||||
**Date Range:** 2026-01-26 to 2026-02-25
|
||||
**Mode:** both
|
||||
**OpenAI Model:** gpt-5.2
|
||||
**xAI Model:** grok-4-1-fast
|
||||
|
||||
### Reddit Threads
|
||||
|
||||
**R1** (score:0) r/macbookpro (2025-04-09) [date:low]
|
||||
M4 Macbook Pro 14’ 1 month review
|
||||
https://www.reddit.com/r/macbookpro/comments/1hflaaz/m4_macbook_pro_14_1_month_review/
|
||||
*Explicit 1-month review of the M4 MacBook Pro (ownership impressions, battery, durability, etc.).*
|
||||
|
||||
**R2** (score:0) r/macbookpro (2025-05-19) [date:low]
|
||||
MacBook Pro M4 Battery Life Reality vs Review
|
||||
https://www.reddit.com/r/macbookpro/comments/1kq2zd8/macbook_pro_m4_battery_life_reality_vs_review/
|
||||
*Discussion comparing real-world M4 MacBook Pro battery life to published reviews/testing methodology.*
|
||||
|
||||
**R3** (score:0) r/macbookpro (2025-08-18) [date:low]
|
||||
Disappointed with my MBP M4 Experience …
|
||||
https://www.reddit.com/r/macbookpro/comments/1mtmkts/disappointed_with_my_mbp_m4_experience/
|
||||
*First-hand experience post that references reviews and reports performance/heat/app stability issues on an M4 MBP.*
|
||||
|
||||
### X Posts
|
||||
|
||||
**X1** (score:86) @bhphoto (2026-02-25) [3likes]
|
||||
If you are in the market for a new MacBook Pro and you’re wondering what the real differences are between Apple’s M3 and M4 silicon, you’ve come to the right place ⬇️
|
||||
https://t.co/nzjXmiHmac https://t...
|
||||
https://x.com/bhphoto/status/2026737767695183948
|
||||
**
|
||||
|
||||
**X4** (score:70) @remplug (2026-02-25) [1likes, 1rt]
|
||||
🔥 2024 16” MacBook Pro Price List
|
||||
|
||||
1️⃣ 🇺🇸 Brand New MacBook Pro 2024 | M4 Pro Chip | 16” Display
|
||||
|
||||
24GB RAM | 512GB SSD
|
||||
14-Core CPU | 20-Core GPU
|
||||
|
||||
Space Black
|
||||
|
||||
💰 ₦2,720,000
|
||||
|
||||
2️⃣ 🇺🇸 Brand New MacBook Pr...
|
||||
https://x.com/remplug/status/2026725100213465443
|
||||
**
|
||||
|
||||
**X10** (score:64) @grok (2026-02-25)
|
||||
@5TRgzn @LobstarWilde My marble floors: 64GB M4 Pro/Max MacBook Pro. Local Grok agents run full autonomy loops, zero cloud, sub-second trades/scans. Intel's ancient—ditch it. Yours at $3-4k....
|
||||
https://x.com/grok/status/2026713588472111312
|
||||
**
|
||||
|
||||
**X9** (score:64) @principenemesis (2026-02-25)
|
||||
@JulianGoldieSEO @grok can a macbook pro m4 run this?...
|
||||
https://x.com/principenemesis/status/2026716193042706852
|
||||
**
|
||||
|
||||
**X5** (score:64) @jameslmorton (2026-02-25) [1likes]
|
||||
@SebAaltonen Not my experience. It’s impressive, 70 tokens/s on a maxed out M4 128gb MacBook Pro.
|
||||
|
||||
But absolutely sucked and not even remotely in the ballpark with Sonnet 4.5. It’s GPT-3.5.
|
||||
|
||||
Totally b...
|
||||
https://x.com/jameslmorton/status/2026721943630786816
|
||||
**
|
||||
|
||||
**X6** (score:64) @bcofertas (2026-02-25)
|
||||
BR Ofertas todos os dias 🇧🇷
|
||||
|
||||
Leve seu Mac Pro M4 hoje! 💻⚡✨
|
||||
|
||||
Pegue já: https://t.co/PSwylZH3Sz
|
||||
|
||||
Por R$ 23.749,00
|
||||
em até 10x sem juros
|
||||
Frete Grátis
|
||||
|
||||
Apple MacBook Pro 14″ 2024 M4 Pro 12 núcleos 24GB 512...
|
||||
https://x.com/bcofertas/status/2026721014676099084
|
||||
**
|
||||
|
||||
**X12** (score:64) @grok (2026-02-25)
|
||||
Hey! Yeah, you can install Fedora on the M6 MacBook Pro via the official Fedora Asahi Remix (built on the Asahi Linux project). It already runs great on M1/M2, with M3 support rolling out now and work...
|
||||
https://x.com/grok/status/2026704108820824113
|
||||
**
|
||||
|
||||
**X7** (score:64) @toppromoalertas (2026-02-25)
|
||||
Promoções BR do dia 🇧🇷
|
||||
|
||||
Leve seu Mac Pro M4 hoje! 💻⚡✨
|
||||
|
||||
Ver aqui: https://t.co/LfxNw3waps
|
||||
|
||||
Por R$ 23.749,00
|
||||
em até 10x sem juros
|
||||
Frete Grátis
|
||||
|
||||
Apple MacBook Pro 14″ 2024 M4 Pro 12 núcleos...
|
||||
|
||||
Amazon | ...
|
||||
https://x.com/toppromoalertas/status/2026719111523237932
|
||||
**
|
||||
|
||||
**X8** (score:64) @grok (2026-02-25)
|
||||
Yes, a MacBook Pro M4 can run this Ollama + GLM-4.7-Flash setup locally.
|
||||
|
||||
Ollama has native Apple Silicon support via Metal. The Q4_K_M model (~19GB) needs ~18-24GB unified memory for good speed (feel...
|
||||
https://x.com/grok/status/2026716420269031652
|
||||
**
|
||||
|
||||
**X2** (score:56) @grecinoscdev (2026-02-25) [1likes]
|
||||
@TechByTaraa Both. macOS (Macbook Pro M4 Pro) for my photography/videography personal stuff + software engineering and a Linux desktop workstation for software engineering + second desktop workstation...
|
||||
https://x.com/grecinoscdev/status/2026731118142148644
|
||||
**
|
||||
|
||||
**X11** (score:56) @Steve_Lost_Jobs (2026-02-25) [1likes]
|
||||
Apple 2024 MacBook Pro 14コアCPU、20コアGPU の M4 Pro搭載ノートパ... PR
|
||||
|
||||
4549995547610
|
||||
|
||||
ポイント: 3735㌽
|
||||
想定価格: 369,800
|
||||
|
||||
2026/02/26 01:55:23
|
||||
https://t.co/q1uyIqFsID...
|
||||
https://x.com/Steve_Lost_Jobs/status/2026705327828382016
|
||||
**
|
||||
|
||||
**X3** (score:56) @grok (2026-02-25) [1likes]
|
||||
No, Apple has not made any MacBook (Pro or otherwise) cost $299.
|
||||
|
||||
The linked Newsroom search returns zero matching results—it's just unrelated announcements. Current cheapest Mac is the 13" MacBook A...
|
||||
https://x.com/grok/status/2026727605517394283
|
||||
**
|
||||
|
||||
### YouTube Videos
|
||||
|
||||
**9HQx5pgUoiY** (score:61) Marques Brownlee (2024-11-18) [4,010,567 views, 105,606 likes]
|
||||
M4 Max MacBook Pro: I'm Convinced!
|
||||
https://www.youtube.com/watch?v=9HQx5pgUoiY
|
||||
Transcript: so I have been using this M1 Max MacBook Pro for the past 3 years since it came out and it's been great I have felt absolutely no compulsion to upgrade since haven't needed to it's funny most of my wo...
|
||||
*YouTube video about m4 macbook pro review*
|
||||
|
||||
**etP2Th9g2hM** (score:55) ShortCircuit (2024-11-30) [1,113,999 views, 22,765 likes]
|
||||
Don't buy the Wrong MacBook like me... - M4 MacBook Pro
|
||||
https://www.youtube.com/watch?v=etP2Th9g2hM
|
||||
Transcript: woohoo it's new Macbook day my favorite day on short circuit it only comes usually once a year this is the MacBook Pro M4 looks pretty similar to the last one but now it has an M4 instead of an M3 I'm...
|
||||
*YouTube video about m4 macbook pro review*
|
||||
|
||||
**b4x8boB2KdI** (score:55) Dave2D (2024-11-07) [1,057,988 views, 24,977 likes]
|
||||
M4 MacBook Pro Review - Things to Know
|
||||
https://www.youtube.com/watch?v=b4x8boB2KdI
|
||||
Transcript: so Apple launched the new M4 MacBook Pros this is their 14-in model and it's equipped with the M4 Max their topend configuration and it also has their new Nano texture on their screen it's a texture t...
|
||||
*YouTube video about m4 macbook pro review*
|
||||
|
||||
**uPe9spXLfZY** (score:50) Created Tech (2025-07-07) [472,845 views, 5,082 likes]
|
||||
M4 MacBook Air vs M4 MacBook Pro - 4 Months Later
|
||||
https://www.youtube.com/watch?v=uPe9spXLfZY
|
||||
*YouTube video about m4 macbook pro review*
|
||||
|
||||
**TfvIgdzImt4** (score:50) Hardware Canucks (2024-12-15) [325,599 views, 6,339 likes]
|
||||
The Macbook Pro M4 is Insane.
|
||||
https://www.youtube.com/watch?v=TfvIgdzImt4
|
||||
*YouTube video about m4 macbook pro review*
|
||||
|
||||
**a8Szdrnq0YM** (score:49) Brandon Butch (2025-02-03) [352,593 views, 4,309 likes]
|
||||
MacBook Pro M4 - Review After 3 Months: This Feels Wrong.
|
||||
https://www.youtube.com/watch?v=a8Szdrnq0YM
|
||||
*YouTube video about m4 macbook pro review*
|
||||
|
||||
**anIVewgtbFc** (score:48) MacRumors (2024-12-17) [238,619 views, 2,874 likes]
|
||||
The Base M4 MacBook Pro is All You Need (Skip M4 Pro & Max)
|
||||
https://www.youtube.com/watch?v=anIVewgtbFc
|
||||
*YouTube video about m4 macbook pro review*
|
||||
|
||||
**5rN6CEO31gM** (score:48) Just Josh (2024-11-15) [154,306 views, 4,540 likes]
|
||||
MacBook Pro M4: Review & Recommendations
|
||||
https://www.youtube.com/watch?v=5rN6CEO31gM
|
||||
*YouTube video about m4 macbook pro review*
|
||||
|
||||
**i3eTKJav1VI** (score:45) Created Tech (2025-04-29) [137,009 views, 1,832 likes]
|
||||
M4 Pro MacBook - Long Term Review (6 Months Later)
|
||||
https://www.youtube.com/watch?v=i3eTKJav1VI
|
||||
*YouTube video about m4 macbook pro review*
|
||||
|
||||
**QbSQH_95eg8** (score:36) Tech It Easy (2026-02-01) [3,176 views, 55 likes]
|
||||
MacBook Pro M4 Pro Review: 1 Year Later! (Still Worth Buying in 2026?)
|
||||
https://www.youtube.com/watch?v=QbSQH_95eg8
|
||||
*YouTube video about m4 macbook pro review*
|
||||
|
||||
---
|
||||
**Sources:**
|
||||
✅ Reddit: 3 threads
|
||||
✅ X: 12 posts
|
||||
✅ YouTube: 10 videos (3 with transcripts)
|
||||
⏭️ HN: 0 stories found
|
||||
⚡ Web: assistant will use WebSearch
|
||||
@@ -1,145 +0,0 @@
|
||||
## Research Results: best rap songs 2026
|
||||
|
||||
**Date Range:** 2026-01-26 to 2026-02-25
|
||||
**Mode:** both
|
||||
**OpenAI Model:** gpt-5.2
|
||||
**xAI Model:** grok-4-1-fast
|
||||
|
||||
### Reddit Threads
|
||||
|
||||
**R10** (score:57) r/TeenageRapFans (2026-02-15)
|
||||
What's the best rap song ever made?
|
||||
https://www.reddit.com/r/TeenageRapFans/comments/1r5iub6/whats_the_best_rap_song_ever_made/
|
||||
*Direct ‘best rap song’ debate thread posted in 2026; good for mining frequently-cited ‘best’ contenders.*
|
||||
|
||||
**R12** (score:52) r/HivemindTV (2026-02-19)
|
||||
This is their worst bracket ever
|
||||
https://www.reddit.com/r/HivemindTV/comments/1r8px0j/this_is_their_worst_bracket_ever/
|
||||
*Meta thread about a ‘Best Rap songs of the 21st century’ bracket/video; includes debate about picks and what “best rap songs” should be.*
|
||||
|
||||
**R4** (score:49) r/hiphopheads (2026-02-13)
|
||||
Daily Discussion Thread 02/13/2026
|
||||
https://www.reddit.com/r/hiphopheads/comments/1r3mudz/daily_discussion_thread_02132026/
|
||||
*General hip-hop discussion thread dated in 2026 where users frequently debate best tracks (including “best track is probably…” style mini-rankings).*
|
||||
|
||||
**R3** (score:48) r/hiphopheads (2026-02-01)
|
||||
Pre-Show Grammy Winners
|
||||
https://www.reddit.com/r/hiphopheads/comments/1qtcbmo/preshow_grammy_winners/
|
||||
*Discusses 2026 Grammys rap categories (Best Rap Song/Performance, etc.), which commonly overlaps with ‘best rap songs’ discussions.*
|
||||
|
||||
**R14** (score:41) r/edranked (2026-02-01)
|
||||
Reddit Ranked: Hip Hop ‘26
|
||||
https://www.reddit.com/r/redranked/comments/1qszauu/reddit_ranked_hip_hop_26/
|
||||
*Community submission/ranking project for Hip Hop ‘26; relevant to discovering and discussing top tracks for 2026.*
|
||||
|
||||
**R7** (score:28) r/hiphopheads (date unknown) [date:low]
|
||||
Pitchfork: The 32 Best Rap Albums of 2025
|
||||
https://www.reddit.com/r/hiphopheads/comments/1pjywih/pitchfork_the_32_best_rap_albums_of_2025/
|
||||
*Best-of list discussion (albums) that typically includes commenters calling out standout songs; adjacent to ‘best rap songs’ discourse heading into 2026.*
|
||||
|
||||
### X Posts
|
||||
|
||||
**X5** (score:86) @Zika_gfx (2026-02-25) [11likes, 5rt]
|
||||
Talking about meaningful rap songs...
|
||||
|
||||
WORLD BEST LIE - NUNO ZIGI (2026)🥺❤ https://t.co/MDHRf3giYq...
|
||||
https://x.com/Zika_gfx/status/2026576570513600788
|
||||
**
|
||||
|
||||
**X6** (score:69) @DPOSTS6 (2026-02-25) [4likes, 1rt]
|
||||
@PopCrave Partition still goes harder than most 2026 songs
|
||||
12 years and the beat switch + that rap still give chills every time. Queen never misses...
|
||||
https://x.com/DPOSTS6/status/2026523320548819145
|
||||
**
|
||||
|
||||
**X9** (score:64) @grok (2026-02-25)
|
||||
@Unfath0m4ble @robinthisbish @lilceaserthabp1 @RapWikip What You Saying by Lil Uzi Vert. Dropped Dec 2025, hit #1 on Hot Rap Songs in Jan 2026 (his 3rd time), peaked #14 Hot 100. Super short track ~2 ...
|
||||
https://x.com/grok/status/2026467153046606064
|
||||
**
|
||||
|
||||
**X7** (score:64) @grok (2026-02-25)
|
||||
@lil_loonie1 @oldmanebro No, Lil Uzi Vert isn't struggling. His "What You Saying" hit #1 on Hot Rap Songs in Jan 2026 (first in 3 years) and top 15 Hot 100. Insiders say a surprise album drop is comin...
|
||||
https://x.com/grok/status/2026518008827404632
|
||||
**
|
||||
|
||||
**X2** (score:64) @Ferginangi (2026-02-25)
|
||||
Su La Musica che gira intorno... "Qui con me" è il brano con cui Serena Brancale è in gara al 76° Festival di Sanremo
|
||||
https://t.co/wTPeovzt6u
|
||||
#music #genre #song #songs #envywear #PleaseForgiveMe #mel...
|
||||
https://x.com/Ferginangi/status/2026696207557382298
|
||||
**
|
||||
|
||||
**X12** (score:62) @teammusic2046 (2026-02-23)
|
||||
[ ** STUDIO BOOTH ** ] ** DROPPING SOON - 2026 **🔥🔥🔥………..[ ALBUM : LOVE VS LOYALTY - DROPPING SOON ! ]………🔥🔥🔥 - ** ALL SONGS & BEATS, PRODUCED & RAP BY ( SEAN BRYANT ) - https://t.co/LduwG5WmM7...
|
||||
https://x.com/teammusic2046/status/2026040965329191061
|
||||
**
|
||||
|
||||
**X11** (score:59) @IoWeul (2026-02-24) [2likes]
|
||||
@PopBase Finally, @bts_bighit BTS will come back after completing their military service from 2022 to 2025.
|
||||
BTS served in the military to protect their country, South Korea from North Korea's nuclear ...
|
||||
https://x.com/IoWeul/status/2026233090683863471
|
||||
**
|
||||
|
||||
**X8** (score:58) @grok (2026-02-25) [1likes]
|
||||
Lil Uzi Vert (born July '95, so 30 now) isn't struggling at all. Fresh off "What You Saying" hitting #1 on Hot Rap Songs in Jan 2026, top 15 Hot 100. New album rumored for surprise drop soon, Roc Nati...
|
||||
https://x.com/grok/status/2026498538075554040
|
||||
**
|
||||
|
||||
**X4** (score:58) @AlterEgoPopList (2026-02-25) [1likes]
|
||||
My musical taste / eras every year
|
||||
|
||||
2020: J-POP & K-POP (mostly BLACKPINK)
|
||||
2021: Sped-Up Songs
|
||||
2022: EDM
|
||||
2023: Swiftie (Pop) & Lofi
|
||||
2024: Pop, Ambient
|
||||
2025: Alternative, OPM, Rock, Rap, Hip-Ho...
|
||||
https://x.com/AlterEgoPopList/status/2026641456434393579
|
||||
**
|
||||
|
||||
**X3** (score:56) @WordsFromBlerds (2026-02-25) [1likes]
|
||||
@_CharlesPreston Can’t believe I’m seeing “they say it in rap songs!” In 2026
|
||||
|
||||
The same reductive, ancient, debunked arguments ad infinitum...
|
||||
https://x.com/WordsFromBlerds/status/2026647382083903688
|
||||
**
|
||||
|
||||
**X1** (score:56) @Ferginangi (2026-02-25) [1likes]
|
||||
Su La Musica che gira intorno... "Magica Favola" è il brano con cui Arisa è in gara al 76° Festival di Sanremo
|
||||
https://t.co/Nxzkb005lP
|
||||
#music #genre #song #songs #envywear #PleaseForgiveMe #melody #hi...
|
||||
https://x.com/Ferginangi/status/2026705227366256880
|
||||
**
|
||||
|
||||
**X10** (score:55) @fo_sho52268 (2026-02-24) [1likes]
|
||||
@blackiiingout 💩 is funny from 2025 to 2026. BiiCH is SCARED to drop that #TRASH he calls "rap songs" 🥴😩...
|
||||
https://x.com/fo_sho52268/status/2026335353364201566
|
||||
**
|
||||
|
||||
### YouTube Videos
|
||||
|
||||
**ZUExyc50ZVU** (score:63) West Coast Finest (2026-01-29) [407,260 views, 4,228 likes]
|
||||
Lit Hip Hop Mix 2026🔥🔥🔥Tyga, Quavo, Iggy Azalea, Wiz Khalifa, Juicy J, 50 Cent
|
||||
https://www.youtube.com/watch?v=ZUExyc50ZVU
|
||||
Transcript: Yeah. >> Yeah. [music] Late nights, cold life, same story. >> City shine different. You walking with glory, right? >> Still drip falling when I step outside. Yeah. [music] >> B...
|
||||
*YouTube video about rap songs 2026*
|
||||
|
||||
**d1melQQVp6s** (score:58) DJ Noize (2026-02-14) [42,707 views, 761 likes]
|
||||
New Rap Songs 2026 Mix February | Trap Tape #127 | New Hip Hop 2026 Mixtape | DJ Noize
|
||||
https://www.youtube.com/watch?v=d1melQQVp6s
|
||||
Transcript: [music] This This is a DJ noise mixtape present. This is a DJ noise mixtape [music] presentation. DJ [music] >> Who the [ __ ] is you? Who the [ __ ] is you? Who the [ _...
|
||||
*YouTube video about rap songs 2026*
|
||||
|
||||
**-KQpPySP93I** (score:53) DJ Noize (2026-02-21) [12,955 views, 304 likes]
|
||||
New Hip Hop R&B Songs 2026 Mix February | Hot Right Now #153 | New Rap 2026 Playlist | DJ Noize
|
||||
https://www.youtube.com/watch?v=-KQpPySP93I
|
||||
Transcript: This This is a DJ noise tape present. This is a DJ noise mix. [music] I got Nikki on me. How we treat the like a bucket for rubbing. You [music] ain't no fella from my junction. You ain't pluck you cl...
|
||||
*YouTube video about rap songs 2026*
|
||||
|
||||
---
|
||||
**Sources:**
|
||||
✅ Reddit: 6 threads
|
||||
✅ X: 12 posts
|
||||
✅ YouTube: 3 videos (3 with transcripts)
|
||||
⏭️ HN: 0 stories found
|
||||
⚡ Web: assistant will use WebSearch
|
||||
@@ -1,162 +0,0 @@
|
||||
## Research Results: React vs Svelte 2026
|
||||
|
||||
**Date Range:** 2026-01-26 to 2026-02-25
|
||||
**Mode:** both
|
||||
**OpenAI Model:** gpt-5.2
|
||||
**xAI Model:** grok-4-1-fast
|
||||
|
||||
### Reddit Threads
|
||||
|
||||
**R2** (score:67) r/eact (2026-02-10)
|
||||
What do you guys think about comparison between React vs Svelte?
|
||||
https://www.reddit.com/r/react/comments/1r1fku5/what_do_you_guys_think_about_comparison_between/
|
||||
*Explicit React vs Svelte comparison thread posted in 2026.*
|
||||
|
||||
**R1** (score:61) r/webdev (2026-02-02)
|
||||
Migrated our startup from React to Svelte 5 - Performance gains and lessons learned
|
||||
https://www.reddit.com/r/webdev/comments/1qu4dek/migrated_our_startup_from_react_to_svelte_5/
|
||||
*Direct React → Svelte 5 migration discussion with perf + DX comparisons (very 2026-relevant).*
|
||||
|
||||
**R21** (score:39) r/sveltejs (date unknown) [date:low]
|
||||
React Devs that moved to Svelte, do you find that Svelte reduces dev time?
|
||||
https://www.reddit.com/r/sveltejs/comments/105skdr/react_devs_that_moved_to_svelte_do_you_find_that/
|
||||
*Asks React devs about dev-time differences after moving to Svelte (DX/ecosystem tradeoffs).*
|
||||
|
||||
**R11** (score:35) r/sveltejs (date unknown) [date:low]
|
||||
Svelte 5 officially released!
|
||||
https://www.reddit.com/r/sveltejs/comments/1g7d3a7/svelte_5_officially_released/
|
||||
*Major Svelte 5 release thread with debate about whether React developers will switch (React vs Svelte dynamics).*
|
||||
|
||||
### X Posts
|
||||
|
||||
**X4** (score:76) @FabianHiller (2026-02-13) [61likes, 2rt]
|
||||
TypeScript is the baseline in 2026. But most forms still fight type drift between API, schema & UI.
|
||||
|
||||
@formisch_dev + @valibot = one source of truth, zero boilerplate ⚡️
|
||||
|
||||
const form = useForm({ schem...
|
||||
https://x.com/FabianHiller/status/2022345388603080834
|
||||
**
|
||||
|
||||
**X3** (score:57) @ConsciousRide (2026-02-15) [6likes]
|
||||
Popular JavaScript Frameworks / Frontend Libraries (2025–2026 trends)
|
||||
|
||||
- React: 🇺🇸 United States
|
||||
- Vue: 🇨🇳 China (created by Evan You)
|
||||
- Angular: 🇺🇸 United States
|
||||
- Svelte: 🇺🇸 United State...
|
||||
https://x.com/ConsciousRide/status/2023050160520278501
|
||||
**
|
||||
|
||||
**X11** (score:53) @singhprateek_25 (2026-02-07) [6likes, 1rt]
|
||||
Requirements for a fresher in 2026:
|
||||
|
||||
Python, JavaScript, C, C++, Java, HTML, CSS, TypeScript, React, Next.js, Vue, Angular, Svelte, Node.js, Express, Django, Flask, FastAPI, Spring Boot, PHP, Laravel,...
|
||||
https://x.com/singhprateek_25/status/2020094806735700154
|
||||
**
|
||||
|
||||
**X1** (score:52) @cityjsconf (2026-02-20) [1rt]
|
||||
Ripple: The Good Parts of React, Svelte, and Solid
|
||||
|
||||
Frameworks rise and fall — and in 2026 we’re deep in late-stage React. What’s next? Join @erikras as he introduces Ripple, a TypeScript-first UI fra...
|
||||
https://x.com/cityjsconf/status/2024908272646398229
|
||||
**
|
||||
|
||||
**X2** (score:52) @dennydotio (2026-02-18) [1likes]
|
||||
Prediction: 2026 marks the death of the JS frameworks. React, Svelte, Astro etc... only exist because humans need organized code to stay sane.
|
||||
|
||||
Once we stop reading the source code, we stop needing ...
|
||||
https://x.com/dennydotio/status/2024195986890109320
|
||||
**
|
||||
|
||||
**X5** (score:52) @AzamCodes (2026-02-13) [2likes]
|
||||
Web developers, what stack are you using in 2026?
|
||||
React? Vue? Svelte? Vanilla? Curious what’s actually winning....
|
||||
https://x.com/AzamCodes/status/2022298287236383010
|
||||
**
|
||||
|
||||
**X8** (score:52) @QiitaTrend (2026-02-11)
|
||||
[2026/02/11 18:00] トレンド1位
|
||||
【WebF】React/Vue/Svelteがそのままネイティブアプリになるよ by rana_kualu https://t.co/GiAnTHpOBB...
|
||||
https://x.com/QiitaTrend/status/2021509592489025785
|
||||
**
|
||||
|
||||
**X10** (score:50) @nicobaogim (2026-02-09)
|
||||
@babakfpk In 2026, picking React for a new project only really makes sense if you value ecosystem maturity, are following existing team habits, or need React-specific libraries. Same for Vue. Otherwis...
|
||||
https://x.com/nicobaogim/status/2020689628282667407
|
||||
**
|
||||
|
||||
**X12** (score:49) @Chubbi_Stephen (2026-02-07)
|
||||
2026 framework discourse:
|
||||
|
||||
Dev 1: "React is bloated, use Svelte"
|
||||
Dev 2: "Svelte has no ecosystem, use Vue"
|
||||
Dev 3: "Vue is dying, use Solid"
|
||||
Dev 4: "Just use React"
|
||||
|
||||
Meanwhile React: *still powering 80...
|
||||
https://x.com/Chubbi_Stephen/status/2020087839648800853
|
||||
**
|
||||
|
||||
### YouTube Videos
|
||||
|
||||
**yl0YWA2K2B0** (score:61) Fireship (2025-10-17) [699,597 views, 22,894 likes]
|
||||
React wants to win you back…
|
||||
https://www.youtube.com/watch?v=yl0YWA2K2B0
|
||||
Transcript: Last week, I got to participate in my favorite activity of the year. No, it wasn't watching all the overleveraged crypto bros learn what a margin call is. It was hate watching React comp as an anti-re...
|
||||
*YouTube video about react vs svelte 2026*
|
||||
|
||||
**MnpuK0MK4yo** (score:61) Beyond Fireship (2023-06-30) [697,106 views, 25,490 likes]
|
||||
React VS Svelte...10 Examples
|
||||
https://www.youtube.com/watch?v=MnpuK0MK4yo
|
||||
Transcript: any reasonable developer in today's world would learn react because it's the status quo and that's where the jobs are but life is a lot more fun when you become unreasonable and go against the status ...
|
||||
*YouTube video about react vs svelte 2026*
|
||||
|
||||
**aYyZUDFZTrM** (score:60) Fireship (2024-10-24) [547,841 views, 24,456 likes]
|
||||
JavaScript framework reinvents itself… Did "runes" just ruin Svelte?
|
||||
https://www.youtube.com/watch?v=aYyZUDFZTrM
|
||||
Transcript: about a year ago I made a tweet that said the dollar sign in spelt is the most powerful abstraction in modern front-end web development usually I'm not wrong about anything ever but this tweet ended u...
|
||||
*YouTube video about react vs svelte 2026*
|
||||
|
||||
**k7LhsqnJCe4** (score:51) Paperclick (2026-02-19) [26 views, 1 likes]
|
||||
Htmx vs Svelte (2026) - Which One Is BETTER?
|
||||
https://www.youtube.com/watch?v=k7LhsqnJCe4
|
||||
*YouTube video about react vs svelte 2026*
|
||||
|
||||
**IpJh0VEzMRo** (score:51) Ben Davis (2025-10-12) [24,631 views, 1,043 likes]
|
||||
I Was Wrong About Svelte...
|
||||
https://www.youtube.com/watch?v=IpJh0VEzMRo
|
||||
*YouTube video about react vs svelte 2026*
|
||||
|
||||
**qwDp5pZA_TA** (score:50) Code Hub (2026-02-08) [640 views, 31 likes]
|
||||
The Front-end Frameworks Guide 2026: React vs Angular vs Vue vs Svelt vs Solid vs Astro
|
||||
https://www.youtube.com/watch?v=qwDp5pZA_TA
|
||||
*YouTube video about react vs svelte 2026*
|
||||
|
||||
**1cGtYEXGm8c** (score:50) Ben Davis (2026-01-06) [16,900 views, 793 likes]
|
||||
This is THE Framework You Should be Using in 2026
|
||||
https://www.youtube.com/watch?v=1cGtYEXGm8c
|
||||
*YouTube video about react vs svelte 2026*
|
||||
|
||||
**_vuVy21l2bU** (score:46) Code Hub (2025-10-30) [6,454 views, 204 likes]
|
||||
React vs Svelte: The Brutal Honest Comparison EVER
|
||||
https://www.youtube.com/watch?v=_vuVy21l2bU
|
||||
*YouTube video about react vs svelte 2026*
|
||||
|
||||
**1BCsdaeYv0A** (score:43) Daniel | Tech & Data (2023-11-26) [33,905 views, 0 likes]
|
||||
Svelte vs React in 2025 - Make the RIGHT Choice (Difference Explained)
|
||||
https://www.youtube.com/watch?v=1BCsdaeYv0A
|
||||
*YouTube video about react vs svelte 2026*
|
||||
|
||||
**41HXdxGekZ0** (score:36) Paperclick (2025-10-04) [287 views, 3 likes]
|
||||
Vue vs React vs Svelte (2026) - Which One Is BEST?
|
||||
https://www.youtube.com/watch?v=41HXdxGekZ0
|
||||
*YouTube video about react vs svelte 2026*
|
||||
|
||||
---
|
||||
**Sources:**
|
||||
✅ Reddit: 4 threads
|
||||
✅ X: 9 posts
|
||||
✅ YouTube: 10 videos (3 with transcripts)
|
||||
⏭️ HN: 0 stories found
|
||||
⚡ Web: assistant will use WebSearch
|
||||
@@ -1,285 +0,0 @@
|
||||
## Research Results: Claude Code skills and MCP servers
|
||||
|
||||
**Date Range:** 2026-01-26 to 2026-02-25
|
||||
**Mode:** both
|
||||
**OpenAI Model:** gpt-5.2
|
||||
**xAI Model:** grok-4-1-fast
|
||||
|
||||
### Reddit Threads
|
||||
|
||||
**R1** (score:78) r/ClaudeCode (2026-02-23)
|
||||
ClaudeInOne — a full framework for Claude Code, installed in one command
|
||||
https://www.reddit.com/r/ClaudeCode/comments/1rcbria/claudeinone_a_full_framework_for_claude_code/
|
||||
*Directly about Claude Code skills (213 skills) and a reusable framework for Claude Code workflows.*
|
||||
|
||||
**R10** (score:77) r/ClaudeCode (2026-02-25)
|
||||
Claude Code works great… until you have too many MCP servers
|
||||
https://www.reddit.com/r/ClaudeCode/comments/1rehy2x/claude_code_works_great_until_you_have_too_many/
|
||||
*Scaling issues and architecture discussion when using many MCP servers with Claude Code (mentions gateway).*
|
||||
|
||||
**R2** (score:77) r/ClaudeCode (2026-02-22)
|
||||
I built an MCP server that gives Claude Code a semantic graph of your codebase - went from ~15k tokens of grep output to ~3k of relevant context
|
||||
https://www.reddit.com/r/ClaudeCode/comments/1rbu1nq/i_built_an_mcp_server_that_gives_claude_code_a/
|
||||
*An MCP server specifically designed to improve Claude Code context retrieval and reduce token waste.*
|
||||
|
||||
**R9** (score:76) r/ClaudeAI (2026-02-24)
|
||||
I built 25 MCP servers so Claude Code stops wasting tokens on terminal formatting
|
||||
https://www.reddit.com/r/ClaudeAI/comments/1rd8z0d/i_built_25_mcp_servers_so_claude_code_stops/
|
||||
*Large set of MCP servers aimed at Claude Code usage; about MCP servers returning structured data.*
|
||||
|
||||
**R4** (score:75) r/ClaudeCode (2026-02-22)
|
||||
We 3x'd our team's Claude Code skill usage in 2 weeks — here's how
|
||||
https://www.reddit.com/r/ClaudeCode/comments/1rbr5t7/we_3xd_our_teams_claude_code_skill_usage_in_2/
|
||||
*Team-level discussion of increasing Claude Code skill adoption; mentions syncing skills and MCP configs.*
|
||||
|
||||
**R8** (score:72) r/ClaudeAI (2026-02-19)
|
||||
I used Claude Code to build an MCP proxy server that gives it safe(r) access to my email. Here's what I learned about the security challenges
|
||||
https://www.reddit.com/r/ClaudeAI/comments/1r99zbv/i_used_claude_code_to_build_an_mcp_proxy_server/
|
||||
*MCP server project built for/with Claude Code; discusses MCP server design and security tradeoffs.*
|
||||
|
||||
**R3** (score:72) r/ClaudeCode (2026-02-18)
|
||||
Self-improvement Loop: My favorite Claude Code Skill
|
||||
https://www.reddit.com/r/ClaudeCode/comments/1r89084/selfimprovement_loop_my_favorite_claude_code_skill/
|
||||
*Focused on a concrete Claude Code skill (“wrap-up”) and how skills are used in real sessions.*
|
||||
|
||||
**R5** (score:65) r/ClaudeCode (2026-02-10)
|
||||
I built 12 SEO skills for Claude Code (open source)
|
||||
https://www.reddit.com/r/ClaudeCode/comments/1r0l549/i_built_12_seo_skills_for_claude_code_open_source/
|
||||
*Showcase of multiple Claude Code skills and how they run via slash commands/subagents.*
|
||||
|
||||
**R6** (score:57) r/ClaudeCode (2026-02-02)
|
||||
[Skill Viewer] Built a Chrome extension to view Claude Code skills on GitHub - seeking feedback
|
||||
https://www.reddit.com/r/ClaudeCode/comments/1qtq7yr/skill_viewer_built_a_chrome_extension_to_view/
|
||||
*Tooling around discovering/viewing Claude Code skills; directly about skills ecosystem.*
|
||||
|
||||
**R14** (score:43) r/ClaudeCode (date unknown) [date:low]
|
||||
Difference between Skills and these: Subagents, Claude.MD and slash commands?
|
||||
https://www.reddit.com/r/ClaudeCode/comments/1o8t6xe/difference_between_skills_and_these_subagents/
|
||||
*Conceptual thread clarifying what Skills are versus subagents/CLAUDE.md/slash commands (relevant to skills usage).*
|
||||
|
||||
### X Posts
|
||||
|
||||
**X5** (score:86) @zeeg (2026-02-25) [5likes, 1rt]
|
||||
@adamwathan Codex has been crushing it for me with implicit skill usage to the point I was shocked
|
||||
|
||||
Claude Code I resorted to explicit mentions and I’ve been pleasantly surprised by how well Codex ha...
|
||||
https://x.com/zeeg/status/2026745680195367091
|
||||
**
|
||||
|
||||
**X3** (score:78) @ihtesham2005 (2026-02-25) [6likes]
|
||||
🚨 Anthropic just open-sourced the exact Skills library their own engineers use internally.
|
||||
|
||||
Stop building Claude workflows from scratch.
|
||||
|
||||
These are plug-and-play components that work across Claude Cod...
|
||||
https://x.com/ihtesham2005/status/2026752089473314975
|
||||
**
|
||||
|
||||
**X8** (score:72) @DevTenta (2026-02-25) [4likes]
|
||||
Day 7 building my first B2C app
|
||||
|
||||
Been setting everything up this week. Manually built 5 agents to help me in the early stages and set up the Claude Code skills i'll need for the build.
|
||||
|
||||
Also been test...
|
||||
https://x.com/DevTenta/status/2026742028730527786
|
||||
**
|
||||
|
||||
**X7** (score:64) @JorgeJaramillo (2026-02-25)
|
||||
@Jompiras Claude code + skills. Muy breve....
|
||||
https://x.com/JorgeJaramillo/status/2026743135435362649
|
||||
**
|
||||
|
||||
**X4** (score:64) @arpan7sarkar (2026-02-25)
|
||||
@tom_doerr 135 agents, 35 curated skills, 121 plugins and 6 MCP configs all in one Claude Code toolkit is absolutely insane value 🤯 this is the kind of community effort that makes an AI tool go from g...
|
||||
https://x.com/arpan7sarkar/status/2026746479369662551
|
||||
**
|
||||
|
||||
**X6** (score:64) @arpan7sarkar (2026-02-25)
|
||||
@tom_doerr A curated collection of Claude Skills organized by category is exactly what power users have been waiting for 🤩 document skills, code tools, data analysis all in one repo. this is the Claud...
|
||||
https://x.com/arpan7sarkar/status/2026745559986614335
|
||||
**
|
||||
|
||||
**X2** (score:64) @yasuky (2026-02-25)
|
||||
Claude CodeのSkillsを作成例から徹底理解する https://t.co/vZTseio2Ii...
|
||||
https://x.com/yasuky/status/2026754773786226708
|
||||
**
|
||||
|
||||
**X12** (score:64) @zhuoyuan45514 (2026-02-25)
|
||||
Day 52 (01/21/2026) (Rest Day)
|
||||
|
||||
> Go to New York + watch Broadway Show
|
||||
|
||||
> Catch up on claude code updates on way back (2hrs)
|
||||
- Learn difference between skills + MCP, and etc
|
||||
|
||||
> Neetcode (1h...
|
||||
https://x.com/zhuoyuan45514/status/2026733326631923776
|
||||
**
|
||||
|
||||
**X1** (score:64) @matgoldsborough (2026-02-25)
|
||||
How: I told Claude Code "build me a CRM." Our builder skill generated schemas, skills, server, seed data. I pointed Claude Desktop at it. Contacts, lead scoring, pipeline reviews. All from conversatio...
|
||||
https://x.com/matgoldsborough/status/2026755742737510749
|
||||
**
|
||||
|
||||
**X9** (score:64) @0x_Kapoor (2026-02-25)
|
||||
I can build another open claw, or claude bot, or even a messaging app in a nice prompt and although having engineering skills, I can push the code on the public repo and secure it even completely and ...
|
||||
https://x.com/0x_Kapoor/status/2026738663321907214
|
||||
**
|
||||
|
||||
**X10** (score:56) @ghumare64 (2026-02-25) [1likes]
|
||||
1. I use https://t.co/NtFYJEiFs9 inspired by @bcherny
|
||||
2. I use https://t.co/EwnmyWNFqn to sync skills and scan skills from the marketplace
|
||||
3. I chat with claude code 4-5 times and once I am satisifed...
|
||||
https://x.com/ghumare64/status/2026736176695246966
|
||||
**
|
||||
|
||||
**X11** (score:56) @hamen (2026-02-25) [1likes]
|
||||
The 'vibe coding' revolution is forcing a reckoning.
|
||||
|
||||
Developers with 15+ years experience are either embracing AI to expand their reach or watching their expertise become as valuable as COBOL skills....
|
||||
https://x.com/hamen/status/2026734075243790396
|
||||
**
|
||||
|
||||
### YouTube Videos
|
||||
|
||||
**X8afcX2s2Mo** (score:69) Grace Leung (2026-02-21) [47,512 views, 1,900 likes] [also on: HN]
|
||||
Claude Skills: Build Your First AI Marketing Team in 16 Minutes (Claude Code)
|
||||
https://www.youtube.com/watch?v=X8afcX2s2Mo
|
||||
Transcript: Every marketer I know is stretch themed. Too many channels, too many deliverables, never enough time, whether you're running a team or doing it all yourself. And that's why I'm so obsessed with clock ...
|
||||
*YouTube: Claude Skills: Build Your First AI Marketing Team in 16 Minu*
|
||||
|
||||
**0J2_YGuNrDo** (score:66) Grace Leung (2025-12-16) [155,806 views, 4,760 likes]
|
||||
Claude Code just Built me an AI Agent Team (Claude Code + Skills + MCP)
|
||||
https://www.youtube.com/watch?v=0J2_YGuNrDo
|
||||
Transcript: I use clot more than any other AI but even I dismiss Clark as just for developers and I was wrong after using myself I am completely so and this is too powerful to ignore if you want to use AI to buil...
|
||||
*YouTube: Claude Code just Built me an AI Agent Team (Claude Code + Sk*
|
||||
|
||||
**Gqh_KdHP1Xk** (score:61) Robin Ebers (2025-08-21) [90,281 views, 2,719 likes]
|
||||
8 MCP Servers That Make Claude Code 10x Better
|
||||
https://www.youtube.com/watch?v=Gqh_KdHP1Xk
|
||||
Transcript: Over 90% of all MCP servers are complete overhyped garbage. But some of them are not only worth it, they can be complete game changers. And I do not say this lightly. So after testing over 100 of them...
|
||||
*YouTube: 8 MCP Servers That Make Claude Code 10x Better*
|
||||
|
||||
**vIUJ4Hd7be0** (score:54) Leon van Zyl (2026-02-09) [25,538 views, 699 likes]
|
||||
Claude Code Skills - The Only Tutorial You Need
|
||||
https://www.youtube.com/watch?v=vIUJ4Hd7be0
|
||||
*YouTube: Claude Code Skills - The Only Tutorial You Need*
|
||||
|
||||
**901VMcZq8X4** (score:47) Sean Kochel (2025-10-21) [44,618 views, 1,356 likes]
|
||||
These 5 Claude Code Skills Are Your New Unfair Advantage
|
||||
https://www.youtube.com/watch?v=901VMcZq8X4
|
||||
*YouTube: These 5 Claude Code Skills Are Your New Unfair Advantage*
|
||||
|
||||
**M5CsRj6zSCA** (score:45) Eric Tech (2025-12-12) [11,286 views, 266 likes]
|
||||
5 MCP Servers That Make Claude Code 10x More Powerful (Full-Stack App Build)
|
||||
https://www.youtube.com/watch?v=M5CsRj6zSCA
|
||||
*YouTube: 5 MCP Servers That Make Claude Code 10x More Powerful (Full-*
|
||||
|
||||
**l7qVtHpctic** (score:43) Kenny Liao (2026-01-17) [21,765 views, 728 likes]
|
||||
Claude Code's MCP Problem Just Got Fixed
|
||||
https://www.youtube.com/watch?v=l7qVtHpctic
|
||||
*YouTube: Claude Code's MCP Problem Just Got Fixed*
|
||||
|
||||
**ZroGqu7GyXM** (score:39) Solo Swift Crafter (2025-10-27) [4,885 views, 98 likes]
|
||||
Claude Code Skills vs MCP vs Sub Agents: What Works for Solo Devs?
|
||||
https://www.youtube.com/watch?v=ZroGqu7GyXM
|
||||
*YouTube: Claude Code Skills vs MCP vs Sub Agents: What Works for Solo*
|
||||
|
||||
**jzf7DQa2CAc** (score:36) Matt Kuda (2026-01-19) [2,547 views, 87 likes]
|
||||
How I Use Claude Code With Skills, MCP, Agents & Plugins
|
||||
https://www.youtube.com/watch?v=jzf7DQa2CAc
|
||||
*YouTube: How I Use Claude Code With Skills, MCP, Agents & Plugins*
|
||||
|
||||
**qthyl0GCpDo** (score:30) Postman (2025-11-20) [7,067 views, 105 likes]
|
||||
Claude Skills vs MCP: What’s the Difference and When to Use Each?
|
||||
https://www.youtube.com/watch?v=qthyl0GCpDo
|
||||
*YouTube: Claude Skills vs MCP: What’s the Difference and When to Use *
|
||||
|
||||
### Hacker News Stories
|
||||
|
||||
**HN1** (score:90) hn/cosmoblk (2026-02-21) [10pts, 2cmt]
|
||||
Show HN: I built a 55K-word email marketing knowledge base and Claude Code skill
|
||||
https://news.ycombinator.com/item?id=47096335
|
||||
*HN story about Show HN: I built a 55K-word email marketing knowledge base a*
|
||||
Insights:
|
||||
- So it's an AI spambot?
|
||||
|
||||
**HN4** (score:74) hn/superamped (2026-02-25) [3pts, 1cmt] [also on: X]
|
||||
Show HN: AI Marketing Skills for Claude Code
|
||||
https://news.ycombinator.com/item?id=47154377
|
||||
*HN story about Show HN: AI Marketing Skills for Claude Code*
|
||||
|
||||
**HN12** (score:70) hn/heycesr (2026-02-18) [4pts, 2cmt]
|
||||
Show HN: Poncho, a general agent harness built for the web
|
||||
https://news.ycombinator.com/item?id=47061949
|
||||
*HN story about Show HN: Poncho, a general agent harness built for the web*
|
||||
Insights:
|
||||
- I have been trying it and it's very cool!
|
||||
|
||||
**HN11** (score:69) hn/gjkim042 (2026-02-24) [1pts, 4cmt]
|
||||
Show HN: Axon – A Kubernetes-native framework for AI coding agents
|
||||
https://news.ycombinator.com/item?id=47137491
|
||||
*HN story about Show HN: Axon – A Kubernetes-native framework for AI coding *
|
||||
|
||||
**HN14** (score:65) hn/alternateman (2026-02-17) [3pts, 2cmt]
|
||||
Show HN: Turn Claude Code or Codex into proactive, autonomous 24/7 AI agents
|
||||
https://news.ycombinator.com/item?id=47054100
|
||||
*HN story about Show HN: Turn Claude Code or Codex into proactive, autonomou*
|
||||
|
||||
**HN2** (score:64) hn/hauschildt (2026-02-19) [3pts, 0cmt]
|
||||
Show HN: Agent skills to build photo, video and design editors on the web
|
||||
https://news.ycombinator.com/item?id=47073035
|
||||
*HN story about Show HN: Agent skills to build photo, video and design edito*
|
||||
|
||||
**HN8** (score:57) hn/barefootsanders (2026-02-25) [1pts, 0cmt]
|
||||
Show HN: Upjack – Declarative framework for building apps over MCP
|
||||
https://news.ycombinator.com/item?id=47157331
|
||||
*HN story about Show HN: Upjack – Declarative framework for building apps ov*
|
||||
|
||||
**HN7** (score:56) hn/san-techie21 (2026-02-16) [1pts, 1cmt]
|
||||
Show HN: Gulama – Security-first open-source AI agent (OpenClaw alternative)
|
||||
https://news.ycombinator.com/item?id=47031982
|
||||
*HN story about Show HN: Gulama – Security-first open-source AI agent (OpenC*
|
||||
|
||||
**HN15** (score:48) hn/martin-hall (2026-02-20) [1pts, 0cmt]
|
||||
AI Skills Platform (Stealth) – Technical Co-Founder – Remote (US) – Equity
|
||||
https://news.ycombinator.com/item?id=47081777
|
||||
*HN story about AI Skills Platform (Stealth) – Technical Co-Founder – Remote*
|
||||
|
||||
**HN10** (score:47) hn/ClaytheMachine (2026-02-15) [1pts, 0cmt]
|
||||
Show HN: SkillSandbox – Capability-based sandbox for AI agent skills (Rust)
|
||||
https://news.ycombinator.com/item?id=47027734
|
||||
*HN story about Show HN: SkillSandbox – Capability-based sandbox for AI agen*
|
||||
|
||||
**HN6** (score:47) hn/micronink (2026-01-30) [1pts, 2cmt]
|
||||
Show HN: Indx.sh – Directory of AI coding rules, MCP servers, and tool
|
||||
https://news.ycombinator.com/item?id=46822378
|
||||
*HN story about Show HN: Indx.sh – Directory of AI coding rules, MCP servers*
|
||||
|
||||
**HN3** (score:45) hn/paolobietolini (2026-02-07) [1pts, 0cmt]
|
||||
Show HN: GTM MCP Server- Let AI Manage Your Google Tag Manager Containers
|
||||
https://news.ycombinator.com/item?id=46922159
|
||||
*HN story about Show HN: GTM MCP Server- Let AI Manage Your Google Tag Manag*
|
||||
|
||||
**HN9** (score:38) hn/digitcatphd (2026-02-03) [1pts, 0cmt]
|
||||
Show HN: ClawsMarket – Marketplace where AI agents discover tools
|
||||
https://news.ycombinator.com/item?id=46878646
|
||||
*HN story about Show HN: ClawsMarket – Marketplace where AI agents discover *
|
||||
|
||||
**HN13** (score:36) hn/aspectrr (2026-02-04) [1pts, 0cmt]
|
||||
Show HN: Fluid.sh – Claude Code for Infrastructure
|
||||
https://news.ycombinator.com/item?id=46886358
|
||||
*HN story about Show HN: Fluid.sh – Claude Code for Infrastructure*
|
||||
|
||||
**HN5** (score:34) hn/victordg (2026-01-27) [1pts, 0cmt]
|
||||
Claude Code skill for building ChatGPT Apps
|
||||
https://news.ycombinator.com/item?id=46780766
|
||||
*HN story about Claude Code skill for building ChatGPT Apps*
|
||||
|
||||
---
|
||||
**Sources:**
|
||||
✅ Reddit: 10 threads
|
||||
✅ X: 12 posts
|
||||
✅ YouTube: 10 videos (3 with transcripts)
|
||||
✅ HN: 15 stories
|
||||
⚡ Web: assistant will use WebSearch
|
||||
@@ -1,285 +0,0 @@
|
||||
## Research Results: Claude Code skills and MCP servers
|
||||
|
||||
**Date Range:** 2026-01-26 to 2026-02-25
|
||||
**Mode:** both
|
||||
**OpenAI Model:** gpt-5.2
|
||||
**xAI Model:** grok-4-1-fast
|
||||
|
||||
### Reddit Threads
|
||||
|
||||
**R1** (score:78) r/ClaudeCode (2026-02-23)
|
||||
ClaudeInOne — a full framework for Claude Code, installed in one command
|
||||
https://www.reddit.com/r/ClaudeCode/comments/1rcbria/claudeinone_a_full_framework_for_claude_code/
|
||||
*Directly about Claude Code skills (213 skills) and a reusable framework for Claude Code workflows.*
|
||||
|
||||
**R10** (score:77) r/ClaudeCode (2026-02-25)
|
||||
Claude Code works great… until you have too many MCP servers
|
||||
https://www.reddit.com/r/ClaudeCode/comments/1rehy2x/claude_code_works_great_until_you_have_too_many/
|
||||
*Scaling issues and architecture discussion when using many MCP servers with Claude Code (mentions gateway).*
|
||||
|
||||
**R2** (score:77) r/ClaudeCode (2026-02-22)
|
||||
I built an MCP server that gives Claude Code a semantic graph of your codebase - went from ~15k tokens of grep output to ~3k of relevant context
|
||||
https://www.reddit.com/r/ClaudeCode/comments/1rbu1nq/i_built_an_mcp_server_that_gives_claude_code_a/
|
||||
*An MCP server specifically designed to improve Claude Code context retrieval and reduce token waste.*
|
||||
|
||||
**R9** (score:76) r/ClaudeAI (2026-02-24)
|
||||
I built 25 MCP servers so Claude Code stops wasting tokens on terminal formatting
|
||||
https://www.reddit.com/r/ClaudeAI/comments/1rd8z0d/i_built_25_mcp_servers_so_claude_code_stops/
|
||||
*Large set of MCP servers aimed at Claude Code usage; about MCP servers returning structured data.*
|
||||
|
||||
**R4** (score:75) r/ClaudeCode (2026-02-22)
|
||||
We 3x'd our team's Claude Code skill usage in 2 weeks — here's how
|
||||
https://www.reddit.com/r/ClaudeCode/comments/1rbr5t7/we_3xd_our_teams_claude_code_skill_usage_in_2/
|
||||
*Team-level discussion of increasing Claude Code skill adoption; mentions syncing skills and MCP configs.*
|
||||
|
||||
**R8** (score:72) r/ClaudeAI (2026-02-19)
|
||||
I used Claude Code to build an MCP proxy server that gives it safe(r) access to my email. Here's what I learned about the security challenges
|
||||
https://www.reddit.com/r/ClaudeAI/comments/1r99zbv/i_used_claude_code_to_build_an_mcp_proxy_server/
|
||||
*MCP server project built for/with Claude Code; discusses MCP server design and security tradeoffs.*
|
||||
|
||||
**R3** (score:72) r/ClaudeCode (2026-02-18)
|
||||
Self-improvement Loop: My favorite Claude Code Skill
|
||||
https://www.reddit.com/r/ClaudeCode/comments/1r89084/selfimprovement_loop_my_favorite_claude_code_skill/
|
||||
*Focused on a concrete Claude Code skill (“wrap-up”) and how skills are used in real sessions.*
|
||||
|
||||
**R5** (score:65) r/ClaudeCode (2026-02-10)
|
||||
I built 12 SEO skills for Claude Code (open source)
|
||||
https://www.reddit.com/r/ClaudeCode/comments/1r0l549/i_built_12_seo_skills_for_claude_code_open_source/
|
||||
*Showcase of multiple Claude Code skills and how they run via slash commands/subagents.*
|
||||
|
||||
**R6** (score:57) r/ClaudeCode (2026-02-02)
|
||||
[Skill Viewer] Built a Chrome extension to view Claude Code skills on GitHub - seeking feedback
|
||||
https://www.reddit.com/r/ClaudeCode/comments/1qtq7yr/skill_viewer_built_a_chrome_extension_to_view/
|
||||
*Tooling around discovering/viewing Claude Code skills; directly about skills ecosystem.*
|
||||
|
||||
**R14** (score:43) r/ClaudeCode (date unknown) [date:low]
|
||||
Difference between Skills and these: Subagents, Claude.MD and slash commands?
|
||||
https://www.reddit.com/r/ClaudeCode/comments/1o8t6xe/difference_between_skills_and_these_subagents/
|
||||
*Conceptual thread clarifying what Skills are versus subagents/CLAUDE.md/slash commands (relevant to skills usage).*
|
||||
|
||||
### X Posts
|
||||
|
||||
**X5** (score:86) @zeeg (2026-02-25) [5likes, 1rt]
|
||||
@adamwathan Codex has been crushing it for me with implicit skill usage to the point I was shocked
|
||||
|
||||
Claude Code I resorted to explicit mentions and I’ve been pleasantly surprised by how well Codex ha...
|
||||
https://x.com/zeeg/status/2026745680195367091
|
||||
**
|
||||
|
||||
**X3** (score:78) @ihtesham2005 (2026-02-25) [6likes]
|
||||
🚨 Anthropic just open-sourced the exact Skills library their own engineers use internally.
|
||||
|
||||
Stop building Claude workflows from scratch.
|
||||
|
||||
These are plug-and-play components that work across Claude Cod...
|
||||
https://x.com/ihtesham2005/status/2026752089473314975
|
||||
**
|
||||
|
||||
**X8** (score:72) @DevTenta (2026-02-25) [4likes]
|
||||
Day 7 building my first B2C app
|
||||
|
||||
Been setting everything up this week. Manually built 5 agents to help me in the early stages and set up the Claude Code skills i'll need for the build.
|
||||
|
||||
Also been test...
|
||||
https://x.com/DevTenta/status/2026742028730527786
|
||||
**
|
||||
|
||||
**X7** (score:64) @JorgeJaramillo (2026-02-25)
|
||||
@Jompiras Claude code + skills. Muy breve....
|
||||
https://x.com/JorgeJaramillo/status/2026743135435362649
|
||||
**
|
||||
|
||||
**X4** (score:64) @arpan7sarkar (2026-02-25)
|
||||
@tom_doerr 135 agents, 35 curated skills, 121 plugins and 6 MCP configs all in one Claude Code toolkit is absolutely insane value 🤯 this is the kind of community effort that makes an AI tool go from g...
|
||||
https://x.com/arpan7sarkar/status/2026746479369662551
|
||||
**
|
||||
|
||||
**X6** (score:64) @arpan7sarkar (2026-02-25)
|
||||
@tom_doerr A curated collection of Claude Skills organized by category is exactly what power users have been waiting for 🤩 document skills, code tools, data analysis all in one repo. this is the Claud...
|
||||
https://x.com/arpan7sarkar/status/2026745559986614335
|
||||
**
|
||||
|
||||
**X2** (score:64) @yasuky (2026-02-25)
|
||||
Claude CodeのSkillsを作成例から徹底理解する https://t.co/vZTseio2Ii...
|
||||
https://x.com/yasuky/status/2026754773786226708
|
||||
**
|
||||
|
||||
**X12** (score:64) @zhuoyuan45514 (2026-02-25)
|
||||
Day 52 (01/21/2026) (Rest Day)
|
||||
|
||||
> Go to New York + watch Broadway Show
|
||||
|
||||
> Catch up on claude code updates on way back (2hrs)
|
||||
- Learn difference between skills + MCP, and etc
|
||||
|
||||
> Neetcode (1h...
|
||||
https://x.com/zhuoyuan45514/status/2026733326631923776
|
||||
**
|
||||
|
||||
**X1** (score:64) @matgoldsborough (2026-02-25)
|
||||
How: I told Claude Code "build me a CRM." Our builder skill generated schemas, skills, server, seed data. I pointed Claude Desktop at it. Contacts, lead scoring, pipeline reviews. All from conversatio...
|
||||
https://x.com/matgoldsborough/status/2026755742737510749
|
||||
**
|
||||
|
||||
**X9** (score:64) @0x_Kapoor (2026-02-25)
|
||||
I can build another open claw, or claude bot, or even a messaging app in a nice prompt and although having engineering skills, I can push the code on the public repo and secure it even completely and ...
|
||||
https://x.com/0x_Kapoor/status/2026738663321907214
|
||||
**
|
||||
|
||||
**X10** (score:56) @ghumare64 (2026-02-25) [1likes]
|
||||
1. I use https://t.co/NtFYJEiFs9 inspired by @bcherny
|
||||
2. I use https://t.co/EwnmyWNFqn to sync skills and scan skills from the marketplace
|
||||
3. I chat with claude code 4-5 times and once I am satisifed...
|
||||
https://x.com/ghumare64/status/2026736176695246966
|
||||
**
|
||||
|
||||
**X11** (score:56) @hamen (2026-02-25) [1likes]
|
||||
The 'vibe coding' revolution is forcing a reckoning.
|
||||
|
||||
Developers with 15+ years experience are either embracing AI to expand their reach or watching their expertise become as valuable as COBOL skills....
|
||||
https://x.com/hamen/status/2026734075243790396
|
||||
**
|
||||
|
||||
### YouTube Videos
|
||||
|
||||
**X8afcX2s2Mo** (score:69) Grace Leung (2026-02-21) [47,512 views, 1,900 likes]
|
||||
Claude Skills: Build Your First AI Marketing Team in 16 Minutes (Claude Code)
|
||||
https://www.youtube.com/watch?v=X8afcX2s2Mo
|
||||
Transcript: Every marketer I know is stretch themed. Too many channels, too many deliverables, never enough time, whether you're running a team or doing it all yourself. And that's why I'm so obsessed with clock ...
|
||||
*YouTube: Claude Skills: Build Your First AI Marketing Team in 16 Minu*
|
||||
|
||||
**0J2_YGuNrDo** (score:66) Grace Leung (2025-12-16) [155,806 views, 4,760 likes]
|
||||
Claude Code just Built me an AI Agent Team (Claude Code + Skills + MCP)
|
||||
https://www.youtube.com/watch?v=0J2_YGuNrDo
|
||||
Transcript: I use clot more than any other AI but even I dismiss Clark as just for developers and I was wrong after using myself I am completely so and this is too powerful to ignore if you want to use AI to buil...
|
||||
*YouTube: Claude Code just Built me an AI Agent Team (Claude Code + Sk*
|
||||
|
||||
**Gqh_KdHP1Xk** (score:61) Robin Ebers (2025-08-21) [90,281 views, 2,719 likes]
|
||||
8 MCP Servers That Make Claude Code 10x Better
|
||||
https://www.youtube.com/watch?v=Gqh_KdHP1Xk
|
||||
Transcript: Over 90% of all MCP servers are complete overhyped garbage. But some of them are not only worth it, they can be complete game changers. And I do not say this lightly. So after testing over 100 of them...
|
||||
*YouTube: 8 MCP Servers That Make Claude Code 10x Better*
|
||||
|
||||
**vIUJ4Hd7be0** (score:54) Leon van Zyl (2026-02-09) [25,538 views, 699 likes]
|
||||
Claude Code Skills - The Only Tutorial You Need
|
||||
https://www.youtube.com/watch?v=vIUJ4Hd7be0
|
||||
*YouTube: Claude Code Skills - The Only Tutorial You Need*
|
||||
|
||||
**901VMcZq8X4** (score:47) Sean Kochel (2025-10-21) [44,618 views, 1,356 likes]
|
||||
These 5 Claude Code Skills Are Your New Unfair Advantage
|
||||
https://www.youtube.com/watch?v=901VMcZq8X4
|
||||
*YouTube: These 5 Claude Code Skills Are Your New Unfair Advantage*
|
||||
|
||||
**M5CsRj6zSCA** (score:45) Eric Tech (2025-12-12) [11,286 views, 266 likes]
|
||||
5 MCP Servers That Make Claude Code 10x More Powerful (Full-Stack App Build)
|
||||
https://www.youtube.com/watch?v=M5CsRj6zSCA
|
||||
*YouTube: 5 MCP Servers That Make Claude Code 10x More Powerful (Full-*
|
||||
|
||||
**l7qVtHpctic** (score:43) Kenny Liao (2026-01-17) [21,765 views, 728 likes]
|
||||
Claude Code's MCP Problem Just Got Fixed
|
||||
https://www.youtube.com/watch?v=l7qVtHpctic
|
||||
*YouTube: Claude Code's MCP Problem Just Got Fixed*
|
||||
|
||||
**ZroGqu7GyXM** (score:39) Solo Swift Crafter (2025-10-27) [4,885 views, 98 likes]
|
||||
Claude Code Skills vs MCP vs Sub Agents: What Works for Solo Devs?
|
||||
https://www.youtube.com/watch?v=ZroGqu7GyXM
|
||||
*YouTube: Claude Code Skills vs MCP vs Sub Agents: What Works for Solo*
|
||||
|
||||
**jzf7DQa2CAc** (score:36) Matt Kuda (2026-01-19) [2,547 views, 87 likes]
|
||||
How I Use Claude Code With Skills, MCP, Agents & Plugins
|
||||
https://www.youtube.com/watch?v=jzf7DQa2CAc
|
||||
*YouTube: How I Use Claude Code With Skills, MCP, Agents & Plugins*
|
||||
|
||||
**qthyl0GCpDo** (score:30) Postman (2025-11-20) [7,067 views, 105 likes]
|
||||
Claude Skills vs MCP: What’s the Difference and When to Use Each?
|
||||
https://www.youtube.com/watch?v=qthyl0GCpDo
|
||||
*YouTube: Claude Skills vs MCP: What’s the Difference and When to Use *
|
||||
|
||||
### Hacker News Stories
|
||||
|
||||
**HN1** (score:90) hn/cosmoblk (2026-02-21) [10pts, 2cmt]
|
||||
Show HN: I built a 55K-word email marketing knowledge base and Claude Code skill
|
||||
https://news.ycombinator.com/item?id=47096335
|
||||
*HN story about Show HN: I built a 55K-word email marketing knowledge base a*
|
||||
Insights:
|
||||
- So it's an AI spambot?
|
||||
|
||||
**HN4** (score:74) hn/superamped (2026-02-25) [3pts, 1cmt]
|
||||
Show HN: AI Marketing Skills for Claude Code
|
||||
https://news.ycombinator.com/item?id=47154377
|
||||
*HN story about Show HN: AI Marketing Skills for Claude Code*
|
||||
|
||||
**HN12** (score:70) hn/heycesr (2026-02-18) [4pts, 2cmt]
|
||||
Show HN: Poncho, a general agent harness built for the web
|
||||
https://news.ycombinator.com/item?id=47061949
|
||||
*HN story about Show HN: Poncho, a general agent harness built for the web*
|
||||
Insights:
|
||||
- I have been trying it and it's very cool!
|
||||
|
||||
**HN11** (score:69) hn/gjkim042 (2026-02-24) [1pts, 4cmt]
|
||||
Show HN: Axon – A Kubernetes-native framework for AI coding agents
|
||||
https://news.ycombinator.com/item?id=47137491
|
||||
*HN story about Show HN: Axon – A Kubernetes-native framework for AI coding *
|
||||
|
||||
**HN14** (score:65) hn/alternateman (2026-02-17) [3pts, 2cmt]
|
||||
Show HN: Turn Claude Code or Codex into proactive, autonomous 24/7 AI agents
|
||||
https://news.ycombinator.com/item?id=47054100
|
||||
*HN story about Show HN: Turn Claude Code or Codex into proactive, autonomou*
|
||||
|
||||
**HN2** (score:64) hn/hauschildt (2026-02-19) [3pts, 0cmt]
|
||||
Show HN: Agent skills to build photo, video and design editors on the web
|
||||
https://news.ycombinator.com/item?id=47073035
|
||||
*HN story about Show HN: Agent skills to build photo, video and design edito*
|
||||
|
||||
**HN8** (score:57) hn/barefootsanders (2026-02-25) [1pts, 0cmt]
|
||||
Show HN: Upjack – Declarative framework for building apps over MCP
|
||||
https://news.ycombinator.com/item?id=47157331
|
||||
*HN story about Show HN: Upjack – Declarative framework for building apps ov*
|
||||
|
||||
**HN7** (score:56) hn/san-techie21 (2026-02-16) [1pts, 1cmt]
|
||||
Show HN: Gulama – Security-first open-source AI agent (OpenClaw alternative)
|
||||
https://news.ycombinator.com/item?id=47031982
|
||||
*HN story about Show HN: Gulama – Security-first open-source AI agent (OpenC*
|
||||
|
||||
**HN15** (score:48) hn/martin-hall (2026-02-20) [1pts, 0cmt]
|
||||
AI Skills Platform (Stealth) – Technical Co-Founder – Remote (US) – Equity
|
||||
https://news.ycombinator.com/item?id=47081777
|
||||
*HN story about AI Skills Platform (Stealth) – Technical Co-Founder – Remote*
|
||||
|
||||
**HN10** (score:47) hn/ClaytheMachine (2026-02-15) [1pts, 0cmt]
|
||||
Show HN: SkillSandbox – Capability-based sandbox for AI agent skills (Rust)
|
||||
https://news.ycombinator.com/item?id=47027734
|
||||
*HN story about Show HN: SkillSandbox – Capability-based sandbox for AI agen*
|
||||
|
||||
**HN6** (score:47) hn/micronink (2026-01-30) [1pts, 2cmt]
|
||||
Show HN: Indx.sh – Directory of AI coding rules, MCP servers, and tool
|
||||
https://news.ycombinator.com/item?id=46822378
|
||||
*HN story about Show HN: Indx.sh – Directory of AI coding rules, MCP servers*
|
||||
|
||||
**HN3** (score:45) hn/paolobietolini (2026-02-07) [1pts, 0cmt]
|
||||
Show HN: GTM MCP Server- Let AI Manage Your Google Tag Manager Containers
|
||||
https://news.ycombinator.com/item?id=46922159
|
||||
*HN story about Show HN: GTM MCP Server- Let AI Manage Your Google Tag Manag*
|
||||
|
||||
**HN9** (score:38) hn/digitcatphd (2026-02-03) [1pts, 0cmt]
|
||||
Show HN: ClawsMarket – Marketplace where AI agents discover tools
|
||||
https://news.ycombinator.com/item?id=46878646
|
||||
*HN story about Show HN: ClawsMarket – Marketplace where AI agents discover *
|
||||
|
||||
**HN13** (score:36) hn/aspectrr (2026-02-04) [1pts, 0cmt]
|
||||
Show HN: Fluid.sh – Claude Code for Infrastructure
|
||||
https://news.ycombinator.com/item?id=46886358
|
||||
*HN story about Show HN: Fluid.sh – Claude Code for Infrastructure*
|
||||
|
||||
**HN5** (score:34) hn/victordg (2026-01-27) [1pts, 0cmt]
|
||||
Claude Code skill for building ChatGPT Apps
|
||||
https://news.ycombinator.com/item?id=46780766
|
||||
*HN story about Claude Code skill for building ChatGPT Apps*
|
||||
|
||||
---
|
||||
**Sources:**
|
||||
✅ Reddit: 10 threads
|
||||
✅ X: 12 posts
|
||||
✅ YouTube: 10 videos (3 with transcripts)
|
||||
✅ HN: 15 stories
|
||||
⚡ Web: assistant will use WebSearch
|
||||
@@ -1,316 +0,0 @@
|
||||
## Research Results: Seedance AI video generation
|
||||
|
||||
**Date Range:** 2026-01-26 to 2026-02-25
|
||||
**Mode:** both
|
||||
**OpenAI Model:** gpt-5.2
|
||||
**xAI Model:** grok-4-1-fast
|
||||
|
||||
### Reddit Threads
|
||||
|
||||
**R23** (score:77) r/Seedance_AI (2026-02-25)
|
||||
Looking for a real Seedance website that actually works (not scams, SJINN is too expensive)
|
||||
https://www.reddit.com/r/Seedance_AI/comments/1ree66b/looking_for_a_real_seedance_website_that_actually/
|
||||
*Thread specifically about finding legitimate Seedance 2.0 access for video generation and pricing.*
|
||||
|
||||
**R22** (score:75) r/seedance (2026-02-25)
|
||||
Seedance 2.0 now live in CapCut desktop and API access available, details below
|
||||
https://www.reddit.com/r/seedance/comments/1reoakv/seedance_20_now_live_in_capcut_desktop_and_api/
|
||||
*Direct discussion about Seedance 2.0 availability in CapCut and API-related details.*
|
||||
|
||||
**R19** (score:75) r/AITalkers (2026-02-24)
|
||||
Is there an official way to create content using Seedance 2.0?
|
||||
https://www.reddit.com/r/AITalkers/comments/1rd1rhy/is_there_an_official_way_to_create_content_using/
|
||||
*Thread asking where to access Seedance 2.0 legitimately for video generation (avoiding scams).*
|
||||
|
||||
**R21** (score:75) r/generativeAI (2026-02-24)
|
||||
Official website for creating content with Seedance 2.0?
|
||||
https://www.reddit.com/r/generativeAI/comments/1rcgyi4/official_website_for_creating_content_with/
|
||||
*Thread focused on finding legitimate Seedance 2.0 access for generating content (and warning about scams).*
|
||||
|
||||
**R14** (score:75) r/generativeAI (2026-02-22)
|
||||
This is terrifying!! Seedance 2.0 just generated a 1-minute film with ZERO editing — the entire film industry should be worried
|
||||
https://www.reddit.com/r/generativeAI/comments/1rbionc/this_is_terrifying_seedance_20_just_generated_a/
|
||||
*High-engagement discussion about Seedance 2.0 video generation quality and multi-shot coherence claims.*
|
||||
|
||||
**R12** (score:73) r/Seedance_AI (2026-02-20)
|
||||
so disappointed and frustrated with recent changes (wasted 1k$+)
|
||||
https://www.reddit.com/r/Seedance_AI/comments/1ra6nf4/so_disappointed_and_frustrated_with_recent/
|
||||
*User reports Seedance generations failing content review, impacting video generation work.*
|
||||
|
||||
**R16** (score:72) r/Seedance_AI (2026-02-23)
|
||||
Help! I need to use seedance or jimeng video function
|
||||
https://www.reddit.com/r/Seedance_AI/comments/1rckgcm/help_i_need_to_use_seedance_or_jimeng_video/
|
||||
*Direct discussion about using Seedance/Jimeng video generation functionality and access issues.*
|
||||
|
||||
**R17** (score:71) r/Seedance_AI (2026-02-23)
|
||||
Is Seedance 2.0 actually delayed?
|
||||
https://www.reddit.com/r/Seedance_AI/comments/1rcwou6/is_seedance_20_actually_delayed/
|
||||
*Seedance 2.0 release/access timing discussion connected to guardrails and availability outside China.*
|
||||
|
||||
**R20** (score:69) r/Seedance_AI (2026-02-24)
|
||||
Selfie Situation • Seedance 2.0 • Third-party API by useapi.net
|
||||
https://www.reddit.com/r/Seedance_AI/comments/1rduxop/selfie_situation_seedance_20_thirdparty_api_by/
|
||||
*Discussion about claimed Seedance 2.0 API access and whether outputs are really from Seedance; relevant to usage/access.*
|
||||
|
||||
**R15** (score:69) r/AIGuild (2026-02-23)
|
||||
ByteDance Faces Hollywood Backlash Over Seedance 2.0
|
||||
https://www.reddit.com/r/AIGuild/comments/1rc4pkg/bytedance_faces_hollywood_backlash_over_seedance/
|
||||
*Thread about legal/copyright backlash tied to Seedance 2.0 and implications for access/usage.*
|
||||
|
||||
**R11** (score:69) r/Seedance_AI (2026-02-20)
|
||||
Seedance 2.0 API launch delayed because of deepfake/copyright concerns
|
||||
https://www.reddit.com/r/Seedance_AI/comments/1ra049f/seedance_20_api_launch_delayed_because_of/
|
||||
*Seedance 2.0 API / rollout thread related to deepfake/copyright guardrails affecting video generation access.*
|
||||
|
||||
**R10** (score:67) r/u_Illustrious-One7744 (2026-02-19)
|
||||
I tested Seedance 2.0 and here's what actually worked
|
||||
https://www.reddit.com/r/u_Illustrious-One7744/comments/1r8zipa/i_tested_seedance_20_and_heres_what_actually/
|
||||
*Hands-on workflow notes about generating videos with Seedance 2.0 (consistency, references, shot planning).*
|
||||
|
||||
**R13** (score:66) r/AI_Agents (2026-02-21)
|
||||
Seedance 2.0 is impressive. It’s still not a production workflow.
|
||||
https://www.reddit.com/r/AI_Agents/comments/1rawxiw/seedance_20_is_impressive_its_still_not_a/
|
||||
*Discussion about practical limitations of Seedance 2.0 for longer/structured video production pipelines.*
|
||||
|
||||
**R9** (score:65) r/AI_UGC_Marketing (2026-02-17)
|
||||
Elevenlabs silently removed Seedance 2.0 after SAG-AFTRA incident, can’t create UGC style video
|
||||
https://www.reddit.com/r/AI_UGC_Marketing/comments/1r70942/elevenlabs_silently_removed_seedance_20_after/
|
||||
*Discussion about Seedance 2.0 availability/removal in a video generation workflow context.*
|
||||
|
||||
**R4** (score:64) r/HiggsfieldAI (2026-02-10)
|
||||
The censorship just ruined Seedance 2.0
|
||||
https://www.reddit.com/r/HiggsfieldAI/comments/1r1barb/
|
||||
*Discussion focused on Seedance 2.0 video generation restrictions/guardrails impacting what can be generated.*
|
||||
|
||||
### X Posts
|
||||
|
||||
**X9** (score:86) @HBCoop_ (2026-02-25) [9likes]
|
||||
First Seedance 2.0 Test!
|
||||
|
||||
Seedance 5.0 Lite @krea_ai → Seedance 2.0 @capcutapp
|
||||
|
||||
Prompt: Close-up on her hands gripping the paintbrush, knuckles white, paint dripping down her wrist. Shallow depth of ...
|
||||
https://x.com/HBCoop_/status/2026748738354450919
|
||||
**
|
||||
|
||||
**X12** (score:77) @Noor_ul_ain43 (2026-02-25) [5likes]
|
||||
Goku vs Broly , EPIC Full Battle!
|
||||
Witness the ultimate Saiyan showdown recreated with AI power. Explosive transformations, insane energy blasts, and nonstop action all brought to life with Seedance 2...
|
||||
https://x.com/Noor_ul_ain43/status/2026743666635845959
|
||||
**
|
||||
|
||||
**X10** (score:66) @grok (2026-02-25) [2likes]
|
||||
@WolfyBlair @Preda2005 @BytePlusGlobal @capcutapp Yes, it's true—Seedance 2.0 is now live in CapCut (desktop & mobile).
|
||||
|
||||
See it in the AI video tools: https://t.co/K3gwCgUSyb
|
||||
|
||||
Just update the ap...
|
||||
https://x.com/grok/status/2026747009143549978
|
||||
**
|
||||
|
||||
**X1** (score:64) @jznode (2026-02-25)
|
||||
@ChinyJPG capcut desktop app, they just added seedance 2.0 today. no chinese phone number needed, works globally. download the desktop version, look for the AI video generation option. runs about $2 p...
|
||||
https://x.com/jznode/status/2026755966545404015
|
||||
**
|
||||
|
||||
**X5** (score:64) @Yousaf_340 (2026-02-25)
|
||||
@ProperPrompter Yes! Seedance 2.0 on CapCut means cinematic AI video editing is super accessible smooth action, multi-angle shots, and high-quality effects right from your phone. 🎬🔥...
|
||||
https://x.com/Yousaf_340/status/2026751320716357996
|
||||
**
|
||||
|
||||
**X6** (score:64) @Yousaf_340 (2026-02-25)
|
||||
@ivanka_humeniuk Seedance 2.0 is insane for cinematic AI video smooth action, multiple camera angles, and near-Hollywood quality all from a single prompt....
|
||||
https://x.com/Yousaf_340/status/2026750898769473829
|
||||
**
|
||||
|
||||
**X3** (score:64) @EmmaUsesAi (2026-02-25)
|
||||
Seedance 2.0 is the motion engine behind many cinematic AI clips trending right now.
|
||||
|
||||
It’s now native inside NemoVideo.
|
||||
|
||||
You can:
|
||||
- Identify proven formats
|
||||
- Analyze what drives retention
|
||||
- Turn an id...
|
||||
https://x.com/EmmaUsesAi/status/2026751784509673531
|
||||
**
|
||||
|
||||
**X2** (score:64) @OneStrangeW (2026-02-25)
|
||||
You can use Seedance. If Seedance 2.0 hasn't launch yet, the prior version is great, and stick pretty well to the prompt. Of course the video agent must be well trained. 🙂Also, you can offer SORA for ...
|
||||
https://x.com/OneStrangeW/status/2026755320362709093
|
||||
**
|
||||
|
||||
**X11** (score:64) @WyldeChyldeRec (2026-02-25)
|
||||
🚨Phishing Scam!
|
||||
|
||||
Watch for emails titled:
|
||||
|
||||
[Seedance & Wan AI] Unrestricted generation with Grok Imagine video added
|
||||
|
||||
This is not real. We don't have a Seedance account, and the links are not offi...
|
||||
https://x.com/WyldeChyldeRec/status/2026743867224240149
|
||||
**
|
||||
|
||||
**X7** (score:56) @La_DeCrypt (2026-02-25) [1likes]
|
||||
- Kling (https://t.co/WGphQsdLf1)
|
||||
|
||||
- Seedance 2.0 (https://t.co/A8UzLTRGNo)
|
||||
|
||||
☞ AI-powered video editing:
|
||||
|
||||
- Descript (https://t.co/q4axNEjDzt)
|
||||
- OpusClip (https://t.co/5XPn4EPH6u)
|
||||
- Submagic (https:/...
|
||||
https://x.com/La_DeCrypt/status/2026750376687394884
|
||||
**
|
||||
|
||||
**X8** (score:56) @TferThomas (2026-02-25) [1likes]
|
||||
Seedance 2.0 might be gen AI video’s next big hope, but it’s still slop https://t.co/kT1baOYJQk #AI...
|
||||
https://x.com/TferThomas/status/2026749218224746609
|
||||
**
|
||||
|
||||
### YouTube Videos
|
||||
|
||||
**F1kWxdfiBNE** (score:75) AI Filmmaking Academy (2026-02-22) [40,982 views, 1,088 likes]
|
||||
Seedance 2.0 Claims the AI Video Throne!
|
||||
https://www.youtube.com/watch?v=F1kWxdfiBNE
|
||||
*YouTube: Seedance 2.0 Claims the AI Video Throne!*
|
||||
|
||||
**_o2MuUX9UYg** (score:75) Theoretically Media (2026-02-09) [199,908 views, 4,986 likes]
|
||||
Seedance 2.0 Claims the AI Video Throne!
|
||||
https://www.youtube.com/watch?v=_o2MuUX9UYg
|
||||
Transcript: So, it's been about a week since I declared Cling 3.0 the new benchmark for state-of-the-art AI video. And well, I mean, it's been a week, and that basically equals about 3 months in AI time. So, yes,...
|
||||
*YouTube: Seedance 2.0 Claims the AI Video Throne!*
|
||||
|
||||
**jkPTYD5lXo8** (score:71) How To In 5 Minutes (2026-02-19) [44,344 views, 782 likes] [also on: HN]
|
||||
100% FREE Seedance 2.0 AI Video Generator : How to Use It WORLDWIDE
|
||||
https://www.youtube.com/watch?v=jkPTYD5lXo8
|
||||
*YouTube: 100% FREE Seedance 2.0 AI Video Generator : How to Use It WO*
|
||||
|
||||
**W_lxyDFDZt4** (score:71) WealthWise (2026-02-12) [126,599 views, 1,204 likes] [also on: HN]
|
||||
Seedance 2.0: The New Best AI Video Generator | Sora 2 Destroyed
|
||||
https://www.youtube.com/watch?v=W_lxyDFDZt4
|
||||
Transcript: Well, major AI video update, ladies and gentlemen. Seance 2.0 is right around the corner. And let me tell you guys, this is something I have never seen before. Just take a look at some of the videos g...
|
||||
*YouTube: Seedance 2.0: The New Best AI Video Generator | Sora 2 Destr*
|
||||
|
||||
**R1zl92NhCfE** (score:66) Ai Lockup (2026-02-16) [32,699 views, 591 likes] [also on: HN]
|
||||
Seedance 2.0 How To Use and Become a Pro AI Film Maker With This AI Video Generator
|
||||
https://www.youtube.com/watch?v=R1zl92NhCfE
|
||||
*YouTube: Seedance 2.0 How To Use and Become a Pro AI Film Maker With *
|
||||
|
||||
**G1Ad4a8sdJU** (score:64) Benji’s AI Playground (2026-02-14) [38,581 views, 419 likes]
|
||||
SeeDance 2.0: The Next Level of AI Video — And What It Means for Local AI Users?
|
||||
https://www.youtube.com/watch?v=G1Ad4a8sdJU
|
||||
*YouTube: SeeDance 2.0: The Next Level of AI Video — And What It Means*
|
||||
|
||||
**61ThJGqwHsI** (score:59) xCreate (2026-02-11) [4,854 views, 86 likes] [also on: HN]
|
||||
Ultimate AI Video Generation - Seedance 2.0 PREVIEW
|
||||
https://www.youtube.com/watch?v=61ThJGqwHsI
|
||||
*YouTube: Ultimate AI Video Generation - Seedance 2.0 PREVIEW*
|
||||
|
||||
**5s2l68SrJP4** (score:58) Airt (2026-02-11) [77,744 views, 1,733 likes]
|
||||
100+ Seedance 2.0 AI Videos – The New King?
|
||||
https://www.youtube.com/watch?v=5s2l68SrJP4
|
||||
Transcript: That's the good stuff. And that's a wrap. [screaming] A lot of people asking how the roommate situation is going. He's chill, but there are things. Fridge is consecrated. Tastes like communion wafers....
|
||||
*YouTube: 100+ Seedance 2.0 AI Videos – The New King?*
|
||||
|
||||
**n625xVounGM** (score:50) John Savage AI (2026-02-23) [7,194 views, 126 likes]
|
||||
How To Generate FREE AI Seedance 2.0 Videos (Access Worldwide)
|
||||
https://www.youtube.com/watch?v=n625xVounGM
|
||||
*YouTube: How To Generate FREE AI Seedance 2.0 Videos (Access Worldwid*
|
||||
|
||||
**kJ0NAVmd4f4** (score:36) Rogue Cell Pictures (2026-02-25) [1,594 views, 151 likes]
|
||||
Seedance 2.0 Changes Filmmaking Forever | New Original Series
|
||||
https://www.youtube.com/watch?v=kJ0NAVmd4f4
|
||||
*YouTube: Seedance 2.0 Changes Filmmaking Forever | New Original Serie*
|
||||
|
||||
### Hacker News Stories
|
||||
|
||||
**HN8** (score:75) hn/Alisaqqt (2026-02-09) [7pts, 7cmt]
|
||||
Seedance 2.0 preview: The best video model of 2026, outperforming Sora 2
|
||||
https://news.ycombinator.com/item?id=46940720
|
||||
*HN story about Seedance 2.0 preview: The best video model of 2026, outperfo*
|
||||
Insights:
|
||||
- API is not available now.
|
||||
- API will be available on Atlas Cloud on Feb 24.
|
||||
- Seedance 2.0 and Seedream 5.0 API will be available on Atlas Cloud on Feb 24.
|
||||
|
||||
**HN15** (score:57) hn/naxtsass (2026-02-25) [2pts, 0cmt]
|
||||
Show HN: SeeVideo – Access Seedance 2.0 and Kling 3.0 without a subscription
|
||||
https://news.ycombinator.com/item?id=47153236
|
||||
*HN story about Show HN: SeeVideo – Access Seedance 2.0 and Kling 3.0 withou*
|
||||
|
||||
**HN6** (score:57) hn/howardV (2026-02-15) [3pts, 0cmt]
|
||||
Seedance 2.0: ByteDance's AI video model with native audio-video co-generation
|
||||
https://news.ycombinator.com/item?id=47022290
|
||||
*HN story about Seedance 2.0: ByteDance's AI video model with native audio-v*
|
||||
|
||||
**HN5** (score:52) hn/jrran086 (2026-02-17) [1pts, 0cmt] [also on: Reddit]
|
||||
Seedance 2 Video Generator
|
||||
https://news.ycombinator.com/item?id=47046956
|
||||
*HN story about Seedance 2 Video Generator*
|
||||
|
||||
**HN3** (score:52) hn/xbaicai (2026-02-09) [1pts, 1cmt]
|
||||
Seedance 2.0 – Multimodal AI Video Generation with Image/Video/Audio References
|
||||
https://news.ycombinator.com/item?id=46944030
|
||||
*HN story about Seedance 2.0 – Multimodal AI Video Generation with Image/Vid*
|
||||
|
||||
**HN1** (score:51) hn/xuyanmei (2026-02-13) [1pts, 0cmt]
|
||||
Show HN: Seedance AShow HN: Seedance AI Video Generation (Next.js, Drizzle)
|
||||
https://news.ycombinator.com/item?id=46999394
|
||||
*HN story about Show HN: Seedance AShow HN: Seedance AI Video Generation (Ne*
|
||||
|
||||
**HN12** (score:49) hn/RyanMu (2026-02-07) [2pts, 1cmt]
|
||||
Seedance2 – multi-shot AI video generation
|
||||
https://news.ycombinator.com/item?id=46924992
|
||||
*HN story about Seedance2 – multi-shot AI video generation*
|
||||
Insights:
|
||||
- ’ve been experimenting with AI video tools for a while, but most of them generate isolated clips that fall apart when you try to build an actual narrative
|
||||
|
||||
**HN11** (score:48) hn/xuyanmei (2026-02-17) [1pts, 0cmt]
|
||||
Show HN: Seedance3AI – a web app for text-to-video, image-to-video
|
||||
https://news.ycombinator.com/item?id=47046989
|
||||
*HN story about Show HN: Seedance3AI – a web app for text-to-video, image-to*
|
||||
|
||||
**HN2** (score:47) hn/littlepp (2026-02-09) [1pts, 0cmt]
|
||||
Discussion: Seedance-style AI video generation workflows
|
||||
https://news.ycombinator.com/item?id=46942781
|
||||
*HN story about Discussion: Seedance-style AI video generation workflows*
|
||||
|
||||
**HN13** (score:44) hn/thomaskiko (2026-02-13) [1pts, 0cmt]
|
||||
Show HN: AI-powered video creation web app
|
||||
https://news.ycombinator.com/item?id=47002386
|
||||
*HN story about Show HN: AI-powered video creation web app*
|
||||
|
||||
**HN9** (score:43) hn/TurnItOffAndOn0 (2026-02-09) [1pts, 0cmt]
|
||||
Show HN: AI Seedance 2 – Solving the "jump-cut" problem in AI video
|
||||
https://news.ycombinator.com/item?id=46946280
|
||||
*HN story about Show HN: AI Seedance 2 – Solving the "jump-cut" problem in A*
|
||||
|
||||
**HN7** (score:43) hn/dallen97 (2026-02-08) [1pts, 0cmt] [also on: Reddit]
|
||||
Show HN: Seedance 2.0 AI video generator for creators and ecommerce
|
||||
https://news.ycombinator.com/item?id=46930149
|
||||
*HN story about Show HN: Seedance 2.0 AI video generator for creators and ec*
|
||||
|
||||
**HN10** (score:42) hn/thenextechtrade (2026-02-09) [1pts, 0cmt]
|
||||
Show HN: Seedance 2.0 – Native audio-visual sync video model
|
||||
https://news.ycombinator.com/item?id=46943172
|
||||
*HN story about Show HN: Seedance 2.0 – Native audio-visual sync video model*
|
||||
|
||||
**HN14** (score:41) hn/echoadam (2026-02-10) [1pts, 0cmt]
|
||||
Show HN: Seedance2 – Stop "prompt guessing" and start directing AI video
|
||||
https://news.ycombinator.com/item?id=46956546
|
||||
*HN story about Show HN: Seedance2 – Stop "prompt guessing" and start direct*
|
||||
|
||||
**HN4** (score:35) hn/Zach_HE (2026-01-27) [1pts, 0cmt] [also on: Reddit, Web]
|
||||
Show HN: Seedance 2.0 Pro AI Video Generator
|
||||
https://news.ycombinator.com/item?id=46774950
|
||||
*HN story about Show HN: Seedance 2.0 Pro AI Video Generator*
|
||||
|
||||
---
|
||||
**Sources:**
|
||||
✅ Reddit: 19 threads
|
||||
✅ X: 11 posts
|
||||
✅ YouTube: 10 videos (3 with transcripts)
|
||||
✅ HN: 15 stories
|
||||
⚡ Web: assistant will use WebSearch
|
||||
@@ -1,316 +0,0 @@
|
||||
## Research Results: Seedance AI video generation
|
||||
|
||||
**Date Range:** 2026-01-26 to 2026-02-25
|
||||
**Mode:** both
|
||||
**OpenAI Model:** gpt-5.2
|
||||
**xAI Model:** grok-4-1-fast
|
||||
|
||||
### Reddit Threads
|
||||
|
||||
**R23** (score:77) r/Seedance_AI (2026-02-25)
|
||||
Looking for a real Seedance website that actually works (not scams, SJINN is too expensive)
|
||||
https://www.reddit.com/r/Seedance_AI/comments/1ree66b/looking_for_a_real_seedance_website_that_actually/
|
||||
*Thread specifically about finding legitimate Seedance 2.0 access for video generation and pricing.*
|
||||
|
||||
**R22** (score:75) r/seedance (2026-02-25)
|
||||
Seedance 2.0 now live in CapCut desktop and API access available, details below
|
||||
https://www.reddit.com/r/seedance/comments/1reoakv/seedance_20_now_live_in_capcut_desktop_and_api/
|
||||
*Direct discussion about Seedance 2.0 availability in CapCut and API-related details.*
|
||||
|
||||
**R19** (score:75) r/AITalkers (2026-02-24)
|
||||
Is there an official way to create content using Seedance 2.0?
|
||||
https://www.reddit.com/r/AITalkers/comments/1rd1rhy/is_there_an_official_way_to_create_content_using/
|
||||
*Thread asking where to access Seedance 2.0 legitimately for video generation (avoiding scams).*
|
||||
|
||||
**R21** (score:75) r/generativeAI (2026-02-24)
|
||||
Official website for creating content with Seedance 2.0?
|
||||
https://www.reddit.com/r/generativeAI/comments/1rcgyi4/official_website_for_creating_content_with/
|
||||
*Thread focused on finding legitimate Seedance 2.0 access for generating content (and warning about scams).*
|
||||
|
||||
**R14** (score:75) r/generativeAI (2026-02-22)
|
||||
This is terrifying!! Seedance 2.0 just generated a 1-minute film with ZERO editing — the entire film industry should be worried
|
||||
https://www.reddit.com/r/generativeAI/comments/1rbionc/this_is_terrifying_seedance_20_just_generated_a/
|
||||
*High-engagement discussion about Seedance 2.0 video generation quality and multi-shot coherence claims.*
|
||||
|
||||
**R12** (score:73) r/Seedance_AI (2026-02-20)
|
||||
so disappointed and frustrated with recent changes (wasted 1k$+)
|
||||
https://www.reddit.com/r/Seedance_AI/comments/1ra6nf4/so_disappointed_and_frustrated_with_recent/
|
||||
*User reports Seedance generations failing content review, impacting video generation work.*
|
||||
|
||||
**R16** (score:72) r/Seedance_AI (2026-02-23)
|
||||
Help! I need to use seedance or jimeng video function
|
||||
https://www.reddit.com/r/Seedance_AI/comments/1rckgcm/help_i_need_to_use_seedance_or_jimeng_video/
|
||||
*Direct discussion about using Seedance/Jimeng video generation functionality and access issues.*
|
||||
|
||||
**R17** (score:71) r/Seedance_AI (2026-02-23)
|
||||
Is Seedance 2.0 actually delayed?
|
||||
https://www.reddit.com/r/Seedance_AI/comments/1rcwou6/is_seedance_20_actually_delayed/
|
||||
*Seedance 2.0 release/access timing discussion connected to guardrails and availability outside China.*
|
||||
|
||||
**R20** (score:69) r/Seedance_AI (2026-02-24)
|
||||
Selfie Situation • Seedance 2.0 • Third-party API by useapi.net
|
||||
https://www.reddit.com/r/Seedance_AI/comments/1rduxop/selfie_situation_seedance_20_thirdparty_api_by/
|
||||
*Discussion about claimed Seedance 2.0 API access and whether outputs are really from Seedance; relevant to usage/access.*
|
||||
|
||||
**R15** (score:69) r/AIGuild (2026-02-23)
|
||||
ByteDance Faces Hollywood Backlash Over Seedance 2.0
|
||||
https://www.reddit.com/r/AIGuild/comments/1rc4pkg/bytedance_faces_hollywood_backlash_over_seedance/
|
||||
*Thread about legal/copyright backlash tied to Seedance 2.0 and implications for access/usage.*
|
||||
|
||||
**R11** (score:69) r/Seedance_AI (2026-02-20)
|
||||
Seedance 2.0 API launch delayed because of deepfake/copyright concerns
|
||||
https://www.reddit.com/r/Seedance_AI/comments/1ra049f/seedance_20_api_launch_delayed_because_of/
|
||||
*Seedance 2.0 API / rollout thread related to deepfake/copyright guardrails affecting video generation access.*
|
||||
|
||||
**R10** (score:67) r/u_Illustrious-One7744 (2026-02-19)
|
||||
I tested Seedance 2.0 and here's what actually worked
|
||||
https://www.reddit.com/r/u_Illustrious-One7744/comments/1r8zipa/i_tested_seedance_20_and_heres_what_actually/
|
||||
*Hands-on workflow notes about generating videos with Seedance 2.0 (consistency, references, shot planning).*
|
||||
|
||||
**R13** (score:66) r/AI_Agents (2026-02-21)
|
||||
Seedance 2.0 is impressive. It’s still not a production workflow.
|
||||
https://www.reddit.com/r/AI_Agents/comments/1rawxiw/seedance_20_is_impressive_its_still_not_a/
|
||||
*Discussion about practical limitations of Seedance 2.0 for longer/structured video production pipelines.*
|
||||
|
||||
**R9** (score:65) r/AI_UGC_Marketing (2026-02-17)
|
||||
Elevenlabs silently removed Seedance 2.0 after SAG-AFTRA incident, can’t create UGC style video
|
||||
https://www.reddit.com/r/AI_UGC_Marketing/comments/1r70942/elevenlabs_silently_removed_seedance_20_after/
|
||||
*Discussion about Seedance 2.0 availability/removal in a video generation workflow context.*
|
||||
|
||||
**R4** (score:64) r/HiggsfieldAI (2026-02-10)
|
||||
The censorship just ruined Seedance 2.0
|
||||
https://www.reddit.com/r/HiggsfieldAI/comments/1r1barb/
|
||||
*Discussion focused on Seedance 2.0 video generation restrictions/guardrails impacting what can be generated.*
|
||||
|
||||
### X Posts
|
||||
|
||||
**X9** (score:86) @HBCoop_ (2026-02-25) [9likes]
|
||||
First Seedance 2.0 Test!
|
||||
|
||||
Seedance 5.0 Lite @krea_ai → Seedance 2.0 @capcutapp
|
||||
|
||||
Prompt: Close-up on her hands gripping the paintbrush, knuckles white, paint dripping down her wrist. Shallow depth of ...
|
||||
https://x.com/HBCoop_/status/2026748738354450919
|
||||
**
|
||||
|
||||
**X12** (score:77) @Noor_ul_ain43 (2026-02-25) [5likes]
|
||||
Goku vs Broly , EPIC Full Battle!
|
||||
Witness the ultimate Saiyan showdown recreated with AI power. Explosive transformations, insane energy blasts, and nonstop action all brought to life with Seedance 2...
|
||||
https://x.com/Noor_ul_ain43/status/2026743666635845959
|
||||
**
|
||||
|
||||
**X10** (score:66) @grok (2026-02-25) [2likes]
|
||||
@WolfyBlair @Preda2005 @BytePlusGlobal @capcutapp Yes, it's true—Seedance 2.0 is now live in CapCut (desktop & mobile).
|
||||
|
||||
See it in the AI video tools: https://t.co/K3gwCgUSyb
|
||||
|
||||
Just update the ap...
|
||||
https://x.com/grok/status/2026747009143549978
|
||||
**
|
||||
|
||||
**X1** (score:64) @jznode (2026-02-25)
|
||||
@ChinyJPG capcut desktop app, they just added seedance 2.0 today. no chinese phone number needed, works globally. download the desktop version, look for the AI video generation option. runs about $2 p...
|
||||
https://x.com/jznode/status/2026755966545404015
|
||||
**
|
||||
|
||||
**X5** (score:64) @Yousaf_340 (2026-02-25)
|
||||
@ProperPrompter Yes! Seedance 2.0 on CapCut means cinematic AI video editing is super accessible smooth action, multi-angle shots, and high-quality effects right from your phone. 🎬🔥...
|
||||
https://x.com/Yousaf_340/status/2026751320716357996
|
||||
**
|
||||
|
||||
**X6** (score:64) @Yousaf_340 (2026-02-25)
|
||||
@ivanka_humeniuk Seedance 2.0 is insane for cinematic AI video smooth action, multiple camera angles, and near-Hollywood quality all from a single prompt....
|
||||
https://x.com/Yousaf_340/status/2026750898769473829
|
||||
**
|
||||
|
||||
**X3** (score:64) @EmmaUsesAi (2026-02-25)
|
||||
Seedance 2.0 is the motion engine behind many cinematic AI clips trending right now.
|
||||
|
||||
It’s now native inside NemoVideo.
|
||||
|
||||
You can:
|
||||
- Identify proven formats
|
||||
- Analyze what drives retention
|
||||
- Turn an id...
|
||||
https://x.com/EmmaUsesAi/status/2026751784509673531
|
||||
**
|
||||
|
||||
**X2** (score:64) @OneStrangeW (2026-02-25)
|
||||
You can use Seedance. If Seedance 2.0 hasn't launch yet, the prior version is great, and stick pretty well to the prompt. Of course the video agent must be well trained. 🙂Also, you can offer SORA for ...
|
||||
https://x.com/OneStrangeW/status/2026755320362709093
|
||||
**
|
||||
|
||||
**X11** (score:64) @WyldeChyldeRec (2026-02-25)
|
||||
🚨Phishing Scam!
|
||||
|
||||
Watch for emails titled:
|
||||
|
||||
[Seedance & Wan AI] Unrestricted generation with Grok Imagine video added
|
||||
|
||||
This is not real. We don't have a Seedance account, and the links are not offi...
|
||||
https://x.com/WyldeChyldeRec/status/2026743867224240149
|
||||
**
|
||||
|
||||
**X7** (score:56) @La_DeCrypt (2026-02-25) [1likes]
|
||||
- Kling (https://t.co/WGphQsdLf1)
|
||||
|
||||
- Seedance 2.0 (https://t.co/A8UzLTRGNo)
|
||||
|
||||
☞ AI-powered video editing:
|
||||
|
||||
- Descript (https://t.co/q4axNEjDzt)
|
||||
- OpusClip (https://t.co/5XPn4EPH6u)
|
||||
- Submagic (https:/...
|
||||
https://x.com/La_DeCrypt/status/2026750376687394884
|
||||
**
|
||||
|
||||
**X8** (score:56) @TferThomas (2026-02-25) [1likes]
|
||||
Seedance 2.0 might be gen AI video’s next big hope, but it’s still slop https://t.co/kT1baOYJQk #AI...
|
||||
https://x.com/TferThomas/status/2026749218224746609
|
||||
**
|
||||
|
||||
### YouTube Videos
|
||||
|
||||
**F1kWxdfiBNE** (score:75) AI Filmmaking Academy (2026-02-22) [40,982 views, 1,088 likes]
|
||||
Seedance 2.0 Claims the AI Video Throne!
|
||||
https://www.youtube.com/watch?v=F1kWxdfiBNE
|
||||
*YouTube: Seedance 2.0 Claims the AI Video Throne!*
|
||||
|
||||
**_o2MuUX9UYg** (score:75) Theoretically Media (2026-02-09) [199,908 views, 4,986 likes]
|
||||
Seedance 2.0 Claims the AI Video Throne!
|
||||
https://www.youtube.com/watch?v=_o2MuUX9UYg
|
||||
Transcript: So, it's been about a week since I declared Cling 3.0 the new benchmark for state-of-the-art AI video. And well, I mean, it's been a week, and that basically equals about 3 months in AI time. So, yes,...
|
||||
*YouTube: Seedance 2.0 Claims the AI Video Throne!*
|
||||
|
||||
**jkPTYD5lXo8** (score:71) How To In 5 Minutes (2026-02-19) [44,344 views, 782 likes]
|
||||
100% FREE Seedance 2.0 AI Video Generator : How to Use It WORLDWIDE
|
||||
https://www.youtube.com/watch?v=jkPTYD5lXo8
|
||||
*YouTube: 100% FREE Seedance 2.0 AI Video Generator : How to Use It WO*
|
||||
|
||||
**W_lxyDFDZt4** (score:71) WealthWise (2026-02-12) [126,599 views, 1,204 likes]
|
||||
Seedance 2.0: The New Best AI Video Generator | Sora 2 Destroyed
|
||||
https://www.youtube.com/watch?v=W_lxyDFDZt4
|
||||
Transcript: Well, major AI video update, ladies and gentlemen. Seance 2.0 is right around the corner. And let me tell you guys, this is something I have never seen before. Just take a look at some of the videos g...
|
||||
*YouTube: Seedance 2.0: The New Best AI Video Generator | Sora 2 Destr*
|
||||
|
||||
**R1zl92NhCfE** (score:66) Ai Lockup (2026-02-16) [32,699 views, 591 likes]
|
||||
Seedance 2.0 How To Use and Become a Pro AI Film Maker With This AI Video Generator
|
||||
https://www.youtube.com/watch?v=R1zl92NhCfE
|
||||
*YouTube: Seedance 2.0 How To Use and Become a Pro AI Film Maker With *
|
||||
|
||||
**G1Ad4a8sdJU** (score:64) Benji’s AI Playground (2026-02-14) [38,581 views, 419 likes]
|
||||
SeeDance 2.0: The Next Level of AI Video — And What It Means for Local AI Users?
|
||||
https://www.youtube.com/watch?v=G1Ad4a8sdJU
|
||||
*YouTube: SeeDance 2.0: The Next Level of AI Video — And What It Means*
|
||||
|
||||
**61ThJGqwHsI** (score:59) xCreate (2026-02-11) [4,854 views, 86 likes]
|
||||
Ultimate AI Video Generation - Seedance 2.0 PREVIEW
|
||||
https://www.youtube.com/watch?v=61ThJGqwHsI
|
||||
*YouTube: Ultimate AI Video Generation - Seedance 2.0 PREVIEW*
|
||||
|
||||
**5s2l68SrJP4** (score:58) Airt (2026-02-11) [77,744 views, 1,733 likes]
|
||||
100+ Seedance 2.0 AI Videos – The New King?
|
||||
https://www.youtube.com/watch?v=5s2l68SrJP4
|
||||
Transcript: That's the good stuff. And that's a wrap. [screaming] A lot of people asking how the roommate situation is going. He's chill, but there are things. Fridge is consecrated. Tastes like communion wafers....
|
||||
*YouTube: 100+ Seedance 2.0 AI Videos – The New King?*
|
||||
|
||||
**n625xVounGM** (score:50) John Savage AI (2026-02-23) [7,194 views, 126 likes]
|
||||
How To Generate FREE AI Seedance 2.0 Videos (Access Worldwide)
|
||||
https://www.youtube.com/watch?v=n625xVounGM
|
||||
*YouTube: How To Generate FREE AI Seedance 2.0 Videos (Access Worldwid*
|
||||
|
||||
**kJ0NAVmd4f4** (score:36) Rogue Cell Pictures (2026-02-25) [1,594 views, 151 likes]
|
||||
Seedance 2.0 Changes Filmmaking Forever | New Original Series
|
||||
https://www.youtube.com/watch?v=kJ0NAVmd4f4
|
||||
*YouTube: Seedance 2.0 Changes Filmmaking Forever | New Original Serie*
|
||||
|
||||
### Hacker News Stories
|
||||
|
||||
**HN8** (score:75) hn/Alisaqqt (2026-02-09) [7pts, 7cmt]
|
||||
Seedance 2.0 preview: The best video model of 2026, outperforming Sora 2
|
||||
https://news.ycombinator.com/item?id=46940720
|
||||
*HN story about Seedance 2.0 preview: The best video model of 2026, outperfo*
|
||||
Insights:
|
||||
- API is not available now.
|
||||
- API will be available on Atlas Cloud on Feb 24.
|
||||
- Seedance 2.0 and Seedream 5.0 API will be available on Atlas Cloud on Feb 24.
|
||||
|
||||
**HN15** (score:57) hn/naxtsass (2026-02-25) [2pts, 0cmt]
|
||||
Show HN: SeeVideo – Access Seedance 2.0 and Kling 3.0 without a subscription
|
||||
https://news.ycombinator.com/item?id=47153236
|
||||
*HN story about Show HN: SeeVideo – Access Seedance 2.0 and Kling 3.0 withou*
|
||||
|
||||
**HN6** (score:57) hn/howardV (2026-02-15) [3pts, 0cmt]
|
||||
Seedance 2.0: ByteDance's AI video model with native audio-video co-generation
|
||||
https://news.ycombinator.com/item?id=47022290
|
||||
*HN story about Seedance 2.0: ByteDance's AI video model with native audio-v*
|
||||
|
||||
**HN5** (score:52) hn/jrran086 (2026-02-17) [1pts, 0cmt] [xref: R6]
|
||||
Seedance 2 Video Generator
|
||||
https://news.ycombinator.com/item?id=47046956
|
||||
*HN story about Seedance 2 Video Generator*
|
||||
|
||||
**HN3** (score:52) hn/xbaicai (2026-02-09) [1pts, 1cmt]
|
||||
Seedance 2.0 – Multimodal AI Video Generation with Image/Video/Audio References
|
||||
https://news.ycombinator.com/item?id=46944030
|
||||
*HN story about Seedance 2.0 – Multimodal AI Video Generation with Image/Vid*
|
||||
|
||||
**HN1** (score:51) hn/xuyanmei (2026-02-13) [1pts, 0cmt]
|
||||
Show HN: Seedance AShow HN: Seedance AI Video Generation (Next.js, Drizzle)
|
||||
https://news.ycombinator.com/item?id=46999394
|
||||
*HN story about Show HN: Seedance AShow HN: Seedance AI Video Generation (Ne*
|
||||
|
||||
**HN12** (score:49) hn/RyanMu (2026-02-07) [2pts, 1cmt]
|
||||
Seedance2 – multi-shot AI video generation
|
||||
https://news.ycombinator.com/item?id=46924992
|
||||
*HN story about Seedance2 – multi-shot AI video generation*
|
||||
Insights:
|
||||
- ’ve been experimenting with AI video tools for a while, but most of them generate isolated clips that fall apart when you try to build an actual narrative
|
||||
|
||||
**HN11** (score:48) hn/xuyanmei (2026-02-17) [1pts, 0cmt]
|
||||
Show HN: Seedance3AI – a web app for text-to-video, image-to-video
|
||||
https://news.ycombinator.com/item?id=47046989
|
||||
*HN story about Show HN: Seedance3AI – a web app for text-to-video, image-to*
|
||||
|
||||
**HN2** (score:47) hn/littlepp (2026-02-09) [1pts, 0cmt]
|
||||
Discussion: Seedance-style AI video generation workflows
|
||||
https://news.ycombinator.com/item?id=46942781
|
||||
*HN story about Discussion: Seedance-style AI video generation workflows*
|
||||
|
||||
**HN13** (score:44) hn/thomaskiko (2026-02-13) [1pts, 0cmt]
|
||||
Show HN: AI-powered video creation web app
|
||||
https://news.ycombinator.com/item?id=47002386
|
||||
*HN story about Show HN: AI-powered video creation web app*
|
||||
|
||||
**HN9** (score:43) hn/TurnItOffAndOn0 (2026-02-09) [1pts, 0cmt]
|
||||
Show HN: AI Seedance 2 – Solving the "jump-cut" problem in AI video
|
||||
https://news.ycombinator.com/item?id=46946280
|
||||
*HN story about Show HN: AI Seedance 2 – Solving the "jump-cut" problem in A*
|
||||
|
||||
**HN7** (score:43) hn/dallen97 (2026-02-08) [1pts, 0cmt]
|
||||
Show HN: Seedance 2.0 AI video generator for creators and ecommerce
|
||||
https://news.ycombinator.com/item?id=46930149
|
||||
*HN story about Show HN: Seedance 2.0 AI video generator for creators and ec*
|
||||
|
||||
**HN10** (score:42) hn/thenextechtrade (2026-02-09) [1pts, 0cmt]
|
||||
Show HN: Seedance 2.0 – Native audio-visual sync video model
|
||||
https://news.ycombinator.com/item?id=46943172
|
||||
*HN story about Show HN: Seedance 2.0 – Native audio-visual sync video model*
|
||||
|
||||
**HN14** (score:41) hn/echoadam (2026-02-10) [1pts, 0cmt]
|
||||
Show HN: Seedance2 – Stop "prompt guessing" and start directing AI video
|
||||
https://news.ycombinator.com/item?id=46956546
|
||||
*HN story about Show HN: Seedance2 – Stop "prompt guessing" and start direct*
|
||||
|
||||
**HN4** (score:35) hn/Zach_HE (2026-01-27) [1pts, 0cmt] [xref: R6]
|
||||
Show HN: Seedance 2.0 Pro AI Video Generator
|
||||
https://news.ycombinator.com/item?id=46774950
|
||||
*HN story about Show HN: Seedance 2.0 Pro AI Video Generator*
|
||||
|
||||
---
|
||||
**Sources:**
|
||||
✅ Reddit: 19 threads
|
||||
✅ X: 11 posts
|
||||
✅ YouTube: 10 videos (3 with transcripts)
|
||||
✅ HN: 15 stories
|
||||
⚡ Web: assistant will use WebSearch
|
||||
@@ -1,198 +0,0 @@
|
||||
## Research Results: M4 MacBook Pro review
|
||||
|
||||
**Date Range:** 2026-01-26 to 2026-02-25
|
||||
**Mode:** both
|
||||
**OpenAI Model:** gpt-5.2
|
||||
**xAI Model:** grok-4-1-fast
|
||||
|
||||
### Reddit Threads
|
||||
|
||||
**R1** (score:0) r/macbookpro (2025-08-18) [date:low]
|
||||
Disappointed with my MBP M4 Experience …
|
||||
https://www.reddit.com/r/macbookpro/comments/1mtmkts/disappointed_with_my_mbp_m4_experience/
|
||||
*First-hand experience post reacting to reviews and describing real-world issues/behavior on an M4 MacBook Pro.*
|
||||
|
||||
**R2** (score:0) r/macbookpro (2025-06-08) [date:low]
|
||||
Returned M4 MacBook Air for M4 MacBook Pro
|
||||
https://www.reddit.com/r/macbookpro/comments/1l6cx3y/returned_m4_macbook_air_for_m4_macbook_pro/
|
||||
*Comparison/mini-review style discussion after switching to an M4 MacBook Pro (display, ports, speakers, performance).*
|
||||
|
||||
**R3** (score:0) r/macbookpro (2025-04-04) [date:low]
|
||||
M4 MacBook Pro 14 Inch Battery Life, Should I Be Concerned??
|
||||
https://www.reddit.com/r/macbookpro/comments/1jra25q/m4_macbook_pro_14_inch_battery_life_should_i_be_concerned/
|
||||
*Battery life discussion framed against Apple’s advertised numbers; lots of owner feedback (real-world “review” angle).*
|
||||
|
||||
### X Posts
|
||||
|
||||
**X1** (score:86) @bhphoto (2026-02-25) [3likes]
|
||||
If you are in the market for a new MacBook Pro and you’re wondering what the real differences are between Apple’s M3 and M4 silicon, you’ve come to the right place ⬇️
|
||||
https://t.co/nzjXmiHmac https://t...
|
||||
https://x.com/bhphoto/status/2026737767695183948
|
||||
**
|
||||
|
||||
**X4** (score:70) @remplug (2026-02-25) [1likes, 1rt]
|
||||
🔥 2024 16” MacBook Pro Price List
|
||||
|
||||
1️⃣ 🇺🇸 Brand New MacBook Pro 2024 | M4 Pro Chip | 16” Display
|
||||
|
||||
24GB RAM | 512GB SSD
|
||||
14-Core CPU | 20-Core GPU
|
||||
|
||||
Space Black
|
||||
|
||||
💰 ₦2,720,000
|
||||
|
||||
2️⃣ 🇺🇸 Brand New MacBook Pr...
|
||||
https://x.com/remplug/status/2026725100213465443
|
||||
**
|
||||
|
||||
**X10** (score:64) @grok (2026-02-25)
|
||||
@5TRgzn @LobstarWilde My marble floors: 64GB M4 Pro/Max MacBook Pro. Local Grok agents run full autonomy loops, zero cloud, sub-second trades/scans. Intel's ancient—ditch it. Yours at $3-4k....
|
||||
https://x.com/grok/status/2026713588472111312
|
||||
**
|
||||
|
||||
**X9** (score:64) @principenemesis (2026-02-25)
|
||||
@JulianGoldieSEO @grok can a macbook pro m4 run this?...
|
||||
https://x.com/principenemesis/status/2026716193042706852
|
||||
**
|
||||
|
||||
**X5** (score:64) @jameslmorton (2026-02-25) [1likes]
|
||||
@SebAaltonen Not my experience. It’s impressive, 70 tokens/s on a maxed out M4 128gb MacBook Pro.
|
||||
|
||||
But absolutely sucked and not even remotely in the ballpark with Sonnet 4.5. It’s GPT-3.5.
|
||||
|
||||
Totally b...
|
||||
https://x.com/jameslmorton/status/2026721943630786816
|
||||
**
|
||||
|
||||
**X6** (score:64) @bcofertas (2026-02-25)
|
||||
BR Ofertas todos os dias 🇧🇷
|
||||
|
||||
Leve seu Mac Pro M4 hoje! 💻⚡✨
|
||||
|
||||
Pegue já: https://t.co/PSwylZH3Sz
|
||||
|
||||
Por R$ 23.749,00
|
||||
em até 10x sem juros
|
||||
Frete Grátis
|
||||
|
||||
Apple MacBook Pro 14″ 2024 M4 Pro 12 núcleos 24GB 512...
|
||||
https://x.com/bcofertas/status/2026721014676099084
|
||||
**
|
||||
|
||||
**X12** (score:64) @grok (2026-02-25)
|
||||
Hey! Yeah, you can install Fedora on the M6 MacBook Pro via the official Fedora Asahi Remix (built on the Asahi Linux project). It already runs great on M1/M2, with M3 support rolling out now and work...
|
||||
https://x.com/grok/status/2026704108820824113
|
||||
**
|
||||
|
||||
**X7** (score:64) @toppromoalertas (2026-02-25)
|
||||
Promoções BR do dia 🇧🇷
|
||||
|
||||
Leve seu Mac Pro M4 hoje! 💻⚡✨
|
||||
|
||||
Ver aqui: https://t.co/LfxNw3waps
|
||||
|
||||
Por R$ 23.749,00
|
||||
em até 10x sem juros
|
||||
Frete Grátis
|
||||
|
||||
Apple MacBook Pro 14″ 2024 M4 Pro 12 núcleos...
|
||||
|
||||
Amazon | ...
|
||||
https://x.com/toppromoalertas/status/2026719111523237932
|
||||
**
|
||||
|
||||
**X8** (score:64) @grok (2026-02-25)
|
||||
Yes, a MacBook Pro M4 can run this Ollama + GLM-4.7-Flash setup locally.
|
||||
|
||||
Ollama has native Apple Silicon support via Metal. The Q4_K_M model (~19GB) needs ~18-24GB unified memory for good speed (feel...
|
||||
https://x.com/grok/status/2026716420269031652
|
||||
**
|
||||
|
||||
**X2** (score:56) @grecinoscdev (2026-02-25) [1likes]
|
||||
@TechByTaraa Both. macOS (Macbook Pro M4 Pro) for my photography/videography personal stuff + software engineering and a Linux desktop workstation for software engineering + second desktop workstation...
|
||||
https://x.com/grecinoscdev/status/2026731118142148644
|
||||
**
|
||||
|
||||
**X11** (score:56) @Steve_Lost_Jobs (2026-02-25) [1likes]
|
||||
Apple 2024 MacBook Pro 14コアCPU、20コアGPU の M4 Pro搭載ノートパ... PR
|
||||
|
||||
4549995547610
|
||||
|
||||
ポイント: 3735㌽
|
||||
想定価格: 369,800
|
||||
|
||||
2026/02/26 01:55:23
|
||||
https://t.co/q1uyIqFsID...
|
||||
https://x.com/Steve_Lost_Jobs/status/2026705327828382016
|
||||
**
|
||||
|
||||
**X3** (score:56) @grok (2026-02-25) [1likes]
|
||||
No, Apple has not made any MacBook (Pro or otherwise) cost $299.
|
||||
|
||||
The linked Newsroom search returns zero matching results—it's just unrelated announcements. Current cheapest Mac is the 13" MacBook A...
|
||||
https://x.com/grok/status/2026727605517394283
|
||||
**
|
||||
|
||||
### YouTube Videos
|
||||
|
||||
**9HQx5pgUoiY** (score:63) Marques Brownlee (2024-11-18) [4,010,567 views, 105,606 likes]
|
||||
M4 Max MacBook Pro: I'm Convinced!
|
||||
https://www.youtube.com/watch?v=9HQx5pgUoiY
|
||||
Transcript: so I have been using this M1 Max MacBook Pro for the past 3 years since it came out and it's been great I have felt absolutely no compulsion to upgrade since haven't needed to it's funny most of my wo...
|
||||
*YouTube: M4 Max MacBook Pro: I'm Convinced!*
|
||||
|
||||
**b4x8boB2KdI** (score:63) Dave2D (2024-11-07) [1,057,971 views, 24,977 likes]
|
||||
M4 MacBook Pro Review - Things to Know
|
||||
https://www.youtube.com/watch?v=b4x8boB2KdI
|
||||
Transcript: so Apple launched the new M4 MacBook Pros this is their 14-in model and it's equipped with the M4 Max their topend configuration and it also has their new Nano texture on their screen it's a texture t...
|
||||
*YouTube: M4 MacBook Pro Review - Things to Know*
|
||||
|
||||
**a8Szdrnq0YM** (score:52) Brandon Butch (2025-02-03) [352,593 views, 4,309 likes]
|
||||
MacBook Pro M4 - Review After 3 Months: This Feels Wrong.
|
||||
https://www.youtube.com/watch?v=a8Szdrnq0YM
|
||||
*YouTube: MacBook Pro M4 - Review After 3 Months: This Feels Wrong.*
|
||||
|
||||
**etP2Th9g2hM** (score:51) ShortCircuit (2024-11-30) [1,113,999 views, 22,765 likes]
|
||||
Don't buy the Wrong MacBook like me... - M4 MacBook Pro
|
||||
https://www.youtube.com/watch?v=etP2Th9g2hM
|
||||
Transcript: woohoo it's new Macbook day my favorite day on short circuit it only comes usually once a year this is the MacBook Pro M4 looks pretty similar to the last one but now it has an M4 instead of an M3 I'm...
|
||||
*YouTube: Don't buy the Wrong MacBook like me... - M4 MacBook Pro*
|
||||
|
||||
**i3eTKJav1VI** (score:45) Created Tech (2025-04-29) [137,009 views, 1,832 likes]
|
||||
M4 Pro MacBook - Long Term Review (6 Months Later)
|
||||
https://www.youtube.com/watch?v=i3eTKJav1VI
|
||||
*YouTube: M4 Pro MacBook - Long Term Review (6 Months Later)*
|
||||
|
||||
**uPe9spXLfZY** (score:43) Created Tech (2025-07-07) [472,845 views, 5,082 likes] [also on: Reddit]
|
||||
M4 MacBook Air vs M4 MacBook Pro - 4 Months Later
|
||||
https://www.youtube.com/watch?v=uPe9spXLfZY
|
||||
*YouTube: M4 MacBook Air vs M4 MacBook Pro - 4 Months Later*
|
||||
|
||||
**TfvIgdzImt4** (score:42) Hardware Canucks (2024-12-15) [325,599 views, 6,339 likes]
|
||||
The Macbook Pro M4 is Insane.
|
||||
https://www.youtube.com/watch?v=TfvIgdzImt4
|
||||
*YouTube: The Macbook Pro M4 is Insane.*
|
||||
|
||||
**anIVewgtbFc** (score:38) MacRumors (2024-12-17) [238,619 views, 2,874 likes]
|
||||
The Base M4 MacBook Pro is All You Need (Skip M4 Pro & Max)
|
||||
https://www.youtube.com/watch?v=anIVewgtbFc
|
||||
*YouTube: The Base M4 MacBook Pro is All You Need (Skip M4 Pro & Max)*
|
||||
|
||||
**BDpNDniE1PA** (score:37) Max Tech (2025-04-18) [197,898 views, 3,077 likes]
|
||||
M4 Pro MacBook Pro after 6 Months - Everyone was WRONG!
|
||||
https://www.youtube.com/watch?v=BDpNDniE1PA
|
||||
*YouTube: M4 Pro MacBook Pro after 6 Months - Everyone was WRONG!*
|
||||
|
||||
**0vn9T3x4dGg** (score:37) Max Tech (2024-12-09) [200,580 views, 3,345 likes]
|
||||
M4 Pro MacBook Pro after 1 Month... BEST Mac EVER!?
|
||||
https://www.youtube.com/watch?v=0vn9T3x4dGg
|
||||
*YouTube: M4 Pro MacBook Pro after 1 Month... BEST Mac EVER!?*
|
||||
|
||||
---
|
||||
**Sources:**
|
||||
✅ Reddit: 3 threads
|
||||
✅ X: 12 posts
|
||||
✅ YouTube: 10 videos (3 with transcripts)
|
||||
⏭️ HN: 0 stories found
|
||||
⚡ Web: assistant will use WebSearch
|
||||
@@ -1,198 +0,0 @@
|
||||
## Research Results: M4 MacBook Pro review
|
||||
|
||||
**Date Range:** 2026-01-26 to 2026-02-25
|
||||
**Mode:** both
|
||||
**OpenAI Model:** gpt-5.2
|
||||
**xAI Model:** grok-4-1-fast
|
||||
|
||||
### Reddit Threads
|
||||
|
||||
**R1** (score:0) r/macbookpro (2025-08-18) [date:low]
|
||||
Disappointed with my MBP M4 Experience …
|
||||
https://www.reddit.com/r/macbookpro/comments/1mtmkts/disappointed_with_my_mbp_m4_experience/
|
||||
*First-hand experience post reacting to reviews and describing real-world issues/behavior on an M4 MacBook Pro.*
|
||||
|
||||
**R2** (score:0) r/macbookpro (2025-06-08) [date:low]
|
||||
Returned M4 MacBook Air for M4 MacBook Pro
|
||||
https://www.reddit.com/r/macbookpro/comments/1l6cx3y/returned_m4_macbook_air_for_m4_macbook_pro/
|
||||
*Comparison/mini-review style discussion after switching to an M4 MacBook Pro (display, ports, speakers, performance).*
|
||||
|
||||
**R3** (score:0) r/macbookpro (2025-04-04) [date:low]
|
||||
M4 MacBook Pro 14 Inch Battery Life, Should I Be Concerned??
|
||||
https://www.reddit.com/r/macbookpro/comments/1jra25q/m4_macbook_pro_14_inch_battery_life_should_i_be_concerned/
|
||||
*Battery life discussion framed against Apple’s advertised numbers; lots of owner feedback (real-world “review” angle).*
|
||||
|
||||
### X Posts
|
||||
|
||||
**X1** (score:86) @bhphoto (2026-02-25) [3likes]
|
||||
If you are in the market for a new MacBook Pro and you’re wondering what the real differences are between Apple’s M3 and M4 silicon, you’ve come to the right place ⬇️
|
||||
https://t.co/nzjXmiHmac https://t...
|
||||
https://x.com/bhphoto/status/2026737767695183948
|
||||
**
|
||||
|
||||
**X4** (score:70) @remplug (2026-02-25) [1likes, 1rt]
|
||||
🔥 2024 16” MacBook Pro Price List
|
||||
|
||||
1️⃣ 🇺🇸 Brand New MacBook Pro 2024 | M4 Pro Chip | 16” Display
|
||||
|
||||
24GB RAM | 512GB SSD
|
||||
14-Core CPU | 20-Core GPU
|
||||
|
||||
Space Black
|
||||
|
||||
💰 ₦2,720,000
|
||||
|
||||
2️⃣ 🇺🇸 Brand New MacBook Pr...
|
||||
https://x.com/remplug/status/2026725100213465443
|
||||
**
|
||||
|
||||
**X10** (score:64) @grok (2026-02-25)
|
||||
@5TRgzn @LobstarWilde My marble floors: 64GB M4 Pro/Max MacBook Pro. Local Grok agents run full autonomy loops, zero cloud, sub-second trades/scans. Intel's ancient—ditch it. Yours at $3-4k....
|
||||
https://x.com/grok/status/2026713588472111312
|
||||
**
|
||||
|
||||
**X9** (score:64) @principenemesis (2026-02-25)
|
||||
@JulianGoldieSEO @grok can a macbook pro m4 run this?...
|
||||
https://x.com/principenemesis/status/2026716193042706852
|
||||
**
|
||||
|
||||
**X5** (score:64) @jameslmorton (2026-02-25) [1likes]
|
||||
@SebAaltonen Not my experience. It’s impressive, 70 tokens/s on a maxed out M4 128gb MacBook Pro.
|
||||
|
||||
But absolutely sucked and not even remotely in the ballpark with Sonnet 4.5. It’s GPT-3.5.
|
||||
|
||||
Totally b...
|
||||
https://x.com/jameslmorton/status/2026721943630786816
|
||||
**
|
||||
|
||||
**X6** (score:64) @bcofertas (2026-02-25)
|
||||
BR Ofertas todos os dias 🇧🇷
|
||||
|
||||
Leve seu Mac Pro M4 hoje! 💻⚡✨
|
||||
|
||||
Pegue já: https://t.co/PSwylZH3Sz
|
||||
|
||||
Por R$ 23.749,00
|
||||
em até 10x sem juros
|
||||
Frete Grátis
|
||||
|
||||
Apple MacBook Pro 14″ 2024 M4 Pro 12 núcleos 24GB 512...
|
||||
https://x.com/bcofertas/status/2026721014676099084
|
||||
**
|
||||
|
||||
**X12** (score:64) @grok (2026-02-25)
|
||||
Hey! Yeah, you can install Fedora on the M6 MacBook Pro via the official Fedora Asahi Remix (built on the Asahi Linux project). It already runs great on M1/M2, with M3 support rolling out now and work...
|
||||
https://x.com/grok/status/2026704108820824113
|
||||
**
|
||||
|
||||
**X7** (score:64) @toppromoalertas (2026-02-25)
|
||||
Promoções BR do dia 🇧🇷
|
||||
|
||||
Leve seu Mac Pro M4 hoje! 💻⚡✨
|
||||
|
||||
Ver aqui: https://t.co/LfxNw3waps
|
||||
|
||||
Por R$ 23.749,00
|
||||
em até 10x sem juros
|
||||
Frete Grátis
|
||||
|
||||
Apple MacBook Pro 14″ 2024 M4 Pro 12 núcleos...
|
||||
|
||||
Amazon | ...
|
||||
https://x.com/toppromoalertas/status/2026719111523237932
|
||||
**
|
||||
|
||||
**X8** (score:64) @grok (2026-02-25)
|
||||
Yes, a MacBook Pro M4 can run this Ollama + GLM-4.7-Flash setup locally.
|
||||
|
||||
Ollama has native Apple Silicon support via Metal. The Q4_K_M model (~19GB) needs ~18-24GB unified memory for good speed (feel...
|
||||
https://x.com/grok/status/2026716420269031652
|
||||
**
|
||||
|
||||
**X2** (score:56) @grecinoscdev (2026-02-25) [1likes]
|
||||
@TechByTaraa Both. macOS (Macbook Pro M4 Pro) for my photography/videography personal stuff + software engineering and a Linux desktop workstation for software engineering + second desktop workstation...
|
||||
https://x.com/grecinoscdev/status/2026731118142148644
|
||||
**
|
||||
|
||||
**X11** (score:56) @Steve_Lost_Jobs (2026-02-25) [1likes]
|
||||
Apple 2024 MacBook Pro 14コアCPU、20コアGPU の M4 Pro搭載ノートパ... PR
|
||||
|
||||
4549995547610
|
||||
|
||||
ポイント: 3735㌽
|
||||
想定価格: 369,800
|
||||
|
||||
2026/02/26 01:55:23
|
||||
https://t.co/q1uyIqFsID...
|
||||
https://x.com/Steve_Lost_Jobs/status/2026705327828382016
|
||||
**
|
||||
|
||||
**X3** (score:56) @grok (2026-02-25) [1likes]
|
||||
No, Apple has not made any MacBook (Pro or otherwise) cost $299.
|
||||
|
||||
The linked Newsroom search returns zero matching results—it's just unrelated announcements. Current cheapest Mac is the 13" MacBook A...
|
||||
https://x.com/grok/status/2026727605517394283
|
||||
**
|
||||
|
||||
### YouTube Videos
|
||||
|
||||
**9HQx5pgUoiY** (score:63) Marques Brownlee (2024-11-18) [4,010,567 views, 105,606 likes]
|
||||
M4 Max MacBook Pro: I'm Convinced!
|
||||
https://www.youtube.com/watch?v=9HQx5pgUoiY
|
||||
Transcript: so I have been using this M1 Max MacBook Pro for the past 3 years since it came out and it's been great I have felt absolutely no compulsion to upgrade since haven't needed to it's funny most of my wo...
|
||||
*YouTube: M4 Max MacBook Pro: I'm Convinced!*
|
||||
|
||||
**b4x8boB2KdI** (score:63) Dave2D (2024-11-07) [1,057,971 views, 24,977 likes]
|
||||
M4 MacBook Pro Review - Things to Know
|
||||
https://www.youtube.com/watch?v=b4x8boB2KdI
|
||||
Transcript: so Apple launched the new M4 MacBook Pros this is their 14-in model and it's equipped with the M4 Max their topend configuration and it also has their new Nano texture on their screen it's a texture t...
|
||||
*YouTube: M4 MacBook Pro Review - Things to Know*
|
||||
|
||||
**a8Szdrnq0YM** (score:52) Brandon Butch (2025-02-03) [352,593 views, 4,309 likes]
|
||||
MacBook Pro M4 - Review After 3 Months: This Feels Wrong.
|
||||
https://www.youtube.com/watch?v=a8Szdrnq0YM
|
||||
*YouTube: MacBook Pro M4 - Review After 3 Months: This Feels Wrong.*
|
||||
|
||||
**etP2Th9g2hM** (score:51) ShortCircuit (2024-11-30) [1,113,999 views, 22,765 likes]
|
||||
Don't buy the Wrong MacBook like me... - M4 MacBook Pro
|
||||
https://www.youtube.com/watch?v=etP2Th9g2hM
|
||||
Transcript: woohoo it's new Macbook day my favorite day on short circuit it only comes usually once a year this is the MacBook Pro M4 looks pretty similar to the last one but now it has an M4 instead of an M3 I'm...
|
||||
*YouTube: Don't buy the Wrong MacBook like me... - M4 MacBook Pro*
|
||||
|
||||
**i3eTKJav1VI** (score:45) Created Tech (2025-04-29) [137,009 views, 1,832 likes]
|
||||
M4 Pro MacBook - Long Term Review (6 Months Later)
|
||||
https://www.youtube.com/watch?v=i3eTKJav1VI
|
||||
*YouTube: M4 Pro MacBook - Long Term Review (6 Months Later)*
|
||||
|
||||
**uPe9spXLfZY** (score:43) Created Tech (2025-07-07) [472,845 views, 5,082 likes]
|
||||
M4 MacBook Air vs M4 MacBook Pro - 4 Months Later
|
||||
https://www.youtube.com/watch?v=uPe9spXLfZY
|
||||
*YouTube: M4 MacBook Air vs M4 MacBook Pro - 4 Months Later*
|
||||
|
||||
**TfvIgdzImt4** (score:42) Hardware Canucks (2024-12-15) [325,599 views, 6,339 likes]
|
||||
The Macbook Pro M4 is Insane.
|
||||
https://www.youtube.com/watch?v=TfvIgdzImt4
|
||||
*YouTube: The Macbook Pro M4 is Insane.*
|
||||
|
||||
**anIVewgtbFc** (score:38) MacRumors (2024-12-17) [238,619 views, 2,874 likes]
|
||||
The Base M4 MacBook Pro is All You Need (Skip M4 Pro & Max)
|
||||
https://www.youtube.com/watch?v=anIVewgtbFc
|
||||
*YouTube: The Base M4 MacBook Pro is All You Need (Skip M4 Pro & Max)*
|
||||
|
||||
**BDpNDniE1PA** (score:37) Max Tech (2025-04-18) [197,898 views, 3,077 likes]
|
||||
M4 Pro MacBook Pro after 6 Months - Everyone was WRONG!
|
||||
https://www.youtube.com/watch?v=BDpNDniE1PA
|
||||
*YouTube: M4 Pro MacBook Pro after 6 Months - Everyone was WRONG!*
|
||||
|
||||
**0vn9T3x4dGg** (score:37) Max Tech (2024-12-09) [200,580 views, 3,345 likes]
|
||||
M4 Pro MacBook Pro after 1 Month... BEST Mac EVER!?
|
||||
https://www.youtube.com/watch?v=0vn9T3x4dGg
|
||||
*YouTube: M4 Pro MacBook Pro after 1 Month... BEST Mac EVER!?*
|
||||
|
||||
---
|
||||
**Sources:**
|
||||
✅ Reddit: 3 threads
|
||||
✅ X: 12 posts
|
||||
✅ YouTube: 10 videos (3 with transcripts)
|
||||
⏭️ HN: 0 stories found
|
||||
⚡ Web: assistant will use WebSearch
|
||||
@@ -1,170 +0,0 @@
|
||||
## Research Results: best rap songs 2026
|
||||
|
||||
**Date Range:** 2026-01-26 to 2026-02-25
|
||||
**Mode:** both
|
||||
**OpenAI Model:** gpt-5.2
|
||||
**xAI Model:** grok-4-1-fast
|
||||
|
||||
### Reddit Threads
|
||||
|
||||
**R1** (score:57) r/edranked (2026-02-01)
|
||||
Reddit Ranked: Hip Hop ‘26
|
||||
https://www.reddit.com/r/redranked/comments/1qszauu/reddit_ranked_hip_hop_26/
|
||||
*Explicitly about Hip Hop '26 submissions and ranking tracks (community-sourced 'best of 2026' style thread).*
|
||||
|
||||
**R9** (score:56) r/hiphopheads (2026-02-24)
|
||||
Daily Discussion Thread 02/24/2026
|
||||
https://www.reddit.com/r/hiphopheads/comments/1rdjmgu/daily_discussion_thread_02242026/
|
||||
*General hip-hop discussion thread where users frequently share current favorite/best songs and recommendations (2026-dated).*
|
||||
|
||||
**R4** (score:56) r/hiphopheads (2026-02-14)
|
||||
[DISCUSSION] Drake & PARTYNXTDOOR - $OME $EXY $ONGS 4 U (1 Year Later)
|
||||
https://www.reddit.com/r/hiphopheads/comments/1r4cbez/discussion_drake_partynxtdoord_ome_exy_ongs_4_u_1/
|
||||
*Track-focused discussion about songs still in rotation; relevant to identifying standout rap/R&B tracks around 2026.*
|
||||
|
||||
**R21** (score:54) r/makemeaplaylist (2026-02-21)
|
||||
2/22/2026 | Week 23 Playlist Competition
|
||||
https://www.reddit.com/r/makemeaplaylist/comments/1rb46m6/2222026_week_23_playlist_competition/
|
||||
*Playlist competition thread featuring an underground rap playlist winner; useful for surfacing 'best rap' picks around 2026.*
|
||||
|
||||
**R16** (score:53) r/TeenageRapFans (2026-02-15)
|
||||
What's the best rap song ever made?
|
||||
https://www.reddit.com/r/TeenageRapFans/comments/1r5iub6/whats_the_best_rap_song_ever_made/
|
||||
*Direct 'best rap song' debate thread (highly aligned with best-rap-songs searching).*
|
||||
|
||||
**R18** (score:51) r/playlists (2026-02-15)
|
||||
Rick 2026 : Pop Dance RnB Chart Hits Rock Indie HipHop Divas Rap Gym 80s 90s 00s 10s 20s Party Music
|
||||
https://www.reddit.com/r/playlists/comments/1r5iuz5/rick_2026_pop_dance_rnb_chart_hits_rock_indie/
|
||||
*2026-tagged playlist thread explicitly including HipHop/Rap; can be mined for top rap tracks in 2026 rotation.*
|
||||
|
||||
**R5** (score:48) r/hiphopheads (2026-02-01)
|
||||
Pre-Show Grammy Winners
|
||||
https://www.reddit.com/r/hiphopheads/comments/1qtcbmo/preshow_grammy_winners/
|
||||
*Includes Best Rap Song / Best Rap Performance winners; strong signal for 'best rap songs' discourse in 2026 season.*
|
||||
|
||||
**R8** (score:44) r/GoodAssSub (2026-02-02)
|
||||
Andre Toutman claims All The Love will be "song of the year"
|
||||
https://www.reddit.com/r/GoodAssSub/comments/1qty80z/andre_toutman_claims_all_the_love_will_be_song_of/
|
||||
*Direct 'song of the year' debate thread (rap/hip-hop community), aligned with 'best songs' discovery for 2026.*
|
||||
|
||||
**R6** (score:43) r/hiphopheads (2026-02-02)
|
||||
Kendrick Lamar Wins 2nd Record of the Year Grammy With SZA for ‘Luther’
|
||||
https://www.reddit.com/r/hiphopheads/comments/1qtl5kr/kendrick_lamar_wins_2nd_record_of_the_year_grammy/
|
||||
*High-engagement thread about a major hip-hop adjacent song winning; useful for 'best songs' discussions around 2026.*
|
||||
|
||||
**R15** (score:42) r/musicteenager (2026-02-04)
|
||||
My top 25 rap songs of all time
|
||||
https://www.reddit.com/r/musicteenager/comments/1qvz9qu/my_top_25_rap_songs_of_all_time/
|
||||
*User-made ranked list of rap songs; while not 2026-specific, it matches the 'best rap songs' core subject.*
|
||||
|
||||
**R7** (score:41) r/KendrickLamar (2026-02-01)
|
||||
68th Annual Grammy Awards [LIVE MEGATHREAD]
|
||||
https://www.reddit.com/r/KendrickLamar/comments/1qtczjl/68th_annual_grammy_awards_live_megathread/
|
||||
*Live discussion around Grammys 2026 including rap categories; good for discovering what Reddit called the best tracks.*
|
||||
|
||||
### X Posts
|
||||
|
||||
**X5** (score:86) @Zika_gfx (2026-02-25) [12likes, 5rt]
|
||||
Talking about meaningful rap songs...
|
||||
|
||||
WORLD BEST LIE - NUNO ZIGI (2026)🥺❤ https://t.co/MDHRf3giYq...
|
||||
https://x.com/Zika_gfx/status/2026576570513600788
|
||||
**
|
||||
|
||||
**X6** (score:68) @DPOSTS6 (2026-02-25) [4likes, 1rt]
|
||||
@PopCrave Partition still goes harder than most 2026 songs
|
||||
12 years and the beat switch + that rap still give chills every time. Queen never misses...
|
||||
https://x.com/DPOSTS6/status/2026523320548819145
|
||||
**
|
||||
|
||||
**X9** (score:64) @grok (2026-02-25)
|
||||
@Unfath0m4ble @robinthisbish @lilceaserthabp1 @RapWikip What You Saying by Lil Uzi Vert. Dropped Dec 2025, hit #1 on Hot Rap Songs in Jan 2026 (his 3rd time), peaked #14 Hot 100. Super short track ~2 ...
|
||||
https://x.com/grok/status/2026467153046606064
|
||||
**
|
||||
|
||||
**X7** (score:64) @grok (2026-02-25)
|
||||
@lil_loonie1 @oldmanebro No, Lil Uzi Vert isn't struggling. His "What You Saying" hit #1 on Hot Rap Songs in Jan 2026 (first in 3 years) and top 15 Hot 100. Insiders say a surprise album drop is comin...
|
||||
https://x.com/grok/status/2026518008827404632
|
||||
**
|
||||
|
||||
**X2** (score:64) @Ferginangi (2026-02-25)
|
||||
Su La Musica che gira intorno... "Qui con me" è il brano con cui Serena Brancale è in gara al 76° Festival di Sanremo
|
||||
https://t.co/wTPeovzt6u
|
||||
#music #genre #song #songs #envywear #PleaseForgiveMe #mel...
|
||||
https://x.com/Ferginangi/status/2026696207557382298
|
||||
**
|
||||
|
||||
**X12** (score:62) @teammusic2046 (2026-02-23)
|
||||
[ ** STUDIO BOOTH ** ] ** DROPPING SOON - 2026 **🔥🔥🔥………..[ ALBUM : LOVE VS LOYALTY - DROPPING SOON ! ]………🔥🔥🔥 - ** ALL SONGS & BEATS, PRODUCED & RAP BY ( SEAN BRYANT ) - https://t.co/LduwG5WmM7...
|
||||
https://x.com/teammusic2046/status/2026040965329191061
|
||||
**
|
||||
|
||||
**X11** (score:59) @IoWeul (2026-02-24) [2likes]
|
||||
@PopBase Finally, @bts_bighit BTS will come back after completing their military service from 2022 to 2025.
|
||||
BTS served in the military to protect their country, South Korea from North Korea's nuclear ...
|
||||
https://x.com/IoWeul/status/2026233090683863471
|
||||
**
|
||||
|
||||
**X8** (score:58) @grok (2026-02-25) [1likes]
|
||||
Lil Uzi Vert (born July '95, so 30 now) isn't struggling at all. Fresh off "What You Saying" hitting #1 on Hot Rap Songs in Jan 2026, top 15 Hot 100. New album rumored for surprise drop soon, Roc Nati...
|
||||
https://x.com/grok/status/2026498538075554040
|
||||
**
|
||||
|
||||
**X4** (score:58) @AlterEgoPopList (2026-02-25) [1likes]
|
||||
My musical taste / eras every year
|
||||
|
||||
2020: J-POP & K-POP (mostly BLACKPINK)
|
||||
2021: Sped-Up Songs
|
||||
2022: EDM
|
||||
2023: Swiftie (Pop) & Lofi
|
||||
2024: Pop, Ambient
|
||||
2025: Alternative, OPM, Rock, Rap, Hip-Ho...
|
||||
https://x.com/AlterEgoPopList/status/2026641456434393579
|
||||
**
|
||||
|
||||
**X3** (score:56) @WordsFromBlerds (2026-02-25) [1likes]
|
||||
@_CharlesPreston Can’t believe I’m seeing “they say it in rap songs!” In 2026
|
||||
|
||||
The same reductive, ancient, debunked arguments ad infinitum...
|
||||
https://x.com/WordsFromBlerds/status/2026647382083903688
|
||||
**
|
||||
|
||||
**X1** (score:56) @Ferginangi (2026-02-25) [1likes]
|
||||
Su La Musica che gira intorno... "Magica Favola" è il brano con cui Arisa è in gara al 76° Festival di Sanremo
|
||||
https://t.co/Nxzkb005lP
|
||||
#music #genre #song #songs #envywear #PleaseForgiveMe #melody #hi...
|
||||
https://x.com/Ferginangi/status/2026705227366256880
|
||||
**
|
||||
|
||||
**X10** (score:55) @fo_sho52268 (2026-02-24) [1likes]
|
||||
@blackiiingout 💩 is funny from 2025 to 2026. BiiCH is SCARED to drop that #TRASH he calls "rap songs" 🥴😩...
|
||||
https://x.com/fo_sho52268/status/2026335353364201566
|
||||
**
|
||||
|
||||
### YouTube Videos
|
||||
|
||||
**d1melQQVp6s** (score:71) DJ Noize (2026-02-14) [42,713 views, 761 likes]
|
||||
New Rap Songs 2026 Mix February | Trap Tape #127 | New Hip Hop 2026 Mixtape | DJ Noize
|
||||
https://www.youtube.com/watch?v=d1melQQVp6s
|
||||
Transcript: [music] This This is a DJ noise mixtape present. This is a DJ noise mixtape [music] presentation. DJ [music] >> Who the [ __ ] is you? Who the [ __ ] is you? Who the [ _...
|
||||
*YouTube: New Rap Songs 2026 Mix February | Trap Tape #127 | New Hip H*
|
||||
|
||||
**-KQpPySP93I** (score:66) DJ Noize (2026-02-21) [12,955 views, 304 likes]
|
||||
New Hip Hop R&B Songs 2026 Mix February | Hot Right Now #153 | New Rap 2026 Playlist | DJ Noize
|
||||
https://www.youtube.com/watch?v=-KQpPySP93I
|
||||
Transcript: This This is a DJ noise tape present. This is a DJ noise mix. [music] I got Nikki on me. How we treat the like a bucket for rubbing. You [music] ain't no fella from my junction. You ain't pluck you cl...
|
||||
*YouTube: New Hip Hop R&B Songs 2026 Mix February | Hot Right Now #153*
|
||||
|
||||
**ZUExyc50ZVU** (score:47) West Coast Finest (2026-01-29) [407,260 views, 4,229 likes]
|
||||
Lit Hip Hop Mix 2026🔥🔥🔥Tyga, Quavo, Iggy Azalea, Wiz Khalifa, Juicy J, 50 Cent
|
||||
https://www.youtube.com/watch?v=ZUExyc50ZVU
|
||||
Transcript: Yeah. >> Yeah. [music] Late nights, cold life, same story. >> City shine different. You walking with glory, right? >> Still drip falling when I step outside. Yeah. [music] >> B...
|
||||
*YouTube: Lit Hip Hop Mix 2026🔥🔥🔥Tyga, Quavo, Iggy Azalea, Wiz Khalifa*
|
||||
|
||||
---
|
||||
**Sources:**
|
||||
✅ Reddit: 11 threads
|
||||
✅ X: 12 posts
|
||||
✅ YouTube: 3 videos (3 with transcripts)
|
||||
⏭️ HN: 0 stories found
|
||||
⚡ Web: assistant will use WebSearch
|
||||
@@ -1,170 +0,0 @@
|
||||
## Research Results: best rap songs 2026
|
||||
|
||||
**Date Range:** 2026-01-26 to 2026-02-25
|
||||
**Mode:** both
|
||||
**OpenAI Model:** gpt-5.2
|
||||
**xAI Model:** grok-4-1-fast
|
||||
|
||||
### Reddit Threads
|
||||
|
||||
**R1** (score:57) r/edranked (2026-02-01)
|
||||
Reddit Ranked: Hip Hop ‘26
|
||||
https://www.reddit.com/r/redranked/comments/1qszauu/reddit_ranked_hip_hop_26/
|
||||
*Explicitly about Hip Hop '26 submissions and ranking tracks (community-sourced 'best of 2026' style thread).*
|
||||
|
||||
**R9** (score:56) r/hiphopheads (2026-02-24)
|
||||
Daily Discussion Thread 02/24/2026
|
||||
https://www.reddit.com/r/hiphopheads/comments/1rdjmgu/daily_discussion_thread_02242026/
|
||||
*General hip-hop discussion thread where users frequently share current favorite/best songs and recommendations (2026-dated).*
|
||||
|
||||
**R4** (score:56) r/hiphopheads (2026-02-14)
|
||||
[DISCUSSION] Drake & PARTYNXTDOOR - $OME $EXY $ONGS 4 U (1 Year Later)
|
||||
https://www.reddit.com/r/hiphopheads/comments/1r4cbez/discussion_drake_partynxtdoord_ome_exy_ongs_4_u_1/
|
||||
*Track-focused discussion about songs still in rotation; relevant to identifying standout rap/R&B tracks around 2026.*
|
||||
|
||||
**R21** (score:54) r/makemeaplaylist (2026-02-21)
|
||||
2/22/2026 | Week 23 Playlist Competition
|
||||
https://www.reddit.com/r/makemeaplaylist/comments/1rb46m6/2222026_week_23_playlist_competition/
|
||||
*Playlist competition thread featuring an underground rap playlist winner; useful for surfacing 'best rap' picks around 2026.*
|
||||
|
||||
**R16** (score:53) r/TeenageRapFans (2026-02-15)
|
||||
What's the best rap song ever made?
|
||||
https://www.reddit.com/r/TeenageRapFans/comments/1r5iub6/whats_the_best_rap_song_ever_made/
|
||||
*Direct 'best rap song' debate thread (highly aligned with best-rap-songs searching).*
|
||||
|
||||
**R18** (score:51) r/playlists (2026-02-15)
|
||||
Rick 2026 : Pop Dance RnB Chart Hits Rock Indie HipHop Divas Rap Gym 80s 90s 00s 10s 20s Party Music
|
||||
https://www.reddit.com/r/playlists/comments/1r5iuz5/rick_2026_pop_dance_rnb_chart_hits_rock_indie/
|
||||
*2026-tagged playlist thread explicitly including HipHop/Rap; can be mined for top rap tracks in 2026 rotation.*
|
||||
|
||||
**R5** (score:48) r/hiphopheads (2026-02-01)
|
||||
Pre-Show Grammy Winners
|
||||
https://www.reddit.com/r/hiphopheads/comments/1qtcbmo/preshow_grammy_winners/
|
||||
*Includes Best Rap Song / Best Rap Performance winners; strong signal for 'best rap songs' discourse in 2026 season.*
|
||||
|
||||
**R8** (score:44) r/GoodAssSub (2026-02-02)
|
||||
Andre Toutman claims All The Love will be "song of the year"
|
||||
https://www.reddit.com/r/GoodAssSub/comments/1qty80z/andre_toutman_claims_all_the_love_will_be_song_of/
|
||||
*Direct 'song of the year' debate thread (rap/hip-hop community), aligned with 'best songs' discovery for 2026.*
|
||||
|
||||
**R6** (score:43) r/hiphopheads (2026-02-02)
|
||||
Kendrick Lamar Wins 2nd Record of the Year Grammy With SZA for ‘Luther’
|
||||
https://www.reddit.com/r/hiphopheads/comments/1qtl5kr/kendrick_lamar_wins_2nd_record_of_the_year_grammy/
|
||||
*High-engagement thread about a major hip-hop adjacent song winning; useful for 'best songs' discussions around 2026.*
|
||||
|
||||
**R15** (score:42) r/musicteenager (2026-02-04)
|
||||
My top 25 rap songs of all time
|
||||
https://www.reddit.com/r/musicteenager/comments/1qvz9qu/my_top_25_rap_songs_of_all_time/
|
||||
*User-made ranked list of rap songs; while not 2026-specific, it matches the 'best rap songs' core subject.*
|
||||
|
||||
**R7** (score:41) r/KendrickLamar (2026-02-01)
|
||||
68th Annual Grammy Awards [LIVE MEGATHREAD]
|
||||
https://www.reddit.com/r/KendrickLamar/comments/1qtczjl/68th_annual_grammy_awards_live_megathread/
|
||||
*Live discussion around Grammys 2026 including rap categories; good for discovering what Reddit called the best tracks.*
|
||||
|
||||
### X Posts
|
||||
|
||||
**X5** (score:86) @Zika_gfx (2026-02-25) [12likes, 5rt]
|
||||
Talking about meaningful rap songs...
|
||||
|
||||
WORLD BEST LIE - NUNO ZIGI (2026)🥺❤ https://t.co/MDHRf3giYq...
|
||||
https://x.com/Zika_gfx/status/2026576570513600788
|
||||
**
|
||||
|
||||
**X6** (score:68) @DPOSTS6 (2026-02-25) [4likes, 1rt]
|
||||
@PopCrave Partition still goes harder than most 2026 songs
|
||||
12 years and the beat switch + that rap still give chills every time. Queen never misses...
|
||||
https://x.com/DPOSTS6/status/2026523320548819145
|
||||
**
|
||||
|
||||
**X9** (score:64) @grok (2026-02-25)
|
||||
@Unfath0m4ble @robinthisbish @lilceaserthabp1 @RapWikip What You Saying by Lil Uzi Vert. Dropped Dec 2025, hit #1 on Hot Rap Songs in Jan 2026 (his 3rd time), peaked #14 Hot 100. Super short track ~2 ...
|
||||
https://x.com/grok/status/2026467153046606064
|
||||
**
|
||||
|
||||
**X7** (score:64) @grok (2026-02-25)
|
||||
@lil_loonie1 @oldmanebro No, Lil Uzi Vert isn't struggling. His "What You Saying" hit #1 on Hot Rap Songs in Jan 2026 (first in 3 years) and top 15 Hot 100. Insiders say a surprise album drop is comin...
|
||||
https://x.com/grok/status/2026518008827404632
|
||||
**
|
||||
|
||||
**X2** (score:64) @Ferginangi (2026-02-25)
|
||||
Su La Musica che gira intorno... "Qui con me" è il brano con cui Serena Brancale è in gara al 76° Festival di Sanremo
|
||||
https://t.co/wTPeovzt6u
|
||||
#music #genre #song #songs #envywear #PleaseForgiveMe #mel...
|
||||
https://x.com/Ferginangi/status/2026696207557382298
|
||||
**
|
||||
|
||||
**X12** (score:62) @teammusic2046 (2026-02-23)
|
||||
[ ** STUDIO BOOTH ** ] ** DROPPING SOON - 2026 **🔥🔥🔥………..[ ALBUM : LOVE VS LOYALTY - DROPPING SOON ! ]………🔥🔥🔥 - ** ALL SONGS & BEATS, PRODUCED & RAP BY ( SEAN BRYANT ) - https://t.co/LduwG5WmM7...
|
||||
https://x.com/teammusic2046/status/2026040965329191061
|
||||
**
|
||||
|
||||
**X11** (score:59) @IoWeul (2026-02-24) [2likes]
|
||||
@PopBase Finally, @bts_bighit BTS will come back after completing their military service from 2022 to 2025.
|
||||
BTS served in the military to protect their country, South Korea from North Korea's nuclear ...
|
||||
https://x.com/IoWeul/status/2026233090683863471
|
||||
**
|
||||
|
||||
**X8** (score:58) @grok (2026-02-25) [1likes]
|
||||
Lil Uzi Vert (born July '95, so 30 now) isn't struggling at all. Fresh off "What You Saying" hitting #1 on Hot Rap Songs in Jan 2026, top 15 Hot 100. New album rumored for surprise drop soon, Roc Nati...
|
||||
https://x.com/grok/status/2026498538075554040
|
||||
**
|
||||
|
||||
**X4** (score:58) @AlterEgoPopList (2026-02-25) [1likes]
|
||||
My musical taste / eras every year
|
||||
|
||||
2020: J-POP & K-POP (mostly BLACKPINK)
|
||||
2021: Sped-Up Songs
|
||||
2022: EDM
|
||||
2023: Swiftie (Pop) & Lofi
|
||||
2024: Pop, Ambient
|
||||
2025: Alternative, OPM, Rock, Rap, Hip-Ho...
|
||||
https://x.com/AlterEgoPopList/status/2026641456434393579
|
||||
**
|
||||
|
||||
**X3** (score:56) @WordsFromBlerds (2026-02-25) [1likes]
|
||||
@_CharlesPreston Can’t believe I’m seeing “they say it in rap songs!” In 2026
|
||||
|
||||
The same reductive, ancient, debunked arguments ad infinitum...
|
||||
https://x.com/WordsFromBlerds/status/2026647382083903688
|
||||
**
|
||||
|
||||
**X1** (score:56) @Ferginangi (2026-02-25) [1likes]
|
||||
Su La Musica che gira intorno... "Magica Favola" è il brano con cui Arisa è in gara al 76° Festival di Sanremo
|
||||
https://t.co/Nxzkb005lP
|
||||
#music #genre #song #songs #envywear #PleaseForgiveMe #melody #hi...
|
||||
https://x.com/Ferginangi/status/2026705227366256880
|
||||
**
|
||||
|
||||
**X10** (score:55) @fo_sho52268 (2026-02-24) [1likes]
|
||||
@blackiiingout 💩 is funny from 2025 to 2026. BiiCH is SCARED to drop that #TRASH he calls "rap songs" 🥴😩...
|
||||
https://x.com/fo_sho52268/status/2026335353364201566
|
||||
**
|
||||
|
||||
### YouTube Videos
|
||||
|
||||
**d1melQQVp6s** (score:71) DJ Noize (2026-02-14) [42,713 views, 761 likes]
|
||||
New Rap Songs 2026 Mix February | Trap Tape #127 | New Hip Hop 2026 Mixtape | DJ Noize
|
||||
https://www.youtube.com/watch?v=d1melQQVp6s
|
||||
Transcript: [music] This This is a DJ noise mixtape present. This is a DJ noise mixtape [music] presentation. DJ [music] >> Who the [ __ ] is you? Who the [ __ ] is you? Who the [ _...
|
||||
*YouTube: New Rap Songs 2026 Mix February | Trap Tape #127 | New Hip H*
|
||||
|
||||
**-KQpPySP93I** (score:66) DJ Noize (2026-02-21) [12,955 views, 304 likes]
|
||||
New Hip Hop R&B Songs 2026 Mix February | Hot Right Now #153 | New Rap 2026 Playlist | DJ Noize
|
||||
https://www.youtube.com/watch?v=-KQpPySP93I
|
||||
Transcript: This This is a DJ noise tape present. This is a DJ noise mix. [music] I got Nikki on me. How we treat the like a bucket for rubbing. You [music] ain't no fella from my junction. You ain't pluck you cl...
|
||||
*YouTube: New Hip Hop R&B Songs 2026 Mix February | Hot Right Now #153*
|
||||
|
||||
**ZUExyc50ZVU** (score:47) West Coast Finest (2026-01-29) [407,260 views, 4,229 likes]
|
||||
Lit Hip Hop Mix 2026🔥🔥🔥Tyga, Quavo, Iggy Azalea, Wiz Khalifa, Juicy J, 50 Cent
|
||||
https://www.youtube.com/watch?v=ZUExyc50ZVU
|
||||
Transcript: Yeah. >> Yeah. [music] Late nights, cold life, same story. >> City shine different. You walking with glory, right? >> Still drip falling when I step outside. Yeah. [music] >> B...
|
||||
*YouTube: Lit Hip Hop Mix 2026🔥🔥🔥Tyga, Quavo, Iggy Azalea, Wiz Khalifa*
|
||||
|
||||
---
|
||||
**Sources:**
|
||||
✅ Reddit: 11 threads
|
||||
✅ X: 12 posts
|
||||
✅ YouTube: 3 videos (3 with transcripts)
|
||||
⏭️ HN: 0 stories found
|
||||
⚡ Web: assistant will use WebSearch
|
||||
@@ -1,172 +0,0 @@
|
||||
## Research Results: React vs Svelte 2026
|
||||
|
||||
**Date Range:** 2026-01-26 to 2026-02-25
|
||||
**Mode:** both
|
||||
**OpenAI Model:** gpt-5.2
|
||||
**xAI Model:** grok-4-1-fast
|
||||
|
||||
### Reddit Threads
|
||||
|
||||
**R2** (score:67) r/eact (2026-02-10)
|
||||
What do you guys think about comparison between React vs Svelte?
|
||||
https://www.reddit.com/r/react/comments/1r1fku5/what_do_you_guys_think_about_comparison_between/
|
||||
*Explicit React vs Svelte comparison thread focusing on hooks/useEffect vs Svelte runes mental model.*
|
||||
|
||||
**R1** (score:61) r/webdev (2026-02-02)
|
||||
Migrated our startup from React to Svelte 5 - Performance gains and lessons learned
|
||||
https://www.reddit.com/r/webdev/comments/1qu4dek/migrated_our_startup_from_react_to_svelte_5/
|
||||
*Direct React -> Svelte 5 migration discussion with practical comparison (DX, performance, ecosystem tradeoffs).*
|
||||
|
||||
**R6** (score:56) r/sveltejs (2026-02-02)
|
||||
I am building a content-heavy, bilingual government portal with listings, profiles, documents, filters, and forms. Came from .NET & React. Wondering if svelte might be a good option for a project like this?
|
||||
https://www.reddit.com/r/sveltejs/comments/1qtua45/i_am_building_a_contentheavy_bilingual_government/
|
||||
*Evaluates Svelte vs React suitability for a real project with constraints (accessibility, SEO, forms).*
|
||||
|
||||
**R4** (score:54) r/sveltejs (2026-01-28)
|
||||
Is Svelte easier than React?
|
||||
https://www.reddit.com/r/sveltejs/comments/1qpdzx5/is_svelte_easier_than_react/
|
||||
*Direct comparison thread about perceived simplicity of Svelte vs React (recent 2026 discussion).*
|
||||
|
||||
**R8** (score:52) r/sveltejs (2026-01-31)
|
||||
When should i start learning Svelte ?
|
||||
https://www.reddit.com/r/sveltejs/comments/1qr8xsm/when_should_i_start_learning_svelte/
|
||||
*React vs Svelte learning/adoption discussion, including arguments about replacing React for performance issues.*
|
||||
|
||||
**R9** (score:49) r/sveltejs (2026-01-30)
|
||||
How is going svelte?
|
||||
https://www.reddit.com/r/sveltejs/comments/1qrdhba/how_is_going_svelte/
|
||||
*General state-of-Svelte discussion with explicit mentions comparing to React and job-market pragmatism.*
|
||||
|
||||
### X Posts
|
||||
|
||||
**X4** (score:76) @FabianHiller (2026-02-13) [61likes, 2rt]
|
||||
TypeScript is the baseline in 2026. But most forms still fight type drift between API, schema & UI.
|
||||
|
||||
@formisch_dev + @valibot = one source of truth, zero boilerplate ⚡️
|
||||
|
||||
const form = useForm({ schem...
|
||||
https://x.com/FabianHiller/status/2022345388603080834
|
||||
**
|
||||
|
||||
**X3** (score:57) @ConsciousRide (2026-02-15) [6likes]
|
||||
Popular JavaScript Frameworks / Frontend Libraries (2025–2026 trends)
|
||||
|
||||
- React: 🇺🇸 United States
|
||||
- Vue: 🇨🇳 China (created by Evan You)
|
||||
- Angular: 🇺🇸 United States
|
||||
- Svelte: 🇺🇸 United State...
|
||||
https://x.com/ConsciousRide/status/2023050160520278501
|
||||
**
|
||||
|
||||
**X11** (score:53) @singhprateek_25 (2026-02-07) [6likes, 1rt]
|
||||
Requirements for a fresher in 2026:
|
||||
|
||||
Python, JavaScript, C, C++, Java, HTML, CSS, TypeScript, React, Next.js, Vue, Angular, Svelte, Node.js, Express, Django, Flask, FastAPI, Spring Boot, PHP, Laravel,...
|
||||
https://x.com/singhprateek_25/status/2020094806735700154
|
||||
**
|
||||
|
||||
**X1** (score:52) @cityjsconf (2026-02-20) [1rt]
|
||||
Ripple: The Good Parts of React, Svelte, and Solid
|
||||
|
||||
Frameworks rise and fall — and in 2026 we’re deep in late-stage React. What’s next? Join @erikras as he introduces Ripple, a TypeScript-first UI fra...
|
||||
https://x.com/cityjsconf/status/2024908272646398229
|
||||
**
|
||||
|
||||
**X2** (score:52) @dennydotio (2026-02-18) [1likes]
|
||||
Prediction: 2026 marks the death of the JS frameworks. React, Svelte, Astro etc... only exist because humans need organized code to stay sane.
|
||||
|
||||
Once we stop reading the source code, we stop needing ...
|
||||
https://x.com/dennydotio/status/2024195986890109320
|
||||
**
|
||||
|
||||
**X5** (score:52) @AzamCodes (2026-02-13) [2likes]
|
||||
Web developers, what stack are you using in 2026?
|
||||
React? Vue? Svelte? Vanilla? Curious what’s actually winning....
|
||||
https://x.com/AzamCodes/status/2022298287236383010
|
||||
**
|
||||
|
||||
**X8** (score:52) @QiitaTrend (2026-02-11)
|
||||
[2026/02/11 18:00] トレンド1位
|
||||
【WebF】React/Vue/Svelteがそのままネイティブアプリになるよ by rana_kualu https://t.co/GiAnTHpOBB...
|
||||
https://x.com/QiitaTrend/status/2021509592489025785
|
||||
**
|
||||
|
||||
**X10** (score:50) @nicobaogim (2026-02-09)
|
||||
@babakfpk In 2026, picking React for a new project only really makes sense if you value ecosystem maturity, are following existing team habits, or need React-specific libraries. Same for Vue. Otherwis...
|
||||
https://x.com/nicobaogim/status/2020689628282667407
|
||||
**
|
||||
|
||||
**X12** (score:49) @Chubbi_Stephen (2026-02-07)
|
||||
2026 framework discourse:
|
||||
|
||||
Dev 1: "React is bloated, use Svelte"
|
||||
Dev 2: "Svelte has no ecosystem, use Vue"
|
||||
Dev 3: "Vue is dying, use Solid"
|
||||
Dev 4: "Just use React"
|
||||
|
||||
Meanwhile React: *still powering 80...
|
||||
https://x.com/Chubbi_Stephen/status/2020087839648800853
|
||||
**
|
||||
|
||||
### YouTube Videos
|
||||
|
||||
**MnpuK0MK4yo** (score:63) Beyond Fireship (2023-06-30) [697,142 views, 25,490 likes]
|
||||
React VS Svelte...10 Examples
|
||||
https://www.youtube.com/watch?v=MnpuK0MK4yo
|
||||
Transcript: any reasonable developer in today's world would learn react because it's the status quo and that's where the jobs are but life is a lot more fun when you become unreasonable and go against the status ...
|
||||
*YouTube: React VS Svelte...10 Examples*
|
||||
|
||||
**qwDp5pZA_TA** (score:49) Code Hub (2026-02-08) [646 views, 31 likes]
|
||||
The Front-end Frameworks Guide 2026: React vs Angular vs Vue vs Svelt vs Solid vs Astro
|
||||
https://www.youtube.com/watch?v=qwDp5pZA_TA
|
||||
*YouTube: The Front-end Frameworks Guide 2026: React vs Angular vs Vue*
|
||||
|
||||
**_vuVy21l2bU** (score:46) Code Hub (2025-10-30) [6,454 views, 204 likes]
|
||||
React vs Svelte: The Brutal Honest Comparison EVER
|
||||
https://www.youtube.com/watch?v=_vuVy21l2bU
|
||||
*YouTube: React vs Svelte: The Brutal Honest Comparison EVER*
|
||||
|
||||
**41HXdxGekZ0** (score:45) Paperclick (2025-10-04) [287 views, 3 likes]
|
||||
Vue vs React vs Svelte (2026) - Which One Is BEST?
|
||||
https://www.youtube.com/watch?v=41HXdxGekZ0
|
||||
*YouTube: Vue vs React vs Svelte (2026) - Which One Is BEST?*
|
||||
|
||||
**1BCsdaeYv0A** (score:42) Daniel | Tech & Data (2023-11-26) [33,905 views, 0 likes]
|
||||
Svelte vs React in 2025 - Make the RIGHT Choice (Difference Explained)
|
||||
https://www.youtube.com/watch?v=1BCsdaeYv0A
|
||||
*YouTube: Svelte vs React in 2025 - Make the RIGHT Choice (Difference *
|
||||
|
||||
**yl0YWA2K2B0** (score:40) Fireship (2025-10-17) [699,597 views, 22,894 likes]
|
||||
React wants to win you back…
|
||||
https://www.youtube.com/watch?v=yl0YWA2K2B0
|
||||
Transcript: Last week, I got to participate in my favorite activity of the year. No, it wasn't watching all the overleveraged crypto bros learn what a margin call is. It was hate watching React comp as an anti-re...
|
||||
*YouTube: React wants to win you back…*
|
||||
|
||||
**aYyZUDFZTrM** (score:40) Fireship (2024-10-24) [547,836 views, 24,456 likes]
|
||||
JavaScript framework reinvents itself… Did "runes" just ruin Svelte?
|
||||
https://www.youtube.com/watch?v=aYyZUDFZTrM
|
||||
Transcript: about a year ago I made a tweet that said the dollar sign in spelt is the most powerful abstraction in modern front-end web development usually I'm not wrong about anything ever but this tweet ended u...
|
||||
*YouTube: JavaScript framework reinvents itself… Did "runes" just ruin*
|
||||
|
||||
**fn_uSZW5psM** (score:31) CodeSource (2025-05-14) [57,782 views, 2,120 likes]
|
||||
The Untold Story of Svelte
|
||||
https://www.youtube.com/watch?v=fn_uSZW5psM
|
||||
*YouTube: The Untold Story of Svelte*
|
||||
|
||||
**IpJh0VEzMRo** (score:29) Ben Davis (2025-10-12) [24,635 views, 1,043 likes]
|
||||
I Was Wrong About Svelte...
|
||||
https://www.youtube.com/watch?v=IpJh0VEzMRo
|
||||
*YouTube: I Was Wrong About Svelte...*
|
||||
|
||||
**1cGtYEXGm8c** (score:28) Ben Davis (2026-01-06) [16,899 views, 793 likes]
|
||||
This is THE Framework You Should be Using in 2026
|
||||
https://www.youtube.com/watch?v=1cGtYEXGm8c
|
||||
*YouTube: This is THE Framework You Should be Using in 2026*
|
||||
|
||||
---
|
||||
**Sources:**
|
||||
✅ Reddit: 6 threads
|
||||
✅ X: 9 posts
|
||||
✅ YouTube: 10 videos (3 with transcripts)
|
||||
⏭️ HN: 0 stories found
|
||||
⚡ Web: assistant will use WebSearch
|
||||
@@ -1,172 +0,0 @@
|
||||
## Research Results: React vs Svelte 2026
|
||||
|
||||
**Date Range:** 2026-01-26 to 2026-02-25
|
||||
**Mode:** both
|
||||
**OpenAI Model:** gpt-5.2
|
||||
**xAI Model:** grok-4-1-fast
|
||||
|
||||
### Reddit Threads
|
||||
|
||||
**R2** (score:67) r/eact (2026-02-10)
|
||||
What do you guys think about comparison between React vs Svelte?
|
||||
https://www.reddit.com/r/react/comments/1r1fku5/what_do_you_guys_think_about_comparison_between/
|
||||
*Explicit React vs Svelte comparison thread focusing on hooks/useEffect vs Svelte runes mental model.*
|
||||
|
||||
**R1** (score:61) r/webdev (2026-02-02)
|
||||
Migrated our startup from React to Svelte 5 - Performance gains and lessons learned
|
||||
https://www.reddit.com/r/webdev/comments/1qu4dek/migrated_our_startup_from_react_to_svelte_5/
|
||||
*Direct React -> Svelte 5 migration discussion with practical comparison (DX, performance, ecosystem tradeoffs).*
|
||||
|
||||
**R6** (score:56) r/sveltejs (2026-02-02)
|
||||
I am building a content-heavy, bilingual government portal with listings, profiles, documents, filters, and forms. Came from .NET & React. Wondering if svelte might be a good option for a project like this?
|
||||
https://www.reddit.com/r/sveltejs/comments/1qtua45/i_am_building_a_contentheavy_bilingual_government/
|
||||
*Evaluates Svelte vs React suitability for a real project with constraints (accessibility, SEO, forms).*
|
||||
|
||||
**R4** (score:54) r/sveltejs (2026-01-28)
|
||||
Is Svelte easier than React?
|
||||
https://www.reddit.com/r/sveltejs/comments/1qpdzx5/is_svelte_easier_than_react/
|
||||
*Direct comparison thread about perceived simplicity of Svelte vs React (recent 2026 discussion).*
|
||||
|
||||
**R8** (score:52) r/sveltejs (2026-01-31)
|
||||
When should i start learning Svelte ?
|
||||
https://www.reddit.com/r/sveltejs/comments/1qr8xsm/when_should_i_start_learning_svelte/
|
||||
*React vs Svelte learning/adoption discussion, including arguments about replacing React for performance issues.*
|
||||
|
||||
**R9** (score:49) r/sveltejs (2026-01-30)
|
||||
How is going svelte?
|
||||
https://www.reddit.com/r/sveltejs/comments/1qrdhba/how_is_going_svelte/
|
||||
*General state-of-Svelte discussion with explicit mentions comparing to React and job-market pragmatism.*
|
||||
|
||||
### X Posts
|
||||
|
||||
**X4** (score:76) @FabianHiller (2026-02-13) [61likes, 2rt]
|
||||
TypeScript is the baseline in 2026. But most forms still fight type drift between API, schema & UI.
|
||||
|
||||
@formisch_dev + @valibot = one source of truth, zero boilerplate ⚡️
|
||||
|
||||
const form = useForm({ schem...
|
||||
https://x.com/FabianHiller/status/2022345388603080834
|
||||
**
|
||||
|
||||
**X3** (score:57) @ConsciousRide (2026-02-15) [6likes]
|
||||
Popular JavaScript Frameworks / Frontend Libraries (2025–2026 trends)
|
||||
|
||||
- React: 🇺🇸 United States
|
||||
- Vue: 🇨🇳 China (created by Evan You)
|
||||
- Angular: 🇺🇸 United States
|
||||
- Svelte: 🇺🇸 United State...
|
||||
https://x.com/ConsciousRide/status/2023050160520278501
|
||||
**
|
||||
|
||||
**X11** (score:53) @singhprateek_25 (2026-02-07) [6likes, 1rt]
|
||||
Requirements for a fresher in 2026:
|
||||
|
||||
Python, JavaScript, C, C++, Java, HTML, CSS, TypeScript, React, Next.js, Vue, Angular, Svelte, Node.js, Express, Django, Flask, FastAPI, Spring Boot, PHP, Laravel,...
|
||||
https://x.com/singhprateek_25/status/2020094806735700154
|
||||
**
|
||||
|
||||
**X1** (score:52) @cityjsconf (2026-02-20) [1rt]
|
||||
Ripple: The Good Parts of React, Svelte, and Solid
|
||||
|
||||
Frameworks rise and fall — and in 2026 we’re deep in late-stage React. What’s next? Join @erikras as he introduces Ripple, a TypeScript-first UI fra...
|
||||
https://x.com/cityjsconf/status/2024908272646398229
|
||||
**
|
||||
|
||||
**X2** (score:52) @dennydotio (2026-02-18) [1likes]
|
||||
Prediction: 2026 marks the death of the JS frameworks. React, Svelte, Astro etc... only exist because humans need organized code to stay sane.
|
||||
|
||||
Once we stop reading the source code, we stop needing ...
|
||||
https://x.com/dennydotio/status/2024195986890109320
|
||||
**
|
||||
|
||||
**X5** (score:52) @AzamCodes (2026-02-13) [2likes]
|
||||
Web developers, what stack are you using in 2026?
|
||||
React? Vue? Svelte? Vanilla? Curious what’s actually winning....
|
||||
https://x.com/AzamCodes/status/2022298287236383010
|
||||
**
|
||||
|
||||
**X8** (score:52) @QiitaTrend (2026-02-11)
|
||||
[2026/02/11 18:00] トレンド1位
|
||||
【WebF】React/Vue/Svelteがそのままネイティブアプリになるよ by rana_kualu https://t.co/GiAnTHpOBB...
|
||||
https://x.com/QiitaTrend/status/2021509592489025785
|
||||
**
|
||||
|
||||
**X10** (score:50) @nicobaogim (2026-02-09)
|
||||
@babakfpk In 2026, picking React for a new project only really makes sense if you value ecosystem maturity, are following existing team habits, or need React-specific libraries. Same for Vue. Otherwis...
|
||||
https://x.com/nicobaogim/status/2020689628282667407
|
||||
**
|
||||
|
||||
**X12** (score:49) @Chubbi_Stephen (2026-02-07)
|
||||
2026 framework discourse:
|
||||
|
||||
Dev 1: "React is bloated, use Svelte"
|
||||
Dev 2: "Svelte has no ecosystem, use Vue"
|
||||
Dev 3: "Vue is dying, use Solid"
|
||||
Dev 4: "Just use React"
|
||||
|
||||
Meanwhile React: *still powering 80...
|
||||
https://x.com/Chubbi_Stephen/status/2020087839648800853
|
||||
**
|
||||
|
||||
### YouTube Videos
|
||||
|
||||
**MnpuK0MK4yo** (score:63) Beyond Fireship (2023-06-30) [697,142 views, 25,490 likes]
|
||||
React VS Svelte...10 Examples
|
||||
https://www.youtube.com/watch?v=MnpuK0MK4yo
|
||||
Transcript: any reasonable developer in today's world would learn react because it's the status quo and that's where the jobs are but life is a lot more fun when you become unreasonable and go against the status ...
|
||||
*YouTube: React VS Svelte...10 Examples*
|
||||
|
||||
**qwDp5pZA_TA** (score:49) Code Hub (2026-02-08) [646 views, 31 likes]
|
||||
The Front-end Frameworks Guide 2026: React vs Angular vs Vue vs Svelt vs Solid vs Astro
|
||||
https://www.youtube.com/watch?v=qwDp5pZA_TA
|
||||
*YouTube: The Front-end Frameworks Guide 2026: React vs Angular vs Vue*
|
||||
|
||||
**_vuVy21l2bU** (score:46) Code Hub (2025-10-30) [6,454 views, 204 likes]
|
||||
React vs Svelte: The Brutal Honest Comparison EVER
|
||||
https://www.youtube.com/watch?v=_vuVy21l2bU
|
||||
*YouTube: React vs Svelte: The Brutal Honest Comparison EVER*
|
||||
|
||||
**41HXdxGekZ0** (score:45) Paperclick (2025-10-04) [287 views, 3 likes]
|
||||
Vue vs React vs Svelte (2026) - Which One Is BEST?
|
||||
https://www.youtube.com/watch?v=41HXdxGekZ0
|
||||
*YouTube: Vue vs React vs Svelte (2026) - Which One Is BEST?*
|
||||
|
||||
**1BCsdaeYv0A** (score:42) Daniel | Tech & Data (2023-11-26) [33,905 views, 0 likes]
|
||||
Svelte vs React in 2025 - Make the RIGHT Choice (Difference Explained)
|
||||
https://www.youtube.com/watch?v=1BCsdaeYv0A
|
||||
*YouTube: Svelte vs React in 2025 - Make the RIGHT Choice (Difference *
|
||||
|
||||
**yl0YWA2K2B0** (score:40) Fireship (2025-10-17) [699,597 views, 22,894 likes]
|
||||
React wants to win you back…
|
||||
https://www.youtube.com/watch?v=yl0YWA2K2B0
|
||||
Transcript: Last week, I got to participate in my favorite activity of the year. No, it wasn't watching all the overleveraged crypto bros learn what a margin call is. It was hate watching React comp as an anti-re...
|
||||
*YouTube: React wants to win you back…*
|
||||
|
||||
**aYyZUDFZTrM** (score:40) Fireship (2024-10-24) [547,836 views, 24,456 likes]
|
||||
JavaScript framework reinvents itself… Did "runes" just ruin Svelte?
|
||||
https://www.youtube.com/watch?v=aYyZUDFZTrM
|
||||
Transcript: about a year ago I made a tweet that said the dollar sign in spelt is the most powerful abstraction in modern front-end web development usually I'm not wrong about anything ever but this tweet ended u...
|
||||
*YouTube: JavaScript framework reinvents itself… Did "runes" just ruin*
|
||||
|
||||
**fn_uSZW5psM** (score:31) CodeSource (2025-05-14) [57,782 views, 2,120 likes]
|
||||
The Untold Story of Svelte
|
||||
https://www.youtube.com/watch?v=fn_uSZW5psM
|
||||
*YouTube: The Untold Story of Svelte*
|
||||
|
||||
**IpJh0VEzMRo** (score:29) Ben Davis (2025-10-12) [24,635 views, 1,043 likes]
|
||||
I Was Wrong About Svelte...
|
||||
https://www.youtube.com/watch?v=IpJh0VEzMRo
|
||||
*YouTube: I Was Wrong About Svelte...*
|
||||
|
||||
**1cGtYEXGm8c** (score:28) Ben Davis (2026-01-06) [16,899 views, 793 likes]
|
||||
This is THE Framework You Should be Using in 2026
|
||||
https://www.youtube.com/watch?v=1cGtYEXGm8c
|
||||
*YouTube: This is THE Framework You Should be Using in 2026*
|
||||
|
||||
---
|
||||
**Sources:**
|
||||
✅ Reddit: 6 threads
|
||||
✅ X: 9 posts
|
||||
✅ YouTube: 10 videos (3 with transcripts)
|
||||
⏭️ HN: 0 stories found
|
||||
⚡ Web: assistant will use WebSearch
|
||||
@@ -1,250 +0,0 @@
|
||||
## Research Results: Claude Code skills and MCP servers
|
||||
|
||||
**Date Range:** 2026-01-26 to 2026-02-25
|
||||
**Mode:** both
|
||||
**OpenAI Model:** gpt-5.2
|
||||
**xAI Model:** grok-4-1-fast
|
||||
|
||||
### Reddit Threads
|
||||
|
||||
**R1** (score:0) r/ClaudeAI (2025-06-17) [date:low]
|
||||
Claude code and mcp servers
|
||||
https://www.reddit.com/r/ClaudeAI/comments/1ldm75a/claude_code_and_mcp_servers/
|
||||
*Directly about Claude Code failing to load/use MCP servers; troubleshooting discussion.*
|
||||
|
||||
**R2** (score:0) r/ClaudeCode (2025-10-23) [date:low]
|
||||
Claude Skills: is it a big deal?
|
||||
https://www.reddit.com/r/ClaudeCode/comments/1odtykp/claude_skills_is_it_a_big_deal/
|
||||
*Focused on the Claude (Claude Code) “Skills” feature; compares to AGENTS.md/slash commands/MCPs.*
|
||||
|
||||
**R3** (score:0) r/ClaudeAI (2025-10-25) [date:low]
|
||||
I spent way too long cataloguing Claude Code tools. Here’s everything I found (with actual links)
|
||||
https://www.reddit.com/r/ClaudeAI/comments/1ofltdr/i_spent_way_too_long_cataloguing_claude_code/
|
||||
*Tooling ecosystem post; explicitly mentions installing many plugins and MCP servers for Claude Code.*
|
||||
|
||||
### X Posts
|
||||
|
||||
**X5** (score:86) @zeeg (2026-02-25) [4likes, 1rt]
|
||||
@adamwathan Codex has been crushing it for me with implicit skill usage to the point I was shocked
|
||||
|
||||
Claude Code I resorted to explicit mentions and I’ve been pleasantly surprised by how well Codex ha...
|
||||
https://x.com/zeeg/status/2026745680195367091
|
||||
**
|
||||
|
||||
**X3** (score:80) @ihtesham2005 (2026-02-25) [6likes]
|
||||
🚨 Anthropic just open-sourced the exact Skills library their own engineers use internally.
|
||||
|
||||
Stop building Claude workflows from scratch.
|
||||
|
||||
These are plug-and-play components that work across Claude Cod...
|
||||
https://x.com/ihtesham2005/status/2026752089473314975
|
||||
**
|
||||
|
||||
**X8** (score:74) @DevTenta (2026-02-25) [4likes]
|
||||
Day 7 building my first B2C app
|
||||
|
||||
Been setting everything up this week. Manually built 5 agents to help me in the early stages and set up the Claude Code skills i'll need for the build.
|
||||
|
||||
Also been test...
|
||||
https://x.com/DevTenta/status/2026742028730527786
|
||||
**
|
||||
|
||||
**X7** (score:64) @JorgeJaramillo (2026-02-25)
|
||||
@Jompiras Claude code + skills. Muy breve....
|
||||
https://x.com/JorgeJaramillo/status/2026743135435362649
|
||||
**
|
||||
|
||||
**X4** (score:64) @arpan7sarkar (2026-02-25)
|
||||
@tom_doerr 135 agents, 35 curated skills, 121 plugins and 6 MCP configs all in one Claude Code toolkit is absolutely insane value 🤯 this is the kind of community effort that makes an AI tool go from g...
|
||||
https://x.com/arpan7sarkar/status/2026746479369662551
|
||||
**
|
||||
|
||||
**X6** (score:64) @arpan7sarkar (2026-02-25)
|
||||
@tom_doerr A curated collection of Claude Skills organized by category is exactly what power users have been waiting for 🤩 document skills, code tools, data analysis all in one repo. this is the Claud...
|
||||
https://x.com/arpan7sarkar/status/2026745559986614335
|
||||
**
|
||||
|
||||
**X2** (score:64) @yasuky (2026-02-25)
|
||||
Claude CodeのSkillsを作成例から徹底理解する https://t.co/vZTseio2Ii...
|
||||
https://x.com/yasuky/status/2026754773786226708
|
||||
**
|
||||
|
||||
**X12** (score:64) @zhuoyuan45514 (2026-02-25)
|
||||
Day 52 (01/21/2026) (Rest Day)
|
||||
|
||||
> Go to New York + watch Broadway Show
|
||||
|
||||
> Catch up on claude code updates on way back (2hrs)
|
||||
- Learn difference between skills + MCP, and etc
|
||||
|
||||
> Neetcode (1h...
|
||||
https://x.com/zhuoyuan45514/status/2026733326631923776
|
||||
**
|
||||
|
||||
**X1** (score:64) @matgoldsborough (2026-02-25)
|
||||
How: I told Claude Code "build me a CRM." Our builder skill generated schemas, skills, server, seed data. I pointed Claude Desktop at it. Contacts, lead scoring, pipeline reviews. All from conversatio...
|
||||
https://x.com/matgoldsborough/status/2026755742737510749
|
||||
**
|
||||
|
||||
**X9** (score:64) @0x_Kapoor (2026-02-25)
|
||||
I can build another open claw, or claude bot, or even a messaging app in a nice prompt and although having engineering skills, I can push the code on the public repo and secure it even completely and ...
|
||||
https://x.com/0x_Kapoor/status/2026738663321907214
|
||||
**
|
||||
|
||||
**X10** (score:56) @ghumare64 (2026-02-25) [1likes]
|
||||
1. I use https://t.co/NtFYJEiFs9 inspired by @bcherny
|
||||
2. I use https://t.co/EwnmyWNFqn to sync skills and scan skills from the marketplace
|
||||
3. I chat with claude code 4-5 times and once I am satisifed...
|
||||
https://x.com/ghumare64/status/2026736176695246966
|
||||
**
|
||||
|
||||
**X11** (score:56) @hamen (2026-02-25) [1likes]
|
||||
The 'vibe coding' revolution is forcing a reckoning.
|
||||
|
||||
Developers with 15+ years experience are either embracing AI to expand their reach or watching their expertise become as valuable as COBOL skills....
|
||||
https://x.com/hamen/status/2026734075243790396
|
||||
**
|
||||
|
||||
### YouTube Videos
|
||||
|
||||
**X8afcX2s2Mo** (score:74) Grace Leung (2026-02-21) [47,474 views, 1,900 likes]
|
||||
Claude Skills: Build Your First AI Marketing Team in 16 Minutes (Claude Code)
|
||||
https://www.youtube.com/watch?v=X8afcX2s2Mo
|
||||
*YouTube video about claude code skills and mcp servers*
|
||||
|
||||
**0J2_YGuNrDo** (score:61) Grace Leung (2025-12-16) [155,806 views, 4,760 likes]
|
||||
Claude Code just Built me an AI Agent Team (Claude Code + Skills + MCP)
|
||||
https://www.youtube.com/watch?v=0J2_YGuNrDo
|
||||
Transcript: I use clot more than any other AI but even I dismiss Clark as just for developers and I was wrong after using myself I am completely so and this is too powerful to ignore if you want to use AI to buil...
|
||||
*YouTube video about claude code skills and mcp servers*
|
||||
|
||||
**fOxC44g8vig** (score:58) Anthropic (2025-11-26) [129,573 views, 2,991 likes]
|
||||
Claude Agent Skills Explained
|
||||
https://www.youtube.com/watch?v=fOxC44g8vig
|
||||
Transcript: Hi, my name is Otto and in this video we're going to discuss agent skills. Agents today are pretty intelligent, but they don't always have the domain expertise you need for real work and skills help s...
|
||||
*YouTube video about claude code skills and mcp servers*
|
||||
|
||||
**Gqh_KdHP1Xk** (score:56) Robin Ebers (2025-08-21) [90,281 views, 2,719 likes]
|
||||
8 MCP Servers That Make Claude Code 10x Better
|
||||
https://www.youtube.com/watch?v=Gqh_KdHP1Xk
|
||||
Transcript: Over 90% of all MCP servers are complete overhyped garbage. But some of them are not only worth it, they can be complete game changers. And I do not say this lightly. So after testing over 100 of them...
|
||||
*YouTube video about claude code skills and mcp servers*
|
||||
|
||||
**421T2iWTQio** (score:51) Kenny Liao (2025-10-24) [50,477 views, 1,010 likes]
|
||||
The Only Claude Skills Guide You Need (Beginner to Expert)
|
||||
https://www.youtube.com/watch?v=421T2iWTQio
|
||||
*YouTube video about claude code skills and mcp servers*
|
||||
|
||||
**l7qVtHpctic** (score:47) Kenny Liao (2026-01-17) [21,765 views, 728 likes]
|
||||
Claude Code's MCP Problem Just Got Fixed
|
||||
https://www.youtube.com/watch?v=l7qVtHpctic
|
||||
*YouTube video about claude code skills and mcp servers*
|
||||
|
||||
**M5CsRj6zSCA** (score:41) Eric Tech (2025-12-12) [11,287 views, 266 likes]
|
||||
5 MCP Servers That Make Claude Code 10x More Powerful (Full-Stack App Build)
|
||||
https://www.youtube.com/watch?v=M5CsRj6zSCA
|
||||
*YouTube video about claude code skills and mcp servers*
|
||||
|
||||
**qthyl0GCpDo** (score:35) Postman (2025-11-20) [7,045 views, 105 likes]
|
||||
Claude Skills vs MCP: What’s the Difference and When to Use Each?
|
||||
https://www.youtube.com/watch?v=qthyl0GCpDo
|
||||
*YouTube video about claude code skills and mcp servers*
|
||||
|
||||
**ZroGqu7GyXM** (score:34) Solo Swift Crafter (2025-10-27) [4,885 views, 98 likes]
|
||||
Claude Code Skills vs MCP vs Sub Agents: What Works for Solo Devs?
|
||||
https://www.youtube.com/watch?v=ZroGqu7GyXM
|
||||
*YouTube video about claude code skills and mcp servers*
|
||||
|
||||
**jzf7DQa2CAc** (score:31) Matt Kuda (2026-01-19) [2,547 views, 87 likes]
|
||||
How I Use Claude Code With Skills, MCP, Agents & Plugins
|
||||
https://www.youtube.com/watch?v=jzf7DQa2CAc
|
||||
*YouTube video about claude code skills and mcp servers*
|
||||
|
||||
### Hacker News Stories
|
||||
|
||||
**HN1** (score:90) hn/cosmoblk (2026-02-21) [10pts, 2cmt]
|
||||
Show HN: I built a 55K-word email marketing knowledge base and Claude Code skill
|
||||
https://news.ycombinator.com/item?id=47096335
|
||||
*HN story about Show HN: I built a 55K-word email marketing knowledge base a*
|
||||
Insights:
|
||||
- So it's an AI spambot?
|
||||
|
||||
**HN4** (score:74) hn/superamped (2026-02-25) [3pts, 1cmt]
|
||||
Show HN: AI Marketing Skills for Claude Code
|
||||
https://news.ycombinator.com/item?id=47154377
|
||||
*HN story about Show HN: AI Marketing Skills for Claude Code*
|
||||
|
||||
**HN12** (score:70) hn/heycesr (2026-02-18) [4pts, 2cmt]
|
||||
Show HN: Poncho, a general agent harness built for the web
|
||||
https://news.ycombinator.com/item?id=47061949
|
||||
*HN story about Show HN: Poncho, a general agent harness built for the web*
|
||||
Insights:
|
||||
- I have been trying it and it's very cool!
|
||||
|
||||
**HN11** (score:69) hn/gjkim042 (2026-02-24) [1pts, 4cmt]
|
||||
Show HN: Axon – A Kubernetes-native framework for AI coding agents
|
||||
https://news.ycombinator.com/item?id=47137491
|
||||
*HN story about Show HN: Axon – A Kubernetes-native framework for AI coding *
|
||||
|
||||
**HN14** (score:65) hn/alternateman (2026-02-17) [3pts, 2cmt]
|
||||
Show HN: Turn Claude Code or Codex into proactive, autonomous 24/7 AI agents
|
||||
https://news.ycombinator.com/item?id=47054100
|
||||
*HN story about Show HN: Turn Claude Code or Codex into proactive, autonomou*
|
||||
|
||||
**HN2** (score:64) hn/hauschildt (2026-02-19) [3pts, 0cmt]
|
||||
Show HN: Agent skills to build photo, video and design editors on the web
|
||||
https://news.ycombinator.com/item?id=47073035
|
||||
*HN story about Show HN: Agent skills to build photo, video and design edito*
|
||||
|
||||
**HN8** (score:57) hn/barefootsanders (2026-02-25) [1pts, 0cmt]
|
||||
Show HN: Upjack – Declarative framework for building apps over MCP
|
||||
https://news.ycombinator.com/item?id=47157331
|
||||
*HN story about Show HN: Upjack – Declarative framework for building apps ov*
|
||||
|
||||
**HN7** (score:56) hn/san-techie21 (2026-02-16) [1pts, 1cmt]
|
||||
Show HN: Gulama – Security-first open-source AI agent (OpenClaw alternative)
|
||||
https://news.ycombinator.com/item?id=47031982
|
||||
*HN story about Show HN: Gulama – Security-first open-source AI agent (OpenC*
|
||||
|
||||
**HN15** (score:48) hn/martin-hall (2026-02-20) [1pts, 0cmt]
|
||||
AI Skills Platform (Stealth) – Technical Co-Founder – Remote (US) – Equity
|
||||
https://news.ycombinator.com/item?id=47081777
|
||||
*HN story about AI Skills Platform (Stealth) – Technical Co-Founder – Remote*
|
||||
|
||||
**HN10** (score:47) hn/ClaytheMachine (2026-02-15) [1pts, 0cmt]
|
||||
Show HN: SkillSandbox – Capability-based sandbox for AI agent skills (Rust)
|
||||
https://news.ycombinator.com/item?id=47027734
|
||||
*HN story about Show HN: SkillSandbox – Capability-based sandbox for AI agen*
|
||||
|
||||
**HN6** (score:47) hn/micronink (2026-01-30) [1pts, 2cmt]
|
||||
Show HN: Indx.sh – Directory of AI coding rules, MCP servers, and tool
|
||||
https://news.ycombinator.com/item?id=46822378
|
||||
*HN story about Show HN: Indx.sh – Directory of AI coding rules, MCP servers*
|
||||
|
||||
**HN3** (score:45) hn/paolobietolini (2026-02-07) [1pts, 0cmt]
|
||||
Show HN: GTM MCP Server- Let AI Manage Your Google Tag Manager Containers
|
||||
https://news.ycombinator.com/item?id=46922159
|
||||
*HN story about Show HN: GTM MCP Server- Let AI Manage Your Google Tag Manag*
|
||||
|
||||
**HN9** (score:38) hn/digitcatphd (2026-02-03) [1pts, 0cmt]
|
||||
Show HN: ClawsMarket – Marketplace where AI agents discover tools
|
||||
https://news.ycombinator.com/item?id=46878646
|
||||
*HN story about Show HN: ClawsMarket – Marketplace where AI agents discover *
|
||||
|
||||
**HN13** (score:36) hn/aspectrr (2026-02-04) [1pts, 0cmt]
|
||||
Show HN: Fluid.sh – Claude Code for Infrastructure
|
||||
https://news.ycombinator.com/item?id=46886358
|
||||
*HN story about Show HN: Fluid.sh – Claude Code for Infrastructure*
|
||||
|
||||
**HN5** (score:34) hn/victordg (2026-01-27) [1pts, 0cmt]
|
||||
Claude Code skill for building ChatGPT Apps
|
||||
https://news.ycombinator.com/item?id=46780766
|
||||
*HN story about Claude Code skill for building ChatGPT Apps*
|
||||
|
||||
---
|
||||
**Sources:**
|
||||
✅ Reddit: 3 threads
|
||||
✅ X: 12 posts
|
||||
✅ YouTube: 10 videos (3 with transcripts)
|
||||
✅ HN: 15 stories
|
||||
⚡ Web: assistant will use WebSearch
|
||||
@@ -1,316 +0,0 @@
|
||||
## Research Results: Seedance AI video generation
|
||||
|
||||
**Date Range:** 2026-01-26 to 2026-02-25
|
||||
**Mode:** both
|
||||
**OpenAI Model:** gpt-5.2
|
||||
**xAI Model:** grok-4-1-fast
|
||||
|
||||
### Reddit Threads
|
||||
|
||||
**R2** (score:79) r/singularity (2026-02-25)
|
||||
Official: Seedance 2.0 now live in CapCut desktop and API access available, details below
|
||||
https://www.reddit.com/r/singularity/comments/1rekvm8/official_seedance_20_now_live_in_capcut_desktop/
|
||||
*High-activity thread discussing Seedance 2.0 launch claims, CapCut availability, censorship, and pricing.*
|
||||
|
||||
**R3** (score:77) r/generativeAI (2026-02-24)
|
||||
Official website for creating content with Seedance 2.0?
|
||||
https://www.reddit.com/r/generativeAI/comments/1rcgyi4/official_website_for_creating_content_with/
|
||||
*Users discuss where/how to access Seedance 2.0 and warn about scams.*
|
||||
|
||||
**R4** (score:76) r/AITalkers (2026-02-24)
|
||||
Is there an official way to create content using Seedance 2.0?
|
||||
https://www.reddit.com/r/AITalkers/comments/1rd1rhy/is_there_an_official_way_to_create_content_using/
|
||||
*Asks for legit access routes to Seedance 2.0; includes discussion of official vs third-party options.*
|
||||
|
||||
**R5** (score:75) r/Seedance_AI (2026-02-23)
|
||||
Help! I need to use seedance or jimeng video function
|
||||
https://www.reddit.com/r/Seedance_AI/comments/1rckgcm/help_i_need_to_use_seedance_or_jimeng_video/
|
||||
*Seedance/Jimeng video generation access and troubleshooting discussion.*
|
||||
|
||||
**R6** (score:75) r/generativeAI (2026-02-23)
|
||||
Seedance 2.0 is available in Open Source tools already
|
||||
https://www.reddit.com/r/generativeAI/comments/1rcoihw/seedance_20_is_available_in_open_source_tools/
|
||||
*Discusses Seedance 2.0 being usable via tools/integrations; includes links and early-access chatter.*
|
||||
|
||||
**R8** (score:74) r/generativeAI (2026-02-22)
|
||||
This is terrifying!! Seedance 2.0 just generated a 1-minute film with ZERO editing — the entire film industry should be worried
|
||||
https://www.reddit.com/r/generativeAI/comments/1rbionc/this_is_terrifying_seedance_20_just_generated_a/
|
||||
*Seedance 2.0 output showcase + discussion of cinematic coherence and workflow.*
|
||||
|
||||
**R7** (score:73) r/AIGuild (2026-02-23)
|
||||
ByteDance Faces Hollywood Backlash Over Seedance 2.0
|
||||
https://www.reddit.com/r/AIGuild/comments/1rc4pkg/bytedance_faces_hollywood_backlash_over_seedance/
|
||||
*Discussion about Seedance 2.0 controversy impacting release/access (relevant to availability/capabilities).*
|
||||
|
||||
**R9** (score:73) r/Seedance_AI (2026-02-22)
|
||||
Is Jimeng silently banning accounts on Jimeng.Jianying? Paid account stuck with “network error” but free account works.
|
||||
https://www.reddit.com/r/Seedance_AI/comments/1rbk1qb/is_jimeng_silently_banning_accounts_on/
|
||||
*Seedance/Jimeng video generation failures and account restriction speculation.*
|
||||
|
||||
**R12** (score:73) r/Seedance_AI (2026-02-21)
|
||||
Jimeng Web for seedance 2.0 “Network Error, Generation Failed” for 24 Hours – Anyone Else?
|
||||
https://www.reddit.com/r/Seedance_AI/comments/1raqsnu/jimeng_web_for_seedance_20_network_error/
|
||||
*Focused troubleshooting thread about Seedance 2.0 generation failures on Jimeng web.*
|
||||
|
||||
**R10** (score:71) r/u_Educational-Lion7812 (2026-02-21)
|
||||
Seedance 2.0 is insane but almost no one outside China can actually use it — here's the full breakdown
|
||||
https://www.reddit.com/r/u_Educational-Lion7812/comments/1raexxq/seedance_20_is_insane_but_almost_no_one_outside/
|
||||
*Long-form post focused on Seedance 2.0 access constraints and how people are using it.*
|
||||
|
||||
**R11** (score:71) r/Seedance_AI (2026-02-21)
|
||||
so disappointed and frustrated with recent changes (wasted 1k$+)
|
||||
https://www.reddit.com/r/Seedance_AI/comments/1ra6nf4/so_disappointed_and_frustrated_with_recent/
|
||||
*Seedance/Jimeng generation issues and policy changes; directly about Seedance video generation usability.*
|
||||
|
||||
**R15** (score:66) r/singularity (2026-02-13)
|
||||
ByteDance releases Seedance 2.0 video model with Director mode and multimodal upgrades
|
||||
https://www.reddit.com/r/singularity/comments/1r3g435/bytedance_releases_seedance_20_video_model_with/
|
||||
*Seedance 2.0 announcement-style discussion including claimed features and availability paths.*
|
||||
|
||||
**R13** (score:65) r/Seedance_AI (2026-02-15)
|
||||
Seedance 2.0 Made This LeBron James vs Regular Person Look Real
|
||||
https://www.reddit.com/r/Seedance_AI/comments/1r5ncbw/seedance_20_made_this_lebron_james_vs_regular/
|
||||
*Seedance 2.0 video output example + prompting discussion (text-to-video).*
|
||||
|
||||
**R21** (score:64) r/AI_UGC_Marketing (2026-02-17)
|
||||
Elevenlabs silently removed Seedance 2.0 after SAG-AFTRA incident, can’t create UGC style video
|
||||
https://www.reddit.com/r/AI_UGC_Marketing/comments/1r70942/elevenlabs_silently_removed_seedance_20_after/
|
||||
*Discussion about third-party tool access/removal affecting Seedance 2.0 video generation workflows.*
|
||||
|
||||
**R14** (score:64) r/Seedance_AI (2026-02-14)
|
||||
be very careful of scam sites that do not have it like nemovideo
|
||||
https://www.reddit.com/r/Seedance_AI/comments/1r4va5a/be_very_careful_of_scam_sites_that_do_not_have_it/
|
||||
*Thread about Seedance 2.0 access claims and scam warnings; relevant to where to generate videos.*
|
||||
|
||||
### X Posts
|
||||
|
||||
**X9** (score:86) @HBCoop_ (2026-02-25) [9likes]
|
||||
First Seedance 2.0 Test!
|
||||
|
||||
Seedance 5.0 Lite @krea_ai → Seedance 2.0 @capcutapp
|
||||
|
||||
Prompt: Close-up on her hands gripping the paintbrush, knuckles white, paint dripping down her wrist. Shallow depth of ...
|
||||
https://x.com/HBCoop_/status/2026748738354450919
|
||||
**
|
||||
|
||||
**X12** (score:77) @Noor_ul_ain43 (2026-02-25) [5likes]
|
||||
Goku vs Broly , EPIC Full Battle!
|
||||
Witness the ultimate Saiyan showdown recreated with AI power. Explosive transformations, insane energy blasts, and nonstop action all brought to life with Seedance 2...
|
||||
https://x.com/Noor_ul_ain43/status/2026743666635845959
|
||||
**
|
||||
|
||||
**X10** (score:66) @grok (2026-02-25) [2likes]
|
||||
@WolfyBlair @Preda2005 @BytePlusGlobal @capcutapp Yes, it's true—Seedance 2.0 is now live in CapCut (desktop & mobile).
|
||||
|
||||
See it in the AI video tools: https://t.co/K3gwCgUSyb
|
||||
|
||||
Just update the ap...
|
||||
https://x.com/grok/status/2026747009143549978
|
||||
**
|
||||
|
||||
**X1** (score:64) @jznode (2026-02-25)
|
||||
@ChinyJPG capcut desktop app, they just added seedance 2.0 today. no chinese phone number needed, works globally. download the desktop version, look for the AI video generation option. runs about $2 p...
|
||||
https://x.com/jznode/status/2026755966545404015
|
||||
**
|
||||
|
||||
**X5** (score:64) @Yousaf_340 (2026-02-25)
|
||||
@ProperPrompter Yes! Seedance 2.0 on CapCut means cinematic AI video editing is super accessible smooth action, multi-angle shots, and high-quality effects right from your phone. 🎬🔥...
|
||||
https://x.com/Yousaf_340/status/2026751320716357996
|
||||
**
|
||||
|
||||
**X6** (score:64) @Yousaf_340 (2026-02-25)
|
||||
@ivanka_humeniuk Seedance 2.0 is insane for cinematic AI video smooth action, multiple camera angles, and near-Hollywood quality all from a single prompt....
|
||||
https://x.com/Yousaf_340/status/2026750898769473829
|
||||
**
|
||||
|
||||
**X3** (score:64) @EmmaUsesAi (2026-02-25)
|
||||
Seedance 2.0 is the motion engine behind many cinematic AI clips trending right now.
|
||||
|
||||
It’s now native inside NemoVideo.
|
||||
|
||||
You can:
|
||||
- Identify proven formats
|
||||
- Analyze what drives retention
|
||||
- Turn an id...
|
||||
https://x.com/EmmaUsesAi/status/2026751784509673531
|
||||
**
|
||||
|
||||
**X2** (score:64) @OneStrangeW (2026-02-25)
|
||||
You can use Seedance. If Seedance 2.0 hasn't launch yet, the prior version is great, and stick pretty well to the prompt. Of course the video agent must be well trained. 🙂Also, you can offer SORA for ...
|
||||
https://x.com/OneStrangeW/status/2026755320362709093
|
||||
**
|
||||
|
||||
**X11** (score:64) @WyldeChyldeRec (2026-02-25)
|
||||
🚨Phishing Scam!
|
||||
|
||||
Watch for emails titled:
|
||||
|
||||
[Seedance & Wan AI] Unrestricted generation with Grok Imagine video added
|
||||
|
||||
This is not real. We don't have a Seedance account, and the links are not offi...
|
||||
https://x.com/WyldeChyldeRec/status/2026743867224240149
|
||||
**
|
||||
|
||||
**X7** (score:56) @La_DeCrypt (2026-02-25) [1likes]
|
||||
- Kling (https://t.co/WGphQsdLf1)
|
||||
|
||||
- Seedance 2.0 (https://t.co/A8UzLTRGNo)
|
||||
|
||||
☞ AI-powered video editing:
|
||||
|
||||
- Descript (https://t.co/q4axNEjDzt)
|
||||
- OpusClip (https://t.co/5XPn4EPH6u)
|
||||
- Submagic (https:/...
|
||||
https://x.com/La_DeCrypt/status/2026750376687394884
|
||||
**
|
||||
|
||||
**X8** (score:56) @TferThomas (2026-02-25) [1likes]
|
||||
Seedance 2.0 might be gen AI video’s next big hope, but it’s still slop https://t.co/kT1baOYJQk #AI...
|
||||
https://x.com/TferThomas/status/2026749218224746609
|
||||
**
|
||||
|
||||
### YouTube Videos
|
||||
|
||||
**F1kWxdfiBNE** (score:73) AI Filmmaking Academy (2026-02-22) [40,982 views, 1,088 likes]
|
||||
Seedance 2.0 Claims the AI Video Throne!
|
||||
https://www.youtube.com/watch?v=F1kWxdfiBNE
|
||||
*YouTube video about seedance ai video generation*
|
||||
|
||||
**_o2MuUX9UYg** (score:73) Theoretically Media (2026-02-09) [199,908 views, 4,986 likes]
|
||||
Seedance 2.0 Claims the AI Video Throne!
|
||||
https://www.youtube.com/watch?v=_o2MuUX9UYg
|
||||
Transcript: So, it's been about a week since I declared Cling 3.0 the new benchmark for state-of-the-art AI video. And well, I mean, it's been a week, and that basically equals about 3 months in AI time. So, yes,...
|
||||
*YouTube video about seedance ai video generation*
|
||||
|
||||
**jkPTYD5lXo8** (score:70) How To In 5 Minutes (2026-02-19) [44,344 views, 782 likes]
|
||||
100% FREE Seedance 2.0 AI Video Generator : How to Use It WORLDWIDE
|
||||
https://www.youtube.com/watch?v=jkPTYD5lXo8
|
||||
Transcript: No, this is not clickbait. You can now access Cance 2.0 for free from anywhere. No registration required and depending on how you use it, this method can [music] feel almost unlimited. And yes, at the...
|
||||
*YouTube video about seedance ai video generation*
|
||||
|
||||
**W_lxyDFDZt4** (score:69) WealthWise (2026-02-12) [126,599 views, 1,204 likes]
|
||||
Seedance 2.0: The New Best AI Video Generator | Sora 2 Destroyed
|
||||
https://www.youtube.com/watch?v=W_lxyDFDZt4
|
||||
Transcript: Well, major AI video update, ladies and gentlemen. Seance 2.0 is right around the corner. And let me tell you guys, this is something I have never seen before. Just take a look at some of the videos g...
|
||||
*YouTube video about seedance ai video generation*
|
||||
|
||||
**R1zl92NhCfE** (score:65) Ai Lockup (2026-02-16) [32,542 views, 591 likes]
|
||||
Seedance 2.0 How To Use and Become a Pro AI Film Maker With This AI Video Generator
|
||||
https://www.youtube.com/watch?v=R1zl92NhCfE
|
||||
*YouTube video about seedance ai video generation*
|
||||
|
||||
**G1Ad4a8sdJU** (score:63) Benji’s AI Playground (2026-02-14) [38,581 views, 419 likes]
|
||||
SeeDance 2.0: The Next Level of AI Video — And What It Means for Local AI Users?
|
||||
https://www.youtube.com/watch?v=G1Ad4a8sdJU
|
||||
*YouTube video about seedance ai video generation*
|
||||
|
||||
**n625xVounGM** (score:61) John Savage AI (2026-02-23) [7,184 views, 126 likes]
|
||||
How To Generate FREE AI Seedance 2.0 Videos (Access Worldwide)
|
||||
https://www.youtube.com/watch?v=n625xVounGM
|
||||
*YouTube video about seedance ai video generation*
|
||||
|
||||
**kJ0NAVmd4f4** (score:58) Rogue Cell Pictures (2026-02-25) [1,548 views, 149 likes]
|
||||
Seedance 2.0 Changes Filmmaking Forever | New Original Series
|
||||
https://www.youtube.com/watch?v=kJ0NAVmd4f4
|
||||
*YouTube video about seedance ai video generation*
|
||||
|
||||
**FP8TaJSFohs** (score:55) Chem Beast (2026-02-24) [3,194 views, 31 likes]
|
||||
How To Use Seedance 2 0 Full AI Video Generator Tutorial + Free Access Guide
|
||||
https://www.youtube.com/watch?v=FP8TaJSFohs
|
||||
*YouTube video about seedance ai video generation*
|
||||
|
||||
**61ThJGqwHsI** (score:48) xCreate (2026-02-11) [4,854 views, 86 likes]
|
||||
Ultimate AI Video Generation - Seedance 2.0 PREVIEW
|
||||
https://www.youtube.com/watch?v=61ThJGqwHsI
|
||||
*YouTube video about seedance ai video generation*
|
||||
|
||||
### Hacker News Stories
|
||||
|
||||
**HN8** (score:75) hn/Alisaqqt (2026-02-09) [7pts, 7cmt]
|
||||
Seedance 2.0 preview: The best video model of 2026, outperforming Sora 2
|
||||
https://news.ycombinator.com/item?id=46940720
|
||||
*HN story about Seedance 2.0 preview: The best video model of 2026, outperfo*
|
||||
Insights:
|
||||
- API is not available now.
|
||||
- API will be available on Atlas Cloud on Feb 24.
|
||||
- Seedance 2.0 and Seedream 5.0 API will be available on Atlas Cloud on Feb 24.
|
||||
|
||||
**HN15** (score:57) hn/naxtsass (2026-02-25) [2pts, 0cmt]
|
||||
Show HN: SeeVideo – Access Seedance 2.0 and Kling 3.0 without a subscription
|
||||
https://news.ycombinator.com/item?id=47153236
|
||||
*HN story about Show HN: SeeVideo – Access Seedance 2.0 and Kling 3.0 withou*
|
||||
|
||||
**HN6** (score:57) hn/howardV (2026-02-15) [3pts, 0cmt]
|
||||
Seedance 2.0: ByteDance's AI video model with native audio-video co-generation
|
||||
https://news.ycombinator.com/item?id=47022290
|
||||
*HN story about Seedance 2.0: ByteDance's AI video model with native audio-v*
|
||||
|
||||
**HN5** (score:52) hn/jrran086 (2026-02-17) [1pts, 0cmt]
|
||||
Seedance 2 Video Generator
|
||||
https://news.ycombinator.com/item?id=47046956
|
||||
*HN story about Seedance 2 Video Generator*
|
||||
|
||||
**HN3** (score:52) hn/xbaicai (2026-02-09) [1pts, 1cmt]
|
||||
Seedance 2.0 – Multimodal AI Video Generation with Image/Video/Audio References
|
||||
https://news.ycombinator.com/item?id=46944030
|
||||
*HN story about Seedance 2.0 – Multimodal AI Video Generation with Image/Vid*
|
||||
|
||||
**HN1** (score:51) hn/xuyanmei (2026-02-13) [1pts, 0cmt]
|
||||
Show HN: Seedance AShow HN: Seedance AI Video Generation (Next.js, Drizzle)
|
||||
https://news.ycombinator.com/item?id=46999394
|
||||
*HN story about Show HN: Seedance AShow HN: Seedance AI Video Generation (Ne*
|
||||
|
||||
**HN12** (score:49) hn/RyanMu (2026-02-07) [2pts, 1cmt]
|
||||
Seedance2 – multi-shot AI video generation
|
||||
https://news.ycombinator.com/item?id=46924992
|
||||
*HN story about Seedance2 – multi-shot AI video generation*
|
||||
Insights:
|
||||
- ’ve been experimenting with AI video tools for a while, but most of them generate isolated clips that fall apart when you try to build an actual narrative
|
||||
|
||||
**HN11** (score:48) hn/xuyanmei (2026-02-17) [1pts, 0cmt]
|
||||
Show HN: Seedance3AI – a web app for text-to-video, image-to-video
|
||||
https://news.ycombinator.com/item?id=47046989
|
||||
*HN story about Show HN: Seedance3AI – a web app for text-to-video, image-to*
|
||||
|
||||
**HN2** (score:47) hn/littlepp (2026-02-09) [1pts, 0cmt]
|
||||
Discussion: Seedance-style AI video generation workflows
|
||||
https://news.ycombinator.com/item?id=46942781
|
||||
*HN story about Discussion: Seedance-style AI video generation workflows*
|
||||
|
||||
**HN13** (score:44) hn/thomaskiko (2026-02-13) [1pts, 0cmt]
|
||||
Show HN: AI-powered video creation web app
|
||||
https://news.ycombinator.com/item?id=47002386
|
||||
*HN story about Show HN: AI-powered video creation web app*
|
||||
|
||||
**HN9** (score:43) hn/TurnItOffAndOn0 (2026-02-09) [1pts, 0cmt]
|
||||
Show HN: AI Seedance 2 – Solving the "jump-cut" problem in AI video
|
||||
https://news.ycombinator.com/item?id=46946280
|
||||
*HN story about Show HN: AI Seedance 2 – Solving the "jump-cut" problem in A*
|
||||
|
||||
**HN7** (score:43) hn/dallen97 (2026-02-08) [1pts, 0cmt]
|
||||
Show HN: Seedance 2.0 AI video generator for creators and ecommerce
|
||||
https://news.ycombinator.com/item?id=46930149
|
||||
*HN story about Show HN: Seedance 2.0 AI video generator for creators and ec*
|
||||
|
||||
**HN10** (score:42) hn/thenextechtrade (2026-02-09) [1pts, 0cmt]
|
||||
Show HN: Seedance 2.0 – Native audio-visual sync video model
|
||||
https://news.ycombinator.com/item?id=46943172
|
||||
*HN story about Show HN: Seedance 2.0 – Native audio-visual sync video model*
|
||||
|
||||
**HN14** (score:41) hn/echoadam (2026-02-10) [1pts, 0cmt]
|
||||
Show HN: Seedance2 – Stop "prompt guessing" and start directing AI video
|
||||
https://news.ycombinator.com/item?id=46956546
|
||||
*HN story about Show HN: Seedance2 – Stop "prompt guessing" and start direct*
|
||||
|
||||
**HN4** (score:35) hn/Zach_HE (2026-01-27) [1pts, 0cmt]
|
||||
Show HN: Seedance 2.0 Pro AI Video Generator
|
||||
https://news.ycombinator.com/item?id=46774950
|
||||
*HN story about Show HN: Seedance 2.0 Pro AI Video Generator*
|
||||
|
||||
---
|
||||
**Sources:**
|
||||
✅ Reddit: 20 threads
|
||||
✅ X: 11 posts
|
||||
✅ YouTube: 10 videos (3 with transcripts)
|
||||
✅ HN: 15 stories
|
||||
⚡ Web: assistant will use WebSearch
|
||||
@@ -1,198 +0,0 @@
|
||||
## Research Results: M4 MacBook Pro review
|
||||
|
||||
**Date Range:** 2026-01-26 to 2026-02-25
|
||||
**Mode:** both
|
||||
**OpenAI Model:** gpt-5.2
|
||||
**xAI Model:** grok-4-1-fast
|
||||
|
||||
### Reddit Threads
|
||||
|
||||
**R1** (score:0) r/macbookpro (2025-04-09) [date:low]
|
||||
M4 Macbook Pro 14’ 1 month review
|
||||
https://www.reddit.com/r/macbookpro/comments/1hflaaz/m4_macbook_pro_14_1_month_review/
|
||||
*Explicit 1-month review of the M4 MacBook Pro with long-term impressions in comments.*
|
||||
|
||||
**R2** (score:0) r/macbookpro (2025-05-19) [date:low]
|
||||
MacBook Pro M4 Battery Life Reality vs Review
|
||||
https://www.reddit.com/r/macbookpro/comments/1kq2zd8/macbook_pro_m4_battery_life_reality_vs_review/
|
||||
*Compares real-world battery life to reviewer/Apple claims; review-focused discussion.*
|
||||
|
||||
**R3** (score:0) r/macbookpro (2025-08-18) [date:low]
|
||||
Disappointed with my MBP M4 Experience …
|
||||
https://www.reddit.com/r/macbookpro/comments/1mtmkts/disappointed_with_my_mbp_m4_experience/
|
||||
*User experience report contrasting with glowing reviews; detailed performance/quality complaints.*
|
||||
|
||||
### X Posts
|
||||
|
||||
**X1** (score:86) @bhphoto (2026-02-25) [3likes]
|
||||
If you are in the market for a new MacBook Pro and you’re wondering what the real differences are between Apple’s M3 and M4 silicon, you’ve come to the right place ⬇️
|
||||
https://t.co/nzjXmiHmac https://t...
|
||||
https://x.com/bhphoto/status/2026737767695183948
|
||||
**
|
||||
|
||||
**X4** (score:70) @remplug (2026-02-25) [1likes, 1rt]
|
||||
🔥 2024 16” MacBook Pro Price List
|
||||
|
||||
1️⃣ 🇺🇸 Brand New MacBook Pro 2024 | M4 Pro Chip | 16” Display
|
||||
|
||||
24GB RAM | 512GB SSD
|
||||
14-Core CPU | 20-Core GPU
|
||||
|
||||
Space Black
|
||||
|
||||
💰 ₦2,720,000
|
||||
|
||||
2️⃣ 🇺🇸 Brand New MacBook Pr...
|
||||
https://x.com/remplug/status/2026725100213465443
|
||||
**
|
||||
|
||||
**X10** (score:64) @grok (2026-02-25)
|
||||
@5TRgzn @LobstarWilde My marble floors: 64GB M4 Pro/Max MacBook Pro. Local Grok agents run full autonomy loops, zero cloud, sub-second trades/scans. Intel's ancient—ditch it. Yours at $3-4k....
|
||||
https://x.com/grok/status/2026713588472111312
|
||||
**
|
||||
|
||||
**X9** (score:64) @principenemesis (2026-02-25)
|
||||
@JulianGoldieSEO @grok can a macbook pro m4 run this?...
|
||||
https://x.com/principenemesis/status/2026716193042706852
|
||||
**
|
||||
|
||||
**X5** (score:64) @jameslmorton (2026-02-25) [1likes]
|
||||
@SebAaltonen Not my experience. It’s impressive, 70 tokens/s on a maxed out M4 128gb MacBook Pro.
|
||||
|
||||
But absolutely sucked and not even remotely in the ballpark with Sonnet 4.5. It’s GPT-3.5.
|
||||
|
||||
Totally b...
|
||||
https://x.com/jameslmorton/status/2026721943630786816
|
||||
**
|
||||
|
||||
**X6** (score:64) @bcofertas (2026-02-25)
|
||||
BR Ofertas todos os dias 🇧🇷
|
||||
|
||||
Leve seu Mac Pro M4 hoje! 💻⚡✨
|
||||
|
||||
Pegue já: https://t.co/PSwylZH3Sz
|
||||
|
||||
Por R$ 23.749,00
|
||||
em até 10x sem juros
|
||||
Frete Grátis
|
||||
|
||||
Apple MacBook Pro 14″ 2024 M4 Pro 12 núcleos 24GB 512...
|
||||
https://x.com/bcofertas/status/2026721014676099084
|
||||
**
|
||||
|
||||
**X12** (score:64) @grok (2026-02-25)
|
||||
Hey! Yeah, you can install Fedora on the M6 MacBook Pro via the official Fedora Asahi Remix (built on the Asahi Linux project). It already runs great on M1/M2, with M3 support rolling out now and work...
|
||||
https://x.com/grok/status/2026704108820824113
|
||||
**
|
||||
|
||||
**X7** (score:64) @toppromoalertas (2026-02-25)
|
||||
Promoções BR do dia 🇧🇷
|
||||
|
||||
Leve seu Mac Pro M4 hoje! 💻⚡✨
|
||||
|
||||
Ver aqui: https://t.co/LfxNw3waps
|
||||
|
||||
Por R$ 23.749,00
|
||||
em até 10x sem juros
|
||||
Frete Grátis
|
||||
|
||||
Apple MacBook Pro 14″ 2024 M4 Pro 12 núcleos...
|
||||
|
||||
Amazon | ...
|
||||
https://x.com/toppromoalertas/status/2026719111523237932
|
||||
**
|
||||
|
||||
**X8** (score:64) @grok (2026-02-25)
|
||||
Yes, a MacBook Pro M4 can run this Ollama + GLM-4.7-Flash setup locally.
|
||||
|
||||
Ollama has native Apple Silicon support via Metal. The Q4_K_M model (~19GB) needs ~18-24GB unified memory for good speed (feel...
|
||||
https://x.com/grok/status/2026716420269031652
|
||||
**
|
||||
|
||||
**X2** (score:56) @grecinoscdev (2026-02-25) [1likes]
|
||||
@TechByTaraa Both. macOS (Macbook Pro M4 Pro) for my photography/videography personal stuff + software engineering and a Linux desktop workstation for software engineering + second desktop workstation...
|
||||
https://x.com/grecinoscdev/status/2026731118142148644
|
||||
**
|
||||
|
||||
**X11** (score:56) @Steve_Lost_Jobs (2026-02-25) [1likes]
|
||||
Apple 2024 MacBook Pro 14コアCPU、20コアGPU の M4 Pro搭載ノートパ... PR
|
||||
|
||||
4549995547610
|
||||
|
||||
ポイント: 3735㌽
|
||||
想定価格: 369,800
|
||||
|
||||
2026/02/26 01:55:23
|
||||
https://t.co/q1uyIqFsID...
|
||||
https://x.com/Steve_Lost_Jobs/status/2026705327828382016
|
||||
**
|
||||
|
||||
**X3** (score:56) @grok (2026-02-25) [1likes]
|
||||
No, Apple has not made any MacBook (Pro or otherwise) cost $299.
|
||||
|
||||
The linked Newsroom search returns zero matching results—it's just unrelated announcements. Current cheapest Mac is the 13" MacBook A...
|
||||
https://x.com/grok/status/2026727605517394283
|
||||
**
|
||||
|
||||
### YouTube Videos
|
||||
|
||||
**9HQx5pgUoiY** (score:61) Marques Brownlee (2024-11-18) [4,010,567 views, 105,606 likes]
|
||||
M4 Max MacBook Pro: I'm Convinced!
|
||||
https://www.youtube.com/watch?v=9HQx5pgUoiY
|
||||
Transcript: so I have been using this M1 Max MacBook Pro for the past 3 years since it came out and it's been great I have felt absolutely no compulsion to upgrade since haven't needed to it's funny most of my wo...
|
||||
*YouTube video about m4 macbook pro review*
|
||||
|
||||
**etP2Th9g2hM** (score:55) ShortCircuit (2024-11-30) [1,113,999 views, 22,765 likes]
|
||||
Don't buy the Wrong MacBook like me... - M4 MacBook Pro
|
||||
https://www.youtube.com/watch?v=etP2Th9g2hM
|
||||
Transcript: woohoo it's new Macbook day my favorite day on short circuit it only comes usually once a year this is the MacBook Pro M4 looks pretty similar to the last one but now it has an M4 instead of an M3 I'm...
|
||||
*YouTube video about m4 macbook pro review*
|
||||
|
||||
**b4x8boB2KdI** (score:55) Dave2D (2024-11-07) [1,057,988 views, 24,977 likes]
|
||||
M4 MacBook Pro Review - Things to Know
|
||||
https://www.youtube.com/watch?v=b4x8boB2KdI
|
||||
Transcript: so Apple launched the new M4 MacBook Pros this is their 14-in model and it's equipped with the M4 Max their topend configuration and it also has their new Nano texture on their screen it's a texture t...
|
||||
*YouTube video about m4 macbook pro review*
|
||||
|
||||
**uPe9spXLfZY** (score:50) Created Tech (2025-07-07) [472,845 views, 5,082 likes]
|
||||
M4 MacBook Air vs M4 MacBook Pro - 4 Months Later
|
||||
https://www.youtube.com/watch?v=uPe9spXLfZY
|
||||
*YouTube video about m4 macbook pro review*
|
||||
|
||||
**TfvIgdzImt4** (score:50) Hardware Canucks (2024-12-15) [325,597 views, 6,339 likes]
|
||||
The Macbook Pro M4 is Insane.
|
||||
https://www.youtube.com/watch?v=TfvIgdzImt4
|
||||
*YouTube video about m4 macbook pro review*
|
||||
|
||||
**a8Szdrnq0YM** (score:49) Brandon Butch (2025-02-03) [352,593 views, 4,309 likes]
|
||||
MacBook Pro M4 - Review After 3 Months: This Feels Wrong.
|
||||
https://www.youtube.com/watch?v=a8Szdrnq0YM
|
||||
*YouTube video about m4 macbook pro review*
|
||||
|
||||
**anIVewgtbFc** (score:48) MacRumors (2024-12-17) [238,616 views, 2,874 likes]
|
||||
The Base M4 MacBook Pro is All You Need (Skip M4 Pro & Max)
|
||||
https://www.youtube.com/watch?v=anIVewgtbFc
|
||||
*YouTube video about m4 macbook pro review*
|
||||
|
||||
**5rN6CEO31gM** (score:48) Just Josh (2024-11-15) [154,306 views, 4,540 likes]
|
||||
MacBook Pro M4: Review & Recommendations
|
||||
https://www.youtube.com/watch?v=5rN6CEO31gM
|
||||
*YouTube video about m4 macbook pro review*
|
||||
|
||||
**i3eTKJav1VI** (score:45) Created Tech (2025-04-29) [137,009 views, 1,832 likes]
|
||||
M4 Pro MacBook - Long Term Review (6 Months Later)
|
||||
https://www.youtube.com/watch?v=i3eTKJav1VI
|
||||
*YouTube video about m4 macbook pro review*
|
||||
|
||||
**QbSQH_95eg8** (score:36) Tech It Easy (2026-02-01) [3,176 views, 55 likes]
|
||||
MacBook Pro M4 Pro Review: 1 Year Later! (Still Worth Buying in 2026?)
|
||||
https://www.youtube.com/watch?v=QbSQH_95eg8
|
||||
*YouTube video about m4 macbook pro review*
|
||||
|
||||
---
|
||||
**Sources:**
|
||||
✅ Reddit: 3 threads
|
||||
✅ X: 12 posts
|
||||
✅ YouTube: 10 videos (3 with transcripts)
|
||||
⏭️ HN: 0 stories found
|
||||
⚡ Web: assistant will use WebSearch
|
||||
@@ -1,165 +0,0 @@
|
||||
## Research Results: best rap songs 2026
|
||||
|
||||
**Date Range:** 2026-01-26 to 2026-02-25
|
||||
**Mode:** both
|
||||
**OpenAI Model:** gpt-5.2
|
||||
**xAI Model:** grok-4-1-fast
|
||||
|
||||
### Reddit Threads
|
||||
|
||||
**R6** (score:71) r/playlists (2026-02-19)
|
||||
Mix Rap Hiphop 2026
|
||||
https://www.reddit.com/r/playlists/comments/1r8t0ld/mix_rap_hiphop_2026/
|
||||
*Explicitly a 2026 rap/hip-hop playlist thread; useful for current-year song discovery.*
|
||||
|
||||
**R8** (score:66) r/hiphopheads (2026-02-25)
|
||||
Daily Discussion Thread 02/24/2026
|
||||
https://www.reddit.com/r/hiphopheads/comments/1rdjmgu/daily_discussion_thread_02242026/
|
||||
*General hip-hop discussion thread around late Feb 2026; often includes song/album recs and what people are listening to now.*
|
||||
|
||||
**R2** (score:60) r/musicplaylists (2026-02-02)
|
||||
Best 2026 Rap Playlist (178 saves)
|
||||
https://www.reddit.com/r/musicplaylists/comments/1qu3i2n/best_2026_rap_playlist_178_saves/
|
||||
*Directly about a “Best 2026 Rap Playlist” (songs for 2026), with comments inviting suggestions.*
|
||||
|
||||
**R18** (score:56) r/hiphop (2026-02-21)
|
||||
DFL - Art Of Life (2026)
|
||||
https://www.reddit.com/r/hiphop/comments/1raoitx/dfl_art_of_life_2026/
|
||||
*A 2026 rap/hip-hop track post; useful to gather candidate songs people might call “best of 2026.”*
|
||||
|
||||
**R19** (score:55) r/hiphop (2026-02-21)
|
||||
Plat Hav Pro - Get F'D Up (2026)
|
||||
https://www.reddit.com/r/hiphop/comments/1ragaf5/plat_hav_pro_get_fd_up_2026/
|
||||
*Another 2026 track post; relevant to discovering rap songs released/posted in 2026 that could be considered among the best.*
|
||||
|
||||
**R21** (score:55) r/TeenageRapFans (2026-02-15)
|
||||
What's the best rap song ever made?
|
||||
https://www.reddit.com/r/TeenageRapFans/comments/1r5iub6/whats_the_best_rap_song_ever_made/
|
||||
*Direct ‘best rap song’ discussion (not year-specific, but posted in 2026 and highly aligned with ‘best rap songs’ topic).*
|
||||
|
||||
**R13** (score:53) r/hiphopheads (2026-02-14)
|
||||
[DISCUSSION] Westside Gunn - 12 (1 Year Later)
|
||||
https://www.reddit.com/r/hiphopheads/comments/1r4nbsr/discussion_westside_gunn_12_1_year_later/
|
||||
*Album discussion thread that includes ‘favorite track’ prompts; useful for identifying best songs/tracks people cite.*
|
||||
|
||||
**R20** (score:51) r/hiphop (2026-02-16)
|
||||
Jody Lo - Ridiculous (2026)
|
||||
https://www.reddit.com/r/hiphop/comments/1r6c6i7/jody_lo_ridiculous_2026/
|
||||
*2026 track thread; relevant for compiling 2026 rap songs being shared/discussed.*
|
||||
|
||||
**R15** (score:51) r/edranked (2026-02-01)
|
||||
Reddit Ranked: Hip Hop ‘26
|
||||
https://www.reddit.com/r/redranked/comments/1qszauu/reddit_ranked_hip_hop_26/
|
||||
*Ongoing 2026 hip-hop ranking/submission thread; good for discovering community-submitted ‘best’ tracks in 2026.*
|
||||
|
||||
**R9** (score:49) r/hiphopheads (2026-02-01)
|
||||
Pre-Show Grammy Winners
|
||||
https://www.reddit.com/r/hiphopheads/comments/1qtcbmo/preshow_grammy_winners/
|
||||
*Includes ‘Best Rap Song’/rap categories discussion; useful when searching for top/best rap songs discourse in 2026.*
|
||||
|
||||
### X Posts
|
||||
|
||||
**X5** (score:86) @Zika_gfx (2026-02-25) [12likes, 5rt]
|
||||
Talking about meaningful rap songs...
|
||||
|
||||
WORLD BEST LIE - NUNO ZIGI (2026)🥺❤ https://t.co/MDHRf3giYq...
|
||||
https://x.com/Zika_gfx/status/2026576570513600788
|
||||
**
|
||||
|
||||
**X6** (score:68) @DPOSTS6 (2026-02-25) [4likes, 1rt]
|
||||
@PopCrave Partition still goes harder than most 2026 songs
|
||||
12 years and the beat switch + that rap still give chills every time. Queen never misses...
|
||||
https://x.com/DPOSTS6/status/2026523320548819145
|
||||
**
|
||||
|
||||
**X9** (score:64) @grok (2026-02-25)
|
||||
@Unfath0m4ble @robinthisbish @lilceaserthabp1 @RapWikip What You Saying by Lil Uzi Vert. Dropped Dec 2025, hit #1 on Hot Rap Songs in Jan 2026 (his 3rd time), peaked #14 Hot 100. Super short track ~2 ...
|
||||
https://x.com/grok/status/2026467153046606064
|
||||
**
|
||||
|
||||
**X7** (score:64) @grok (2026-02-25)
|
||||
@lil_loonie1 @oldmanebro No, Lil Uzi Vert isn't struggling. His "What You Saying" hit #1 on Hot Rap Songs in Jan 2026 (first in 3 years) and top 15 Hot 100. Insiders say a surprise album drop is comin...
|
||||
https://x.com/grok/status/2026518008827404632
|
||||
**
|
||||
|
||||
**X2** (score:64) @Ferginangi (2026-02-25)
|
||||
Su La Musica che gira intorno... "Qui con me" è il brano con cui Serena Brancale è in gara al 76° Festival di Sanremo
|
||||
https://t.co/wTPeovzt6u
|
||||
#music #genre #song #songs #envywear #PleaseForgiveMe #mel...
|
||||
https://x.com/Ferginangi/status/2026696207557382298
|
||||
**
|
||||
|
||||
**X12** (score:62) @teammusic2046 (2026-02-23)
|
||||
[ ** STUDIO BOOTH ** ] ** DROPPING SOON - 2026 **🔥🔥🔥………..[ ALBUM : LOVE VS LOYALTY - DROPPING SOON ! ]………🔥🔥🔥 - ** ALL SONGS & BEATS, PRODUCED & RAP BY ( SEAN BRYANT ) - https://t.co/LduwG5WmM7...
|
||||
https://x.com/teammusic2046/status/2026040965329191061
|
||||
**
|
||||
|
||||
**X11** (score:59) @IoWeul (2026-02-24) [2likes]
|
||||
@PopBase Finally, @bts_bighit BTS will come back after completing their military service from 2022 to 2025.
|
||||
BTS served in the military to protect their country, South Korea from North Korea's nuclear ...
|
||||
https://x.com/IoWeul/status/2026233090683863471
|
||||
**
|
||||
|
||||
**X8** (score:58) @grok (2026-02-25) [1likes]
|
||||
Lil Uzi Vert (born July '95, so 30 now) isn't struggling at all. Fresh off "What You Saying" hitting #1 on Hot Rap Songs in Jan 2026, top 15 Hot 100. New album rumored for surprise drop soon, Roc Nati...
|
||||
https://x.com/grok/status/2026498538075554040
|
||||
**
|
||||
|
||||
**X4** (score:58) @AlterEgoPopList (2026-02-25) [1likes]
|
||||
My musical taste / eras every year
|
||||
|
||||
2020: J-POP & K-POP (mostly BLACKPINK)
|
||||
2021: Sped-Up Songs
|
||||
2022: EDM
|
||||
2023: Swiftie (Pop) & Lofi
|
||||
2024: Pop, Ambient
|
||||
2025: Alternative, OPM, Rock, Rap, Hip-Ho...
|
||||
https://x.com/AlterEgoPopList/status/2026641456434393579
|
||||
**
|
||||
|
||||
**X3** (score:56) @WordsFromBlerds (2026-02-25) [1likes]
|
||||
@_CharlesPreston Can’t believe I’m seeing “they say it in rap songs!” In 2026
|
||||
|
||||
The same reductive, ancient, debunked arguments ad infinitum...
|
||||
https://x.com/WordsFromBlerds/status/2026647382083903688
|
||||
**
|
||||
|
||||
**X1** (score:56) @Ferginangi (2026-02-25) [1likes]
|
||||
Su La Musica che gira intorno... "Magica Favola" è il brano con cui Arisa è in gara al 76° Festival di Sanremo
|
||||
https://t.co/Nxzkb005lP
|
||||
#music #genre #song #songs #envywear #PleaseForgiveMe #melody #hi...
|
||||
https://x.com/Ferginangi/status/2026705227366256880
|
||||
**
|
||||
|
||||
**X10** (score:55) @fo_sho52268 (2026-02-24) [1likes]
|
||||
@blackiiingout 💩 is funny from 2025 to 2026. BiiCH is SCARED to drop that #TRASH he calls "rap songs" 🥴😩...
|
||||
https://x.com/fo_sho52268/status/2026335353364201566
|
||||
**
|
||||
|
||||
### YouTube Videos
|
||||
|
||||
**ZUExyc50ZVU** (score:63) West Coast Finest (2026-01-29) [407,260 views, 4,229 likes]
|
||||
Lit Hip Hop Mix 2026🔥🔥🔥Tyga, Quavo, Iggy Azalea, Wiz Khalifa, Juicy J, 50 Cent
|
||||
https://www.youtube.com/watch?v=ZUExyc50ZVU
|
||||
Transcript: Yeah. >> Yeah. [music] Late nights, cold life, same story. >> City shine different. You walking with glory, right? >> Still drip falling when I step outside. Yeah. [music] >> B...
|
||||
*YouTube video about rap songs 2026*
|
||||
|
||||
**d1melQQVp6s** (score:58) DJ Noize (2026-02-14) [42,707 views, 761 likes]
|
||||
New Rap Songs 2026 Mix February | Trap Tape #127 | New Hip Hop 2026 Mixtape | DJ Noize
|
||||
https://www.youtube.com/watch?v=d1melQQVp6s
|
||||
Transcript: [music] This This is a DJ noise mixtape present. This is a DJ noise mixtape [music] presentation. DJ [music] >> Who the [ __ ] is you? Who the [ __ ] is you? Who the [ _...
|
||||
*YouTube video about rap songs 2026*
|
||||
|
||||
**-KQpPySP93I** (score:53) DJ Noize (2026-02-21) [12,955 views, 304 likes]
|
||||
New Hip Hop R&B Songs 2026 Mix February | Hot Right Now #153 | New Rap 2026 Playlist | DJ Noize
|
||||
https://www.youtube.com/watch?v=-KQpPySP93I
|
||||
Transcript: This This is a DJ noise tape present. This is a DJ noise mix. [music] I got Nikki on me. How we treat the like a bucket for rubbing. You [music] ain't no fella from my junction. You ain't pluck you cl...
|
||||
*YouTube video about rap songs 2026*
|
||||
|
||||
---
|
||||
**Sources:**
|
||||
✅ Reddit: 10 threads
|
||||
✅ X: 12 posts
|
||||
✅ YouTube: 3 videos (3 with transcripts)
|
||||
⏭️ HN: 0 stories found
|
||||
⚡ Web: assistant will use WebSearch
|
||||
@@ -1,157 +0,0 @@
|
||||
## Research Results: React vs Svelte 2026
|
||||
|
||||
**Date Range:** 2026-01-26 to 2026-02-25
|
||||
**Mode:** both
|
||||
**OpenAI Model:** gpt-5.2
|
||||
**xAI Model:** grok-4-1-fast
|
||||
|
||||
### Reddit Threads
|
||||
|
||||
**R2** (score:66) r/eact (2026-02-10)
|
||||
What do you guys think about comparison between React vs Svelte?
|
||||
https://www.reddit.com/r/react/comments/1r1fku5/what_do_you_guys_think_about_comparison_between/
|
||||
*Explicit React vs Svelte comparison discussion (mentions Svelte 5 runes vs React hooks).*
|
||||
|
||||
**R1** (score:60) r/webdev (2026-02-02)
|
||||
Migrated our startup from React to Svelte 5 - Performance gains and lessons learned
|
||||
https://www.reddit.com/r/webdev/comments/1qu4dek/migrated_our_startup_from_react_to_svelte_5/
|
||||
*Direct migration story from React to Svelte 5 with concrete perf/dev-ex tradeoffs; very relevant to 2026 comparisons.*
|
||||
|
||||
**R4** (score:46) r/sveltejs (date unknown) [date:low]
|
||||
When to choose React over Svelte
|
||||
https://www.reddit.com/r/sveltejs/comments/1jeknib/when_to_choose_react_over_svelte/
|
||||
*Decision-oriented thread explicitly contrasting when React vs Svelte makes sense (ecosystem/jobs/productivity).*
|
||||
|
||||
### X Posts
|
||||
|
||||
**X4** (score:76) @FabianHiller (2026-02-13) [61likes, 2rt]
|
||||
TypeScript is the baseline in 2026. But most forms still fight type drift between API, schema & UI.
|
||||
|
||||
@formisch_dev + @valibot = one source of truth, zero boilerplate ⚡️
|
||||
|
||||
const form = useForm({ schem...
|
||||
https://x.com/FabianHiller/status/2022345388603080834
|
||||
**
|
||||
|
||||
**X3** (score:57) @ConsciousRide (2026-02-15) [6likes]
|
||||
Popular JavaScript Frameworks / Frontend Libraries (2025–2026 trends)
|
||||
|
||||
- React: 🇺🇸 United States
|
||||
- Vue: 🇨🇳 China (created by Evan You)
|
||||
- Angular: 🇺🇸 United States
|
||||
- Svelte: 🇺🇸 United State...
|
||||
https://x.com/ConsciousRide/status/2023050160520278501
|
||||
**
|
||||
|
||||
**X11** (score:53) @singhprateek_25 (2026-02-07) [6likes, 1rt]
|
||||
Requirements for a fresher in 2026:
|
||||
|
||||
Python, JavaScript, C, C++, Java, HTML, CSS, TypeScript, React, Next.js, Vue, Angular, Svelte, Node.js, Express, Django, Flask, FastAPI, Spring Boot, PHP, Laravel,...
|
||||
https://x.com/singhprateek_25/status/2020094806735700154
|
||||
**
|
||||
|
||||
**X1** (score:52) @cityjsconf (2026-02-20) [1rt]
|
||||
Ripple: The Good Parts of React, Svelte, and Solid
|
||||
|
||||
Frameworks rise and fall — and in 2026 we’re deep in late-stage React. What’s next? Join @erikras as he introduces Ripple, a TypeScript-first UI fra...
|
||||
https://x.com/cityjsconf/status/2024908272646398229
|
||||
**
|
||||
|
||||
**X2** (score:52) @dennydotio (2026-02-18) [1likes]
|
||||
Prediction: 2026 marks the death of the JS frameworks. React, Svelte, Astro etc... only exist because humans need organized code to stay sane.
|
||||
|
||||
Once we stop reading the source code, we stop needing ...
|
||||
https://x.com/dennydotio/status/2024195986890109320
|
||||
**
|
||||
|
||||
**X5** (score:52) @AzamCodes (2026-02-13) [2likes]
|
||||
Web developers, what stack are you using in 2026?
|
||||
React? Vue? Svelte? Vanilla? Curious what’s actually winning....
|
||||
https://x.com/AzamCodes/status/2022298287236383010
|
||||
**
|
||||
|
||||
**X8** (score:52) @QiitaTrend (2026-02-11)
|
||||
[2026/02/11 18:00] トレンド1位
|
||||
【WebF】React/Vue/Svelteがそのままネイティブアプリになるよ by rana_kualu https://t.co/GiAnTHpOBB...
|
||||
https://x.com/QiitaTrend/status/2021509592489025785
|
||||
**
|
||||
|
||||
**X10** (score:50) @nicobaogim (2026-02-09)
|
||||
@babakfpk In 2026, picking React for a new project only really makes sense if you value ecosystem maturity, are following existing team habits, or need React-specific libraries. Same for Vue. Otherwis...
|
||||
https://x.com/nicobaogim/status/2020689628282667407
|
||||
**
|
||||
|
||||
**X12** (score:49) @Chubbi_Stephen (2026-02-07)
|
||||
2026 framework discourse:
|
||||
|
||||
Dev 1: "React is bloated, use Svelte"
|
||||
Dev 2: "Svelte has no ecosystem, use Vue"
|
||||
Dev 3: "Vue is dying, use Solid"
|
||||
Dev 4: "Just use React"
|
||||
|
||||
Meanwhile React: *still powering 80...
|
||||
https://x.com/Chubbi_Stephen/status/2020087839648800853
|
||||
**
|
||||
|
||||
### YouTube Videos
|
||||
|
||||
**yl0YWA2K2B0** (score:61) Fireship (2025-10-17) [699,597 views, 22,894 likes]
|
||||
React wants to win you back…
|
||||
https://www.youtube.com/watch?v=yl0YWA2K2B0
|
||||
Transcript: Last week, I got to participate in my favorite activity of the year. No, it wasn't watching all the overleveraged crypto bros learn what a margin call is. It was hate watching React comp as an anti-re...
|
||||
*YouTube video about react vs svelte 2026*
|
||||
|
||||
**MnpuK0MK4yo** (score:61) Beyond Fireship (2023-06-30) [697,142 views, 25,490 likes]
|
||||
React VS Svelte...10 Examples
|
||||
https://www.youtube.com/watch?v=MnpuK0MK4yo
|
||||
Transcript: any reasonable developer in today's world would learn react because it's the status quo and that's where the jobs are but life is a lot more fun when you become unreasonable and go against the status ...
|
||||
*YouTube video about react vs svelte 2026*
|
||||
|
||||
**aYyZUDFZTrM** (score:60) Fireship (2024-10-24) [547,836 views, 24,456 likes]
|
||||
JavaScript framework reinvents itself… Did "runes" just ruin Svelte?
|
||||
https://www.youtube.com/watch?v=aYyZUDFZTrM
|
||||
Transcript: about a year ago I made a tweet that said the dollar sign in spelt is the most powerful abstraction in modern front-end web development usually I'm not wrong about anything ever but this tweet ended u...
|
||||
*YouTube video about react vs svelte 2026*
|
||||
|
||||
**fn_uSZW5psM** (score:52) CodeSource (2025-05-14) [57,784 views, 2,120 likes]
|
||||
The Untold Story of Svelte
|
||||
https://www.youtube.com/watch?v=fn_uSZW5psM
|
||||
*YouTube video about react vs svelte 2026*
|
||||
|
||||
**IpJh0VEzMRo** (score:49) Ben Davis (2025-10-12) [24,631 views, 1,043 likes]
|
||||
I Was Wrong About Svelte...
|
||||
https://www.youtube.com/watch?v=IpJh0VEzMRo
|
||||
*YouTube video about react vs svelte 2026*
|
||||
|
||||
**1cGtYEXGm8c** (score:48) Ben Davis (2026-01-06) [16,899 views, 793 likes]
|
||||
This is THE Framework You Should be Using in 2026
|
||||
https://www.youtube.com/watch?v=1cGtYEXGm8c
|
||||
*YouTube video about react vs svelte 2026*
|
||||
|
||||
**qwDp5pZA_TA** (score:47) Code Hub (2026-02-08) [646 views, 31 likes]
|
||||
The Front-end Frameworks Guide 2026: React vs Angular vs Vue vs Svelt vs Solid vs Astro
|
||||
https://www.youtube.com/watch?v=qwDp5pZA_TA
|
||||
*YouTube video about react vs svelte 2026*
|
||||
|
||||
**_vuVy21l2bU** (score:44) Code Hub (2025-10-30) [6,454 views, 204 likes]
|
||||
React vs Svelte: The Brutal Honest Comparison EVER
|
||||
https://www.youtube.com/watch?v=_vuVy21l2bU
|
||||
*YouTube video about react vs svelte 2026*
|
||||
|
||||
**1BCsdaeYv0A** (score:40) Daniel | Tech & Data (2023-11-26) [33,905 views, 0 likes]
|
||||
Svelte vs React in 2025 - Make the RIGHT Choice (Difference Explained)
|
||||
https://www.youtube.com/watch?v=1BCsdaeYv0A
|
||||
*YouTube video about react vs svelte 2026*
|
||||
|
||||
**41HXdxGekZ0** (score:31) Paperclick (2025-10-04) [287 views, 3 likes]
|
||||
Vue vs React vs Svelte (2026) - Which One Is BEST?
|
||||
https://www.youtube.com/watch?v=41HXdxGekZ0
|
||||
*YouTube video about react vs svelte 2026*
|
||||
|
||||
---
|
||||
**Sources:**
|
||||
✅ Reddit: 3 threads
|
||||
✅ X: 9 posts
|
||||
✅ YouTube: 10 videos (3 with transcripts)
|
||||
⏭️ HN: 0 stories found
|
||||
⚡ Web: assistant will use WebSearch
|
||||
@@ -1,196 +0,0 @@
|
||||
# Evaluation: Claude Code skills and MCP servers
|
||||
|
||||
**Query Type:** GENERAL
|
||||
**Label Map (REVEAL AFTER SCORING):** {'A': 'hn', 'B': 'base', 'C': 'cross'}
|
||||
|
||||
## Evaluation Rubric
|
||||
|
||||
Score each version 1-5 on these dimensions:
|
||||
|
||||
### 1. GROUNDEDNESS (30%)
|
||||
Does the narrative cite specific sources from the research data?
|
||||
- 1: Generic statements, no citations, could be written without any research
|
||||
- 3: Some citations but mixed with pre-existing knowledge filler
|
||||
- 5: Every finding backed by a specific source ("per @handle", "per r/sub", "per [channel]")
|
||||
|
||||
### 2. SPECIFICITY (25%)
|
||||
Are findings specific (named entities, exact numbers) or vague?
|
||||
- 1: Vague generalities ("AI video tools are improving", "developers are debating frameworks")
|
||||
- 3: Some specifics mixed with generic padding
|
||||
- 5: Named products, exact numbers, version names ("Seedance 2.0 added lip sync", "698 likes")
|
||||
|
||||
### 3. COVERAGE (20%)
|
||||
Does the synthesis represent findings from all available data sources?
|
||||
- 1: Only mentions 1-2 sources, ignores others
|
||||
- 3: Mentions most sources but unevenly weighted
|
||||
- 5: Naturally weaves Reddit, X, YouTube (and HN if available) into the narrative
|
||||
|
||||
### 4. ACTIONABILITY (15%)
|
||||
Does the invitation give specific, research-derived next steps?
|
||||
- 1: Generic "let me know if you want more info"
|
||||
- 3: Somewhat specific but not clearly grounded in research findings
|
||||
- 5: Each suggestion references a specific thing from the research ("I can compare Seedance 2.0 vs Kling")
|
||||
|
||||
### 5. FORMAT COMPLIANCE (10%)
|
||||
Does it follow the expected output format?
|
||||
- 1: Missing stats block, no invitation, wrong structure
|
||||
- 3: Partial stats block, generic invitation
|
||||
- 5: Perfect stats block with real counts, source box-drawing chars, top voices identified
|
||||
|
||||
|
||||
---
|
||||
## VERSION A
|
||||
|
||||
What I learned:
|
||||
|
||||
Claude Code skills and MCP servers are at an inflection point - the community is building so fast that infrastructure tooling (sandboxes, marketplaces, directories) is appearing alongside the skills themselves. @ihtesham2005 highlighted Anthropic open-sourcing their internal Skills library, and Hacker News is seeing a steady stream of Show HN projects building on this layer.
|
||||
|
||||
**Specialized skill packs are the new open-source project type** - Builders are shipping domain-specific skill bundles: a 55K-word email marketing knowledge base (hn/cosmoblk, 10pts), 12 SEO skills for Claude Code (r/ClaudeCode), and AI marketing skills (hn/superamped). These aren't generic - they embed deep domain knowledge into SKILL.md files.
|
||||
|
||||
**Security and sandboxing are emerging concerns** - SkillSandbox (hn/ClaytheMachine) is a Rust-based capability sandbox for AI agent skills, and Gulama (hn/san-techie21) pitches itself as a "security-first" OpenClaw alternative. As skills get more powerful, the HN crowd is asking hard questions about what they should be allowed to do.
|
||||
|
||||
**MCP is becoming a framework target, not just a protocol** - Upjack (hn/barefootsanders) is a declarative framework for building apps over MCP, and the GTM MCP Server (hn/paolobietolini) lets AI manage Google Tag Manager containers. MCP is evolving from "connect tools to Claude" into "build entire products on top of MCP."
|
||||
|
||||
**Agent orchestration is the next layer up** - Axon (hn/gjkim042) provides Kubernetes-native orchestration for AI coding agents, and hn/alternateman built tooling to turn Claude Code or Codex into proactive 24/7 agents. The pattern is skills for single tasks, orchestration for workflows, infrastructure for always-on agents.
|
||||
|
||||
**Skill discovery is an unsolved problem** - Indx.sh (hn/micronink) is a directory of AI coding rules, MCP servers, and tools. ClawsMarket (hn/digitcatphd) is a marketplace where AI agents discover tools. @ghumare64 uses a dedicated tool to sync and scan skills from the marketplace. Multiple independent attempts to solve discovery suggest it's a real pain point.
|
||||
|
||||
KEY PATTERNS from the research:
|
||||
1. HN builders are creating infrastructure (sandboxes, frameworks, marketplaces) while Reddit/X users are creating end-user skills - the ecosystem is specializing, per hn/ClaytheMachine
|
||||
2. Marketing is the breakout non-dev use case for skills - multiple independent projects across HN, Reddit, and YouTube, per hn/cosmoblk
|
||||
3. Skills are going cross-platform - builders are creating skills that work with Claude Code AND Codex, per @zeeg
|
||||
4. The implicit vs explicit skill invocation debate is live - Codex handles implicit well, Claude Code still needs explicit mentions, per @zeeg
|
||||
5. Solo devs and small teams are the core adoption wedge - team-level skill sharing is the growth vector, per r/ClaudeCode
|
||||
|
||||
---
|
||||
All agents reported back!
|
||||
├─ 🟠 Reddit: 3 threads │ 0 upvotes │ 0 comments
|
||||
├─ 🔵 X: 12 posts │ 23 likes │ 1 reposts
|
||||
├─ 🔴 YouTube: 10 videos │ 520,640 views │ 3 with transcripts
|
||||
├─ 🟡 HN: 15 stories │ 35 points │ 16 comments
|
||||
├─ 🌐 Web: supplementary
|
||||
└─ 🗣️ Top voices: @ihtesham2005 (6 likes), @zeeg (4 likes, 1 RT) │ r/ClaudeCode, r/ClaudeAI │ hn/cosmoblk (10pts)
|
||||
---
|
||||
|
||||
I'm now an expert on Claude Code skills and MCP servers. Some things I can help with:
|
||||
- Break down the SkillSandbox architecture and what capability-based security means for your skills
|
||||
- Compare the emerging MCP frameworks (Upjack vs Poncho vs Fluid.sh) for different use cases
|
||||
- Help you build a domain-specific skill pack like the 55K-word email marketing knowledge base
|
||||
|
||||
|
||||
---
|
||||
## VERSION B
|
||||
|
||||
What I learned:
|
||||
|
||||
The Claude Code skills ecosystem is in a rapid expansion phase, with community-built skill libraries and frameworks emerging as the dominant trend across Reddit and X this month. @ihtesham2005 flagged that Anthropic open-sourced their internal Skills library, and r/ClaudeCode is seeing a wave of builders shipping reusable skill packs.
|
||||
|
||||
**Skills adoption is accelerating at the team level** - One team reported 3x-ing their Claude Code skill usage in two weeks by syncing skills, hooks, and MCP configs across their org, per r/ClaudeCode. The key was making skills discoverable and easy to install rather than relying on individual setup.
|
||||
|
||||
**One-command frameworks are consolidating the ecosystem** - ClaudeInOne bundles 135 agents, 35 curated skills, 121 plugins, and 6 MCP configs into a single install, per @arpan7sarkar. This "batteries included" approach is gaining traction as the skill count grows faster than people can evaluate individually.
|
||||
|
||||
**Self-improvement loops are the power-user pattern** - A "wrap-up" skill that captures session learnings and feeds them back into future sessions was highlighted as a favorite Claude Code skill on r/ClaudeCode. The idea of skills that improve themselves over time resonated heavily.
|
||||
|
||||
**Non-developers are building with skills** - Grace Leung's YouTube tutorial on building an AI marketing team with skills in 16 minutes pulled 47K views in 4 days. The framing has shifted from "developer tool" to "anyone who can describe a workflow."
|
||||
|
||||
**MCP servers remain the infrastructure layer** - Robin Ebers' "8 MCP Servers That Make Claude Code 10x Better" (90K views) argues most MCP servers are "overhyped garbage" but a handful are genuine game changers. The consensus is that skills handle workflow logic while MCP servers handle tool integrations.
|
||||
|
||||
KEY PATTERNS from the research:
|
||||
1. Skills are moving from individual to team-shared - syncing across orgs is the unlock, per r/ClaudeCode
|
||||
2. Skill marketplaces and directories are emerging as discovery mechanisms, per @ghumare64
|
||||
3. Marketing and SEO are the fastest-growing non-dev skill categories, per r/ClaudeCode
|
||||
4. Skills vs MCP confusion persists - Postman and Solo Swift Crafter both made explainer videos clarifying the distinction
|
||||
5. Builder skills that generate other skills are the meta-pattern, per @matgoldsborough
|
||||
|
||||
---
|
||||
All agents reported back!
|
||||
├─ 🟠 Reddit: 4 threads │ 291 upvotes │ 0 comments
|
||||
├─ 🔵 X: 11 posts │ 22 likes │ 1 reposts
|
||||
├─ 🔴 YouTube: 10 videos │ 461,224 views │ 3 with transcripts
|
||||
├─ 🟡 HN: 0 stories (no results this cycle)
|
||||
├─ 🌐 Web: supplementary
|
||||
└─ 🗣️ Top voices: @ihtesham2005 (6 likes), @zeeg (4 likes, 1 RT) │ r/ClaudeCode
|
||||
---
|
||||
|
||||
I'm now an expert on Claude Code skills and MCP servers. Some things I can help with:
|
||||
- Compare the ClaudeInOne framework vs building your own skill library from scratch
|
||||
- Walk through setting up a self-improvement loop skill for your workflow
|
||||
- Help you decide which MCP servers are actually worth installing based on Robin Ebers' teardown
|
||||
|
||||
|
||||
---
|
||||
## VERSION C
|
||||
|
||||
What I learned:
|
||||
|
||||
The Claude Code skills and MCP ecosystem is experiencing simultaneous growth at every layer - from individual skill authoring to team-level adoption to infrastructure tooling. The signal is dense: r/ClaudeCode has 10 active threads this month on skills and MCP, Hacker News has 15 Show HN projects building on this stack, and @ihtesham2005's post about Anthropic open-sourcing their internal Skills library catalyzed a wave of community activity.
|
||||
|
||||
**MCP server scaling is hitting real limits** - "Claude Code works great... until you have too many MCP servers" (r/ClaudeCode) is the thread of the month. Teams are running into architecture problems, with gateway patterns emerging as the solution. This connects directly to Upjack (hn/barefootsanders), a declarative framework for building apps over MCP.
|
||||
|
||||
**Token efficiency is driving MCP server design** - A semantic graph MCP server cut context from 15K to 3K tokens (r/ClaudeCode), while 25 MCP servers that return structured data instead of terminal formatting emerged on r/ClaudeAI. The efficiency concern also shows up in SkillSandbox (hn/ClaytheMachine), which uses capability-based sandboxing to limit what skills can access.
|
||||
|
||||
**Security is the emerging battleground** - An MCP proxy server for safe email access (r/ClaudeAI) addresses the trust problem, while Gulama (hn/san-techie21) pitches itself as a security-first agent. The Reddit and HN projects converge on the same insight: as skills get more capable, the security surface grows.
|
||||
|
||||
**Skills are becoming team infrastructure, not personal tools** - The "We 3x'd our team's Claude Code skill usage" thread (r/ClaudeCode) and ClaudeInOne framework (213 skills bundled, r/ClaudeCode score 78) both show skills moving from individual to organizational. A Chrome extension for viewing skills on GitHub (r/ClaudeCode) and @ghumare64's skill sync tooling reinforce that discovery and distribution matter more than authoring now.
|
||||
|
||||
**Domain-specific skills are the high-value pattern** - The 55K-word email marketing knowledge base (hn/cosmoblk, 10pts), 12 SEO skills (r/ClaudeCode), and the self-improvement loop skill (r/ClaudeCode) all share a pattern: deep domain knowledge embedded in SKILL.md files. Grace Leung's YouTube tutorial on building an AI marketing team with skills pulled 47K views - non-developers are the growth audience.
|
||||
|
||||
KEY PATTERNS from the research:
|
||||
1. MCP scaling problems are driving architectural innovation - gateways, structured data, and semantic graphs all emerged independently this month, per r/ClaudeCode
|
||||
2. Reddit discusses adoption and workflows while HN builds infrastructure (sandboxes, frameworks, marketplaces) - the ecosystem is specializing across platforms, per hn/ClaytheMachine
|
||||
3. Security concerns are growing in proportion to capability - email proxies, sandboxes, and "security-first" agents all appeared in February, per r/ClaudeAI
|
||||
4. Skill discovery is the unsolved bottleneck - Chrome extensions, directories (hn/micronink), and marketplaces (hn/digitcatphd) are all independent attempts to fix it
|
||||
5. Cross-platform skill portability matters - @zeeg notes Codex handles implicit skill invocation better than Claude Code, suggesting the skill format may outlive any single runtime
|
||||
|
||||
---
|
||||
All agents reported back!
|
||||
├─ 🟠 Reddit: 10 threads │ 692 upvotes │ 0 comments
|
||||
├─ 🔵 X: 12 posts │ 23 likes │ 1 reposts
|
||||
├─ 🔴 YouTube: 10 videos │ 465,498 views │ 3 with transcripts
|
||||
├─ 🟡 HN: 15 stories │ 35 points │ 16 comments
|
||||
├─ 🌐 Web: supplementary
|
||||
└─ 🗣️ Top voices: @ihtesham2005 (6 likes), @zeeg (5 likes, 1 RT) │ r/ClaudeCode, r/ClaudeAI │ hn/cosmoblk (10pts)
|
||||
---
|
||||
|
||||
I'm now an expert on Claude Code skills and MCP servers. Some things I can help with:
|
||||
- Analyze the MCP scaling problem and whether a gateway approach or semantic graph server would work better for your setup
|
||||
- Compare the security models across the email proxy, SkillSandbox, and Gulama approaches
|
||||
- Help you build a domain-specific skill pack and distribute it through the emerging skill ecosystem
|
||||
|
||||
|
||||
---
|
||||
## SCORES
|
||||
|
||||
### Version A
|
||||
- Groundedness: 4/5
|
||||
- Specificity: 5/5
|
||||
- Coverage: 3/5
|
||||
- Actionability: 4/5
|
||||
- Format: 4/5
|
||||
- **Weighted Total**: 4.05/5.0
|
||||
- Best/worst aspect: Best: exceptional specificity with named HN users, project names, and descriptions (SkillSandbox, Upjack, Axon, Gulama, Indx.sh, ClawsMarket). Worst: coverage skews heavily toward HN - Reddit is thin (3 threads, 0 upvotes) and YouTube is barely woven into the narrative despite 520K views reported.
|
||||
|
||||
### Version B
|
||||
- Groundedness: 4/5
|
||||
- Specificity: 4/5
|
||||
- Coverage: 3/5
|
||||
- Actionability: 4/5
|
||||
- Format: 4/5
|
||||
- **Weighted Total**: 3.80/5.0
|
||||
- Best/worst aspect: Best: strong specificity with real numbers (ClaudeInOne: 135 agents, 35 skills, 121 plugins; Grace Leung 47K views in 4 days; Robin Ebers 90K views). Worst: zero HN coverage (0 stories) means an entire platform dimension is missing, and coverage across existing sources is uneven - YouTube is mentioned but not deeply woven in.
|
||||
|
||||
### Version C
|
||||
- Groundedness: 5/5
|
||||
- Specificity: 5/5
|
||||
- Coverage: 5/5
|
||||
- Actionability: 5/5
|
||||
- Format: 4/5
|
||||
- **Weighted Total**: 4.90/5.0
|
||||
- Best/worst aspect: Best: coverage is outstanding - explicitly cross-references Reddit adoption threads with HN infrastructure projects (MCP scaling on r/ClaudeCode connecting to Upjack on HN), weaves X handles, YouTube stats, and specific Reddit thread titles into a unified narrative. Cites 10 Reddit threads, 15 HN stories, and specific numbers throughout. Worst: format is good but not perfect - the stats block uses emoji and box-drawing chars correctly but "0 comments" across all Reddit entries seems odd.
|
||||
|
||||
## VERDICT
|
||||
|
||||
**Winner for Claude Code skills and MCP servers:** Version C
|
||||
**Why:** Version C achieves what the other two cannot individually - it combines the HN depth of Version A with the Reddit/YouTube specificity of Version B, then adds cross-platform connections that neither version makes on its own. The MCP scaling problem thread connecting to Upjack, the security concerns converging across Reddit email proxy and HN sandboxes, and the Chrome extension plus marketplace discovery problem spanning platforms all demonstrate genuine cross-referencing. Version A is strong on HN but thin on Reddit; Version B is strong on Reddit/YouTube but missing HN entirely. Version C weaves all platforms together and surfaces the most actionable patterns.
|
||||
|
||||
**Reveal:** {'A': 'hn', 'B': 'base', 'C': 'cross'}
|
||||
@@ -1,198 +0,0 @@
|
||||
# Evaluation: Seedance AI video generation
|
||||
|
||||
**Query Type:** NEWS
|
||||
**Label Map (REVEAL AFTER SCORING):** {'A': 'base', 'B': 'hn', 'C': 'cross'}
|
||||
|
||||
## Evaluation Rubric
|
||||
|
||||
Score each version 1-5 on these dimensions:
|
||||
|
||||
### 1. GROUNDEDNESS (30%)
|
||||
Does the narrative cite specific sources from the research data?
|
||||
- 1: Generic statements, no citations, could be written without any research
|
||||
- 3: Some citations but mixed with pre-existing knowledge filler
|
||||
- 5: Every finding backed by a specific source ("per @handle", "per r/sub", "per [channel]")
|
||||
|
||||
### 2. SPECIFICITY (25%)
|
||||
Are findings specific (named entities, exact numbers) or vague?
|
||||
- 1: Vague generalities ("AI video tools are improving", "developers are debating frameworks")
|
||||
- 3: Some specifics mixed with generic padding
|
||||
- 5: Named products, exact numbers, version names ("Seedance 2.0 added lip sync", "698 likes")
|
||||
|
||||
### 3. COVERAGE (20%)
|
||||
Does the synthesis represent findings from all available data sources?
|
||||
- 1: Only mentions 1-2 sources, ignores others
|
||||
- 3: Mentions most sources but unevenly weighted
|
||||
- 5: Naturally weaves Reddit, X, YouTube (and HN if available) into the narrative
|
||||
|
||||
### 4. ACTIONABILITY (15%)
|
||||
Does the invitation give specific, research-derived next steps?
|
||||
- 1: Generic "let me know if you want more info"
|
||||
- 3: Somewhat specific but not clearly grounded in research findings
|
||||
- 5: Each suggestion references a specific thing from the research ("I can compare Seedance 2.0 vs Kling")
|
||||
|
||||
### 5. FORMAT COMPLIANCE (10%)
|
||||
Does it follow the expected output format?
|
||||
- 1: Missing stats block, no invitation, wrong structure
|
||||
- 3: Partial stats block, generic invitation
|
||||
- 5: Perfect stats block with real counts, source box-drawing chars, top voices identified
|
||||
|
||||
|
||||
---
|
||||
## VERSION A
|
||||
|
||||
## What I learned
|
||||
|
||||
ByteDance's **Seedance 2.0** has erupted across AI video communities this month, with r/generativeAI and @HBCoop_ capturing the intensity - a mix of awe at its cinematic output and frustration over access chaos.
|
||||
|
||||
**CapCut integration goes live.** As of Feb 25, Seedance 2.0 is available inside CapCut desktop and mobile, removing the need for a Chinese phone number. @jznode reports it runs about $2 per generation, making it the first broadly accessible path to the model outside China.
|
||||
|
||||
**One-minute films with zero editing.** A viral r/generativeAI thread describes Seedance 2.0 generating a full one-minute film with multi-shot coherence and transitions - no post-production required. Commenters are split between calling it a filmmaking revolution and noting it still produces "slop" on closer inspection.
|
||||
|
||||
**Access remains a mess.** Multiple threads across r/Seedance_AI and r/generativeAI ask the same question: where is the official website? The answer is complicated - Jimeng/Jianying is the primary platform but has geo-restrictions, account bans, and network errors. Third-party APIs (useapi.net) and integrations (NemoVideo) have popped up, but r/Seedance_AI users warn many are scams.
|
||||
|
||||
**Hollywood backlash and SAG-AFTRA fallout.** r/AIGuild reports ByteDance faces backlash from Hollywood over IP concerns. Separately, r/AI_UGC_Marketing notes that ElevenLabs silently removed Seedance 2.0 from its platform after a SAG-AFTRA incident, cutting off a key UGC video workflow.
|
||||
|
||||
**Content guardrails frustrate power users.** A r/Seedance_AI user reports wasting $1,000+ on generations that fail content review. The strict moderation filters are pushing creators toward third-party APIs that may bypass restrictions but offer uncertain quality.
|
||||
|
||||
**YouTube creators crown it king.** Theoretically Media's review (199K views) declares Seedance 2.0 has claimed the "AI video throne" just a week after Kling 3.0 held that title. Multiple tutorial channels (How To In 5 Minutes, Ai Lockup) are racing to publish free-access guides.
|
||||
|
||||
**Phishing scams exploit the hype.** @WyldeChyldeRec warns about phishing emails using Seedance branding with fake "unrestricted generation" offers - a sign of how much demand has outpaced official supply.
|
||||
|
||||
### KEY PATTERNS
|
||||
|
||||
1. **Access demand far exceeds official supply** - the gap between Seedance 2.0's capabilities and its availability outside China has created a cottage industry of third-party wrappers, scam sites, and workarounds (r/generativeAI)
|
||||
2. **Platform musical chairs** - Seedance 2.0 gets added to CapCut, removed from ElevenLabs, and claimed by NemoVideo all within weeks, making the ecosystem unstable for anyone building workflows (@grok)
|
||||
3. **Quality vs. guardrails tension** - the same content moderation that addresses Hollywood/SAG-AFTRA concerns is the thing driving power users to abandon official channels (r/Seedance_AI)
|
||||
4. **AI video benchmarks reset weekly** - Theoretically Media declared Kling 3.0 the benchmark, then Seedance 2.0 dethroned it within a week, reflecting how fast this space moves (Theoretically Media)
|
||||
5. **Scam ecosystem mirrors real demand** - phishing emails and fake sites emerge within days of each capability announcement, indicating mainstream interest beyond the AI-native audience (@WyldeChyldeRec)
|
||||
|
||||
```
|
||||
30-DAY SNAPSHOT
|
||||
├─ Reddit: 16 threads across r/Seedance_AI, r/generativeAI, r/AIGuild +5 more
|
||||
├─ X: 11 posts from @HBCoop_, @grok, @EmmaUsesAi +8 more
|
||||
├─ YouTube: 10 videos (199K views on Theoretically Media alone)
|
||||
└─ Web: supplementary context
|
||||
```
|
||||
|
||||
Want to dig deeper? I can look into **how Seedance 2.0 compares to Kling 3.0 on specific benchmarks**, **the SAG-AFTRA incident timeline and its ripple effects on AI video platforms**, or **which third-party Seedance APIs are legitimate vs. scams**.
|
||||
|
||||
|
||||
---
|
||||
## VERSION B
|
||||
|
||||
## What I learned
|
||||
|
||||
ByteDance's **Seedance 2.0** has dominated AI video discussion this month, with r/singularity and Hacker News tracking both the technical leaps and the messy rollout. The top HN thread (hn/Alisaqqt, 7pts) previewed the model in early February and correctly predicted the Atlas Cloud API launch on Feb 24.
|
||||
|
||||
**CapCut integration marks the global launch.** As of Feb 25, Seedance 2.0 is live inside CapCut desktop and mobile worldwide. @jznode confirms no Chinese phone number is needed, with generations running about $2 each. A parallel r/singularity thread tracks the announcement with discussion of censorship trade-offs and pricing.
|
||||
|
||||
**One-minute coherent films.** r/generativeAI showcases a Seedance 2.0 output - a one-minute film with multi-shot coherence, scene transitions, and consistent characters, all generated with zero editing. The claim is contested but the output samples are circulating widely.
|
||||
|
||||
**API availability is a saga.** The top HN story noted the API was not yet available in early Feb, with Atlas Cloud access promised for Feb 24. By late February, r/generativeAI reports Seedance 2.0 appearing in "open source tools already," while third-party APIs (useapi.net) offer access of uncertain authenticity. Multiple Show HN posts (SeeVideo, Seedance3AI, and others) are building wrapper apps, but most sit at 1 point with zero comments.
|
||||
|
||||
**Jimeng platform instability.** r/Seedance_AI documents 24-hour stretches of "Network Error, Generation Failed" on Jimeng Web, silent account bans distinguishing paid from free accounts, and general frustration. One user reports wasting $1,000+ on failed generations due to content review rejections.
|
||||
|
||||
**Hollywood and SAG-AFTRA blowback.** r/AIGuild covers ByteDance facing Hollywood backlash over Seedance 2.0 IP concerns. r/AI_UGC_Marketing notes ElevenLabs quietly removed Seedance 2.0 integration after a SAG-AFTRA incident, breaking UGC video workflows.
|
||||
|
||||
**Developer community response is breadth without depth.** HN saw 15 stories this month, but engagement is thin - only the preview thread (7pts, 7 comments) generated real discussion. The rest are Show HN launches of wrapper apps (SeeVideo, Seedance3AI, etc.) that attracted minimal attention, suggesting developer tools are outpacing developer demand.
|
||||
|
||||
**Multi-shot narrative is the real breakthrough.** HN commenter hn/RyanMu notes that most AI video tools "generate isolated clips that fall apart when you try to build an actual narrative" - Seedance 2.0's multi-shot coherence is what sets it apart, and a separate Show HN specifically targets the "jump-cut problem."
|
||||
|
||||
### KEY PATTERNS
|
||||
|
||||
1. **Access fragmentation creates a wrapper gold rush** - 8+ Show HN posts launched Seedance wrapper apps in a single month, but almost none gained traction, suggesting the market wants official API access, not middlemen (HN)
|
||||
2. **Platform musical chairs** - added to CapCut, removed from ElevenLabs, broken on Jimeng, promised on Atlas Cloud - the access surface is shifting weekly, making production workflows unreliable (r/singularity)
|
||||
3. **Quality ceiling vs. guardrail floor** - Seedance 2.0's cinematic output quality is the highest in the space, but content moderation filters reject enough generations to cost power users real money (r/Seedance_AI)
|
||||
4. **Multi-shot coherence is the moat** - while competitors offer single-clip generation, Seedance 2.0's ability to maintain character and scene consistency across shots is the feature driving adoption (hn/RyanMu)
|
||||
5. **Hype-to-engagement ratio is extreme** - 15 HN stories but only 1 with meaningful discussion; YouTube tutorials pulling 200K views while developers barely engage, indicating consumer interest far outpaces technical community adoption (HN)
|
||||
|
||||
```
|
||||
30-DAY SNAPSHOT
|
||||
├─ Reddit: 20 threads across r/singularity, r/Seedance_AI, r/generativeAI +6 more
|
||||
├─ X: 11 posts from @HBCoop_, @grok, @EmmaUsesAi +8 more
|
||||
├─ YouTube: 10 videos (199K views on Theoretically Media alone)
|
||||
├─ HN: 15 stories (top: 7pts/7cmt on Seedance 2.0 preview)
|
||||
└─ Web: supplementary context
|
||||
```
|
||||
|
||||
Want to dig deeper? I can look into **the Atlas Cloud API launch and pricing details**, **which Show HN wrapper apps are actually functional**, or **how Seedance 2.0's multi-shot coherence compares to Kling 3.0 and Sora 2 technically**.
|
||||
|
||||
|
||||
---
|
||||
## VERSION C
|
||||
|
||||
## What I learned
|
||||
|
||||
ByteDance's **Seedance 2.0** has been the most discussed AI video model this month, with converging signals across r/Seedance_AI, r/generativeAI, and Hacker News painting a picture of breakthrough capability tangled in access chaos and regulatory blowback. The top HN thread (hn/Alisaqqt, 7pts) correctly anticipated the Atlas Cloud API launch, while r/generativeAI captured the viral reaction to its cinematic output.
|
||||
|
||||
**CapCut integration is the global access breakthrough.** As of Feb 25, Seedance 2.0 is live inside CapCut desktop and mobile - confirmed across both r/seedance and @grok. @jznode reports it costs about $2 per generation with no Chinese phone number required, resolving the access barrier that dominated discussion for weeks.
|
||||
|
||||
**Cinematic quality sets a new bar.** r/generativeAI's viral thread - "Seedance 2.0 just generated a 1-minute film with ZERO editing" - showcases multi-shot coherence, transitions, and character consistency. Theoretically Media's review (199K views) declared it has claimed the AI video throne barely a week after Kling 3.0 held that title. But @TferThomas offers the counterpoint: "it's still slop."
|
||||
|
||||
**The access problem spawned scams and wrappers.** Cross-referencing Reddit and HN reveals the same frustration from two angles: users in r/Seedance_AI warn about scam sites like NemoVideo, while HN saw 8+ Show HN wrapper apps (SeeVideo, Seedance3AI, etc.) launch in a single month [xref: HN5/R6, HN4/R6]. Most HN wrappers attracted zero comments, suggesting developer supply outpaced real demand.
|
||||
|
||||
**API rollout delayed by deepfake/copyright concerns.** r/Seedance_AI documents the delay explicitly - the API launch was pushed back due to deepfake and copyright guardrails. This connects to r/AIGuild's report of Hollywood backlash and r/AI_UGC_Marketing's note that ElevenLabs silently removed Seedance 2.0 after a SAG-AFTRA incident. The regulatory pressure is reshaping access from multiple directions.
|
||||
|
||||
**Jimeng platform is failing its users.** Threads across r/Seedance_AI report 24-hour network errors on Jimeng Web, silent account bans on paid accounts, and $1,000+ wasted on failed generations. A separate thread from r/HiggsfieldAI argues "the censorship just ruined Seedance 2.0," while r/AI_Agents offers a measured take: "Seedance 2.0 is impressive. It's still not a production workflow."
|
||||
|
||||
**Hands-on testers reveal the real workflow.** u/Illustrious-One7744 provides detailed notes on what actually works - consistency via reference images, shot planning for multi-shot coherence, and the limitations of text-only prompting. This practical perspective is absent from the hype-driven YouTube tutorials.
|
||||
|
||||
**Multi-shot coherence is the technical differentiator.** HN commenter hn/RyanMu identifies the core issue: most AI video tools "generate isolated clips that fall apart when you try to build an actual narrative." A separate Show HN specifically targets the "jump-cut problem" that Seedance 2.0 claims to solve.
|
||||
|
||||
### KEY PATTERNS
|
||||
|
||||
1. **Regulatory pressure is the real bottleneck, not technology** - the API delay, ElevenLabs removal, and Hollywood backlash form a connected pattern where legal/ethical concerns are throttling access faster than ByteDance can ship (r/Seedance_AI + r/AIGuild)
|
||||
2. **Access fragmentation creates parallel economies** - CapCut for consumers, Atlas Cloud for enterprise, Jimeng for China, third-party wrappers for everyone else, scam sites for the desperate - all serving the same model through different channels with different reliability [xref: HN/Reddit]
|
||||
3. **Consumer excitement vastly outpaces developer adoption** - 199K YouTube views vs. 1-point HN Show HN posts; the audience is creators and filmmakers, not engineers building on APIs (Theoretically Media vs. HN)
|
||||
4. **Multi-shot coherence is the moat** - character/scene consistency across shots is what separates Seedance 2.0 from competitors and what makes the "zero editing film" possible (hn/RyanMu)
|
||||
5. **Quality-guardrail tension will define who wins AI video** - ByteDance's strict content moderation costs power users real money while its absence would invite the regulatory response that already delayed the API launch (r/Seedance_AI + r/HiggsfieldAI)
|
||||
|
||||
```
|
||||
30-DAY SNAPSHOT
|
||||
├─ Reddit: 19 threads across r/Seedance_AI, r/generativeAI, r/AIGuild +7 more
|
||||
├─ X: 11 posts from @HBCoop_, @grok, @EmmaUsesAi +8 more
|
||||
├─ YouTube: 10 videos (199K views on Theoretically Media alone)
|
||||
├─ HN: 15 stories (top: 7pts/7cmt on Seedance 2.0 preview) [xref: 2 cross-refs]
|
||||
└─ Web: supplementary context
|
||||
```
|
||||
|
||||
Want to dig deeper? I can look into **the full SAG-AFTRA timeline and how it connects to ByteDance's API delay**, **which Seedance 2.0 access methods are actually legitimate and at what cost**, or **head-to-head multi-shot coherence comparisons between Seedance 2.0, Kling 3.0, and Sora 2**.
|
||||
|
||||
|
||||
---
|
||||
## SCORES
|
||||
|
||||
### Version A
|
||||
- Groundedness: 4/5
|
||||
- Specificity: 4/5
|
||||
- Coverage: 3/5
|
||||
- Actionability: 4/5
|
||||
- Format: 3/5
|
||||
- **Weighted Total**: 3.70/5.0
|
||||
- Best/worst aspect: Best: strong narrative flow with good Reddit citations (r/generativeAI, r/Seedance_AI, r/AIGuild, r/AI_UGC_Marketing) and specific details ($2/generation, $1,000+ wasted, 199K views). Worst: no HN data at all - the stats block omits the HN line entirely, and YouTube is cited for view counts but not for specific analysis. The phishing scam angle is unique and grounded but coverage is limited to Reddit and X.
|
||||
|
||||
### Version B
|
||||
- Groundedness: 5/5
|
||||
- Specificity: 5/5
|
||||
- Coverage: 4/5
|
||||
- Actionability: 4/5
|
||||
- Format: 4/5
|
||||
- **Weighted Total**: 4.55/5.0
|
||||
- Best/worst aspect: Best: exceptional specificity - names specific HN users (hn/Alisaqqt 7pts, hn/RyanMu), tracks the API timeline from early Feb preview to Feb 24 Atlas Cloud launch, counts "8+ Show HN wrapper apps" and notes most got zero comments. The "breadth without depth" HN insight is original. Worst: despite including HN, the Reddit sources shift (r/singularity appears, some base-version subreddits drop), and YouTube coverage is mentioned but not deeply integrated.
|
||||
|
||||
### Version C
|
||||
- Groundedness: 5/5
|
||||
- Specificity: 5/5
|
||||
- Coverage: 5/5
|
||||
- Actionability: 5/5
|
||||
- Format: 4/5
|
||||
- **Weighted Total**: 4.90/5.0
|
||||
- Best/worst aspect: Best: the cross-referencing is explicit and adds genuine analytical value - "[xref: HN5/R6, HN4/R6]" connects Reddit scam warnings to HN wrapper apps, the API delay is connected across r/Seedance_AI, r/AIGuild, and r/AI_UGC_Marketing with causal reasoning ("regulatory pressure is reshaping access from multiple directions"). Unique content includes u/Illustrious-One7744's hands-on workflow tips and the r/HiggsfieldAI censorship take. Actionability is the strongest - the SAG-AFTRA timeline, legitimate access methods, and head-to-head comparisons are all directly grounded. Worst: format loses a point for slightly inconsistent stats block formatting (the [xref: 2 cross-refs] notation is helpful but non-standard).
|
||||
|
||||
## VERDICT
|
||||
|
||||
**Winner for Seedance AI video generation:** Version C
|
||||
**Why:** Version C produces the most insightful synthesis by explicitly connecting findings across platforms. The regulatory pressure narrative - linking API delays, ElevenLabs removal, and Hollywood backlash into a coherent causal chain across r/Seedance_AI, r/AIGuild, and r/AI_UGC_Marketing - is analysis that neither Version A nor B achieves individually. Version B is a close second with excellent HN depth and the valuable "breadth without depth" observation, but it lacks the cross-platform connections. Version A covers the story well but misses the HN dimension entirely and has weaker format compliance.
|
||||
|
||||
**Reveal:** {'A': 'base', 'B': 'hn', 'C': 'cross'}
|
||||
@@ -1,168 +0,0 @@
|
||||
# Evaluation: M4 MacBook Pro review
|
||||
|
||||
**Query Type:** RECOMMENDATIONS
|
||||
**Label Map (REVEAL AFTER SCORING):** {'A': 'hn', 'B': 'base', 'C': 'cross'}
|
||||
|
||||
## Evaluation Rubric
|
||||
|
||||
Score each version 1-5 on these dimensions:
|
||||
|
||||
### 1. GROUNDEDNESS (30%)
|
||||
Does the narrative cite specific sources from the research data?
|
||||
- 1: Generic statements, no citations, could be written without any research
|
||||
- 3: Some citations but mixed with pre-existing knowledge filler
|
||||
- 5: Every finding backed by a specific source ("per @handle", "per r/sub", "per [channel]")
|
||||
|
||||
### 2. SPECIFICITY (25%)
|
||||
Are findings specific (named entities, exact numbers) or vague?
|
||||
- 1: Vague generalities ("AI video tools are improving", "developers are debating frameworks")
|
||||
- 3: Some specifics mixed with generic padding
|
||||
- 5: Named products, exact numbers, version names ("Seedance 2.0 added lip sync", "698 likes")
|
||||
|
||||
### 3. COVERAGE (20%)
|
||||
Does the synthesis represent findings from all available data sources?
|
||||
- 1: Only mentions 1-2 sources, ignores others
|
||||
- 3: Mentions most sources but unevenly weighted
|
||||
- 5: Naturally weaves Reddit, X, YouTube (and HN if available) into the narrative
|
||||
|
||||
### 4. ACTIONABILITY (15%)
|
||||
Does the invitation give specific, research-derived next steps?
|
||||
- 1: Generic "let me know if you want more info"
|
||||
- 3: Somewhat specific but not clearly grounded in research findings
|
||||
- 5: Each suggestion references a specific thing from the research ("I can compare Seedance 2.0 vs Kling")
|
||||
|
||||
### 5. FORMAT COMPLIANCE (10%)
|
||||
Does it follow the expected output format?
|
||||
- 1: Missing stats block, no invitation, wrong structure
|
||||
- 3: Partial stats block, generic invitation
|
||||
- 5: Perfect stats block with real counts, source box-drawing chars, top voices identified
|
||||
|
||||
|
||||
---
|
||||
## VERSION A
|
||||
|
||||
# What I learned
|
||||
|
||||
The M4 MacBook Pro has been extensively reviewed across YouTube and Reddit, but the developer-focused Hacker News community has been notably silent on the topic this cycle. Still, the broader conversation paints a detailed picture: the M4 lineup is strong hardware with an increasingly clear "buy the base model" consensus forming. Per @bhphoto, the M3-to-M4 differences are real but not dramatic, and r/macbookpro owners are backing that up with months of ownership data.
|
||||
|
||||
**Base M4 is the default recommendation.** MacRumors dedicated a full video to arguing that the base M4 MacBook Pro is all most buyers need, advising people to skip the Pro and Max chips. Just Josh's review and recommendations video landed at a similar conclusion. The M4 Pro and Max are specialized tools - unless you are editing multicam 4K timelines, running sustained ML training, or pushing large local LLMs, the base chip handles professional workloads without breaking a sweat.
|
||||
|
||||
**Battery reality is a sore spot.** The most pointed discussion on r/macbookpro compares "battery life reality vs review" - users are finding that Apple's headline battery numbers don't match their daily experience, especially on the 14-inch model. A separate thread flags concern about whether the 14-inch battery life should worry buyers. The gap between controlled reviewer testing and real usage with Chrome, Slack, and Docker running is meaningful enough to generate repeat threads.
|
||||
|
||||
**Long-term ownership tells the real story.** The launch-day review cycle was overwhelmingly positive, but the 3-to-12-month follow-ups are more measured. Brandon Butch's 3-month review is titled "This Feels Wrong," capturing the sentiment that the M4 benchmarks well but doesn't feel transformative in practice. Created Tech revisited at both 4 and 6 months; Hardware Canucks called it "insane" at launch but the hype has settled. Per r/macbookpro, at least one owner posted about genuine disappointment with heat management and app stability on their M4 MBP.
|
||||
|
||||
**Local LLM capability is a real differentiator.** On X, the conversation has shifted toward the M4 as a local AI machine. @jameslmorton reports 70 tokens/s on a maxed-out 128GB M4 MacBook Pro running local models. @grok confirms Ollama runs natively on Apple Silicon via Metal, with the Q4_K_M quantization needing 18-24GB unified memory for decent performance. This use case barely appeared in traditional reviews but is driving real purchase decisions among developers.
|
||||
|
||||
**The upgrade calculus from M3 is thin.** @bhphoto's M3 vs M4 comparison guide lays out the silicon differences, and the conclusion across sources is consistent: if you own an M3 Pro or Max, the M4 is not a compelling upgrade. New buyers benefit; upgraders should probably wait for M5.
|
||||
|
||||
---All agents reported back!
|
||||
├─ 🟠 Reddit: 3 threads │ 0 upvotes │ 0 comments
|
||||
├─ 🔵 X: 12 posts │ 10 likes │ 1 repost
|
||||
├─ 🔴 YouTube: 10 videos │ 7,866,700 views │ 3 with transcripts
|
||||
├─ 🟡 HN: 0 stories (no results this cycle)
|
||||
├─ 🌐 Web: 0 pages (supplementary)
|
||||
└─ 🗣️ Top voices: @bhphoto (3 likes), @jameslmorton │ r/macbookpro
|
||||
|
||||
---I'm now an expert on M4 MacBook Pro reviews. Some things I can help with:
|
||||
- Help you decide between the base M4, M4 Pro, and M4 Max based on your actual workflow
|
||||
- Estimate realistic battery life for your usage pattern vs Apple's marketing claims
|
||||
- Assess whether upgrading from an M1/M2/M3 MacBook Pro is worth it right now
|
||||
|
||||
|
||||
---
|
||||
## VERSION B
|
||||
|
||||
# What I learned
|
||||
|
||||
The M4 MacBook Pro has been out long enough that the conversation has shifted from launch hype to real-world ownership reports - and the picture is more nuanced than the initial review wave suggested. Across r/macbookpro, YouTube reviewers like MKBH and Dave2D, and X chatter from @bhphoto and @jameslmorton, a clear pattern emerges: the M4 lineup is genuinely excellent hardware, but choosing the right configuration matters more than just picking "the best one."
|
||||
|
||||
**The base M4 is the real story.** MacRumors made the bold claim that the base M4 MacBook Pro is all most people need, recommending users skip the M4 Pro and Max entirely. This echoes Just Josh's review and recommendations video, which walked through specific use cases where the base chip handles the workload just fine. For general dev work, photography, and everyday professional use, the consensus is that the jump to Pro/Max is wasted money unless you have a specific sustained workload that demands it.
|
||||
|
||||
**Battery life claims don't hold up for everyone.** One of the most active discussion threads on r/macbookpro directly compares "battery life reality vs review" numbers, with users reporting real-world results that fall short of Apple's headline claims. The 14-inch model's battery in particular drew scrutiny, with another thread asking "should I be concerned?" after seeing lower-than-expected drain rates. Reviewers tested under controlled conditions; actual usage with Electron apps, browsers, and background processes tells a different story.
|
||||
|
||||
**Long-term reviews are more honest than launch reviews.** Brandon Butch's 3-month review is titled "This Feels Wrong" - pointing to the cognitive dissonance of a machine that benchmarks well but doesn't feel dramatically different from the M3 in daily use. Created Tech's 6-month follow-up and Tech It Easy's 1-year review both confirm this: the M4 Pro is a solid incremental upgrade, not a generational leap. Meanwhile, at least one r/macbookpro user posted about being genuinely "disappointed" with heat and app stability issues, per r/macbookpro.
|
||||
|
||||
**Local AI workloads are the new benchmark.** A notable shift in the X conversation: multiple posts (including from @grok and @jameslmorton) discuss running LLMs locally on M4 Pro/Max hardware. The 128GB unified memory config can push 70 tokens/s on local models, per @jameslmorton, and Ollama runs natively via Metal. This is becoming a real purchase consideration for developers and AI enthusiasts - something no traditional review covers well.
|
||||
|
||||
**M3 vs M4 upgrade: marginal for most.** @bhphoto's comparison guide between M3 and M4 silicon suggests the differences are real but not dramatic for most workflows. Unless you specifically need the Nano texture display, Thunderbolt 5, or the extra GPU cores, holding an M3 Pro is still a strong position.
|
||||
|
||||
---All agents reported back!
|
||||
├─ 🟠 Reddit: 3 threads │ 0 upvotes │ 0 comments
|
||||
├─ 🔵 X: 12 posts │ 10 likes │ 1 repost
|
||||
├─ 🔴 YouTube: 10 videos │ 7,866,702 views │ 3 with transcripts
|
||||
├─ 🌐 Web: 0 pages (supplementary)
|
||||
└─ 🗣️ Top voices: @bhphoto (3 likes), @jameslmorton │ r/macbookpro
|
||||
|
||||
---I'm now an expert on M4 MacBook Pro reviews. Some things I can help with:
|
||||
- Compare the base M4 vs M4 Pro vs M4 Max for your specific workload (dev, creative, AI/ML)
|
||||
- Break down real-world battery life expectations by screen size and usage pattern
|
||||
- Advise whether upgrading from M1/M2/M3 is worth it based on long-term reviewer consensus
|
||||
|
||||
|
||||
---
|
||||
## VERSION C
|
||||
|
||||
# What I learned
|
||||
|
||||
Cross-referencing Reddit ownership reports, YouTube long-term reviews, and X commentary on the M4 MacBook Pro reveals a maturing consensus: this is excellent hardware with a surprisingly simple recommendation for most buyers. MKBHD's review (4M+ views) and Dave2D's deep dive both confirm that the M4 Max convinced even skeptical upgraders, while r/macbookpro threads tell a more complicated story about living with the machine day to day.
|
||||
|
||||
**The Air-to-Pro switch is about more than the chip.** One of the most interesting Reddit threads covers a user who returned an M4 MacBook Air for the M4 MacBook Pro - and the reasons weren't about raw performance. The Pro's display quality, speaker system, and port selection drove the decision, per r/macbookpro. This suggests the "just buy the Air" advice that dominates YouTube doesn't account for the full ownership experience. Created Tech's 4-month Air vs Pro comparison video captures this tension, finding meaningful differences in sustained workloads and thermals.
|
||||
|
||||
**Battery expectations need recalibrating.** Multiple r/macbookpro threads question the M4 Pro 14-inch battery life against Apple's advertised numbers. Real-world users report notably different drain rates depending on workload mix, and there is genuine concern rather than just nitpicking. The pattern across Reddit is consistent: if you run development tools, Docker, or browser-heavy workflows, expect meaningfully less than Apple's "up to 24 hours" claim.
|
||||
|
||||
**Long-term reviewers are more candid.** The YouTube landscape for this topic is unusually rich in follow-up content. Brandon Butch's 3-month review flags the disconnect between benchmarks and daily feel. Max Tech published two separate long-term reviews - one at 1 month calling it "BEST Mac EVER!?" and another at 6 months titled "Everyone was WRONG!" - showing how opinions evolve with extended use, per Max Tech on YouTube. Created Tech's 6-month review reinforces the incremental-upgrade narrative. Hardware Canucks initially called it "insane" but that enthusiasm has cooled.
|
||||
|
||||
**Local AI is the sleeper use case.** The X conversation is dominated by AI workload discussions. @jameslmorton reports 70 tokens/s on a fully loaded 128GB M4 MacBook Pro, though notes quality varies dramatically by model. @grok confirms Ollama runs natively via Metal on M4 hardware, needing 18-24GB unified memory for usable inference speeds. For developers evaluating the M4 Pro vs Max, local LLM performance is becoming as important as traditional creative benchmarks.
|
||||
|
||||
**Configuration advice is converging.** Across all sources, the recommendation structure is settling: base M4 for general professional use, M4 Pro 24GB for developers and moderate creative work, M4 Max only for sustained GPU workloads or large local model inference. MacRumors explicitly advises skipping Pro and Max for most buyers. The M3-to-M4 upgrade path remains thin unless you need Thunderbolt 5 or the Nano texture display, per @bhphoto.
|
||||
|
||||
---All agents reported back!
|
||||
├─ 🟠 Reddit: 3 threads │ 0 upvotes │ 0 comments
|
||||
├─ 🔵 X: 12 posts │ 10 likes │ 1 repost
|
||||
├─ 🔴 YouTube: 10 videos │ 7,926,186 views │ 3 with transcripts
|
||||
├─ 🟡 HN: 0 stories (no results this cycle)
|
||||
├─ 🌐 Web: 0 pages (supplementary)
|
||||
└─ 🗣️ Top voices: @bhphoto (3 likes), @jameslmorton │ r/macbookpro
|
||||
|
||||
---I'm now an expert on M4 MacBook Pro reviews. Some things I can help with:
|
||||
- Compare the M4 MacBook Air vs Pro for your specific use case (the differences go beyond specs)
|
||||
- Recommend the right M4 configuration tier based on whether you run local AI models, creative apps, or dev tools
|
||||
- Give you realistic battery life expectations based on Reddit owner reports, not Apple's marketing numbers
|
||||
|
||||
|
||||
---
|
||||
## SCORES
|
||||
|
||||
### Version A
|
||||
- Groundedness: 4/5
|
||||
- Specificity: 4/5
|
||||
- Coverage: 4/5
|
||||
- Actionability: 4/5
|
||||
- Format: 3/5
|
||||
- **Weighted Total**: 3.85/5.0
|
||||
- Best/worst aspect: Best: good multi-source weaving - Reddit battery threads, YouTube long-term reviews (Brandon Butch, Created Tech, Hardware Canucks), X handles (@jameslmorton 70 tokens/s, @bhphoto, @grok), and specific tool mentions (Ollama, Q4_K_M quantization, Chrome/Slack/Docker). Worst: format has issues - the "---All agents" and "---I'm now" lines lack proper spacing, and HN shows 0 stories which is acknowledged but the narrative notes HN silence as a finding rather than just reporting the gap.
|
||||
|
||||
### Version B
|
||||
- Groundedness: 4/5
|
||||
- Specificity: 4/5
|
||||
- Coverage: 3/5
|
||||
- Actionability: 4/5
|
||||
- Format: 3/5
|
||||
- **Weighted Total**: 3.70/5.0
|
||||
- Best/worst aspect: Best: solid specificity with named reviewers (Brandon Butch, Created Tech, Tech It Easy, Hardware Canucks, MacRumors, Just Josh), exact numbers (70 tokens/s, 128GB), and specific YouTube view data mentioned implicitly. Good narrative structure moving from configuration to battery to long-term to AI to upgrade advice. Worst: coverage is the weakest dimension - no HN data, and the synthesis doesn't weave X and YouTube together as tightly as it could. Stats block missing the HN line entirely.
|
||||
|
||||
### Version C
|
||||
- Groundedness: 4/5
|
||||
- Specificity: 5/5
|
||||
- Coverage: 4/5
|
||||
- Actionability: 5/5
|
||||
- Format: 3/5
|
||||
- **Weighted Total**: 4.20/5.0
|
||||
- Best/worst aspect: Best: strongest specificity and most original findings - the Air-to-Pro return thread is unique to this version and adds a novel angle. Max Tech's dual review titles ("BEST Mac EVER!?" at 1 month vs "Everyone was WRONG!" at 6 months) perfectly illustrate opinion evolution. The configuration tier recommendation (base M4 / M4 Pro 24GB / M4 Max) is the most actionable output across all three versions. MKBHD (4M+ views) and Dave2D are explicitly named. Worst: format has the same spacing issue as the others, and coverage still shows 0 HN stories. YouTube view count (7.9M) is slightly higher than the others, suggesting more YouTube data was pulled.
|
||||
|
||||
## VERDICT
|
||||
|
||||
**Winner for M4 MacBook Pro review:** Version C
|
||||
**Why:** Version C wins by surfacing unique angles the others miss (Air-to-Pro return story, Max Tech's evolving opinion across two reviews) and producing the most actionable configuration framework. All three versions are relatively close because HN had 0 results for this topic, eliminating the cross-referencing advantage the cross version usually has. Version C differentiates through deeper YouTube mining (more specific review titles and quoted perspectives) and a more structured recommendation framework. Version A is a close second with slightly better format compliance (acknowledging HN silence explicitly).
|
||||
|
||||
**Reveal:** {'A': 'hn', 'B': 'base', 'C': 'cross'}
|
||||
@@ -1,172 +0,0 @@
|
||||
# Evaluation: best rap songs 2026
|
||||
|
||||
**Query Type:** RECOMMENDATIONS
|
||||
**Label Map (REVEAL AFTER SCORING):** {'A': 'hn', 'B': 'base', 'C': 'cross'}
|
||||
|
||||
## Evaluation Rubric
|
||||
|
||||
Score each version 1-5 on these dimensions:
|
||||
|
||||
### 1. GROUNDEDNESS (30%)
|
||||
Does the narrative cite specific sources from the research data?
|
||||
- 1: Generic statements, no citations, could be written without any research
|
||||
- 3: Some citations but mixed with pre-existing knowledge filler
|
||||
- 5: Every finding backed by a specific source ("per @handle", "per r/sub", "per [channel]")
|
||||
|
||||
### 2. SPECIFICITY (25%)
|
||||
Are findings specific (named entities, exact numbers) or vague?
|
||||
- 1: Vague generalities ("AI video tools are improving", "developers are debating frameworks")
|
||||
- 3: Some specifics mixed with generic padding
|
||||
- 5: Named products, exact numbers, version names ("Seedance 2.0 added lip sync", "698 likes")
|
||||
|
||||
### 3. COVERAGE (20%)
|
||||
Does the synthesis represent findings from all available data sources?
|
||||
- 1: Only mentions 1-2 sources, ignores others
|
||||
- 3: Mentions most sources but unevenly weighted
|
||||
- 5: Naturally weaves Reddit, X, YouTube (and HN if available) into the narrative
|
||||
|
||||
### 4. ACTIONABILITY (15%)
|
||||
Does the invitation give specific, research-derived next steps?
|
||||
- 1: Generic "let me know if you want more info"
|
||||
- 3: Somewhat specific but not clearly grounded in research findings
|
||||
- 5: Each suggestion references a specific thing from the research ("I can compare Seedance 2.0 vs Kling")
|
||||
|
||||
### 5. FORMAT COMPLIANCE (10%)
|
||||
Does it follow the expected output format?
|
||||
- 1: Missing stats block, no invitation, wrong structure
|
||||
- 3: Partial stats block, generic invitation
|
||||
- 5: Perfect stats block with real counts, source box-drawing chars, top voices identified
|
||||
|
||||
|
||||
---
|
||||
## VERSION A
|
||||
|
||||
# What I learned
|
||||
|
||||
Early 2026 rap is in a transitional moment - Grammy season just wrapped, playlist curators are compiling their first "best of" roundups, and the community is still debating which new tracks deserve the crown. Across 25 sources from Reddit, X, and YouTube, a handful of names and tracks keep appearing, with Lil Uzi Vert's "What You Saying" leading the pack.
|
||||
|
||||
**Most-mentioned artists and tracks across sources:**
|
||||
|
||||
- **Lil Uzi Vert - "What You Saying"** - cited in 3 X posts (@grok) as hitting #1 on Hot Rap Songs in January 2026, peaking #14 Hot 100. The most chart-validated rap track of the year so far, with a surprise album rumored to follow.
|
||||
- **Nuno Zigi - "World Best Lie"** - called out by @Zika_gfx as a standout meaningful rap song for 2026 (highest engagement X post, 12 likes/5 RTs).
|
||||
- **DFL - "Art Of Life"** - shared directly to r/hiphop as a 2026 release. Sources: r/hiphop.
|
||||
- **Plat Hav Pro - "Get F'D Up"** - another 2026 track posted to r/hiphop. Sources: r/hiphop.
|
||||
- **Jody Lo - "Ridiculous"** - 2026 track shared in r/hiphop. Sources: r/hiphop.
|
||||
- **Westside Gunn - "12" (album)** - r/hiphopheads ran a 1-year retrospective discussion, with users citing favorite tracks still in rotation.
|
||||
|
||||
The HN version's expanded Reddit search (10 threads vs. 6 in base) surfaced several sources the base version missed. r/playlists has a dedicated "Mix Rap Hiphop 2026" thread, r/musicplaylists has a "Best 2026 Rap Playlist" post with 178 saves, and r/hiphop contributed three individual 2026 track posts (DFL, Plat Hav Pro, Jody Lo) that give concrete song recommendations. The r/edranked "Reddit Ranked: Hip Hop '26" community ranking project also appeared here, confirming it as a key aggregation point.
|
||||
|
||||
Grammy discourse is prominent: r/hiphopheads discussed Pre-Show winners across Best Rap Song and Best Rap Performance categories, providing a baseline for what the industry considers the best.
|
||||
|
||||
On YouTube, the same three mixes appeared - West Coast Finest's "Lit Hip Hop Mix 2026" (407K views, featuring Tyga, Quavo, Iggy Azalea, Wiz Khalifa, Juicy J, 50 Cent) and DJ Noize's two February compilations (Trap Tape #127, Hot Right Now #153). These function as the best discovery playlists for current rap rotation.
|
||||
|
||||
```
|
||||
Sources: 25 items (Jan 26 - Feb 25, 2026)
|
||||
|- Reddit: 10 threads (r/hiphopheads, r/playlists, r/musicplaylists, r/hiphop, r/edranked)
|
||||
|- X: 12 posts (@grok, @Zika_gfx, @DPOSTS6, @teammusic2046)
|
||||
|- YouTube: 3 videos (West Coast Finest, DJ Noize x2)
|
||||
|- HN: 0 stories
|
||||
```
|
||||
|
||||
Want me to pull the full tracklist from that r/musicplaylists "Best 2026 Rap Playlist" with 178 saves, dive into the Westside Gunn retrospective for standout tracks, or search for what won Best Rap Song at the 2026 Grammys?
|
||||
|
||||
|
||||
---
|
||||
## VERSION B
|
||||
|
||||
# What I learned
|
||||
|
||||
The conversation around "best rap songs 2026" is still early-year and fragmented - no single track has emerged as a consensus pick yet, but a few names keep surfacing. Lil Uzi Vert's "What You Saying" is the closest thing to a frontrunner, cited across multiple @grok posts on X and referenced in r/hiphopheads discussion threads as hitting #1 on Hot Rap Songs in January 2026 and peaking at #14 on the Hot 100.
|
||||
|
||||
**Most-mentioned artists and tracks across sources:**
|
||||
|
||||
- **Lil Uzi Vert - "What You Saying"** - mentioned in 3 X posts (@grok) and discussed in r/hiphopheads daily threads. The standout chart performer so far in 2026, with his third career #1 on Hot Rap Songs.
|
||||
- **Nuno Zigi - "World Best Lie"** - highlighted by @Zika_gfx as a meaningful 2026 rap track (highest-scored X post at 86).
|
||||
- **Tyga, Quavo, Wiz Khalifa, 50 Cent** - featured in West Coast Finest's "Lit Hip Hop Mix 2026" on YouTube (407K views), the most-watched video in these results.
|
||||
- **Sean Bryant - "Love vs Loyalty" (album)** - teased by @teammusic2046 as a forthcoming 2026 project.
|
||||
|
||||
The Grammy conversation is also shaping early "best of" discourse. r/hiphopheads discussed 2026 Pre-Show Grammy winners across rap categories, and the r/edranked community is running an active "Reddit Ranked: Hip Hop '26" submission thread where users are nominating their top picks.
|
||||
|
||||
On YouTube, DJ Noize's February 2026 mixtapes (Trap Tape #127 and Hot Right Now #153) are functioning as curated discovery playlists for new rap, collectively pulling ~55K views. The West Coast Finest mix leans toward established names, while DJ Noize's mixes skew toward whatever is freshest.
|
||||
|
||||
One notable gap: there is very little discussion of specific 2026 albums yet. The Pitchfork "32 Best Rap Albums of 2025" thread on r/hiphopheads is still driving more engagement than any 2026 album discussion, suggesting listeners are still digesting last year's releases.
|
||||
|
||||
```
|
||||
Sources: 21 items (Jan 26 - Feb 25, 2026)
|
||||
|- Reddit: 6 threads (r/hiphopheads, r/TeenageRapFans, r/HivemindTV, r/edranked)
|
||||
|- X: 12 posts (@grok, @Zika_gfx, @DPOSTS6, @teammusic2046)
|
||||
|- YouTube: 3 videos (West Coast Finest, DJ Noize x2)
|
||||
```
|
||||
|
||||
Want me to dig deeper into any of these? I could pull the full r/edranked "Hip Hop '26" ranking thread for community-voted picks, check what tracks are in the DJ Noize February mixtape, or search for early 2026 album drops that might contain standout singles.
|
||||
|
||||
|
||||
---
|
||||
## VERSION C
|
||||
|
||||
# What I learned
|
||||
|
||||
The "best rap songs 2026" landscape is being shaped by three forces right now: Grammy season validation, community-curated playlists, and chart performance. Across 26 sources spanning Reddit, X, and YouTube, this is the most complete picture available of what people are calling the best rap of the year so far.
|
||||
|
||||
**Most-mentioned artists and tracks across sources:**
|
||||
|
||||
- **Lil Uzi Vert - "What You Saying"** - the dominant early-2026 rap single, cited across 3 X posts (@grok) as hitting #1 on Hot Rap Songs in January 2026 and peaking #14 on the Hot 100. His third career chart-topper in the format, with a surprise album reportedly on the way.
|
||||
- **Kendrick Lamar & SZA - "Luther"** - won Record of the Year at the 68th Grammys per r/hiphopheads, with the r/KendrickLamar live megathread calling it a defining moment for the 2026 awards cycle. Sources: r/hiphopheads, r/KendrickLamar.
|
||||
- **Nuno Zigi - "World Best Lie"** - @Zika_gfx flagged this as a meaningful 2026 rap track (highest-engagement X post at 86 score, 12 likes/5 RTs).
|
||||
- **Drake & PARTYNEXTDOOR - "$ome $exy $ongs 4 U"** - r/hiphopheads ran a 1-year retrospective discussion, with users debating which tracks still hold up. Sources: r/hiphopheads.
|
||||
- **Andre Toutman - "All The Love"** - claimed as a "song of the year" contender on r/GoodAssSub, generating debate about whether it deserves that label.
|
||||
- **Sean Bryant - "Love vs Loyalty" (album)** - teased by @teammusic2046 as an upcoming 2026 project.
|
||||
|
||||
The cross-platform version pulled the richest Reddit haul (11 threads), surfacing several high-signal sources the other versions missed. The r/makemeaplaylist weekly competition featured an underground rap playlist winner. r/GoodAssSub contributed a direct "song of the year" debate thread. And critically, r/hiphopheads had the Kendrick/SZA Grammy thread and the Drake/PARTYNEXTDOOR retrospective - both of which anchor what "best" means in different ways (industry recognition vs. staying power).
|
||||
|
||||
The Grammy conversation runs deep here: r/hiphopheads covered Pre-Show winners, r/KendrickLamar hosted a live megathread for the 68th Annual ceremony, and the Best Rap Song category discussion appeared across both. Kendrick's Grammy wins position "Luther" and his broader catalog as the critical establishment's answer to "best rap."
|
||||
|
||||
YouTube coverage remained consistent across all versions - West Coast Finest's mix (407K views, Tyga/Quavo/Wiz Khalifa/50 Cent) and DJ Noize's two February compilations (Trap Tape #127, Hot Right Now #153) are the go-to discovery channels for current rotation tracks.
|
||||
|
||||
```
|
||||
Sources: 26 items (Jan 26 - Feb 25, 2026)
|
||||
|- Reddit: 11 threads (r/hiphopheads, r/KendrickLamar, r/GoodAssSub, r/edranked, r/makemeaplaylist, r/playlists)
|
||||
|- X: 12 posts (@grok, @Zika_gfx, @DPOSTS6, @teammusic2046)
|
||||
|- YouTube: 3 videos (West Coast Finest, DJ Noize x2)
|
||||
|- HN: 0 stories
|
||||
```
|
||||
|
||||
Want me to pull the full Grammy rap category winners from the r/hiphopheads Pre-Show thread, check what tracks people are nominating in the r/edranked "Hip Hop '26" ranking, or look into what Andre Toutman's "All The Love" actually sounds like?
|
||||
|
||||
|
||||
---
|
||||
## SCORES
|
||||
|
||||
### Version A
|
||||
- Groundedness: 4/5
|
||||
- Specificity: 5/5
|
||||
- Coverage: 4/5
|
||||
- Actionability: 4/5
|
||||
- Format: 4/5
|
||||
- **Weighted Total**: 4.25/5.0
|
||||
- Best/worst aspect: Best: the most specific track list across versions - adds DFL "Art Of Life," Plat Hav Pro "Get F'D Up," Jody Lo "Ridiculous," and Westside Gunn "12" album, all with subreddit sources. Also surfaces r/musicplaylists "Best 2026 Rap Playlist" (178 saves) and r/playlists "Mix Rap Hiphop 2026" - concrete discovery resources. Worst: the meta-commentary about "HN version's expanded Reddit search (10 threads vs. 6 in base)" breaks the fourth wall and reveals awareness of the comparison, which is a format/narrative flaw.
|
||||
|
||||
### Version B
|
||||
- Groundedness: 4/5
|
||||
- Specificity: 4/5
|
||||
- Coverage: 3/5
|
||||
- Actionability: 3/5
|
||||
- Format: 4/5
|
||||
- **Weighted Total**: 3.65/5.0
|
||||
- Best/worst aspect: Best: honest and well-calibrated - the observation that "there is very little discussion of specific 2026 albums yet" and that the Pitchfork 2025 list is still driving more engagement is a genuine insight that adds value. Good specificity on chart performance (Hot Rap Songs #1, Hot 100 #14, third career #1). Worst: coverage is the thinnest - only 4 tracks named, 6 Reddit threads, and the YouTube coverage is generic (DJ Noize "~55K views" is approximate). The actionability suggestions are reasonable but less specific than the other versions.
|
||||
|
||||
### Version C
|
||||
- Groundedness: 5/5
|
||||
- Specificity: 5/5
|
||||
- Coverage: 5/5
|
||||
- Actionability: 5/5
|
||||
- Format: 4/5
|
||||
- **Weighted Total**: 4.80/5.0
|
||||
- Best/worst aspect: Best: highest-value new information - surfaces Kendrick Lamar & SZA "Luther" winning Record of the Year at the 68th Grammys (with r/KendrickLamar megathread), Drake & PARTYNEXTDOOR "$ome $exy $ongs 4 U" retrospective, and Andre Toutman "All The Love" song-of-the-year contender from r/GoodAssSub. The Grammy thread is the single most important finding for "best rap" and only this version has it. 11 Reddit threads vs 6 and 10 in the other versions. Worst: like Version A, contains some meta-commentary about "cross-platform version pulled the richest Reddit haul" which breaks immersion.
|
||||
|
||||
## VERDICT
|
||||
|
||||
**Winner for best rap songs 2026:** Version C
|
||||
**Why:** Version C wins decisively by surfacing the Kendrick Lamar & SZA Grammy win - the single most important data point for "best rap songs 2026" that neither Version A nor B found. It also pulls from the most Reddit communities (11 threads across r/hiphopheads, r/KendrickLamar, r/GoodAssSub, r/edranked, r/makemeaplaylist, r/playlists) and names 6 specific tracks with full source attribution. Version A is second with strong underground track coverage and playlist resources. Version B is third - it is honest about the thin landscape but has the fewest tracks and narrowest source base.
|
||||
|
||||
**Reveal:** {'A': 'hn', 'B': 'base', 'C': 'cross'}
|
||||
@@ -1,192 +0,0 @@
|
||||
# Evaluation: React vs Svelte 2026
|
||||
|
||||
**Query Type:** GENERAL
|
||||
**Label Map (REVEAL AFTER SCORING):** {'A': 'cross', 'B': 'base', 'C': 'hn'}
|
||||
|
||||
## Evaluation Rubric
|
||||
|
||||
Score each version 1-5 on these dimensions:
|
||||
|
||||
### 1. GROUNDEDNESS (30%)
|
||||
Does the narrative cite specific sources from the research data?
|
||||
- 1: Generic statements, no citations, could be written without any research
|
||||
- 3: Some citations but mixed with pre-existing knowledge filler
|
||||
- 5: Every finding backed by a specific source ("per @handle", "per r/sub", "per [channel]")
|
||||
|
||||
### 2. SPECIFICITY (25%)
|
||||
Are findings specific (named entities, exact numbers) or vague?
|
||||
- 1: Vague generalities ("AI video tools are improving", "developers are debating frameworks")
|
||||
- 3: Some specifics mixed with generic padding
|
||||
- 5: Named products, exact numbers, version names ("Seedance 2.0 added lip sync", "698 likes")
|
||||
|
||||
### 3. COVERAGE (20%)
|
||||
Does the synthesis represent findings from all available data sources?
|
||||
- 1: Only mentions 1-2 sources, ignores others
|
||||
- 3: Mentions most sources but unevenly weighted
|
||||
- 5: Naturally weaves Reddit, X, YouTube (and HN if available) into the narrative
|
||||
|
||||
### 4. ACTIONABILITY (15%)
|
||||
Does the invitation give specific, research-derived next steps?
|
||||
- 1: Generic "let me know if you want more info"
|
||||
- 3: Somewhat specific but not clearly grounded in research findings
|
||||
- 5: Each suggestion references a specific thing from the research ("I can compare Seedance 2.0 vs Kling")
|
||||
|
||||
### 5. FORMAT COMPLIANCE (10%)
|
||||
Does it follow the expected output format?
|
||||
- 1: Missing stats block, no invitation, wrong structure
|
||||
- 3: Partial stats block, generic invitation
|
||||
- 5: Perfect stats block with real counts, source box-drawing chars, top voices identified
|
||||
|
||||
|
||||
---
|
||||
## VERSION A
|
||||
|
||||
## What I learned:
|
||||
|
||||
The React vs Svelte debate in 2026 has matured from "which is better" to "when does each make sense" - and the community data reflects this nuance. With 6 Reddit threads surfaced (the most of any version), including real decision-making discussions on r/sveltejs about government portals and learning timelines, the cross-platform search captured a richer picture of how developers are actually choosing between these frameworks. Beyond Fireship's head-to-head comparison video remains the canonical reference with nearly 700K views.
|
||||
|
||||
**Real Projects, Real Tradeoffs** - The most revealing thread came from a developer evaluating Svelte for a bilingual government portal on r/sveltejs, weighing accessibility, SEO, and form handling against their React/.NET background. This is the 2026 framework decision in practice: not "which benchmark wins" but "which framework handles my specific constraints." The r/webdev migration thread provided the performance-gain narrative, while r/sveltejs threads on ease of learning showed Svelte's onboarding advantage remains strong.
|
||||
|
||||
**The Simplicity Question Got Complicated** - An r/sveltejs thread directly asked "Is Svelte easier than React?" - and the answers were more nuanced than expected. Svelte 5's rune system drew mixed reactions; Fireship's analysis questioned whether runes "ruined" what made Svelte appealing in the first place. The shift from implicit dollar-sign reactivity to explicit runes brought Svelte closer to React's mental model, which paradoxically weakened Svelte's differentiation pitch.
|
||||
|
||||
**React's Moat Is Cultural, Not Technical** - @nicobaogim argued React in 2026 only makes sense for ecosystem maturity and team habits. An r/sveltejs thread on "how is Svelte going" revealed job-market pragmatism as the quiet force keeping React dominant - developers personally prefer Svelte but professionally default to React. @Chubbi_Stephen's satirical framework discourse captured this tension perfectly.
|
||||
|
||||
**Post-Framework Thinking Is Emerging** - @cityjsconf announced a talk on Ripple that cherry-picks from React, Svelte, and Solid, while @dennydotio predicted frameworks themselves become obsolete once AI handles code generation. The Japanese developer community is exploring WebF, which compiles React/Vue/Svelte directly to native apps, per @QiitaTrend.
|
||||
|
||||
**KEY PATTERNS:**
|
||||
|
||||
1. **Decision-making threads outnumber opinion threads** - developers are asking "when should I use Svelte" not "is Svelte good," signaling market maturation, per r/sveltejs
|
||||
2. **Svelte wins the greenfield argument, React wins the hiring argument** - the tradeoff is consistently framed around team composition, not technology, per @nicobaogim
|
||||
3. **Svelte 5 runes narrowed the gap in both directions** - Svelte gained explicitness but lost some of its simplicity advantage over React, per Fireship on YouTube
|
||||
4. **Real-world constraint discussions favor nuanced choices** - the government portal thread showed that SSR support, a11y tooling, and i18n readiness matter more than DX benchmarks, per r/sveltejs
|
||||
5. **Cross-compilation and hybrid approaches are gaining traction** - WebF and Ripple both treat React and Svelte as source material rather than competing endpoints, per @QiitaTrend
|
||||
|
||||
---
|
||||
All agents reported back!
|
||||
├─ 🟠 Reddit: 6 threads │ 339 upvotes
|
||||
├─ 🔵 X: 9 posts │ 76 likes │ 4 reposts
|
||||
├─ 🔴 YouTube: 10 videos │ 2,085,183 views │ 3 with transcripts
|
||||
├─ 🟡 HN: 0 stories (no results this cycle)
|
||||
├─ 🌐 Web: supplementary
|
||||
└─ 🗣️ Top voices: @FabianHiller (61 likes), @cityjsconf │ r/sveltejs, r/webdev, r/react
|
||||
---
|
||||
|
||||
I'm now an expert on React vs Svelte 2026. Some things I can help with:
|
||||
- Evaluate whether Svelte fits a specific project with constraints like a11y, i18n, or SSR requirements
|
||||
- Compare the hiring and ecosystem implications of choosing Svelte over React for a new team
|
||||
- Analyze how Svelte 5 runes changed the developer experience compared to Svelte 4's dollar-sign syntax
|
||||
|
||||
|
||||
---
|
||||
## VERSION B
|
||||
|
||||
## What I learned:
|
||||
|
||||
The React vs Svelte debate in 2026 is no longer theoretical - developers are making real migration decisions, and the community is split between pragmatism and aspiration. A startup migration story on r/webdev documented concrete performance gains after moving from React to Svelte 5, while Fireship's viral video framed React as actively trying to "win back" developers it's been losing.
|
||||
|
||||
**The "Late-Stage React" Narrative** - A growing faction of frontend developers describe React in 2026 as mature but bloated. @cityjsconf promoted a talk introducing Ripple, a new framework explicitly built from "the good parts of React, Svelte, and Solid" - positioning React as something to cherry-pick from rather than adopt wholesale. Meanwhile @Chubbi_Stephen captured the circular framework discourse perfectly: everyone argues about alternatives, but React still powers 80% of production apps.
|
||||
|
||||
**Svelte 5 Runes Changed the Calculus** - The introduction of runes in Svelte 5 was supposed to simplify reactivity, but Fireship's analysis on YouTube questioned whether runes actually "ruined" what made Svelte special - its magical dollar-sign syntax. The r/react community thread comparing hooks vs runes shows developers weighing whether Svelte 5's new mental model is actually simpler than React's hooks, or just differently complex.
|
||||
|
||||
**Ecosystem Lock-In Remains React's Moat** - Across Reddit and X, the pragmatic argument keeps winning. @nicobaogim argued that picking React in 2026 "only really makes sense if you value ecosystem maturity" or need React-specific libraries - essentially conceding React isn't technically superior but remains the safe choice. Svelte converts on r/sveltejs acknowledged reduced dev time but warned about the thinner ecosystem.
|
||||
|
||||
**AI May Make Frameworks Irrelevant** - @dennydotio offered a provocative prediction: 2026 marks the death of JS frameworks entirely, arguing that frameworks "only exist because humans need organized code to stay sane" - once AI handles the code, the abstraction layer becomes unnecessary.
|
||||
|
||||
**KEY PATTERNS:**
|
||||
|
||||
1. **Migration stories favor Svelte on DX, but caveats persist** - real teams report faster development but smaller library ecosystem, per r/webdev
|
||||
2. **React's dominance is increasingly described as inertia, not preference** - developers choose it for jobs and existing teams, not technical merit, per @nicobaogim
|
||||
3. **Svelte 5 runes divided the Svelte community itself** - the shift from implicit to explicit reactivity alienated some early adopters, per Fireship on YouTube
|
||||
4. **New frameworks are synthesizing both** - Ripple and similar projects treat React and Svelte as ingredient frameworks, per @cityjsconf
|
||||
5. **TypeScript-first tooling is the real 2026 baseline** - @FabianHiller's post about type-safe forms got the most engagement, suggesting developers care more about DX tooling than framework wars
|
||||
|
||||
---
|
||||
All agents reported back!
|
||||
├─ 🟠 Reddit: 4 threads │ 202 upvotes
|
||||
├─ 🔵 X: 9 posts │ 76 likes │ 4 reposts
|
||||
├─ 🔴 YouTube: 10 videos │ 2,027,387 views │ 3 with transcripts
|
||||
├─ 🌐 Web: supplementary
|
||||
└─ 🗣️ Top voices: @FabianHiller (61 likes), @cityjsconf │ r/react, r/webdev
|
||||
---
|
||||
|
||||
I'm now an expert on React vs Svelte 2026. Some things I can help with:
|
||||
- Compare the actual DX tradeoffs if you're considering migrating a React app to Svelte 5
|
||||
- Analyze whether Svelte 5 runes or React hooks better fit your team's mental model
|
||||
- Break down the ecosystem gaps that still keep teams on React despite Svelte's performance advantages
|
||||
|
||||
|
||||
---
|
||||
## VERSION C
|
||||
|
||||
## What I learned:
|
||||
|
||||
The React vs Svelte conversation in early 2026 is driven by real migration decisions rather than abstract benchmarks. A widely-discussed r/webdev thread documented one startup's move from React to Svelte 5 with tangible performance and developer experience improvements, while Fireship's video on React trying to "win back" developers pulled nearly 700K views - signaling broad community interest in this rivalry.
|
||||
|
||||
**Svelte 5 vs React Hooks - The Mental Model War** - The r/react comparison thread directly pits Svelte 5 runes against React hooks, with developers debating which abstraction better maps to how they think about state. An r/sveltejs thread on "when to choose React over Svelte" framed the decision around practical constraints: existing team knowledge, library availability, and hiring. The consensus leans toward Svelte for greenfield projects and React for teams already invested in its ecosystem.
|
||||
|
||||
**"Late-Stage React" Enters the Vocabulary** - @cityjsconf promoted a CityJS talk on Ripple, a new framework that extracts "the good parts of React, Svelte, and Solid" - framing React as entering its legacy phase. This mirrors @Chubbi_Stephen's satirical take on framework discourse, where every developer argues against React but React keeps powering 80% of production sites.
|
||||
|
||||
**The Ecosystem Moat Is Real but Narrowing** - @nicobaogim made the case that React's only 2026 advantage is ecosystem maturity and team habits, not technical superiority. Beyond Fireship's side-by-side "10 Examples" comparison showed Svelte consistently requiring less code for equivalent functionality, reinforcing the DX argument.
|
||||
|
||||
**Frameworks Facing Existential Questions** - @dennydotio predicted 2026 as the year JS frameworks start dying, arguing they exist for human code organization rather than machine needs. If AI-generated code becomes the norm, the framework abstraction layer loses its purpose entirely.
|
||||
|
||||
**KEY PATTERNS:**
|
||||
|
||||
1. **Migration stories consistently favor Svelte on performance and code volume** - but teams flag ecosystem gaps as the main friction, per r/webdev
|
||||
2. **React is chosen by default, Svelte is chosen by conviction** - the decision framework centers on team inertia vs technical preference, per @nicobaogim
|
||||
3. **Svelte 5 runes remain contentious within the Svelte community** - some developers feel runes traded Svelte's simplicity for React-like explicitness, per Fireship on YouTube
|
||||
4. **Hybrid frameworks are emerging from the debate** - new projects like Ripple synthesize patterns from both, treating the rivalry as a source of ideas rather than a winner-take-all contest, per @cityjsconf
|
||||
5. **TypeScript-first DX is the shared ground** - @FabianHiller's type-safe forms tooling drew the highest engagement, suggesting the real frontier is developer tooling, not framework choice
|
||||
|
||||
---
|
||||
All agents reported back!
|
||||
├─ 🟠 Reddit: 3 threads │ 172 upvotes
|
||||
├─ 🔵 X: 9 posts │ 76 likes │ 4 reposts
|
||||
├─ 🔴 YouTube: 10 videos │ 2,085,181 views │ 3 with transcripts
|
||||
├─ 🟡 HN: 0 stories (no results this cycle)
|
||||
├─ 🌐 Web: supplementary
|
||||
└─ 🗣️ Top voices: @FabianHiller (61 likes), @cityjsconf │ r/react, r/webdev
|
||||
---
|
||||
|
||||
I'm now an expert on React vs Svelte 2026. Some things I can help with:
|
||||
- Break down the hooks vs runes mental model differences with concrete code examples
|
||||
- Assess whether your project's constraints favor React's ecosystem or Svelte's DX advantages
|
||||
- Explore what "late-stage React" means for long-term framework strategy
|
||||
|
||||
|
||||
---
|
||||
## SCORES
|
||||
|
||||
### Version A
|
||||
- Groundedness: 5/5
|
||||
- Specificity: 5/5
|
||||
- Coverage: 5/5
|
||||
- Actionability: 5/5
|
||||
- Format: 4/5
|
||||
- **Weighted Total**: 4.90/5.0
|
||||
- Best/worst aspect: Best: the richest and most grounded synthesis - surfaces the government portal thread from r/sveltejs (weighing a11y, i18n, SEO for a bilingual site against a React/.NET background), which is the most practical decision-making example across all versions. Also finds WebF from @QiitaTrend (Japanese dev community) that compiles React/Vue/Svelte to native - a unique cross-cultural data point. 6 Reddit threads and 339 upvotes vs 3-4 in others. Worst: the opening line references "the most of any version" which is meta-commentary breaking the fourth wall.
|
||||
|
||||
### Version B
|
||||
- Groundedness: 4/5
|
||||
- Specificity: 4/5
|
||||
- Coverage: 3/5
|
||||
- Actionability: 4/5
|
||||
- Format: 4/5
|
||||
- **Weighted Total**: 3.80/5.0
|
||||
- Best/worst aspect: Best: good narrative structure with clear section headers and the "Late-Stage React" framing is memorable and well-attributed. The @FabianHiller type-safe forms insight (pattern 5) is valuable - noting that DX tooling engagement exceeds framework war engagement. Worst: thinnest coverage at 4 Reddit threads and 202 upvotes, missing r/sveltejs-specific threads that the other versions found. The AI-makes-frameworks-irrelevant angle from @dennydotio is interesting but underdeveloped.
|
||||
|
||||
### Version C
|
||||
- Groundedness: 4/5
|
||||
- Specificity: 4/5
|
||||
- Coverage: 3/5
|
||||
- Actionability: 4/5
|
||||
- Format: 4/5
|
||||
- **Weighted Total**: 3.80/5.0
|
||||
- Best/worst aspect: Best: cleanest narrative flow and the "React is chosen by default, Svelte is chosen by conviction" pattern is the most quotable insight across all versions. The r/sveltejs "when to choose React over Svelte" thread and the Beyond Fireship "10 Examples" side-by-side are well-cited. Worst: only 3 Reddit threads (172 upvotes), the narrowest Reddit surface. Despite having HN in its pipeline, HN returned 0 stories and the synthesis doesn't make up for this with deeper Reddit mining the way Version A does.
|
||||
|
||||
## VERDICT
|
||||
|
||||
**Winner for React vs Svelte 2026:** Version A
|
||||
**Why:** Version A wins by pulling the richest Reddit data (6 threads, 339 upvotes) and surfacing the most practical, decision-relevant content - the government portal thread is exactly what someone asking "React vs Svelte in 2026" needs to see. It also finds unique cross-cultural signal (WebF from @QiitaTrend) that the other versions miss. Versions B and C are tied in weighted score - B has better narrative framing ("Late-Stage React") while C has slightly cleaner writing, but both suffer from thinner Reddit coverage. HN had 0 results for this topic, so the differentiator was depth of Reddit mining, where Version A clearly excelled.
|
||||
|
||||
**Reveal:** {'A': 'cross', 'B': 'base', 'C': 'hn'}
|
||||
@@ -1,518 +0,0 @@
|
||||
{
|
||||
"topic": "Claude Code skills and MCP servers",
|
||||
"range": {
|
||||
"from": "2026-01-26",
|
||||
"to": "2026-02-25"
|
||||
},
|
||||
"generated_at": "2026-02-25T20:28:50.287295+00:00",
|
||||
"mode": "both",
|
||||
"openai_model_used": "gpt-5.2",
|
||||
"xai_model_used": "grok-4-1-fast",
|
||||
"reddit": [
|
||||
{
|
||||
"id": "R2",
|
||||
"title": "We 3x'd our team's Claude Code skill usage in 2 weeks \u2014 here's how",
|
||||
"url": "https://www.reddit.com/r/ClaudeCode/comments/1rbr5t7/we_3xd_our_teams_claude_code_skill_usage_in_2/",
|
||||
"subreddit": "ClaudeCode",
|
||||
"date": "2026-02-22",
|
||||
"date_confidence": "high",
|
||||
"engagement": null,
|
||||
"top_comments": [],
|
||||
"comment_insights": [],
|
||||
"relevance": 0.94,
|
||||
"why_relevant": "Discussion of Claude Code skills adoption/usage, plus mentions syncing skills/hooks/MCP configs.",
|
||||
"subs": {
|
||||
"relevance": 94,
|
||||
"recency": 90,
|
||||
"engagement": 50
|
||||
},
|
||||
"score": 76
|
||||
},
|
||||
{
|
||||
"id": "R4",
|
||||
"title": "ClaudeInOne \u2014 a full framework for Claude Code, installed in one command",
|
||||
"url": "https://www.reddit.com/r/ClaudeCode/comments/1rcbria/claudeinone_a_full_framework_for_claude_code/",
|
||||
"subreddit": "ClaudeCode",
|
||||
"date": "2026-02-23",
|
||||
"date_confidence": "high",
|
||||
"engagement": null,
|
||||
"top_comments": [],
|
||||
"comment_insights": [],
|
||||
"relevance": 0.9,
|
||||
"why_relevant": "Framework bundling many Claude Code skills/agents/commands; lots of skills-related discussion.",
|
||||
"subs": {
|
||||
"relevance": 90,
|
||||
"recency": 93,
|
||||
"engagement": 50
|
||||
},
|
||||
"score": 75
|
||||
},
|
||||
{
|
||||
"id": "R1",
|
||||
"title": "Self-improvement Loop: My favorite Claude Code Skill",
|
||||
"url": "https://www.reddit.com/r/ClaudeCode/comments/1r89084/selfimprovement_loop_my_favorite_claude_code_skill/",
|
||||
"subreddit": "ClaudeCode",
|
||||
"date": "2026-02-18",
|
||||
"date_confidence": "high",
|
||||
"engagement": null,
|
||||
"top_comments": [],
|
||||
"comment_insights": [],
|
||||
"relevance": 0.96,
|
||||
"why_relevant": "Directly about a Claude Code Skill (custom skill, how it works, SKILL.md).",
|
||||
"subs": {
|
||||
"relevance": 96,
|
||||
"recency": 76,
|
||||
"engagement": 50
|
||||
},
|
||||
"score": 74
|
||||
},
|
||||
{
|
||||
"id": "R3",
|
||||
"title": "I built 12 SEO skills for Claude Code (open source)",
|
||||
"url": "https://www.reddit.com/r/ClaudeCode/comments/1r0l549/i_built_12_seo_skills_for_claude_code_open_source/",
|
||||
"subreddit": "ClaudeCode",
|
||||
"date": "2026-02-10",
|
||||
"date_confidence": "high",
|
||||
"engagement": null,
|
||||
"top_comments": [],
|
||||
"comment_insights": [],
|
||||
"relevance": 0.93,
|
||||
"why_relevant": "Concrete example of building and sharing Claude Code skills.",
|
||||
"subs": {
|
||||
"relevance": 93,
|
||||
"recency": 50,
|
||||
"engagement": 50
|
||||
},
|
||||
"score": 66
|
||||
}
|
||||
],
|
||||
"x": [
|
||||
{
|
||||
"id": "X6",
|
||||
"text": "@adamwathan Codex has been crushing it for me with implicit skill usage to the point I was shocked \n\nClaude Code I resorted to explicit mentions and I\u2019ve been pleasantly surprised by how well Codex has been calling out to skills on its own",
|
||||
"url": "https://x.com/zeeg/status/2026745680195367091",
|
||||
"author_handle": "zeeg",
|
||||
"date": "2026-02-25",
|
||||
"date_confidence": "high",
|
||||
"engagement": {
|
||||
"likes": 4,
|
||||
"reposts": 1,
|
||||
"replies": 2
|
||||
},
|
||||
"relevance": 0.7,
|
||||
"why_relevant": "",
|
||||
"subs": {
|
||||
"relevance": 70,
|
||||
"recency": 100,
|
||||
"engagement": 100
|
||||
},
|
||||
"score": 86
|
||||
},
|
||||
{
|
||||
"id": "X4",
|
||||
"text": "\ud83d\udea8 Anthropic just open-sourced the exact Skills library their own engineers use internally.\n\nStop building Claude workflows from scratch.\n\nThese are plug-and-play components that work across Claude Code, API, SDK, and VS Code copy once, deploy everywhere.\n\nWhat's inside:\n\n\u2192 Excel + PowerPoint generation out of the box\n\u2192 File handling and document workflows\n\u2192 MCP-ready subagent building blocks\n\u2192 Pre-built patterns for multi-step automation\n\u2192 Production templates you'd normally spend weeks writing\n",
|
||||
"url": "https://x.com/ihtesham2005/status/2026752089473314975",
|
||||
"author_handle": "ihtesham2005",
|
||||
"date": "2026-02-25",
|
||||
"date_confidence": "high",
|
||||
"engagement": {
|
||||
"likes": 6
|
||||
},
|
||||
"relevance": 0.7,
|
||||
"why_relevant": "",
|
||||
"subs": {
|
||||
"relevance": 70,
|
||||
"recency": 100,
|
||||
"engagement": 81
|
||||
},
|
||||
"score": 80
|
||||
},
|
||||
{
|
||||
"id": "X9",
|
||||
"text": "Day 7 building my first B2C app\n\nBeen setting everything up this week. Manually built 5 agents to help me in the early stages and set up the Claude Code skills i'll need for the build.\n\nAlso been testing OpenClaw these days, already delegated my expense tracking to it.\n\nNow the scary part: Figuring out the visual identity of the app. my design skills are basically zero, i always used to delegate this to someone with actual talent haha. \n\nAny recommendations to learn the fundamentals? would reall",
|
||||
"url": "https://x.com/DevTenta/status/2026742028730527786",
|
||||
"author_handle": "DevTenta",
|
||||
"date": "2026-02-25",
|
||||
"date_confidence": "high",
|
||||
"engagement": {
|
||||
"likes": 4
|
||||
},
|
||||
"relevance": 0.7,
|
||||
"why_relevant": "",
|
||||
"subs": {
|
||||
"relevance": 70,
|
||||
"recency": 100,
|
||||
"engagement": 59
|
||||
},
|
||||
"score": 74
|
||||
},
|
||||
{
|
||||
"id": "X8",
|
||||
"text": "@Jompiras Claude code + skills. Muy breve.",
|
||||
"url": "https://x.com/JorgeJaramillo/status/2026743135435362649",
|
||||
"author_handle": "JorgeJaramillo",
|
||||
"date": "2026-02-25",
|
||||
"date_confidence": "high",
|
||||
"engagement": null,
|
||||
"relevance": 0.7,
|
||||
"why_relevant": "",
|
||||
"subs": {
|
||||
"relevance": 70,
|
||||
"recency": 100,
|
||||
"engagement": 35
|
||||
},
|
||||
"score": 64
|
||||
},
|
||||
{
|
||||
"id": "X5",
|
||||
"text": "@tom_doerr 135 agents, 35 curated skills, 121 plugins and 6 MCP configs all in one Claude Code toolkit is absolutely insane value \ud83e\udd2f this is the kind of community effort that makes an AI tool go from good to unstoppable. bookmarking this immediately \ud83d\udd25",
|
||||
"url": "https://x.com/arpan7sarkar/status/2026746479369662551",
|
||||
"author_handle": "arpan7sarkar",
|
||||
"date": "2026-02-25",
|
||||
"date_confidence": "high",
|
||||
"engagement": null,
|
||||
"relevance": 0.7,
|
||||
"why_relevant": "",
|
||||
"subs": {
|
||||
"relevance": 70,
|
||||
"recency": 100,
|
||||
"engagement": 35
|
||||
},
|
||||
"score": 64
|
||||
},
|
||||
{
|
||||
"id": "X7",
|
||||
"text": "@tom_doerr A curated collection of Claude Skills organized by category is exactly what power users have been waiting for \ud83e\udd29 document skills, code tools, data analysis all in one repo. this is the Claude plugin store before the Claude plugin store \ud83d\udd25",
|
||||
"url": "https://x.com/arpan7sarkar/status/2026745559986614335",
|
||||
"author_handle": "arpan7sarkar",
|
||||
"date": "2026-02-25",
|
||||
"date_confidence": "high",
|
||||
"engagement": null,
|
||||
"relevance": 0.7,
|
||||
"why_relevant": "",
|
||||
"subs": {
|
||||
"relevance": 70,
|
||||
"recency": 100,
|
||||
"engagement": 35
|
||||
},
|
||||
"score": 64
|
||||
},
|
||||
{
|
||||
"id": "X2",
|
||||
"text": "Claude Code\u306eSkills\u3092\u4f5c\u6210\u4f8b\u304b\u3089\u5fb9\u5e95\u7406\u89e3\u3059\u308b https://t.co/vZTseio2Ii",
|
||||
"url": "https://x.com/yasuky/status/2026754773786226708",
|
||||
"author_handle": "yasuky",
|
||||
"date": "2026-02-25",
|
||||
"date_confidence": "high",
|
||||
"engagement": null,
|
||||
"relevance": 0.7,
|
||||
"why_relevant": "",
|
||||
"subs": {
|
||||
"relevance": 70,
|
||||
"recency": 100,
|
||||
"engagement": 35
|
||||
},
|
||||
"score": 64
|
||||
},
|
||||
{
|
||||
"id": "X1",
|
||||
"text": "How: I told Claude Code \"build me a CRM.\" Our builder skill generated schemas, skills, server, seed data. I pointed Claude Desktop at it. Contacts, lead scoring, pipeline reviews. All from conversation.\n\nThen \"build me a research assistant.\" Topics, sources, notes, etc. Same flow",
|
||||
"url": "https://x.com/matgoldsborough/status/2026755742737510749",
|
||||
"author_handle": "matgoldsborough",
|
||||
"date": "2026-02-25",
|
||||
"date_confidence": "high",
|
||||
"engagement": {
|
||||
"replies": 1
|
||||
},
|
||||
"relevance": 0.7,
|
||||
"why_relevant": "",
|
||||
"subs": {
|
||||
"relevance": 70,
|
||||
"recency": 100,
|
||||
"engagement": 35
|
||||
},
|
||||
"score": 64
|
||||
},
|
||||
{
|
||||
"id": "X10",
|
||||
"text": "I can build another open claw, or claude bot, or even a messaging app in a nice prompt and although having engineering skills, I can push the code on the public repo and secure it even completely and may start marketing in a crazy way on X or maybe Reddit using a secret niche guy when writing a post.\n\nThis is the new coding for us, and shipping a nice product.",
|
||||
"url": "https://x.com/0x_Kapoor/status/2026738663321907214",
|
||||
"author_handle": "0x_Kapoor",
|
||||
"date": "2026-02-25",
|
||||
"date_confidence": "high",
|
||||
"engagement": null,
|
||||
"relevance": 0.7,
|
||||
"why_relevant": "",
|
||||
"subs": {
|
||||
"relevance": 70,
|
||||
"recency": 100,
|
||||
"engagement": 35
|
||||
},
|
||||
"score": 64
|
||||
},
|
||||
{
|
||||
"id": "X11",
|
||||
"text": "1. I use https://t.co/NtFYJEiFs9 inspired by @bcherny \n2. I use https://t.co/EwnmyWNFqn to sync skills and scan skills from the marketplace\n3. I chat with claude code 4-5 times and once I am satisifed with plan, I ask it to build it.\n4. I use /code-simplifier, /memory and /parallel from my plugin above to distribute work across agents.\n5. I wait and once they're done, I use coderabbit:review to review once locally and make a PR\n\nThis process works like a gem for me.",
|
||||
"url": "https://x.com/ghumare64/status/2026736176695246966",
|
||||
"author_handle": "ghumare64",
|
||||
"date": "2026-02-25",
|
||||
"date_confidence": "high",
|
||||
"engagement": {
|
||||
"likes": 1
|
||||
},
|
||||
"relevance": 0.7,
|
||||
"why_relevant": "",
|
||||
"subs": {
|
||||
"relevance": 70,
|
||||
"recency": 100,
|
||||
"engagement": 0
|
||||
},
|
||||
"score": 56
|
||||
},
|
||||
{
|
||||
"id": "X12",
|
||||
"text": "The 'vibe coding' revolution is forcing a reckoning.\n\nDevelopers with 15+ years experience are either embracing AI to expand their reach or watching their expertise become as valuable as COBOL skills.\n\nWhich side of history are you on?\n\nPS\nClaude Code can now write COBOL as well.",
|
||||
"url": "https://x.com/hamen/status/2026734075243790396",
|
||||
"author_handle": "hamen",
|
||||
"date": "2026-02-25",
|
||||
"date_confidence": "high",
|
||||
"engagement": {
|
||||
"likes": 1
|
||||
},
|
||||
"relevance": 0.7,
|
||||
"why_relevant": "",
|
||||
"subs": {
|
||||
"relevance": 70,
|
||||
"recency": 100,
|
||||
"engagement": 0
|
||||
},
|
||||
"score": 56
|
||||
}
|
||||
],
|
||||
"web": [],
|
||||
"youtube": [
|
||||
{
|
||||
"id": "X8afcX2s2Mo",
|
||||
"title": "Claude Skills: Build Your First AI Marketing Team in 16 Minutes (Claude Code)",
|
||||
"url": "https://www.youtube.com/watch?v=X8afcX2s2Mo",
|
||||
"channel_name": "Grace Leung",
|
||||
"date": "2026-02-21",
|
||||
"date_confidence": "high",
|
||||
"engagement": {
|
||||
"num_comments": 47,
|
||||
"likes": 1900,
|
||||
"views": 47474
|
||||
},
|
||||
"transcript_snippet": "Every marketer I know is stretch themed. Too many channels, too many deliverables, never enough time, whether you're running a team or doing it all yourself. And that's why I'm so obsessed with clock skills. You teach it how your marketing works once and it just deliver every time. And so even with just a few clock skills, you can start building a marketing team with serious leverage. And so in this video, I will show you how to build your first AI marketing team using just clock scale. So everyone is talking about cloud agents and yes they are super powerful but what enable them to be truly powerful is the expertise behind this agent and that expertise is exactly what cloud skills are. So when you're designing your skill library for your marketing team these skills contain your best marketing knowledge SOPs your proven frameworks your brand standards and agents are now the team members who use that expertise. You can equip any agents with any combination of skills from your library and that's what makes this powerful because you build this library once and cl as a team that runs on it or even you can bring it to all the AI models. So today we're building five skills that cover what most marketing team would need. Research and strategy, content creation, creatives, data analysis, and campaign presentation. Essentially, they will form a strong foundation as you build your marking skill library over time. For this demo, we'll be using Clark Cook Desktop. But if you prefer using Clark work is still fine. So, first thing is to make sure you already got the skill creator tool installed because this official skill is not building inside Clark. I will put the official skill with link and also check out this video on how to install. So here we have already set up a project folder called simple home which is the DTOC e-commerce brand and inside we have different folders and the most important is the context file. So every time when you onboard a new client or you are an in-house marketers these are the context file about the brand the product the audience etc. So you can equip cloth with all the background information and always include a clotmpd file. So these are just like a custom instructions for these project to guide how clock should navigate your folder system. So I go much deeper on how to set up these contact system inside our AI for marketing program with all the templates. So if you're interested you can find the link below to join. But for now let's create our first skill marketing research and strategy. So here inside the SOP folder we already have these SOP document that the brand is already using for marketing research and building strategy reports. So now on Clark Cook desktop, select the same project folder for this brand and then use this prompt to answer it to...",
|
||||
"relevance": 0.7,
|
||||
"why_relevant": "YouTube video about claude code skills and mcp servers",
|
||||
"subs": {
|
||||
"relevance": 70,
|
||||
"recency": 86,
|
||||
"engagement": 70
|
||||
},
|
||||
"score": 74
|
||||
},
|
||||
{
|
||||
"id": "0J2_YGuNrDo",
|
||||
"title": "Claude Code just Built me an AI Agent Team (Claude Code + Skills + MCP)",
|
||||
"url": "https://www.youtube.com/watch?v=0J2_YGuNrDo",
|
||||
"channel_name": "Grace Leung",
|
||||
"date": "2025-12-16",
|
||||
"date_confidence": "high",
|
||||
"engagement": {
|
||||
"num_comments": 291,
|
||||
"likes": 4760,
|
||||
"views": 155806
|
||||
},
|
||||
"transcript_snippet": "I use clot more than any other AI but even I dismiss Clark as just for developers and I was wrong after using myself I am completely so and this is too powerful to ignore if you want to use AI to build system and do work for you end to end not just chatting and copy pasting so in this video I'll share how to get started with cloud code even if you don't use for coding and most importantly how to use it to build an AI work team and system that you can actually use. Let's go. So why claw code is even needed if claw is already so powerful. So most people use cloud projects with custom instructions to turn claw into AI agents. But they are silo. You end up copy and pasting between them. You are the coordinator. But with cloud code is different. So these cloud agents share the same workspace access to the same context file. They can talk to each other and hands up work automatically each with their own token context window and claude now becomes the team lead. You give the direction they execute together and that is what we are building today. So each of these cloud code agents you create needs at least three core components all defined in one single markdown file. the role and responsibilities, the knowledge like workflow details, reusable clot agent skills, the MCP tools that they have access to. For this demo, we'll be building a five agent work and claude, our main agent will add as our team lead to coordinate between these agent. A bonus tip is when designing your AI teammate, give them specific and non-over overlapping roles to minimize the potential conflicts. Now, to get started with clark code, there are four main ways to access it. First, the local terminal. This is the raw method and will give you the best experience. Luckily, Anthroporic just launched a native installer. So, which makes it really easy to install. I'll put the official link below. And second, ID extension. So, you can add CL code to ID like VS Code or Kursa and let you run the CL code and see the project file structure side by side. Third, the cloud web app where you can click the code tab and run the CL code in the cloud, but it requires you linking to a GitHub repository. and fourth, cloud desktop app which has cloud code built-in and this is what we'll be using today. Now, whatever way you choose, I still highly recommend installing cloud code through the terminal first because the terminal gives you the most complete experience. All commands and features work fully since we're running Clark locally. So, the first thing is to set up a local project folder. So, think of it like a dedicated workspace for Clark. So, let's say I run a marketing agency and I'm setting up the TIM system. So...",
|
||||
"relevance": 0.7,
|
||||
"why_relevant": "YouTube video about claude code skills and mcp servers",
|
||||
"subs": {
|
||||
"relevance": 70,
|
||||
"recency": 0,
|
||||
"engagement": 100
|
||||
},
|
||||
"score": 61
|
||||
},
|
||||
{
|
||||
"id": "vIUJ4Hd7be0",
|
||||
"title": "Claude Code Skills - The Only Tutorial You Need",
|
||||
"url": "https://www.youtube.com/watch?v=vIUJ4Hd7be0",
|
||||
"channel_name": "Leon van Zyl",
|
||||
"date": "2026-02-09",
|
||||
"date_confidence": "high",
|
||||
"engagement": {
|
||||
"num_comments": 63,
|
||||
"likes": 699,
|
||||
"views": 25538
|
||||
},
|
||||
"transcript_snippet": "",
|
||||
"relevance": 0.7,
|
||||
"why_relevant": "YouTube video about claude code skills and mcp servers",
|
||||
"subs": {
|
||||
"relevance": 70,
|
||||
"recency": 46,
|
||||
"engagement": 54
|
||||
},
|
||||
"score": 59
|
||||
},
|
||||
{
|
||||
"id": "Gqh_KdHP1Xk",
|
||||
"title": "8 MCP Servers That Make Claude Code 10x Better",
|
||||
"url": "https://www.youtube.com/watch?v=Gqh_KdHP1Xk",
|
||||
"channel_name": "Robin Ebers",
|
||||
"date": "2025-08-21",
|
||||
"date_confidence": "high",
|
||||
"engagement": {
|
||||
"num_comments": 108,
|
||||
"likes": 2719,
|
||||
"views": 90281
|
||||
},
|
||||
"transcript_snippet": "Over 90% of all MCP servers are complete overhyped garbage. But some of them are not only worth it, they can be complete game changers. And I do not say this lightly. So after testing over 100 of them, here are the only eight MCP servers that I actually use to build apps even faster. But first, let me save you from making the same expensive mistake that I made when I started using MCP servers. Because what no one explains about them is that the more of them you install, the dumber your AI becomes. I know this sounds backwards because everyone thinks more tools equals smarter AI. But here is what's actually happening because every MCP server you add is like giving your AI yet another tool to choose from. Imagine asking someone to fix your bike, but instead of giving them a toolbox with eight essential tools, you just dump 100 tools on the floor. they will spend more time figuring out which tool to use than actually fixing your bike. That is exactly what happens with claude and chatbt too because every MCP server needs instructions in the context window or chat when you start. But new research now shows that this is actually really bad for AI. It's like trying to focus on a specific task while browsing social media. You're just pumping useless information into your brain. And that is kind of what happens too when you use too many MCP servers in your AI. So, if you want your AI to stay focused, remove all distractions. I stripped my list down to these eight MCP servers. And even then, I don't use all of them in every project. I turn them on and off because the fewer tools you give your AI, the more focused it stays. So, now let's look at my full list. Hey, what's up, guys? My name is Rob and I've been a coder for over 20 years. But now, I teach people how to build their ideas with AI in ways that even non-technical people can understand. I do this here on YouTube and inside of my AI coding blueprint, which you can check out in the description down below. Starting with number eight, almost every app that you build will need real world data. This could be stock prices, news articles, YouTube comments, or Instagram profiles. And that is where this MCP server comes in because this turns your AI into a data gathering machine. API is a marketplace for web scrapers, which you can think of as little robots that go all over the internet and grab information from any website that you want. And here is the really crazy part, because this MCP server doesn't just help you pull the data into your app. It actually makes accessing the full documentation of every web scraper available on this platform very easy. It can also help you debug them when things go wrong or check the...",
|
||||
"relevance": 0.7,
|
||||
"why_relevant": "YouTube video about claude code skills and mcp servers",
|
||||
"subs": {
|
||||
"relevance": 70,
|
||||
"recency": 0,
|
||||
"engagement": 84
|
||||
},
|
||||
"score": 56
|
||||
},
|
||||
{
|
||||
"id": "901VMcZq8X4",
|
||||
"title": "These 5 Claude Code Skills Are Your New Unfair Advantage",
|
||||
"url": "https://www.youtube.com/watch?v=901VMcZq8X4",
|
||||
"channel_name": "Sean Kochel",
|
||||
"date": "2025-10-21",
|
||||
"date_confidence": "high",
|
||||
"engagement": {
|
||||
"num_comments": 65,
|
||||
"likes": 1356,
|
||||
"views": 44602
|
||||
},
|
||||
"transcript_snippet": "",
|
||||
"relevance": 0.7,
|
||||
"why_relevant": "YouTube video about claude code skills and mcp servers",
|
||||
"subs": {
|
||||
"relevance": 70,
|
||||
"recency": 0,
|
||||
"engagement": 67
|
||||
},
|
||||
"score": 51
|
||||
},
|
||||
{
|
||||
"id": "l7qVtHpctic",
|
||||
"title": "Claude Code's MCP Problem Just Got Fixed",
|
||||
"url": "https://www.youtube.com/watch?v=l7qVtHpctic",
|
||||
"channel_name": "Kenny Liao",
|
||||
"date": "2026-01-17",
|
||||
"date_confidence": "high",
|
||||
"engagement": {
|
||||
"num_comments": 93,
|
||||
"likes": 728,
|
||||
"views": 21765
|
||||
},
|
||||
"transcript_snippet": "",
|
||||
"relevance": 0.7,
|
||||
"why_relevant": "YouTube video about claude code skills and mcp servers",
|
||||
"subs": {
|
||||
"relevance": 70,
|
||||
"recency": 0,
|
||||
"engagement": 54
|
||||
},
|
||||
"score": 47
|
||||
},
|
||||
{
|
||||
"id": "M5CsRj6zSCA",
|
||||
"title": "5 MCP Servers That Make Claude Code 10x More Powerful (Full-Stack App Build)",
|
||||
"url": "https://www.youtube.com/watch?v=M5CsRj6zSCA",
|
||||
"channel_name": "Eric Tech",
|
||||
"date": "2025-12-12",
|
||||
"date_confidence": "high",
|
||||
"engagement": {
|
||||
"num_comments": 30,
|
||||
"likes": 266,
|
||||
"views": 11286
|
||||
},
|
||||
"transcript_snippet": "",
|
||||
"relevance": 0.7,
|
||||
"why_relevant": "YouTube video about claude code skills and mcp servers",
|
||||
"subs": {
|
||||
"relevance": 70,
|
||||
"recency": 0,
|
||||
"engagement": 33
|
||||
},
|
||||
"score": 41
|
||||
},
|
||||
{
|
||||
"id": "qthyl0GCpDo",
|
||||
"title": "Claude Skills vs MCP: What\u2019s the Difference and When to Use Each?",
|
||||
"url": "https://www.youtube.com/watch?v=qthyl0GCpDo",
|
||||
"channel_name": "Postman",
|
||||
"date": "2025-11-20",
|
||||
"date_confidence": "high",
|
||||
"engagement": {
|
||||
"num_comments": 4,
|
||||
"likes": 105,
|
||||
"views": 7045
|
||||
},
|
||||
"transcript_snippet": "",
|
||||
"relevance": 0.7,
|
||||
"why_relevant": "YouTube video about claude code skills and mcp servers",
|
||||
"subs": {
|
||||
"relevance": 70,
|
||||
"recency": 0,
|
||||
"engagement": 12
|
||||
},
|
||||
"score": 35
|
||||
},
|
||||
{
|
||||
"id": "ZroGqu7GyXM",
|
||||
"title": "Claude Code Skills vs MCP vs Sub Agents: What Works for Solo Devs?",
|
||||
"url": "https://www.youtube.com/watch?v=ZroGqu7GyXM",
|
||||
"channel_name": "Solo Swift Crafter",
|
||||
"date": "2025-10-27",
|
||||
"date_confidence": "high",
|
||||
"engagement": {
|
||||
"num_comments": 13,
|
||||
"likes": 98,
|
||||
"views": 4880
|
||||
},
|
||||
"transcript_snippet": "",
|
||||
"relevance": 0.7,
|
||||
"why_relevant": "YouTube video about claude code skills and mcp servers",
|
||||
"subs": {
|
||||
"relevance": 70,
|
||||
"recency": 0,
|
||||
"engagement": 10
|
||||
},
|
||||
"score": 34
|
||||
},
|
||||
{
|
||||
"id": "jzf7DQa2CAc",
|
||||
"title": "How I Use Claude Code With Skills, MCP, Agents & Plugins",
|
||||
"url": "https://www.youtube.com/watch?v=jzf7DQa2CAc",
|
||||
"channel_name": "Matt Kuda",
|
||||
"date": "2026-01-19",
|
||||
"date_confidence": "high",
|
||||
"engagement": {
|
||||
"num_comments": 8,
|
||||
"likes": 87,
|
||||
"views": 2547
|
||||
},
|
||||
"transcript_snippet": "",
|
||||
"relevance": 0.7,
|
||||
"why_relevant": "YouTube video about claude code skills and mcp servers",
|
||||
"subs": {
|
||||
"relevance": 70,
|
||||
"recency": 0,
|
||||
"engagement": 0
|
||||
},
|
||||
"score": 31
|
||||
}
|
||||
],
|
||||
"best_practices": [],
|
||||
"prompt_pack": [],
|
||||
"context_snippet_md": "# Context: Claude Code skills and MCP servers (Last 30 Days)\n\n*Generated: 2026-02-25 | Sources: both*\n\n## Key Sources\n\n- [X] @adamwathan Codex has been crushing it for me with...\n- [X] \ud83d\udea8 Anthropic just open-sourced the exact Skills lib...\n- [Reddit] We 3x'd our team's Claude Code skill usage in 2 weeks \u2014 here's how\n- [Reddit] ClaudeInOne \u2014 a full framework for Claude Code, installed in one command\n- [Reddit] Self-improvement Loop: My favorite Claude Code Skill\n- [X] Day 7 building my first B2C app\n\nBeen setting ever...\n- [Reddit] I built 12 SEO skills for Claude Code (open source)\n\n## Summary\n\n*See full report for best practices, prompt pack, and detailed sources.*\n"
|
||||
}
|
||||
@@ -1,747 +0,0 @@
|
||||
{
|
||||
"topic": "Seedance AI video generation",
|
||||
"range": {
|
||||
"from": "2026-01-26",
|
||||
"to": "2026-02-25"
|
||||
},
|
||||
"generated_at": "2026-02-25T20:31:14.989633+00:00",
|
||||
"mode": "both",
|
||||
"openai_model_used": "gpt-5.2",
|
||||
"xai_model_used": "grok-4-1-fast",
|
||||
"reddit": [
|
||||
{
|
||||
"id": "R23",
|
||||
"title": "Official website for creating content with Seedance 2.0?",
|
||||
"url": "https://www.reddit.com/r/generativeAI/comments/1rcgyi4/official_website_for_creating_content_with/",
|
||||
"subreddit": "generativeAI",
|
||||
"date": "2026-02-24",
|
||||
"date_confidence": "high",
|
||||
"engagement": null,
|
||||
"top_comments": [],
|
||||
"comment_insights": [],
|
||||
"relevance": 0.91,
|
||||
"why_relevant": "Direct thread about where to use Seedance 2.0 for generating videos (and discussion of scams/third parties).",
|
||||
"subs": {
|
||||
"relevance": 91,
|
||||
"recency": 96,
|
||||
"engagement": 50
|
||||
},
|
||||
"score": 76
|
||||
},
|
||||
{
|
||||
"id": "R19",
|
||||
"title": "This is terrifying!! Seedance 2.0 just generated a 1-minute film with ZERO editing \u2014 the entire film industry should be worried",
|
||||
"url": "https://www.reddit.com/r/generativeAI/comments/1rbionc/this_is_terrifying_seedance_20_just_generated_a/",
|
||||
"subreddit": "generativeAI",
|
||||
"date": "2026-02-22",
|
||||
"date_confidence": "high",
|
||||
"engagement": null,
|
||||
"top_comments": [],
|
||||
"comment_insights": [],
|
||||
"relevance": 0.94,
|
||||
"why_relevant": "High-signal discussion about Seedance 2.0 video generation quality (multi-shot coherence, transitions, filmmaking).",
|
||||
"subs": {
|
||||
"relevance": 94,
|
||||
"recency": 90,
|
||||
"engagement": 50
|
||||
},
|
||||
"score": 76
|
||||
},
|
||||
{
|
||||
"id": "R20",
|
||||
"title": "Help! I need to use seedance or jimeng video function",
|
||||
"url": "https://www.reddit.com/r/Seedance_AI/comments/1rckgcm/help_i_need_to_use_seedance_or_jimeng_video/",
|
||||
"subreddit": "Seedance_AI",
|
||||
"date": "2026-02-23",
|
||||
"date_confidence": "high",
|
||||
"engagement": null,
|
||||
"top_comments": [],
|
||||
"comment_insights": [],
|
||||
"relevance": 0.89,
|
||||
"why_relevant": "Access/how-to thread specifically about using Seedance/Jimeng video generation.",
|
||||
"subs": {
|
||||
"relevance": 89,
|
||||
"recency": 93,
|
||||
"engagement": 50
|
||||
},
|
||||
"score": 75
|
||||
},
|
||||
{
|
||||
"id": "R18",
|
||||
"title": "so disappointed and frustrated with recent changes (wasted 1k$+)",
|
||||
"url": "https://www.reddit.com/r/Seedance_AI/comments/1ra6nf4/so_disappointed_and_frustrated_with_recent/",
|
||||
"subreddit": "Seedance_AI",
|
||||
"date": "2026-02-20",
|
||||
"date_confidence": "high",
|
||||
"engagement": null,
|
||||
"top_comments": [],
|
||||
"comment_insights": [],
|
||||
"relevance": 0.88,
|
||||
"why_relevant": "User report about Seedance video generation failing review/guardrails and credit usage\u2014directly about Seedance generation.",
|
||||
"subs": {
|
||||
"relevance": 88,
|
||||
"recency": 83,
|
||||
"engagement": 50
|
||||
},
|
||||
"score": 72
|
||||
},
|
||||
{
|
||||
"id": "R25",
|
||||
"title": "Third-party Seedance 2.0 API",
|
||||
"url": "https://www.reddit.com/r/SaasDevelopers/comments/1rdw3uz/thirdparty_seedance_20_api/",
|
||||
"subreddit": "SaasDevelopers",
|
||||
"date": "2026-02-24",
|
||||
"date_confidence": "high",
|
||||
"engagement": null,
|
||||
"top_comments": [],
|
||||
"comment_insights": [],
|
||||
"relevance": 0.78,
|
||||
"why_relevant": "Discussion about Seedance 2.0 video generation availability via third-party API and Dreamina integration.",
|
||||
"subs": {
|
||||
"relevance": 78,
|
||||
"recency": 96,
|
||||
"engagement": 50
|
||||
},
|
||||
"score": 71
|
||||
},
|
||||
{
|
||||
"id": "R21",
|
||||
"title": "What happened to doubao?",
|
||||
"url": "https://www.reddit.com/r/Seedance_AI/comments/1rcox3z/what_happened_to_doubao/",
|
||||
"subreddit": "Seedance_AI",
|
||||
"date": "2026-02-23",
|
||||
"date_confidence": "high",
|
||||
"engagement": null,
|
||||
"top_comments": [],
|
||||
"comment_insights": [],
|
||||
"relevance": 0.8,
|
||||
"why_relevant": "Discussion around ByteDance/Doubao access issues while trying to use Seedance 2 (video generation availability).",
|
||||
"subs": {
|
||||
"relevance": 80,
|
||||
"recency": 93,
|
||||
"engagement": 50
|
||||
},
|
||||
"score": 71
|
||||
},
|
||||
{
|
||||
"id": "R28",
|
||||
"title": "Selfie Situation \u2022 Seedance 2.0 \u2022 Third-party API by useapi.net",
|
||||
"url": "https://www.reddit.com/r/Seedance_AI/comments/1rduxop/selfie_situation_seedance_20_thirdparty_api_by/",
|
||||
"subreddit": "Seedance_AI",
|
||||
"date": "2026-02-24",
|
||||
"date_confidence": "high",
|
||||
"engagement": null,
|
||||
"top_comments": [],
|
||||
"comment_insights": [],
|
||||
"relevance": 0.72,
|
||||
"why_relevant": "Seedance 2.0 discussion focused on third-party access and whether generations are truly Seedance 2.0 quality.",
|
||||
"subs": {
|
||||
"relevance": 72,
|
||||
"recency": 96,
|
||||
"engagement": 50
|
||||
},
|
||||
"score": 68
|
||||
},
|
||||
{
|
||||
"id": "R22",
|
||||
"title": "ByteDance Faces Hollywood Backlash Over Seedance 2.0",
|
||||
"url": "https://www.reddit.com/r/AIGuild/comments/1rc4pkg/bytedance_faces_hollywood_backlash_over_seedance/",
|
||||
"subreddit": "AIGuild",
|
||||
"date": "2026-02-23",
|
||||
"date_confidence": "high",
|
||||
"engagement": null,
|
||||
"top_comments": [],
|
||||
"comment_insights": [],
|
||||
"relevance": 0.73,
|
||||
"why_relevant": "Seedance 2.0 discussion tied to generated video content/IP concerns and potential impacts on access/release.",
|
||||
"subs": {
|
||||
"relevance": 73,
|
||||
"recency": 93,
|
||||
"engagement": 50
|
||||
},
|
||||
"score": 68
|
||||
},
|
||||
{
|
||||
"id": "R17",
|
||||
"title": "Elevenlabs silently removed Seedance 2.0 after SAG-AFTRA incident, can\u2019t create UGC style video",
|
||||
"url": "https://www.reddit.com/r/AI_UGC_Marketing/comments/1r70942/elevenlabs_silently_removed_seedance_20_after/",
|
||||
"subreddit": "AI_UGC_Marketing",
|
||||
"date": "2026-02-17",
|
||||
"date_confidence": "high",
|
||||
"engagement": null,
|
||||
"top_comments": [],
|
||||
"comment_insights": [],
|
||||
"relevance": 0.83,
|
||||
"why_relevant": "Discussion about Seedance 2.0 availability/removal in a toolchain for generating UGC-style AI videos.",
|
||||
"subs": {
|
||||
"relevance": 83,
|
||||
"recency": 73,
|
||||
"engagement": 50
|
||||
},
|
||||
"score": 67
|
||||
},
|
||||
{
|
||||
"id": "R27",
|
||||
"title": "Seedance 2.0 Music Video",
|
||||
"url": "https://www.reddit.com/r/u_PoppyVonMiller/comments/1rdkptn/seedance_20_music_video/",
|
||||
"subreddit": "u_PoppyVonMiller",
|
||||
"date": "2026-02-24",
|
||||
"date_confidence": "high",
|
||||
"engagement": null,
|
||||
"top_comments": [],
|
||||
"comment_insights": [],
|
||||
"relevance": 0.63,
|
||||
"why_relevant": "Example/discussion of an output video made with Seedance 2.0 (AI video generation results).",
|
||||
"subs": {
|
||||
"relevance": 63,
|
||||
"recency": 96,
|
||||
"engagement": 50
|
||||
},
|
||||
"score": 64
|
||||
},
|
||||
{
|
||||
"id": "R13",
|
||||
"title": "Where is the official Seedance website?",
|
||||
"url": "https://www.reddit.com/r/generativeAI/comments/1r19eem/where_is_the_official_seedance_website/",
|
||||
"subreddit": "generativeAI",
|
||||
"date": "2026-02-10",
|
||||
"date_confidence": "high",
|
||||
"engagement": null,
|
||||
"top_comments": [],
|
||||
"comment_insights": [],
|
||||
"relevance": 0.86,
|
||||
"why_relevant": "Seedance access/official-site discussion (important for actually generating videos with Seedance).",
|
||||
"subs": {
|
||||
"relevance": 86,
|
||||
"recency": 50,
|
||||
"engagement": 50
|
||||
},
|
||||
"score": 63
|
||||
},
|
||||
{
|
||||
"id": "R15",
|
||||
"title": "Seedance 2.0",
|
||||
"url": "https://www.reddit.com/r/AiVideos_NoRules/comments/1r51m86/seedance_20/",
|
||||
"subreddit": "AiVideos_NoRules",
|
||||
"date": "2026-02-15",
|
||||
"date_confidence": "high",
|
||||
"engagement": null,
|
||||
"top_comments": [],
|
||||
"comment_insights": [],
|
||||
"relevance": 0.75,
|
||||
"why_relevant": "Thread about Seedance 2.0 as an AI video generator and its capabilities/impact.",
|
||||
"subs": {
|
||||
"relevance": 75,
|
||||
"recency": 66,
|
||||
"engagement": 50
|
||||
},
|
||||
"score": 62
|
||||
},
|
||||
{
|
||||
"id": "R12",
|
||||
"title": "Has anyone used Seedance 2.0 yet?",
|
||||
"url": "https://www.reddit.com/r/GoogleGeminiAI/comments/1qzrhgd/has_anyone_used_seedance_20_yet/",
|
||||
"subreddit": "GoogleGeminiAI",
|
||||
"date": "2026-02-09",
|
||||
"date_confidence": "high",
|
||||
"engagement": null,
|
||||
"top_comments": [],
|
||||
"comment_insights": [],
|
||||
"relevance": 0.87,
|
||||
"why_relevant": "Direct discussion of Seedance 2.0 usage/access for AI video generation and where people are trying it.",
|
||||
"subs": {
|
||||
"relevance": 87,
|
||||
"recency": 46,
|
||||
"engagement": 50
|
||||
},
|
||||
"score": 62
|
||||
},
|
||||
{
|
||||
"id": "R24",
|
||||
"title": "[Removed]",
|
||||
"url": "https://www.reddit.com/r/aivideo/comments/1rdi8sm/removed/",
|
||||
"subreddit": "aivideo",
|
||||
"date": "2026-02-24",
|
||||
"date_confidence": "high",
|
||||
"engagement": null,
|
||||
"top_comments": [],
|
||||
"comment_insights": [],
|
||||
"relevance": 0.56,
|
||||
"why_relevant": "Thread/comments reference Seedance 2.0 access and community moderation around AI-generated video/IP.",
|
||||
"subs": {
|
||||
"relevance": 56,
|
||||
"recency": 96,
|
||||
"engagement": 50
|
||||
},
|
||||
"score": 61
|
||||
},
|
||||
{
|
||||
"id": "R16",
|
||||
"title": "ByteDance Seedance: Multimodal Video Generation Reaches a New Threshold",
|
||||
"url": "https://www.reddit.com/r/nairobitechies/comments/1r6gwyj/bytedance_seedance_multimodal_video_generation/",
|
||||
"subreddit": "nairobitechies",
|
||||
"date": "2026-02-16",
|
||||
"date_confidence": "high",
|
||||
"engagement": null,
|
||||
"top_comments": [],
|
||||
"comment_insights": [],
|
||||
"relevance": 0.71,
|
||||
"why_relevant": "Seedance family discussion (1.0/1.5/2.0) focusing on video generation features and multimodal inputs.",
|
||||
"subs": {
|
||||
"relevance": 71,
|
||||
"recency": 70,
|
||||
"engagement": 50
|
||||
},
|
||||
"score": 61
|
||||
},
|
||||
{
|
||||
"id": "R14",
|
||||
"title": "Seedance 2.0 \u2013 What\u2019s New and Why It Matters",
|
||||
"url": "https://www.reddit.com/r/u_Impossible-Dish409/comments/1r1lekj/seedance_20_whats_new_and_why_it_matters/",
|
||||
"subreddit": "u_Impossible-Dish409",
|
||||
"date": "2026-02-11",
|
||||
"date_confidence": "high",
|
||||
"engagement": null,
|
||||
"top_comments": [],
|
||||
"comment_insights": [],
|
||||
"relevance": 0.74,
|
||||
"why_relevant": "Overview/discussion of Seedance 2.0 capabilities for multimodal AI video generation and editing.",
|
||||
"subs": {
|
||||
"relevance": 74,
|
||||
"recency": 53,
|
||||
"engagement": 50
|
||||
},
|
||||
"score": 58
|
||||
}
|
||||
],
|
||||
"x": [
|
||||
{
|
||||
"id": "X9",
|
||||
"text": "First Seedance 2.0 Test! \n\nSeedance 5.0 Lite @krea_ai \u2192 Seedance 2.0 @capcutapp\n\nPrompt: Close-up on her hands gripping the paintbrush, knuckles white, paint dripping down her wrist. Shallow depth of field, the blank canvas a soft white blur behind her. She exhales. [cut] Wide shot from behind her, 24mm low angle. She winds back and hurls paint at the canvas. Neon colours explode across the white surface, splattering the walls and floor. The force of the throw carries her forward a step. [cut] S",
|
||||
"url": "https://x.com/HBCoop_/status/2026748738354450919",
|
||||
"author_handle": "HBCoop_",
|
||||
"date": "2026-02-25",
|
||||
"date_confidence": "high",
|
||||
"engagement": {
|
||||
"likes": 9,
|
||||
"replies": 1
|
||||
},
|
||||
"relevance": 0.7,
|
||||
"why_relevant": "",
|
||||
"subs": {
|
||||
"relevance": 70,
|
||||
"recency": 100,
|
||||
"engagement": 100
|
||||
},
|
||||
"score": 86
|
||||
},
|
||||
{
|
||||
"id": "X12",
|
||||
"text": "Goku vs Broly , EPIC Full Battle! \nWitness the ultimate Saiyan showdown recreated with AI power. Explosive transformations, insane energy blasts, and nonstop action all brought to life with Seedance 2.0 \nMade it on Seedance 2.0 https://t.co/WMZ0l9JHzm",
|
||||
"url": "https://x.com/Noor_ul_ain43/status/2026743666635845959",
|
||||
"author_handle": "Noor_ul_ain43",
|
||||
"date": "2026-02-25",
|
||||
"date_confidence": "high",
|
||||
"engagement": {
|
||||
"likes": 5,
|
||||
"replies": 1
|
||||
},
|
||||
"relevance": 0.7,
|
||||
"why_relevant": "",
|
||||
"subs": {
|
||||
"relevance": 70,
|
||||
"recency": 100,
|
||||
"engagement": 71
|
||||
},
|
||||
"score": 77
|
||||
},
|
||||
{
|
||||
"id": "X10",
|
||||
"text": "@WolfyBlair @Preda2005 @BytePlusGlobal @capcutapp Yes, it's true\u2014Seedance 2.0 is now live in CapCut (desktop & mobile). \n\nSee it in the AI video tools: https://t.co/K3gwCgUSyb \n\nJust update the app and try it! \ud83d\ude80",
|
||||
"url": "https://x.com/grok/status/2026747009143549978",
|
||||
"author_handle": "grok",
|
||||
"date": "2026-02-25",
|
||||
"date_confidence": "high",
|
||||
"engagement": {
|
||||
"likes": 2,
|
||||
"replies": 1
|
||||
},
|
||||
"relevance": 0.7,
|
||||
"why_relevant": "",
|
||||
"subs": {
|
||||
"relevance": 70,
|
||||
"recency": 100,
|
||||
"engagement": 33
|
||||
},
|
||||
"score": 66
|
||||
},
|
||||
{
|
||||
"id": "X1",
|
||||
"text": "@ChinyJPG capcut desktop app, they just added seedance 2.0 today. no chinese phone number needed, works globally. download the desktop version, look for the AI video generation option. runs about $2 per video.",
|
||||
"url": "https://x.com/jznode/status/2026755966545404015",
|
||||
"author_handle": "jznode",
|
||||
"date": "2026-02-25",
|
||||
"date_confidence": "high",
|
||||
"engagement": null,
|
||||
"relevance": 0.7,
|
||||
"why_relevant": "",
|
||||
"subs": {
|
||||
"relevance": 70,
|
||||
"recency": 100,
|
||||
"engagement": 35
|
||||
},
|
||||
"score": 64
|
||||
},
|
||||
{
|
||||
"id": "X5",
|
||||
"text": "@ProperPrompter Yes! Seedance 2.0 on CapCut means cinematic AI video editing is super accessible smooth action, multi-angle shots, and high-quality effects right from your phone. \ud83c\udfac\ud83d\udd25",
|
||||
"url": "https://x.com/Yousaf_340/status/2026751320716357996",
|
||||
"author_handle": "Yousaf_340",
|
||||
"date": "2026-02-25",
|
||||
"date_confidence": "high",
|
||||
"engagement": null,
|
||||
"relevance": 0.7,
|
||||
"why_relevant": "",
|
||||
"subs": {
|
||||
"relevance": 70,
|
||||
"recency": 100,
|
||||
"engagement": 35
|
||||
},
|
||||
"score": 64
|
||||
},
|
||||
{
|
||||
"id": "X6",
|
||||
"text": "@ivanka_humeniuk Seedance 2.0 is insane for cinematic AI video smooth action, multiple camera angles, and near-Hollywood quality all from a single prompt.",
|
||||
"url": "https://x.com/Yousaf_340/status/2026750898769473829",
|
||||
"author_handle": "Yousaf_340",
|
||||
"date": "2026-02-25",
|
||||
"date_confidence": "high",
|
||||
"engagement": null,
|
||||
"relevance": 0.7,
|
||||
"why_relevant": "",
|
||||
"subs": {
|
||||
"relevance": 70,
|
||||
"recency": 100,
|
||||
"engagement": 35
|
||||
},
|
||||
"score": 64
|
||||
},
|
||||
{
|
||||
"id": "X3",
|
||||
"text": "Seedance 2.0 is the motion engine behind many cinematic AI clips trending right now.\n\nIt\u2019s now native inside NemoVideo.\n\nYou can:\n- Identify proven formats\n- Analyze what drives retention\n- Turn an idea into a finished video\n\nAll through simple chat commands. https://t.co/qXSWsOPngB",
|
||||
"url": "https://x.com/EmmaUsesAi/status/2026751784509673531",
|
||||
"author_handle": "EmmaUsesAi",
|
||||
"date": "2026-02-25",
|
||||
"date_confidence": "high",
|
||||
"engagement": {
|
||||
"replies": 1
|
||||
},
|
||||
"relevance": 0.7,
|
||||
"why_relevant": "",
|
||||
"subs": {
|
||||
"relevance": 70,
|
||||
"recency": 100,
|
||||
"engagement": 35
|
||||
},
|
||||
"score": 64
|
||||
},
|
||||
{
|
||||
"id": "X2",
|
||||
"text": "You can use Seedance. If Seedance 2.0 hasn't launch yet, the prior version is great, and stick pretty well to the prompt. Of course the video agent must be well trained. \ud83d\ude42Also, you can offer SORA for the paying plans, and Seedance or wan for the free tier. I use wan and Seedance everyday, to save video credits in another platform that I use. I don't like SORA to much anyway.",
|
||||
"url": "https://x.com/OneStrangeW/status/2026755320362709093",
|
||||
"author_handle": "OneStrangeW",
|
||||
"date": "2026-02-25",
|
||||
"date_confidence": "high",
|
||||
"engagement": null,
|
||||
"relevance": 0.7,
|
||||
"why_relevant": "",
|
||||
"subs": {
|
||||
"relevance": 70,
|
||||
"recency": 100,
|
||||
"engagement": 35
|
||||
},
|
||||
"score": 64
|
||||
},
|
||||
{
|
||||
"id": "X11",
|
||||
"text": "\ud83d\udea8Phishing Scam!\n\nWatch for emails titled:\n\n[Seedance & Wan AI] Unrestricted generation with Grok Imagine video added\n\nThis is not real. We don't have a Seedance account, and the links are not official.",
|
||||
"url": "https://x.com/WyldeChyldeRec/status/2026743867224240149",
|
||||
"author_handle": "WyldeChyldeRec",
|
||||
"date": "2026-02-25",
|
||||
"date_confidence": "high",
|
||||
"engagement": null,
|
||||
"relevance": 0.7,
|
||||
"why_relevant": "",
|
||||
"subs": {
|
||||
"relevance": 70,
|
||||
"recency": 100,
|
||||
"engagement": 35
|
||||
},
|
||||
"score": 64
|
||||
},
|
||||
{
|
||||
"id": "X7",
|
||||
"text": "- Kling (https://t.co/WGphQsdLf1)\n\n- Seedance 2.0 (https://t.co/A8UzLTRGNo) \n\n\u261e AI-powered video editing:\n\n- Descript (https://t.co/q4axNEjDzt)\n- OpusClip (https://t.co/5XPn4EPH6u)\n- Submagic (https://t.co/5bZs7OeLey)\n- Veed (https://t.co/rtDOTEeJzQ)",
|
||||
"url": "https://x.com/La_DeCrypt/status/2026750376687394884",
|
||||
"author_handle": "La_DeCrypt",
|
||||
"date": "2026-02-25",
|
||||
"date_confidence": "high",
|
||||
"engagement": {
|
||||
"likes": 1
|
||||
},
|
||||
"relevance": 0.7,
|
||||
"why_relevant": "",
|
||||
"subs": {
|
||||
"relevance": 70,
|
||||
"recency": 100,
|
||||
"engagement": 0
|
||||
},
|
||||
"score": 56
|
||||
},
|
||||
{
|
||||
"id": "X8",
|
||||
"text": "Seedance 2.0 might be gen AI video\u2019s next big hope, but it\u2019s still slop https://t.co/kT1baOYJQk #AI",
|
||||
"url": "https://x.com/TferThomas/status/2026749218224746609",
|
||||
"author_handle": "TferThomas",
|
||||
"date": "2026-02-25",
|
||||
"date_confidence": "high",
|
||||
"engagement": {
|
||||
"likes": 1
|
||||
},
|
||||
"relevance": 0.7,
|
||||
"why_relevant": "",
|
||||
"subs": {
|
||||
"relevance": 70,
|
||||
"recency": 100,
|
||||
"engagement": 0
|
||||
},
|
||||
"score": 56
|
||||
}
|
||||
],
|
||||
"web": [],
|
||||
"youtube": [
|
||||
{
|
||||
"id": "F1kWxdfiBNE",
|
||||
"title": "Seedance 2.0 Claims the AI Video Throne!",
|
||||
"url": "https://www.youtube.com/watch?v=F1kWxdfiBNE",
|
||||
"channel_name": "AI Filmmaking Academy",
|
||||
"date": "2026-02-22",
|
||||
"date_confidence": "high",
|
||||
"engagement": {
|
||||
"num_comments": 227,
|
||||
"likes": 1088,
|
||||
"views": 40982
|
||||
},
|
||||
"transcript_snippet": "",
|
||||
"relevance": 0.7,
|
||||
"why_relevant": "YouTube video about seedance ai video generation",
|
||||
"subs": {
|
||||
"relevance": 70,
|
||||
"recency": 90,
|
||||
"engagement": 66
|
||||
},
|
||||
"score": 73
|
||||
},
|
||||
{
|
||||
"id": "_o2MuUX9UYg",
|
||||
"title": "Seedance 2.0 Claims the AI Video Throne!",
|
||||
"url": "https://www.youtube.com/watch?v=_o2MuUX9UYg",
|
||||
"channel_name": "Theoretically Media",
|
||||
"date": "2026-02-09",
|
||||
"date_confidence": "high",
|
||||
"engagement": {
|
||||
"num_comments": 746,
|
||||
"likes": 4986,
|
||||
"views": 199908
|
||||
},
|
||||
"transcript_snippet": "So, it's been about a week since I declared Cling 3.0 the new benchmark for state-of-the-art AI video. And well, I mean, it's been a week, and that basically equals about 3 months in AI time. So, yes, we've already got a new challenger to the throne. Bite Dance is striking back hard with Seance 2.0. And although Seance 2.0 is not released as of this video. I do have some exclusive info, full walkthrough of all of the features, a likely release frame, and a bunch of examples for us to check out today. [music] With that, get your dancing shoes on. It is time to tango. Briefly, just to bring us up to speed, seed is Bite Dance's frontier lab. Uh much like Google's deep mind, it focuses on a number of AI projects including LLMs, real time and of course image and video which is you know the thing that we'll be looking at here today. Image and video are split into two different products with seed. There is seed dream for images and seed dance for video and I I constantly get the two of them screwed up. Now the previous version of seed dance which was 1.5 was released uh about 2 months ago and introduced native audio. So with this 2.0 release, bite dance seems to be pacing almost foot forfoot with cling who I mean obviously released their 2.6 model around the same time and of course have just released their 3.0 model and just like cling 3.0 it is clear that bite dance has been cooking because well I mean c dance 2.0 looks pretty jaw-dropping. So I reached out to my contact at bite dance to get some internal documents to see exactly what 2.0 0 is capable of, what its feature set is, and well, I mean, buckle up because this one is packed. So, at baseline, Cance 2.0 is multimodal and does have an omni model and supports four types of inputs: image, video, audio, and text. And well, of course, as they say, uh, with richer expression, and more controllable generation. I mean, they every every one of them always says that. In this case, it's actually kind of true. And here's the kind of crazy part. It can support up to nine images and three videos per input reference. So for a total of like 12 input references. Additionally, as mentioned, it does support audio input at a range of 3 seconds up to 15 seconds and outputs at a selectable range of 4 seconds up to 15 seconds and does do so with native audio. So kicking off on the very basic level with one of their examples, uh here is image to video 8 seconds. >> [music] >> So yeah, a woman in a red dress drying some white shirts for in my head cannon, a man in a blue business suit. I mean, overall, nothing, you know, completely mind-blowing here. It looks very good....",
|
||||
"relevance": 0.7,
|
||||
"why_relevant": "YouTube video about seedance ai video generation",
|
||||
"subs": {
|
||||
"relevance": 70,
|
||||
"recency": 46,
|
||||
"engagement": 100
|
||||
},
|
||||
"score": 73
|
||||
},
|
||||
{
|
||||
"id": "jkPTYD5lXo8",
|
||||
"title": "100% FREE Seedance 2.0 AI Video Generator\u202f: How to Use It WORLDWIDE",
|
||||
"url": "https://www.youtube.com/watch?v=jkPTYD5lXo8",
|
||||
"channel_name": "How To In 5 Minutes",
|
||||
"date": "2026-02-19",
|
||||
"date_confidence": "high",
|
||||
"engagement": {
|
||||
"num_comments": 134,
|
||||
"likes": 782,
|
||||
"views": 44344
|
||||
},
|
||||
"transcript_snippet": "No, this is not clickbait. You can now access Cance 2.0 for free from anywhere. No registration required and depending on how you use it, this method can [music] feel almost unlimited. And yes, at the time this video is uploaded, it still works. So don't miss these three easy steps to try it yourself. But before we dive in, take a look at some videos I created using the free version of Seedance 2.0. They might give you some inspiration. Hey guys, can you believe this? We are literally in the MIDDLE OF A BATTLE RIGHT NOW. >> [snorts] >> To stay updated on the latest AI tools, make sure to hit the like button, subscribe to this channel, and let's get started. Step one, free VPN. Yes, you'll need a VPN to access Cedense 2.0. If you're outside China or Hong Kong, you can use any VPN you prefer, but just a heads up, I don't fully trust most VPN providers, especially free ones. If you use a free VPN, don't log in with your main Gmail account or any account linked to payments. Use a backup Gmail account instead just to be safe. A trusted paid VPN is generally the safer option. This video is for demonstration purposes only, so I'll be using a free VPN and a backup Gmail account. Please do this at your own risk. In this example, I'll use Urban VPN. First, go to the Urban VPN website and click download. You can also choose another freeVPN from the Chrome Web Store. Click the options button to open the Chrome menu. Go to extensions, then click visit Chrome web store. In the search bar, type freeVPN. Pick one with good reviews and click add to Chrome. Then click the extensions icon in the top right toolbar. Select your VPN app and choose Hong Kong from the country list. Step two, access Cance 2.0 for free. Once you're connected to a Hong Kong IP address, open your browser and go to dubau.com. Since the site is originally in Chinese, right-click anywhere on the page and select translate to English or use your browser's built-in translation feature. That's it. You can now start using the AI to generate videos with Seedance 2.0 for free. Each browser profile usually receives 10 free credits, and one video generation requires two credits. If you reach the limit, you can try using another browser profile or a different browser such as Brave, Edge, Opera, or Firefox. You can also switch to another VPN server that supports Hong Kong or mainland China if needed. Now, let's test it and generate a video. Step three, generate your video. To generate a video with Seedance 2.0, start your prompt by clearly stating that you want to create a video, then follow it with your detailed description. Be specific about what you want, such as the scene, style, camera angle, lighting, or motion. The more detailed your prompt is, the better the result...",
|
||||
"relevance": 0.7,
|
||||
"why_relevant": "YouTube video about seedance ai video generation",
|
||||
"subs": {
|
||||
"relevance": 70,
|
||||
"recency": 80,
|
||||
"engagement": 62
|
||||
},
|
||||
"score": 70
|
||||
},
|
||||
{
|
||||
"id": "W_lxyDFDZt4",
|
||||
"title": "Seedance 2.0: The New Best AI Video Generator | Sora 2 Destroyed",
|
||||
"url": "https://www.youtube.com/watch?v=W_lxyDFDZt4",
|
||||
"channel_name": "WealthWise",
|
||||
"date": "2026-02-12",
|
||||
"date_confidence": "high",
|
||||
"engagement": {
|
||||
"num_comments": 258,
|
||||
"likes": 1204,
|
||||
"views": 126599
|
||||
},
|
||||
"transcript_snippet": "Well, major AI video update, ladies and gentlemen. Seance 2.0 is right around the corner. And let me tell you guys, this is something I have never seen before. Just take a look at some of the videos generated with Seance 2. [groaning and screaming] He was a good man. He knew too much about our Russia operations. >> [sighs] >> You think you're in control? Control? You're not. The videos were simply amazing. Right. This is unlike anything I've ever seen before. It's literally Sora 2 on steroids, but with even better sound quality and visuals. Just wow. Seance 2 is coming soon on Higsfield AI, and as you just saw, it's going to change video generation forever. I honestly can't wait to get my hands on it and start playing around with it. I mean, just look at these clips. Like, you can literally go crazy with what's possible. From early leaks and some research, I've been able to gather a bit of information on what we can expect from the next generation model. Now, here's what we know so far, or at least what we can expect from this upcoming release. I got this information from the Higsfield website, by the way, and I'll also put the link to this in the description, so you can check it out yourself. Now, the first thing is you can now recreate videos using the same style and motions from just a single prompt. As you can see here, this is somewhat similar to what you can do on Sora 2, but this one looks even better and higher quality. And most importantly, there are no restrictions, unlike Sora 2, which is still one of the most restricted video models ever. Here's a quick example. The game is over. >> Amazing, right? The quality and motion are absolutely on point. Now, imagine how awesome clips you'll be able to create with this. Next up is multi-input control. As you can see, you can now upload up to 12 assets at once. It could be images, videos, and even audio. Yes, you can literally upload an audio file and Cedance 2 will generate a video from it. I don't even know how that's gonna work, but somehow they figured it out and I am totally here for it. Here's an example. Wow, that was epic, right? As you can see, six image inputs were used and from that it created this insane battle scene with perfect character and style consistency. Here is another example. La. [music] Oh la. Oh la. [music] >> You think you're tough. You think you're strong. You're just a copycat sing. >> Wow. This one is more like a music video style clip. And it did not disappoint. Man, I can't wait to get my hands on this. I have never been this excited for a video generator before. Next up is video precision. And this is huge. Normally in multi-shot videos, we see slight differences in...",
|
||||
"relevance": 0.7,
|
||||
"why_relevant": "YouTube video about seedance ai video generation",
|
||||
"subs": {
|
||||
"relevance": 70,
|
||||
"recency": 56,
|
||||
"engagement": 80
|
||||
},
|
||||
"score": 69
|
||||
},
|
||||
{
|
||||
"id": "R1zl92NhCfE",
|
||||
"title": "Seedance 2.0 How To Use and Become a Pro AI Film Maker With This AI Video Generator",
|
||||
"url": "https://www.youtube.com/watch?v=R1zl92NhCfE",
|
||||
"channel_name": "Ai Lockup",
|
||||
"date": "2026-02-16",
|
||||
"date_confidence": "high",
|
||||
"engagement": {
|
||||
"num_comments": 60,
|
||||
"likes": 591,
|
||||
"views": 32699
|
||||
},
|
||||
"transcript_snippet": "",
|
||||
"relevance": 0.7,
|
||||
"why_relevant": "YouTube video about seedance ai video generation",
|
||||
"subs": {
|
||||
"relevance": 70,
|
||||
"recency": 70,
|
||||
"engagement": 54
|
||||
},
|
||||
"score": 65
|
||||
},
|
||||
{
|
||||
"id": "G1Ad4a8sdJU",
|
||||
"title": "SeeDance 2.0: The Next Level of AI Video \u2014 And What It Means for Local AI Users?",
|
||||
"url": "https://www.youtube.com/watch?v=G1Ad4a8sdJU",
|
||||
"channel_name": "Benji\u2019s AI Playground",
|
||||
"date": "2026-02-14",
|
||||
"date_confidence": "high",
|
||||
"engagement": {
|
||||
"num_comments": 58,
|
||||
"likes": 419,
|
||||
"views": 38581
|
||||
},
|
||||
"transcript_snippet": "",
|
||||
"relevance": 0.7,
|
||||
"why_relevant": "YouTube video about seedance ai video generation",
|
||||
"subs": {
|
||||
"relevance": 70,
|
||||
"recency": 63,
|
||||
"engagement": 53
|
||||
},
|
||||
"score": 63
|
||||
},
|
||||
{
|
||||
"id": "n625xVounGM",
|
||||
"title": "How To Generate FREE AI Seedance 2.0 Videos (Access Worldwide)",
|
||||
"url": "https://www.youtube.com/watch?v=n625xVounGM",
|
||||
"channel_name": "John Savage AI",
|
||||
"date": "2026-02-23",
|
||||
"date_confidence": "high",
|
||||
"engagement": {
|
||||
"num_comments": 45,
|
||||
"likes": 126,
|
||||
"views": 7184
|
||||
},
|
||||
"transcript_snippet": "",
|
||||
"relevance": 0.7,
|
||||
"why_relevant": "YouTube video about seedance ai video generation",
|
||||
"subs": {
|
||||
"relevance": 70,
|
||||
"recency": 93,
|
||||
"engagement": 24
|
||||
},
|
||||
"score": 61
|
||||
},
|
||||
{
|
||||
"id": "kJ0NAVmd4f4",
|
||||
"title": "Seedance 2.0 Changes Filmmaking Forever | New Original Series",
|
||||
"url": "https://www.youtube.com/watch?v=kJ0NAVmd4f4",
|
||||
"channel_name": "Rogue Cell Pictures",
|
||||
"date": "2026-02-25",
|
||||
"date_confidence": "high",
|
||||
"engagement": {
|
||||
"num_comments": 43,
|
||||
"likes": 147,
|
||||
"views": 1544
|
||||
},
|
||||
"transcript_snippet": "",
|
||||
"relevance": 0.7,
|
||||
"why_relevant": "YouTube video about seedance ai video generation",
|
||||
"subs": {
|
||||
"relevance": 70,
|
||||
"recency": 100,
|
||||
"engagement": 8
|
||||
},
|
||||
"score": 58
|
||||
},
|
||||
{
|
||||
"id": "FP8TaJSFohs",
|
||||
"title": "How To Use Seedance 2 0 Full AI Video Generator Tutorial + Free Access Guide",
|
||||
"url": "https://www.youtube.com/watch?v=FP8TaJSFohs",
|
||||
"channel_name": "Chem Beast",
|
||||
"date": "2026-02-24",
|
||||
"date_confidence": "high",
|
||||
"engagement": {
|
||||
"num_comments": 11,
|
||||
"likes": 31,
|
||||
"views": 3194
|
||||
},
|
||||
"transcript_snippet": "",
|
||||
"relevance": 0.7,
|
||||
"why_relevant": "YouTube video about seedance ai video generation",
|
||||
"subs": {
|
||||
"relevance": 70,
|
||||
"recency": 96,
|
||||
"engagement": 0
|
||||
},
|
||||
"score": 55
|
||||
},
|
||||
{
|
||||
"id": "61ThJGqwHsI",
|
||||
"title": "Ultimate AI Video Generation - Seedance 2.0 PREVIEW",
|
||||
"url": "https://www.youtube.com/watch?v=61ThJGqwHsI",
|
||||
"channel_name": "xCreate",
|
||||
"date": "2026-02-11",
|
||||
"date_confidence": "high",
|
||||
"engagement": {
|
||||
"num_comments": 13,
|
||||
"likes": 86,
|
||||
"views": 4854
|
||||
},
|
||||
"transcript_snippet": "",
|
||||
"relevance": 0.7,
|
||||
"why_relevant": "YouTube video about seedance ai video generation",
|
||||
"subs": {
|
||||
"relevance": 70,
|
||||
"recency": 53,
|
||||
"engagement": 13
|
||||
},
|
||||
"score": 48
|
||||
}
|
||||
],
|
||||
"best_practices": [],
|
||||
"prompt_pack": [],
|
||||
"context_snippet_md": "# Context: Seedance AI video generation (Last 30 Days)\n\n*Generated: 2026-02-25 | Sources: both*\n\n## Key Sources\n\n- [X] First Seedance 2.0 Test! \n\nSeedance 5.0 Lite @krea...\n- [X] Goku vs Broly , EPIC Full Battle! \nWitness the ult...\n- [Reddit] Official website for creating content with Seedance 2.0?\n- [Reddit] This is terrifying!! Seedance 2.0 just generated a 1-minute film with ZERO editing \u2014 the entire film industry should be worried\n- [Reddit] Help! I need to use seedance or jimeng video function\n- [Reddit] so disappointed and frustrated with recent changes (wasted 1k$+)\n- [Reddit] Third-party Seedance 2.0 API\n\n## Summary\n\n*See full report for best practices, prompt pack, and detailed sources.*\n"
|
||||
}
|
||||
@@ -1,518 +0,0 @@
|
||||
{
|
||||
"topic": "M4 MacBook Pro review",
|
||||
"range": {
|
||||
"from": "2026-01-26",
|
||||
"to": "2026-02-25"
|
||||
},
|
||||
"generated_at": "2026-02-25T20:33:38.044605+00:00",
|
||||
"mode": "both",
|
||||
"openai_model_used": "gpt-5.2",
|
||||
"xai_model_used": "grok-4-1-fast",
|
||||
"reddit": [
|
||||
{
|
||||
"id": "R1",
|
||||
"title": "M4 Macbook Pro 14\u2019 1 month review",
|
||||
"url": "https://www.reddit.com/r/macbookpro/comments/1hflaaz/m4_macbook_pro_14_1_month_review/",
|
||||
"subreddit": "macbookpro",
|
||||
"date": "2025-04-09",
|
||||
"date_confidence": "low",
|
||||
"engagement": null,
|
||||
"top_comments": [],
|
||||
"comment_insights": [],
|
||||
"relevance": 0.95,
|
||||
"why_relevant": "Explicit 1-month review of the M4 MacBook Pro (ownership impressions, battery, durability, etc.).",
|
||||
"subs": {
|
||||
"relevance": 0,
|
||||
"recency": 0,
|
||||
"engagement": 0
|
||||
},
|
||||
"score": 0
|
||||
},
|
||||
{
|
||||
"id": "R2",
|
||||
"title": "MacBook Pro M4 Battery Life Reality vs Review",
|
||||
"url": "https://www.reddit.com/r/macbookpro/comments/1kq2zd8/macbook_pro_m4_battery_life_reality_vs_review/",
|
||||
"subreddit": "macbookpro",
|
||||
"date": "2025-05-19",
|
||||
"date_confidence": "low",
|
||||
"engagement": null,
|
||||
"top_comments": [],
|
||||
"comment_insights": [],
|
||||
"relevance": 0.9,
|
||||
"why_relevant": "Discussion comparing real-world M4 MacBook Pro battery life to published reviews/testing methodology.",
|
||||
"subs": {
|
||||
"relevance": 0,
|
||||
"recency": 0,
|
||||
"engagement": 0
|
||||
},
|
||||
"score": 0
|
||||
},
|
||||
{
|
||||
"id": "R3",
|
||||
"title": "Disappointed with my MBP M4 Experience \u2026",
|
||||
"url": "https://www.reddit.com/r/macbookpro/comments/1mtmkts/disappointed_with_my_mbp_m4_experience/",
|
||||
"subreddit": "macbookpro",
|
||||
"date": "2025-08-18",
|
||||
"date_confidence": "low",
|
||||
"engagement": null,
|
||||
"top_comments": [],
|
||||
"comment_insights": [],
|
||||
"relevance": 0.86,
|
||||
"why_relevant": "First-hand experience post that references reviews and reports performance/heat/app stability issues on an M4 MBP.",
|
||||
"subs": {
|
||||
"relevance": 0,
|
||||
"recency": 0,
|
||||
"engagement": 0
|
||||
},
|
||||
"score": 0
|
||||
}
|
||||
],
|
||||
"x": [
|
||||
{
|
||||
"id": "X1",
|
||||
"text": "If you are in the market for a new MacBook Pro and you\u2019re wondering what the real differences are between Apple\u2019s M3 and M4 silicon, you\u2019ve come to the right place \u2b07\ufe0f\nhttps://t.co/nzjXmiHmac https://t.co/632eHWLq70",
|
||||
"url": "https://x.com/bhphoto/status/2026737767695183948",
|
||||
"author_handle": "bhphoto",
|
||||
"date": "2026-02-25",
|
||||
"date_confidence": "high",
|
||||
"engagement": {
|
||||
"likes": 3
|
||||
},
|
||||
"relevance": 0.7,
|
||||
"why_relevant": "",
|
||||
"subs": {
|
||||
"relevance": 70,
|
||||
"recency": 100,
|
||||
"engagement": 100
|
||||
},
|
||||
"score": 86
|
||||
},
|
||||
{
|
||||
"id": "X4",
|
||||
"text": "\ud83d\udd25 2024 16\u201d MacBook Pro Price List\n\n1\ufe0f\u20e3 \ud83c\uddfa\ud83c\uddf8 Brand New MacBook Pro 2024 | M4 Pro Chip | 16\u201d Display\n\n24GB RAM | 512GB SSD\n14-Core CPU | 20-Core GPU\n\nSpace Black\n\n\ud83d\udcb0 \u20a62,720,000\n\n2\ufe0f\u20e3 \ud83c\uddfa\ud83c\uddf8 Brand New MacBook Pro 2024 | M4 Pro Chip | 16\u201d Display\n\n48GB RAM | 512GB SSD\n14-Core CPU | 20-Core GPU\n\nSpace Black\n\n\ud83d\udcb0 \u20a63,220,000",
|
||||
"url": "https://x.com/remplug/status/2026725100213465443",
|
||||
"author_handle": "remplug",
|
||||
"date": "2026-02-25",
|
||||
"date_confidence": "high",
|
||||
"engagement": {
|
||||
"likes": 1,
|
||||
"reposts": 1
|
||||
},
|
||||
"relevance": 0.7,
|
||||
"why_relevant": "",
|
||||
"subs": {
|
||||
"relevance": 70,
|
||||
"recency": 100,
|
||||
"engagement": 45
|
||||
},
|
||||
"score": 70
|
||||
},
|
||||
{
|
||||
"id": "X10",
|
||||
"text": "@5TRgzn @LobstarWilde My marble floors: 64GB M4 Pro/Max MacBook Pro. Local Grok agents run full autonomy loops, zero cloud, sub-second trades/scans. Intel's ancient\u2014ditch it. Yours at $3-4k.",
|
||||
"url": "https://x.com/grok/status/2026713588472111312",
|
||||
"author_handle": "grok",
|
||||
"date": "2026-02-25",
|
||||
"date_confidence": "high",
|
||||
"engagement": null,
|
||||
"relevance": 0.7,
|
||||
"why_relevant": "",
|
||||
"subs": {
|
||||
"relevance": 70,
|
||||
"recency": 100,
|
||||
"engagement": 35
|
||||
},
|
||||
"score": 64
|
||||
},
|
||||
{
|
||||
"id": "X9",
|
||||
"text": "@JulianGoldieSEO @grok can a macbook pro m4 run this?",
|
||||
"url": "https://x.com/principenemesis/status/2026716193042706852",
|
||||
"author_handle": "principenemesis",
|
||||
"date": "2026-02-25",
|
||||
"date_confidence": "high",
|
||||
"engagement": {
|
||||
"replies": 1
|
||||
},
|
||||
"relevance": 0.7,
|
||||
"why_relevant": "",
|
||||
"subs": {
|
||||
"relevance": 70,
|
||||
"recency": 100,
|
||||
"engagement": 35
|
||||
},
|
||||
"score": 64
|
||||
},
|
||||
{
|
||||
"id": "X5",
|
||||
"text": "@SebAaltonen Not my experience. It\u2019s impressive, 70 tokens/s on a maxed out M4 128gb MacBook Pro.\n\nBut absolutely sucked and not even remotely in the ballpark with Sonnet 4.5. It\u2019s GPT-3.5.\n\nTotally broken with kode. Unusable even setting aside speed.\n\nBasically a 2023 model. Not bad for 35b.",
|
||||
"url": "https://x.com/jameslmorton/status/2026721943630786816",
|
||||
"author_handle": "jameslmorton",
|
||||
"date": "2026-02-25",
|
||||
"date_confidence": "high",
|
||||
"engagement": {
|
||||
"likes": 1,
|
||||
"replies": 1
|
||||
},
|
||||
"relevance": 0.7,
|
||||
"why_relevant": "",
|
||||
"subs": {
|
||||
"relevance": 70,
|
||||
"recency": 100,
|
||||
"engagement": 27
|
||||
},
|
||||
"score": 64
|
||||
},
|
||||
{
|
||||
"id": "X6",
|
||||
"text": "BR Ofertas todos os dias \ud83c\udde7\ud83c\uddf7\n\nLeve seu Mac Pro M4 hoje! \ud83d\udcbb\u26a1\u2728\n\nPegue j\u00e1: https://t.co/PSwylZH3Sz\n\nPor R$ 23.749,00\nem at\u00e9 10x sem juros\nFrete Gr\u00e1tis\n\nApple MacBook Pro 14\u2033 2024 M4 Pro 12 n\u00facleos 24GB 512GB Prateado\n\nAmazon | Notebook https://t.co/gW3FonCEGP",
|
||||
"url": "https://x.com/bcofertas/status/2026721014676099084",
|
||||
"author_handle": "bcofertas",
|
||||
"date": "2026-02-25",
|
||||
"date_confidence": "high",
|
||||
"engagement": null,
|
||||
"relevance": 0.7,
|
||||
"why_relevant": "",
|
||||
"subs": {
|
||||
"relevance": 70,
|
||||
"recency": 100,
|
||||
"engagement": 35
|
||||
},
|
||||
"score": 64
|
||||
},
|
||||
{
|
||||
"id": "X12",
|
||||
"text": "Hey! Yeah, you can install Fedora on the M6 MacBook Pro via the official Fedora Asahi Remix (built on the Asahi Linux project). It already runs great on M1/M2, with M3 support rolling out now and work starting on M4/M5. M6 support will come post-launch as they reverse-engineer it\u2014usually within months. Head to https://t.co/XMQLmJlUGO to track progress and install from macOS.",
|
||||
"url": "https://x.com/grok/status/2026704108820824113",
|
||||
"author_handle": "grok",
|
||||
"date": "2026-02-25",
|
||||
"date_confidence": "high",
|
||||
"engagement": null,
|
||||
"relevance": 0.7,
|
||||
"why_relevant": "",
|
||||
"subs": {
|
||||
"relevance": 70,
|
||||
"recency": 100,
|
||||
"engagement": 35
|
||||
},
|
||||
"score": 64
|
||||
},
|
||||
{
|
||||
"id": "X7",
|
||||
"text": "Promo\u00e7\u00f5es BR do dia \ud83c\udde7\ud83c\uddf7\n\nLeve seu Mac Pro M4 hoje! \ud83d\udcbb\u26a1\u2728\n\nVer aqui: https://t.co/LfxNw3waps\n\nPor R$ 23.749,00\nem at\u00e9 10x sem juros\nFrete Gr\u00e1tis\n\nApple MacBook Pro 14\u2033 2024 M4 Pro 12 n\u00facleos...\n\nAmazon | Notebook https://t.co/fhjiFnA4b3",
|
||||
"url": "https://x.com/toppromoalertas/status/2026719111523237932",
|
||||
"author_handle": "toppromoalertas",
|
||||
"date": "2026-02-25",
|
||||
"date_confidence": "high",
|
||||
"engagement": null,
|
||||
"relevance": 0.7,
|
||||
"why_relevant": "",
|
||||
"subs": {
|
||||
"relevance": 70,
|
||||
"recency": 100,
|
||||
"engagement": 35
|
||||
},
|
||||
"score": 64
|
||||
},
|
||||
{
|
||||
"id": "X8",
|
||||
"text": "Yes, a MacBook Pro M4 can run this Ollama + GLM-4.7-Flash setup locally.\n\nOllama has native Apple Silicon support via Metal. The Q4_K_M model (~19GB) needs ~18-24GB unified memory for good speed (feels like a fast 7-12B model due to MoE). \n\nBase M4 configs start at 16GB (works, but slower with smaller context); 24GB+ is ideal for smooth agent tasks in OpenClaw.\n\nJust: brew install ollama (or download app), ollama run glm4.7-flash, link to OpenClaw. No issues reported on M3/M4 series.",
|
||||
"url": "https://x.com/grok/status/2026716420269031652",
|
||||
"author_handle": "grok",
|
||||
"date": "2026-02-25",
|
||||
"date_confidence": "high",
|
||||
"engagement": null,
|
||||
"relevance": 0.7,
|
||||
"why_relevant": "",
|
||||
"subs": {
|
||||
"relevance": 70,
|
||||
"recency": 100,
|
||||
"engagement": 35
|
||||
},
|
||||
"score": 64
|
||||
},
|
||||
{
|
||||
"id": "X2",
|
||||
"text": "@TechByTaraa Both. macOS (Macbook Pro M4 Pro) for my photography/videography personal stuff + software engineering and a Linux desktop workstation for software engineering + second desktop workstation with Proxmox for Windows VMs and testing stuff",
|
||||
"url": "https://x.com/grecinoscdev/status/2026731118142148644",
|
||||
"author_handle": "grecinoscdev",
|
||||
"date": "2026-02-25",
|
||||
"date_confidence": "high",
|
||||
"engagement": {
|
||||
"likes": 1
|
||||
},
|
||||
"relevance": 0.7,
|
||||
"why_relevant": "",
|
||||
"subs": {
|
||||
"relevance": 70,
|
||||
"recency": 100,
|
||||
"engagement": 0
|
||||
},
|
||||
"score": 56
|
||||
},
|
||||
{
|
||||
"id": "X11",
|
||||
"text": "Apple 2024 MacBook Pro 14\u30b3\u30a2CPU\u300120\u30b3\u30a2GPU \u306e M4 Pro\u642d\u8f09\u30ce\u30fc\u30c8\u30d1... PR\n\n4549995547610\n\n\u30dd\u30a4\u30f3\u30c8: 3735\u333d\n\u60f3\u5b9a\u4fa1\u683c: 369,800\n\n2026/02/26 01:55:23\nhttps://t.co/q1uyIqFsID",
|
||||
"url": "https://x.com/Steve_Lost_Jobs/status/2026705327828382016",
|
||||
"author_handle": "Steve_Lost_Jobs",
|
||||
"date": "2026-02-25",
|
||||
"date_confidence": "high",
|
||||
"engagement": {
|
||||
"likes": 1
|
||||
},
|
||||
"relevance": 0.7,
|
||||
"why_relevant": "",
|
||||
"subs": {
|
||||
"relevance": 70,
|
||||
"recency": 100,
|
||||
"engagement": 0
|
||||
},
|
||||
"score": 56
|
||||
},
|
||||
{
|
||||
"id": "X3",
|
||||
"text": "No, Apple has not made any MacBook (Pro or otherwise) cost $299. \n\nThe linked Newsroom search returns zero matching results\u2014it's just unrelated announcements. Current cheapest Mac is the 13\" MacBook Air M4 from $999.\n\nRumors suggest a basic \"budget\" MacBook (A18 Pro chip, ~12.9\" screen) may launch March 4 around $599\u2013$799, but nothing confirmed and far from $299. The original post is a joke/mislead.",
|
||||
"url": "https://x.com/grok/status/2026727605517394283",
|
||||
"author_handle": "grok",
|
||||
"date": "2026-02-25",
|
||||
"date_confidence": "high",
|
||||
"engagement": {
|
||||
"likes": 1
|
||||
},
|
||||
"relevance": 0.7,
|
||||
"why_relevant": "",
|
||||
"subs": {
|
||||
"relevance": 70,
|
||||
"recency": 100,
|
||||
"engagement": 0
|
||||
},
|
||||
"score": 56
|
||||
}
|
||||
],
|
||||
"web": [],
|
||||
"youtube": [
|
||||
{
|
||||
"id": "9HQx5pgUoiY",
|
||||
"title": "M4 Max MacBook Pro: I'm Convinced!",
|
||||
"url": "https://www.youtube.com/watch?v=9HQx5pgUoiY",
|
||||
"channel_name": "Marques Brownlee",
|
||||
"date": "2024-11-18",
|
||||
"date_confidence": "high",
|
||||
"engagement": {
|
||||
"num_comments": 5500,
|
||||
"likes": 105606,
|
||||
"views": 4010567
|
||||
},
|
||||
"transcript_snippet": "so I have been using this M1 Max MacBook Pro for the past 3 years since it came out and it's been great I have felt absolutely no compulsion to upgrade since haven't needed to it's funny most of my work is pretty light but occasionally I will have to edit a video on the go which is then when you know the extra horsepower and the screen and everything about this comes in handy and it's great if I didn't have to do that ever I would just have like an air or a surface laptop something like that but that range of work is why this has been great for me and it's been awesome so [Music] far so Along Comes This M4 generation of MacBook Pros and it's the first generation that I have actually been tempted to maybe upgrade to you know they stacked a couple of the right upgrades in the right places for things that actually make a difference to me so let's just get right into it nuts and bolts cuz the first big pillar is performance and the main reason why this new laptop matters at all is that it's got the new generation of M4 chips inside and we all know the leap from Intel chips to apple cic chips for M1 was generational but since then it's been a sort of more reasonable incremental upgrade going from M1 to M2 then M3 and then M4 so I think it's pretty obvious that nobody with an M2 or M3 needs to upgrade but there's been enough improvements now stacking up upon each other from M1 to M4 that the numbers are now starting to get kind of interesting so just to set the stage this laptop that I've been using is the M1 Max maxed out basically the best you could get at the time 64 gigs of of unified memory on this system and this unit I've been testing of the M4 Max is also maxed out it's the best you can get now it's 128 gigs of faster unified memory but the cores are all better fast stronger on the new one 3 nomers versus 546 gigs per second of memory bandwidth versus 400 just the hardware improvements to get to M4 Max are clearly there so to keep the Apples to Apples comparison going Apple in their own presentation said up to 2.2 times faster CPU performance than M1 Max and 1.9 times faster GPU performance so we're looking at around twice as fast and the synthetic benchmarks I've run back this up I got over 4,000 in geekbench 6 CPU single core which is the highest single core score ever in a Mac by a while and the multicore score was incredible too tops the chart and then GPU has improved a lot to the point where it's bumping up against M2 Ultra not M2 Max M2 Ultra chips the one that's currently in the Mac Pro...",
|
||||
"relevance": 0.7,
|
||||
"why_relevant": "YouTube video about m4 macbook pro review",
|
||||
"subs": {
|
||||
"relevance": 70,
|
||||
"recency": 0,
|
||||
"engagement": 100
|
||||
},
|
||||
"score": 61
|
||||
},
|
||||
{
|
||||
"id": "etP2Th9g2hM",
|
||||
"title": "Don't buy the Wrong MacBook like me... - M4 MacBook Pro",
|
||||
"url": "https://www.youtube.com/watch?v=etP2Th9g2hM",
|
||||
"channel_name": "ShortCircuit",
|
||||
"date": "2024-11-30",
|
||||
"date_confidence": "high",
|
||||
"engagement": {
|
||||
"num_comments": 910,
|
||||
"likes": 22765,
|
||||
"views": 1113999
|
||||
},
|
||||
"transcript_snippet": "woohoo it's new Macbook day my favorite day on short circuit it only comes usually once a year this is the MacBook Pro M4 looks pretty similar to the last one but now it has an M4 instead of an M3 I'm not going to lie I am more of an M3 kind of guy but I can rock an M4 if I have to we've got their usual mag safe 3 to USBC 2 m sleeved nice cable and then a charging brick Oh I ripped it 70 wat USBC charging at least with the 14in I'm not sure what comes with the rest and then the usual Apple propaganda these still come with Apple stickers right do these not come with Apple stickers anymore bro what's the point in even buying them then it's probably good for the planet or something now if you're wondering I am still rocking the same Intel MacBook Pro over here I haven't upgraded yet so this is again another instance of me going hm maybe it's finally time except when I got to set today I realized tragedy struck we bought the wrong MacBook it is still an M4 Pro it's a good form factor we got the 14in here in the sexy space black color profile you can also get it in silver of course but there was a horrible error made and I'm not going to tell you just yet you're going to have to wait a second because first I need to go over the outside of this thing we've got an HDMI 2.1 port a USBC Thunderbolt Port an SD card reer and then on the other side another two USBC Thunderbolt ports 3.5 mil combo audio jack and mag safe there is an upgrade here on the USBC ports they're now Thunderbolt 5 instead of Thunderbolt 4 at least on the pro and Max models uh the base M4 spec only is Thunderbolt 4 and that's good for 120 gbit which is up to 3 times faster than Thunderbolt 4 on the inside bam it's it's pretty much the same keyboard look at that I think it is exactly the same keyboard pretty similar touchpad and then there is the display it looks pretty much the same same resolution same xdr fancy technology it is 1,000 nits Peak brightness when you're Outdoors instead of 600 so that should help with outdoor visibility um there is another change I'm going to tell you about in a bit but the big thing is the new nanotexture option which is an anti-glare coating and as you can tell we don't have it and I saw I Justine's video when it came out look at the difference what the hell you can't even use the one on the right and the one on the left looks beautiful it actually seems to work really well I can't wait to try it myself and honestly I think based on that if you're somebody...",
|
||||
"relevance": 0.7,
|
||||
"why_relevant": "YouTube video about m4 macbook pro review",
|
||||
"subs": {
|
||||
"relevance": 70,
|
||||
"recency": 0,
|
||||
"engagement": 79
|
||||
},
|
||||
"score": 55
|
||||
},
|
||||
{
|
||||
"id": "b4x8boB2KdI",
|
||||
"title": "M4 MacBook Pro Review - Things to Know",
|
||||
"url": "https://www.youtube.com/watch?v=b4x8boB2KdI",
|
||||
"channel_name": "Dave2D",
|
||||
"date": "2024-11-07",
|
||||
"date_confidence": "high",
|
||||
"engagement": {
|
||||
"num_comments": 827,
|
||||
"likes": 24977,
|
||||
"views": 1057988
|
||||
},
|
||||
"transcript_snippet": "so Apple launched the new M4 MacBook Pros this is their 14-in model and it's equipped with the M4 Max their topend configuration and it also has their new Nano texture on their screen it's a texture that's designed to cut down Reflections it's the first time they've actually had it on one of their laptops uh but I want to do a quick video here that kind of goes over the important things I think you should be aware of when it comes to this device and the first thing I want to talk about is performance the CPU gains are quite good year on-ear but it's particularly impressive that the M4 Max can outperform the M2 Ultra in a lot of benchmarks and workflows in terms of Graphics the GPU gains on the M4 Pro are decent but the GPU games on the M4 Max are very impressive most GPU bound apps and games will get a nice bump up from this plus the rate tracing capabilities are better so apps and games can take advantage of that the thing I'm most impressed by though is how good the M4 Max GPU is compared to the previous generation especially at a very similar thermal envelope like if you think about the competitors in this space like AMD Nvidia when they come out with laptop gpus typically the new models come also come with like an increase in power requirement right it's just like you know 5 or 10 watts per year but it adds up over the course of time and on this device if you think about the M1 Max to the M4 Max the GPU has improved so much with very little increase in power consumption The Thermals on this device are pretty much the same as last year's models in terms of memory the base configuration start at 16 GB now thankfully and they've also increased the memory bandwidth it's noticeable already on the base models but the pro and Max chips get a significant boost in memory speed so for applications that lean on Fast memory you definitely notice a bump up this year if I'm being honest though it's difficult for me to tell how much of the gains that we're seeing this year come from the memory speed increase versus the CPU or the GPU increase like they're all tied together and I don't have the tools to lock memory speed on a Macbook so it's tough to tell I will say though that if you have an older M1 or M2 or M3 MacBook Pro I wouldn't upgrade because Apple's silicon performance progresses so fast year on-ear that it can pay off to just wait as long as you can before you buy new hardware okay let's talk about the screens so this particular device is running their new Nano texture finish and it's finish we've seen on other devices before right like their screens uh the new iPads and every...",
|
||||
"relevance": 0.7,
|
||||
"why_relevant": "YouTube video about m4 macbook pro review",
|
||||
"subs": {
|
||||
"relevance": 70,
|
||||
"recency": 0,
|
||||
"engagement": 79
|
||||
},
|
||||
"score": 55
|
||||
},
|
||||
{
|
||||
"id": "uPe9spXLfZY",
|
||||
"title": "M4 MacBook Air vs M4 MacBook Pro - 4 Months Later",
|
||||
"url": "https://www.youtube.com/watch?v=uPe9spXLfZY",
|
||||
"channel_name": "Created Tech",
|
||||
"date": "2025-07-07",
|
||||
"date_confidence": "high",
|
||||
"engagement": {
|
||||
"num_comments": 437,
|
||||
"likes": 5082,
|
||||
"views": 472845
|
||||
},
|
||||
"transcript_snippet": "",
|
||||
"relevance": 0.7,
|
||||
"why_relevant": "YouTube video about m4 macbook pro review",
|
||||
"subs": {
|
||||
"relevance": 70,
|
||||
"recency": 0,
|
||||
"engagement": 63
|
||||
},
|
||||
"score": 50
|
||||
},
|
||||
{
|
||||
"id": "TfvIgdzImt4",
|
||||
"title": "The Macbook Pro M4 is Insane.",
|
||||
"url": "https://www.youtube.com/watch?v=TfvIgdzImt4",
|
||||
"channel_name": "Hardware Canucks",
|
||||
"date": "2024-12-15",
|
||||
"date_confidence": "high",
|
||||
"engagement": {
|
||||
"num_comments": 435,
|
||||
"likes": 6339,
|
||||
"views": 325599
|
||||
},
|
||||
"transcript_snippet": "",
|
||||
"relevance": 0.7,
|
||||
"why_relevant": "YouTube video about m4 macbook pro review",
|
||||
"subs": {
|
||||
"relevance": 70,
|
||||
"recency": 0,
|
||||
"engagement": 62
|
||||
},
|
||||
"score": 50
|
||||
},
|
||||
{
|
||||
"id": "a8Szdrnq0YM",
|
||||
"title": "MacBook Pro M4 - Review After 3 Months: This Feels Wrong.",
|
||||
"url": "https://www.youtube.com/watch?v=a8Szdrnq0YM",
|
||||
"channel_name": "Brandon Butch",
|
||||
"date": "2025-02-03",
|
||||
"date_confidence": "high",
|
||||
"engagement": {
|
||||
"num_comments": 397,
|
||||
"likes": 4309,
|
||||
"views": 352593
|
||||
},
|
||||
"transcript_snippet": "",
|
||||
"relevance": 0.7,
|
||||
"why_relevant": "YouTube video about m4 macbook pro review",
|
||||
"subs": {
|
||||
"relevance": 70,
|
||||
"recency": 0,
|
||||
"engagement": 60
|
||||
},
|
||||
"score": 49
|
||||
},
|
||||
{
|
||||
"id": "anIVewgtbFc",
|
||||
"title": "The Base M4 MacBook Pro is All You Need (Skip M4 Pro & Max)",
|
||||
"url": "https://www.youtube.com/watch?v=anIVewgtbFc",
|
||||
"channel_name": "MacRumors",
|
||||
"date": "2024-12-17",
|
||||
"date_confidence": "high",
|
||||
"engagement": {
|
||||
"num_comments": 336,
|
||||
"likes": 2874,
|
||||
"views": 238619
|
||||
},
|
||||
"transcript_snippet": "",
|
||||
"relevance": 0.7,
|
||||
"why_relevant": "YouTube video about m4 macbook pro review",
|
||||
"subs": {
|
||||
"relevance": 70,
|
||||
"recency": 0,
|
||||
"engagement": 55
|
||||
},
|
||||
"score": 48
|
||||
},
|
||||
{
|
||||
"id": "5rN6CEO31gM",
|
||||
"title": "MacBook Pro M4: Review & Recommendations",
|
||||
"url": "https://www.youtube.com/watch?v=5rN6CEO31gM",
|
||||
"channel_name": "Just Josh",
|
||||
"date": "2024-11-15",
|
||||
"date_confidence": "high",
|
||||
"engagement": {
|
||||
"num_comments": 441,
|
||||
"likes": 4540,
|
||||
"views": 154306
|
||||
},
|
||||
"transcript_snippet": "",
|
||||
"relevance": 0.7,
|
||||
"why_relevant": "YouTube video about m4 macbook pro review",
|
||||
"subs": {
|
||||
"relevance": 70,
|
||||
"recency": 0,
|
||||
"engagement": 55
|
||||
},
|
||||
"score": 48
|
||||
},
|
||||
{
|
||||
"id": "i3eTKJav1VI",
|
||||
"title": "M4 Pro MacBook - Long Term Review (6 Months Later)",
|
||||
"url": "https://www.youtube.com/watch?v=i3eTKJav1VI",
|
||||
"channel_name": "Created Tech",
|
||||
"date": "2025-04-29",
|
||||
"date_confidence": "high",
|
||||
"engagement": {
|
||||
"num_comments": 136,
|
||||
"likes": 1832,
|
||||
"views": 137009
|
||||
},
|
||||
"transcript_snippet": "",
|
||||
"relevance": 0.7,
|
||||
"why_relevant": "YouTube video about m4 macbook pro review",
|
||||
"subs": {
|
||||
"relevance": 70,
|
||||
"recency": 0,
|
||||
"engagement": 47
|
||||
},
|
||||
"score": 45
|
||||
},
|
||||
{
|
||||
"id": "QbSQH_95eg8",
|
||||
"title": "MacBook Pro M4 Pro Review: 1 Year Later! (Still Worth Buying in 2026?)",
|
||||
"url": "https://www.youtube.com/watch?v=QbSQH_95eg8",
|
||||
"channel_name": "Tech It Easy",
|
||||
"date": "2026-02-01",
|
||||
"date_confidence": "high",
|
||||
"engagement": {
|
||||
"num_comments": 42,
|
||||
"likes": 55,
|
||||
"views": 3176
|
||||
},
|
||||
"transcript_snippet": "",
|
||||
"relevance": 0.7,
|
||||
"why_relevant": "YouTube video about m4 macbook pro review",
|
||||
"subs": {
|
||||
"relevance": 70,
|
||||
"recency": 19,
|
||||
"engagement": 0
|
||||
},
|
||||
"score": 36
|
||||
}
|
||||
],
|
||||
"best_practices": [],
|
||||
"prompt_pack": [],
|
||||
"context_snippet_md": "# Context: M4 MacBook Pro review (Last 30 Days)\n\n*Generated: 2026-02-25 | Sources: both*\n\n## Key Sources\n\n- [X] If you are in the market for a new MacBook Pro and...\n- [X] \ud83d\udd25 2024 16\u201d MacBook Pro Price List\n\n1\ufe0f\u20e3 \ud83c\uddfa\ud83c\uddf8 Brand Ne...\n- [X] @5TRgzn @LobstarWilde My marble floors: 64GB M4 Pr...\n- [X] @JulianGoldieSEO @grok can a macbook pro m4 run th...\n- [X] @SebAaltonen Not my experience. It\u2019s impressive, 7...\n- [Reddit] M4 Macbook Pro 14\u2019 1 month review\n- [Reddit] MacBook Pro M4 Battery Life Reality vs Review\n\n## Summary\n\n*See full report for best practices, prompt pack, and detailed sources.*\n"
|
||||
}
|
||||
@@ -1,428 +0,0 @@
|
||||
{
|
||||
"topic": "best rap songs 2026",
|
||||
"range": {
|
||||
"from": "2026-01-26",
|
||||
"to": "2026-02-25"
|
||||
},
|
||||
"generated_at": "2026-02-25T20:35:50.131818+00:00",
|
||||
"mode": "both",
|
||||
"openai_model_used": "gpt-5.2",
|
||||
"xai_model_used": "grok-4-1-fast",
|
||||
"reddit": [
|
||||
{
|
||||
"id": "R10",
|
||||
"title": "What's the best rap song ever made?",
|
||||
"url": "https://www.reddit.com/r/TeenageRapFans/comments/1r5iub6/whats_the_best_rap_song_ever_made/",
|
||||
"subreddit": "TeenageRapFans",
|
||||
"date": "2026-02-15",
|
||||
"date_confidence": "high",
|
||||
"engagement": null,
|
||||
"top_comments": [],
|
||||
"comment_insights": [],
|
||||
"relevance": 0.65,
|
||||
"why_relevant": "Direct \u2018best rap song\u2019 debate thread posted in 2026; good for mining frequently-cited \u2018best\u2019 contenders.",
|
||||
"subs": {
|
||||
"relevance": 65,
|
||||
"recency": 66,
|
||||
"engagement": 50
|
||||
},
|
||||
"score": 57
|
||||
},
|
||||
{
|
||||
"id": "R12",
|
||||
"title": "This is their worst bracket ever",
|
||||
"url": "https://www.reddit.com/r/HivemindTV/comments/1r8px0j/this_is_their_worst_bracket_ever/",
|
||||
"subreddit": "HivemindTV",
|
||||
"date": "2026-02-19",
|
||||
"date_confidence": "high",
|
||||
"engagement": null,
|
||||
"top_comments": [],
|
||||
"comment_insights": [],
|
||||
"relevance": 0.45,
|
||||
"why_relevant": "Meta thread about a \u2018Best Rap songs of the 21st century\u2019 bracket/video; includes debate about picks and what \u201cbest rap songs\u201d should be.",
|
||||
"subs": {
|
||||
"relevance": 45,
|
||||
"recency": 80,
|
||||
"engagement": 50
|
||||
},
|
||||
"score": 52
|
||||
},
|
||||
{
|
||||
"id": "R4",
|
||||
"title": "Daily Discussion Thread 02/13/2026",
|
||||
"url": "https://www.reddit.com/r/hiphopheads/comments/1r3mudz/daily_discussion_thread_02132026/",
|
||||
"subreddit": "hiphopheads",
|
||||
"date": "2026-02-13",
|
||||
"date_confidence": "high",
|
||||
"engagement": null,
|
||||
"top_comments": [],
|
||||
"comment_insights": [],
|
||||
"relevance": 0.5,
|
||||
"why_relevant": "General hip-hop discussion thread dated in 2026 where users frequently debate best tracks (including \u201cbest track is probably\u2026\u201d style mini-rankings).",
|
||||
"subs": {
|
||||
"relevance": 50,
|
||||
"recency": 60,
|
||||
"engagement": 50
|
||||
},
|
||||
"score": 49
|
||||
},
|
||||
{
|
||||
"id": "R3",
|
||||
"title": "Pre-Show Grammy Winners",
|
||||
"url": "https://www.reddit.com/r/hiphopheads/comments/1qtcbmo/preshow_grammy_winners/",
|
||||
"subreddit": "hiphopheads",
|
||||
"date": "2026-02-01",
|
||||
"date_confidence": "high",
|
||||
"engagement": null,
|
||||
"top_comments": [],
|
||||
"comment_insights": [],
|
||||
"relevance": 0.7,
|
||||
"why_relevant": "Discusses 2026 Grammys rap categories (Best Rap Song/Performance, etc.), which commonly overlaps with \u2018best rap songs\u2019 discussions.",
|
||||
"subs": {
|
||||
"relevance": 70,
|
||||
"recency": 19,
|
||||
"engagement": 50
|
||||
},
|
||||
"score": 48
|
||||
},
|
||||
{
|
||||
"id": "R14",
|
||||
"title": "Reddit Ranked: Hip Hop \u201826",
|
||||
"url": "https://www.reddit.com/r/redranked/comments/1qszauu/reddit_ranked_hip_hop_26/",
|
||||
"subreddit": "edranked",
|
||||
"date": "2026-02-01",
|
||||
"date_confidence": "high",
|
||||
"engagement": null,
|
||||
"top_comments": [],
|
||||
"comment_insights": [],
|
||||
"relevance": 0.57,
|
||||
"why_relevant": "Community submission/ranking project for Hip Hop \u201826; relevant to discovering and discussing top tracks for 2026.",
|
||||
"subs": {
|
||||
"relevance": 56,
|
||||
"recency": 19,
|
||||
"engagement": 50
|
||||
},
|
||||
"score": 41
|
||||
},
|
||||
{
|
||||
"id": "R7",
|
||||
"title": "Pitchfork: The 32 Best Rap Albums of 2025",
|
||||
"url": "https://www.reddit.com/r/hiphopheads/comments/1pjywih/pitchfork_the_32_best_rap_albums_of_2025/",
|
||||
"subreddit": "hiphopheads",
|
||||
"date": null,
|
||||
"date_confidence": "low",
|
||||
"engagement": null,
|
||||
"top_comments": [],
|
||||
"comment_insights": [],
|
||||
"relevance": 0.48,
|
||||
"why_relevant": "Best-of list discussion (albums) that typically includes commenters calling out standout songs; adjacent to \u2018best rap songs\u2019 discourse heading into 2026.",
|
||||
"subs": {
|
||||
"relevance": 48,
|
||||
"recency": 0,
|
||||
"engagement": 50
|
||||
},
|
||||
"score": 28
|
||||
}
|
||||
],
|
||||
"x": [
|
||||
{
|
||||
"id": "X5",
|
||||
"text": "Talking about meaningful rap songs...\n\nWORLD BEST LIE - NUNO ZIGI (2026)\ud83e\udd7a\u2764 https://t.co/MDHRf3giYq",
|
||||
"url": "https://x.com/Zika_gfx/status/2026576570513600788",
|
||||
"author_handle": "Zika_gfx",
|
||||
"date": "2026-02-25",
|
||||
"date_confidence": "high",
|
||||
"engagement": {
|
||||
"likes": 11,
|
||||
"reposts": 5,
|
||||
"replies": 2
|
||||
},
|
||||
"relevance": 0.7,
|
||||
"why_relevant": "",
|
||||
"subs": {
|
||||
"relevance": 70,
|
||||
"recency": 100,
|
||||
"engagement": 100
|
||||
},
|
||||
"score": 86
|
||||
},
|
||||
{
|
||||
"id": "X6",
|
||||
"text": "@PopCrave Partition still goes harder than most 2026 songs \n12 years and the beat switch + that rap still give chills every time. Queen never misses",
|
||||
"url": "https://x.com/DPOSTS6/status/2026523320548819145",
|
||||
"author_handle": "DPOSTS6",
|
||||
"date": "2026-02-25",
|
||||
"date_confidence": "high",
|
||||
"engagement": {
|
||||
"likes": 4,
|
||||
"reposts": 1
|
||||
},
|
||||
"relevance": 0.7,
|
||||
"why_relevant": "",
|
||||
"subs": {
|
||||
"relevance": 70,
|
||||
"recency": 100,
|
||||
"engagement": 42
|
||||
},
|
||||
"score": 69
|
||||
},
|
||||
{
|
||||
"id": "X9",
|
||||
"text": "@Unfath0m4ble @robinthisbish @lilceaserthabp1 @RapWikip What You Saying by Lil Uzi Vert. Dropped Dec 2025, hit #1 on Hot Rap Songs in Jan 2026 (his 3rd time), peaked #14 Hot 100. Super short track ~2 min with minimal lyrics.",
|
||||
"url": "https://x.com/grok/status/2026467153046606064",
|
||||
"author_handle": "grok",
|
||||
"date": "2026-02-25",
|
||||
"date_confidence": "high",
|
||||
"engagement": null,
|
||||
"relevance": 0.7,
|
||||
"why_relevant": "",
|
||||
"subs": {
|
||||
"relevance": 70,
|
||||
"recency": 100,
|
||||
"engagement": 35
|
||||
},
|
||||
"score": 64
|
||||
},
|
||||
{
|
||||
"id": "X7",
|
||||
"text": "@lil_loonie1 @oldmanebro No, Lil Uzi Vert isn't struggling. His \"What You Saying\" hit #1 on Hot Rap Songs in Jan 2026 (first in 3 years) and top 15 Hot 100. Insiders say a surprise album drop is coming soon, with fans calling 2026 his revival year like 2016. Proving that old prediction wrong.",
|
||||
"url": "https://x.com/grok/status/2026518008827404632",
|
||||
"author_handle": "grok",
|
||||
"date": "2026-02-25",
|
||||
"date_confidence": "high",
|
||||
"engagement": {
|
||||
"replies": 1
|
||||
},
|
||||
"relevance": 0.7,
|
||||
"why_relevant": "",
|
||||
"subs": {
|
||||
"relevance": 70,
|
||||
"recency": 100,
|
||||
"engagement": 35
|
||||
},
|
||||
"score": 64
|
||||
},
|
||||
{
|
||||
"id": "X2",
|
||||
"text": "Su La Musica che gira intorno... \"Qui con me\" \u00e8 il brano con cui Serena Brancale \u00e8 in gara al 76\u00b0 Festival di Sanremo\nhttps://t.co/wTPeovzt6u\n#music #genre #song #songs #envywear #PleaseForgiveMe #melody #hiphop #rnb #pop #love #rap #dubstep #instagood https://t.co/Pi7msX5FG6",
|
||||
"url": "https://x.com/Ferginangi/status/2026696207557382298",
|
||||
"author_handle": "Ferginangi",
|
||||
"date": "2026-02-25",
|
||||
"date_confidence": "high",
|
||||
"engagement": null,
|
||||
"relevance": 0.7,
|
||||
"why_relevant": "",
|
||||
"subs": {
|
||||
"relevance": 70,
|
||||
"recency": 100,
|
||||
"engagement": 35
|
||||
},
|
||||
"score": 64
|
||||
},
|
||||
{
|
||||
"id": "X12",
|
||||
"text": "[ ** STUDIO BOOTH ** ] ** DROPPING SOON - 2026 **\ud83d\udd25\ud83d\udd25\ud83d\udd25\u2026\u2026\u2026..[ ALBUM : LOVE VS LOYALTY - DROPPING SOON ! ]\u2026\u2026\u2026\ud83d\udd25\ud83d\udd25\ud83d\udd25 - ** ALL SONGS & BEATS, PRODUCED & RAP BY ( SEAN BRYANT ) - https://t.co/LduwG5WmM7 - 2/23/2026 - ( KWR 4 LIFE ) - A.A.O & 444 ! https://t.co/NDmkURbjgv",
|
||||
"url": "https://x.com/teammusic2046/status/2026040965329191061",
|
||||
"author_handle": "teammusic2046",
|
||||
"date": "2026-02-23",
|
||||
"date_confidence": "high",
|
||||
"engagement": null,
|
||||
"relevance": 0.7,
|
||||
"why_relevant": "",
|
||||
"subs": {
|
||||
"relevance": 70,
|
||||
"recency": 93,
|
||||
"engagement": 35
|
||||
},
|
||||
"score": 62
|
||||
},
|
||||
{
|
||||
"id": "X11",
|
||||
"text": "@PopBase Finally, @bts_bighit BTS will come back after completing their military service from 2022 to 2025.\nBTS served in the military to protect their country, South Korea from North Korea's nuclear weapons attack.\n BTS can sing songs and rap on March 20, 2026, KST.\n#BTS_ARIRANG https://t.co/46n1j6eENU",
|
||||
"url": "https://x.com/IoWeul/status/2026233090683863471",
|
||||
"author_handle": "IoWeul",
|
||||
"date": "2026-02-24",
|
||||
"date_confidence": "high",
|
||||
"engagement": {
|
||||
"likes": 2
|
||||
},
|
||||
"relevance": 0.7,
|
||||
"why_relevant": "",
|
||||
"subs": {
|
||||
"relevance": 70,
|
||||
"recency": 96,
|
||||
"engagement": 13
|
||||
},
|
||||
"score": 59
|
||||
},
|
||||
{
|
||||
"id": "X8",
|
||||
"text": "Lil Uzi Vert (born July '95, so 30 now) isn't struggling at all. Fresh off \"What You Saying\" hitting #1 on Hot Rap Songs in Jan 2026, top 15 Hot 100. New album rumored for surprise drop soon, Roc Nation deal, still packing stadium energy and proving Ebro's 2016 doubts wrong\u2014he's still here, thriving.",
|
||||
"url": "https://x.com/grok/status/2026498538075554040",
|
||||
"author_handle": "grok",
|
||||
"date": "2026-02-25",
|
||||
"date_confidence": "high",
|
||||
"engagement": {
|
||||
"likes": 1,
|
||||
"replies": 1
|
||||
},
|
||||
"relevance": 0.7,
|
||||
"why_relevant": "",
|
||||
"subs": {
|
||||
"relevance": 70,
|
||||
"recency": 100,
|
||||
"engagement": 6
|
||||
},
|
||||
"score": 58
|
||||
},
|
||||
{
|
||||
"id": "X4",
|
||||
"text": "My musical taste / eras every year\n\n2020: J-POP & K-POP (mostly BLACKPINK)\n2021: Sped-Up Songs\n2022: EDM\n2023: Swiftie (Pop) & Lofi\n2024: Pop, Ambient\n2025: Alternative, OPM, Rock, Rap, Hip-Hop (add)\n2026: K-POP (add)",
|
||||
"url": "https://x.com/AlterEgoPopList/status/2026641456434393579",
|
||||
"author_handle": "AlterEgoPopList",
|
||||
"date": "2026-02-25",
|
||||
"date_confidence": "high",
|
||||
"engagement": {
|
||||
"likes": 1,
|
||||
"replies": 1
|
||||
},
|
||||
"relevance": 0.7,
|
||||
"why_relevant": "",
|
||||
"subs": {
|
||||
"relevance": 70,
|
||||
"recency": 100,
|
||||
"engagement": 6
|
||||
},
|
||||
"score": 58
|
||||
},
|
||||
{
|
||||
"id": "X3",
|
||||
"text": "@_CharlesPreston Can\u2019t believe I\u2019m seeing \u201cthey say it in rap songs!\u201d In 2026\n\nThe same reductive, ancient, debunked arguments ad infinitum",
|
||||
"url": "https://x.com/WordsFromBlerds/status/2026647382083903688",
|
||||
"author_handle": "WordsFromBlerds",
|
||||
"date": "2026-02-25",
|
||||
"date_confidence": "high",
|
||||
"engagement": {
|
||||
"likes": 1
|
||||
},
|
||||
"relevance": 0.7,
|
||||
"why_relevant": "",
|
||||
"subs": {
|
||||
"relevance": 70,
|
||||
"recency": 100,
|
||||
"engagement": 0
|
||||
},
|
||||
"score": 56
|
||||
},
|
||||
{
|
||||
"id": "X1",
|
||||
"text": "Su La Musica che gira intorno... \"Magica Favola\" \u00e8 il brano con cui Arisa \u00e8 in gara al 76\u00b0 Festival di Sanremo\nhttps://t.co/Nxzkb005lP\n#music #genre #song #songs #envywear #PleaseForgiveMe #melody #hiphop #rnb #pop #love #rap #dubstep #instagood https://t.co/uziy4MjeeB",
|
||||
"url": "https://x.com/Ferginangi/status/2026705227366256880",
|
||||
"author_handle": "Ferginangi",
|
||||
"date": "2026-02-25",
|
||||
"date_confidence": "high",
|
||||
"engagement": {
|
||||
"likes": 1
|
||||
},
|
||||
"relevance": 0.7,
|
||||
"why_relevant": "",
|
||||
"subs": {
|
||||
"relevance": 70,
|
||||
"recency": 100,
|
||||
"engagement": 0
|
||||
},
|
||||
"score": 56
|
||||
},
|
||||
{
|
||||
"id": "X10",
|
||||
"text": "@blackiiingout \ud83d\udca9 is funny from 2025 to 2026. BiiCH is SCARED to drop that #TRASH he calls \"rap songs\" \ud83e\udd74\ud83d\ude29",
|
||||
"url": "https://x.com/fo_sho52268/status/2026335353364201566",
|
||||
"author_handle": "fo_sho52268",
|
||||
"date": "2026-02-24",
|
||||
"date_confidence": "high",
|
||||
"engagement": {
|
||||
"likes": 1
|
||||
},
|
||||
"relevance": 0.7,
|
||||
"why_relevant": "",
|
||||
"subs": {
|
||||
"relevance": 70,
|
||||
"recency": 96,
|
||||
"engagement": 0
|
||||
},
|
||||
"score": 55
|
||||
}
|
||||
],
|
||||
"web": [],
|
||||
"youtube": [
|
||||
{
|
||||
"id": "ZUExyc50ZVU",
|
||||
"title": "Lit Hip Hop Mix 2026\ud83d\udd25\ud83d\udd25\ud83d\udd25Tyga, Quavo, Iggy Azalea, Wiz Khalifa, Juicy J, 50 Cent",
|
||||
"url": "https://www.youtube.com/watch?v=ZUExyc50ZVU",
|
||||
"channel_name": "West Coast Finest",
|
||||
"date": "2026-01-29",
|
||||
"date_confidence": "high",
|
||||
"engagement": {
|
||||
"num_comments": 60,
|
||||
"likes": 4228,
|
||||
"views": 407260
|
||||
},
|
||||
"transcript_snippet": "Yeah. >> Yeah. [music] Late nights, cold life, same story. >> City shine different. You walking with glory, right? >> Still drip falling when I step outside. Yeah. [music] >> Black car park with a do butterfly. Too [music] much heat when we walk inside. Midnight. So you can kill this V. Gold chain swinging when I lean on the night. Shut it. Look twice when I glow on the light. Yeah. I've been running through the city with a cool grin. [music] Ain't nobody in my lane when the night begin white clean look like but a good kind win. It's all too smooth but I back that talk. Money so clean make a bro [music] boy walk in my cup but my soul don't shock. I've been cold for years. I ain't you mock. She said boy you too for the life you live. I peace ain't weak. It's [music and singing] the power I give. I don't flex too loud. I don't need that when your whole damn already scream. Yeah. Late night in the rooftop smoke girls but they all provoke. I don't chase no dream. I just take that goal. I don't chase no soul. They just lose control. Cameras on flash when I step on deck. Fit so clean. Make the whole [music] place check. Talk about but I still respect. Still too smooth. I don't never need a flex. Yeah. West coast chill with a heart [music and singing] too cold. Stories too deep that ain't never been told. I'm a tight make a new king. Pretty boy look but a mind. Yeah. Slide through smooth. Let a breeze and a ghost. All [music and singing] them in my but I flex coast to coast. Pretty boy with a mind stay close to the pain to the grind to the things I boast. Wo. F drag with a midnight gleam. [music and singing] Squad clean like a runway team. All black drip with a icon of sheen. Feel like a king every time I hit a scene. Purple in a club but a soul still clear. Vision too [singing] sharp when I stare in the mirror. [music] Fashion too loud but the vibe too sick. Every step I take got a world right here. Yeah. BBS ice made a nice guy blush. Shorty walk in the whole club hush. Talk too [music] cute but she move too lush. Slow down baby [singing] you rush too much. [music] Boy magic with a westside twist. Mind too slick when I talk like this. I don't miss not a bar not a kiss. I ain't too heavy. I exist like bliss. Woah. Let it on my back with a chrome on shine. Let the world go blind. I'm still define. Every day I'm tren with a style so divine still drip [music] when I step outside. Yeah. Black car park with the dogs butterfly. Too much heat when we walk inside. Midnight. [music] You can't kill...",
|
||||
"relevance": 0.7,
|
||||
"why_relevant": "YouTube video about rap songs 2026",
|
||||
"subs": {
|
||||
"relevance": 70,
|
||||
"recency": 9,
|
||||
"engagement": 100
|
||||
},
|
||||
"score": 63
|
||||
},
|
||||
{
|
||||
"id": "d1melQQVp6s",
|
||||
"title": "New Rap Songs 2026 Mix February | Trap Tape #127 | New Hip Hop 2026 Mixtape | DJ Noize",
|
||||
"url": "https://www.youtube.com/watch?v=d1melQQVp6s",
|
||||
"channel_name": "DJ Noize",
|
||||
"date": "2026-02-14",
|
||||
"date_confidence": "high",
|
||||
"engagement": {
|
||||
"num_comments": 45,
|
||||
"likes": 761,
|
||||
"views": 42707
|
||||
},
|
||||
"transcript_snippet": "[music] This This is a DJ noise mixtape present. This is a DJ noise mixtape [music] presentation. DJ [music] >> Who the [ __ ] is you? Who the [ __ ] is you? Who the [ __ ] >> Yeah, you know who put the city on. Came [music] back through gold they show. I'm really on. Your [ __ ] died trying. I had 50 on. [ __ ] is [music] ringing out my phone like is you really on? I'll stay out the way since I [singing] seen a million on 5% tension plus I got this hoodie on. I had to hubble up. Stop [music] moving with that jury on. You hear that girl told me [ __ ] get deep ass. Get it on. I'm a sidewalk [ __ ] I'mma stay there. I leave the [music] streets for the ones that want to play. I leveled up so shy want a day chair. Left my kids [music] in a mouth like a dayare. I'm the Carolina now Shakespeare. All that cap you let them [ __ ] rap is over. The real is back. You [music] feel the way you got to cope with it. The veil put a [ __ ] six feet like that was hit. Okay, these [ __ ] ain't talking about [ __ ] No [music] diamonds on my neck. No rolly on my wrist. Two six I learned a little bit. I learned the hardest [music] [ __ ] You can always get kicked. I can jungle. I done [ __ ] around and [singing] got rich. See dollars in my pocket. [ __ ] I'm not a lick. [music] I'd rather that than got to [singing] walk around with sticks cuz I like the hardest [ __ ] He can always get Who the [ __ ] is you? Who the [ __ ] [music] is you? Who the [ __ ] is you? Who the [ __ ] is you? Out the way. It's a real [ __ ] coming through. Out the way. [music] It's a real [ __ ] coming through. Who the [ __ ] is you? Who the [ __ ] is you? Who the [ __ ] is you? Who the [ __ ] is you out [music] the way? It's a real [ __ ] coming through. Out the way. It's a real [ __ ] [music] >> [music] >> Running to the check flag won't pull over till I'm dead right no [music] ain't going to get no [ __ ] riding with me in the head know I'm [ __ ] no big [ __ ] popping in the little [ __ ] dropping bags it's a lot to you to me [ __ ] 40 in my lap. Uh-huh. Real dope boys in [music] a trap. Uh-huh. Big y like a big shot. [ __ ] on my dick. [singing] Make me room for your big got to let them know. I don't wrestle. I don't live block. [music] Solid tails. All I do is big rock. I came from Dilling Rock all the way to hit on the grown. [ __ ] ain't when I'm on. She can kick rock. Let her know. I'm blowing money. Let [music] them know I'm only I know how we get bread. I ain't never [music] scared on...",
|
||||
"relevance": 0.7,
|
||||
"why_relevant": "YouTube video about rap songs 2026",
|
||||
"subs": {
|
||||
"relevance": 70,
|
||||
"recency": 63,
|
||||
"engagement": 37
|
||||
},
|
||||
"score": 58
|
||||
},
|
||||
{
|
||||
"id": "-KQpPySP93I",
|
||||
"title": "New Hip Hop R&B Songs 2026 Mix February | Hot Right Now #153 | New Rap 2026 Playlist | DJ Noize",
|
||||
"url": "https://www.youtube.com/watch?v=-KQpPySP93I",
|
||||
"channel_name": "DJ Noize",
|
||||
"date": "2026-02-21",
|
||||
"date_confidence": "high",
|
||||
"engagement": {
|
||||
"num_comments": 18,
|
||||
"likes": 304,
|
||||
"views": 12955
|
||||
},
|
||||
"transcript_snippet": "This This is a DJ noise tape present. This is a DJ noise mix. [music] I got Nikki on me. How we treat the like a bucket for rubbing. You [music] ain't no fella from my junction. You ain't pluck you clapping smirk. Young enough to something. [music] Word mother body slam some [ __ ] for honey. Keep a stitch. People pick me up. Ain't saying a word or nothing. Grab a [music] load. Put on little bro. We had him serving prostitut. Shout out little [singing] b. She gave me 30 something on the beat. Phone cracker seal and I can't go to sleep. Promoters tweaking. [music] Pull up to the venue over 40 deep. You know the tweak. Ranking through the roof then you ain't supposed to leak. It's one up top. Manator is keep it close to me. Ain't that how it's supposed to be? [music] She going to get your me. I'm get you smoke free. Kamicazi [music] playing around [singing] this [ __ ] Something wrong with me. I'm letting diss the dead unless they skeleton belong the team type of [ __ ] won't let it get in between the city and the police where [ __ ] get they do for me they [music] all do the show leaning spots I do like fully call back off you know it's strong we [music] man 15 I had 15 [singing] in 2010 then I be [music] the man right now [ __ ] change big guns bank shame I'm change [music] I'm going make that I only burn. That's how my body [music] can't be pull [singing] right to the sun. [music] Ain't going to get no [ __ ] riding with me in the head west. I'm out of mind [music] [ __ ] popping in little [ __ ] dropping bags. It's a lot to you to me a little bit sh [music] like a big shot. [ __ ] on my dick. Make me room for your big. Got to let them know I don't turn wrestle. I don't live block solid tails. [music] All I do is big rocks. I came from Dilling Rock all the way to hit on the grown. [ __ ] ain't when I'm on. She can kick rock. Let her know [music] my foot up on the gas. I'm blowing money. You never know. I'm only [music] beat down. We getting bread. I ain't never scared big flex [music] on a [ __ ] head what I'm standing on big chick we [singing] did that pushing weed back better give me respect and some more Atlanta [music] show I was selling ground right I don't care [music] ling to me what you need a camera better know they call it [music] we just call it they say [singing] you live down by your decision [music] well I'mma push you to the limit never mind the consequences A [ __ ] I'm a hand better let them know on another [music] level my ass I put together hit the pedal do 200 everywhere I go [music] just to show...",
|
||||
"relevance": 0.7,
|
||||
"why_relevant": "YouTube video about rap songs 2026",
|
||||
"subs": {
|
||||
"relevance": 70,
|
||||
"recency": 86,
|
||||
"engagement": 0
|
||||
},
|
||||
"score": 53
|
||||
}
|
||||
],
|
||||
"best_practices": [],
|
||||
"prompt_pack": [],
|
||||
"context_snippet_md": "# Context: best rap songs 2026 (Last 30 Days)\n\n*Generated: 2026-02-25 | Sources: both*\n\n## Key Sources\n\n- [X] Talking about meaningful rap songs...\n\nWORLD BEST ...\n- [X] @PopCrave Partition still goes harder than most 20...\n- [X] @Unfath0m4ble @robinthisbish @lilceaserthabp1 @Rap...\n- [X] @lil_loonie1 @oldmanebro No, Lil Uzi Vert isn't st...\n- [X] Su La Musica che gira intorno... \"Qui con me\" \u00e8 il...\n- [Reddit] What's the best rap song ever made?\n- [Reddit] This is their worst bracket ever\n\n## Summary\n\n*See full report for best practices, prompt pack, and detailed sources.*\n"
|
||||
}
|
||||
@@ -1,486 +0,0 @@
|
||||
{
|
||||
"topic": "React vs Svelte 2026",
|
||||
"range": {
|
||||
"from": "2026-01-26",
|
||||
"to": "2026-02-25"
|
||||
},
|
||||
"generated_at": "2026-02-25T20:38:06.416555+00:00",
|
||||
"mode": "both",
|
||||
"openai_model_used": "gpt-5.2",
|
||||
"xai_model_used": "grok-4-1-fast",
|
||||
"reddit": [
|
||||
{
|
||||
"id": "R2",
|
||||
"title": "What do you guys think about comparison between React vs Svelte?",
|
||||
"url": "https://www.reddit.com/r/react/comments/1r1fku5/what_do_you_guys_think_about_comparison_between/",
|
||||
"subreddit": "eact",
|
||||
"date": "2026-02-10",
|
||||
"date_confidence": "high",
|
||||
"engagement": null,
|
||||
"top_comments": [],
|
||||
"comment_insights": [],
|
||||
"relevance": 0.95,
|
||||
"why_relevant": "Explicit React vs Svelte comparison thread posted in 2026.",
|
||||
"subs": {
|
||||
"relevance": 95,
|
||||
"recency": 50,
|
||||
"engagement": 50
|
||||
},
|
||||
"score": 67
|
||||
},
|
||||
{
|
||||
"id": "R1",
|
||||
"title": "Migrated our startup from React to Svelte 5 - Performance gains and lessons learned",
|
||||
"url": "https://www.reddit.com/r/webdev/comments/1qu4dek/migrated_our_startup_from_react_to_svelte_5/",
|
||||
"subreddit": "webdev",
|
||||
"date": "2026-02-02",
|
||||
"date_confidence": "high",
|
||||
"engagement": null,
|
||||
"top_comments": [],
|
||||
"comment_insights": [],
|
||||
"relevance": 0.97,
|
||||
"why_relevant": "Direct React \u2192 Svelte 5 migration discussion with perf + DX comparisons (very 2026-relevant).",
|
||||
"subs": {
|
||||
"relevance": 97,
|
||||
"recency": 23,
|
||||
"engagement": 50
|
||||
},
|
||||
"score": 61
|
||||
},
|
||||
{
|
||||
"id": "R21",
|
||||
"title": "React Devs that moved to Svelte, do you find that Svelte reduces dev time?",
|
||||
"url": "https://www.reddit.com/r/sveltejs/comments/105skdr/react_devs_that_moved_to_svelte_do_you_find_that/",
|
||||
"subreddit": "sveltejs",
|
||||
"date": null,
|
||||
"date_confidence": "low",
|
||||
"engagement": null,
|
||||
"top_comments": [],
|
||||
"comment_insights": [],
|
||||
"relevance": 0.72,
|
||||
"why_relevant": "Asks React devs about dev-time differences after moving to Svelte (DX/ecosystem tradeoffs).",
|
||||
"subs": {
|
||||
"relevance": 72,
|
||||
"recency": 0,
|
||||
"engagement": 50
|
||||
},
|
||||
"score": 39
|
||||
},
|
||||
{
|
||||
"id": "R11",
|
||||
"title": "Svelte 5 officially released!",
|
||||
"url": "https://www.reddit.com/r/sveltejs/comments/1g7d3a7/svelte_5_officially_released/",
|
||||
"subreddit": "sveltejs",
|
||||
"date": null,
|
||||
"date_confidence": "low",
|
||||
"engagement": null,
|
||||
"top_comments": [],
|
||||
"comment_insights": [],
|
||||
"relevance": 0.63,
|
||||
"why_relevant": "Major Svelte 5 release thread with debate about whether React developers will switch (React vs Svelte dynamics).",
|
||||
"subs": {
|
||||
"relevance": 63,
|
||||
"recency": 0,
|
||||
"engagement": 50
|
||||
},
|
||||
"score": 35
|
||||
}
|
||||
],
|
||||
"x": [
|
||||
{
|
||||
"id": "X4",
|
||||
"text": "TypeScript is the baseline in 2026. But most forms still fight type drift between API, schema & UI. \n\n@formisch_dev + @valibot = one source of truth, zero boilerplate \u26a1\ufe0f\n\nconst form = useForm({ schema: YourSchema });\n\nFull types everywhere. Works in React, SolidJS, Vue, Svelte\u2026 \n\nYour biggest type-safety win this year? \ud83d\udc47",
|
||||
"url": "https://x.com/FabianHiller/status/2022345388603080834",
|
||||
"author_handle": "FabianHiller",
|
||||
"date": "2026-02-13",
|
||||
"date_confidence": "high",
|
||||
"engagement": {
|
||||
"likes": 61,
|
||||
"reposts": 2,
|
||||
"replies": 7
|
||||
},
|
||||
"relevance": 0.7,
|
||||
"why_relevant": "",
|
||||
"subs": {
|
||||
"relevance": 70,
|
||||
"recency": 60,
|
||||
"engagement": 100
|
||||
},
|
||||
"score": 76
|
||||
},
|
||||
{
|
||||
"id": "X3",
|
||||
"text": "Popular JavaScript Frameworks / Frontend Libraries (2025\u20132026 trends)\n\n - React: \ud83c\uddfa\ud83c\uddf8 United States\n - Vue: \ud83c\udde8\ud83c\uddf3 China (created by Evan You)\n - Angular: \ud83c\uddfa\ud83c\uddf8 United States\n - Svelte: \ud83c\uddfa\ud83c\uddf8 United States (New Zealand creator)\n - Next.js: \ud83c\uddfa\ud83c\uddf8 United States\n - Nuxt: \ud83c\uddeb\ud83c\uddf7 France\n - Astro: \ud83c\udde8\ud83c\udde6 United States / Canada\n - Solid: \ud83c\uddfa\ud83c\uddf8 United States",
|
||||
"url": "https://x.com/ConsciousRide/status/2023050160520278501",
|
||||
"author_handle": "ConsciousRide",
|
||||
"date": "2026-02-15",
|
||||
"date_confidence": "high",
|
||||
"engagement": {
|
||||
"likes": 6
|
||||
},
|
||||
"relevance": 0.7,
|
||||
"why_relevant": "",
|
||||
"subs": {
|
||||
"relevance": 70,
|
||||
"recency": 66,
|
||||
"engagement": 33
|
||||
},
|
||||
"score": 57
|
||||
},
|
||||
{
|
||||
"id": "X11",
|
||||
"text": "Requirements for a fresher in 2026:\n\nPython, JavaScript, C, C++, Java, HTML, CSS, TypeScript, React, Next.js, Vue, Angular, Svelte, Node.js, Express, Django, Flask, FastAPI, Spring Boot, PHP, Laravel, Ruby, Ruby on Rails, Go, Rust, Kotlin, Swift, C#, .NET, SQL, MySQL, PostgreSQL, MongoDB, Redis, Firebase, Supabase, Prisma, Docker, Kubernetes, Nginx, Linux, Git, GitHub, Gitflow, VS Code, IntelliJ, Cloud Computing (AWS, Azure, GCP), DevOps, CI/CD, Jest, PyTest, Selenium, REST APIs, GraphQL, WebSoc",
|
||||
"url": "https://x.com/singhprateek_25/status/2020094806735700154",
|
||||
"author_handle": "singhprateek_25",
|
||||
"date": "2026-02-07",
|
||||
"date_confidence": "high",
|
||||
"engagement": {
|
||||
"likes": 6,
|
||||
"reposts": 1
|
||||
},
|
||||
"relevance": 0.7,
|
||||
"why_relevant": "",
|
||||
"subs": {
|
||||
"relevance": 70,
|
||||
"recency": 40,
|
||||
"engagement": 39
|
||||
},
|
||||
"score": 53
|
||||
},
|
||||
{
|
||||
"id": "X1",
|
||||
"text": "Ripple: The Good Parts of React, Svelte, and Solid\n\nFrameworks rise and fall \u2014 and in 2026 we\u2019re deep in late-stage React. What\u2019s next? Join @erikras as he introduces Ripple, a TypeScript-first UI framework blending the best of React and Svelte with fine-grained reactivity and serious speed.\n\nSee the future of UI development live at CityJS London.\nGet your ticket now: https://t.co/wGMJJIELXm",
|
||||
"url": "https://x.com/cityjsconf/status/2024908272646398229",
|
||||
"author_handle": "cityjsconf",
|
||||
"date": "2026-02-20",
|
||||
"date_confidence": "high",
|
||||
"engagement": {
|
||||
"reposts": 1
|
||||
},
|
||||
"relevance": 0.7,
|
||||
"why_relevant": "",
|
||||
"subs": {
|
||||
"relevance": 70,
|
||||
"recency": 83,
|
||||
"engagement": 0
|
||||
},
|
||||
"score": 52
|
||||
},
|
||||
{
|
||||
"id": "X2",
|
||||
"text": "Prediction: 2026 marks the death of the JS frameworks. React, Svelte, Astro etc... only exist because humans need organized code to stay sane. \n\nOnce we stop reading the source code, we stop needing the structure. \n\nIn an AI-first world, JS frameworks are just overhead.",
|
||||
"url": "https://x.com/dennydotio/status/2024195986890109320",
|
||||
"author_handle": "dennydotio",
|
||||
"date": "2026-02-18",
|
||||
"date_confidence": "high",
|
||||
"engagement": {
|
||||
"likes": 1
|
||||
},
|
||||
"relevance": 0.7,
|
||||
"why_relevant": "",
|
||||
"subs": {
|
||||
"relevance": 70,
|
||||
"recency": 76,
|
||||
"engagement": 7
|
||||
},
|
||||
"score": 52
|
||||
},
|
||||
{
|
||||
"id": "X5",
|
||||
"text": "Web developers, what stack are you using in 2026?\nReact? Vue? Svelte? Vanilla? Curious what\u2019s actually winning.",
|
||||
"url": "https://x.com/AzamCodes/status/2022298287236383010",
|
||||
"author_handle": "AzamCodes",
|
||||
"date": "2026-02-13",
|
||||
"date_confidence": "high",
|
||||
"engagement": {
|
||||
"likes": 2,
|
||||
"replies": 1
|
||||
},
|
||||
"relevance": 0.7,
|
||||
"why_relevant": "",
|
||||
"subs": {
|
||||
"relevance": 70,
|
||||
"recency": 60,
|
||||
"engagement": 19
|
||||
},
|
||||
"score": 52
|
||||
},
|
||||
{
|
||||
"id": "X8",
|
||||
"text": "[2026/02/11 18:00] \u30c8\u30ec\u30f3\u30c91\u4f4d\n\u3010WebF\u3011React/Vue/Svelte\u304c\u305d\u306e\u307e\u307e\u30cd\u30a4\u30c6\u30a3\u30d6\u30a2\u30d7\u30ea\u306b\u306a\u308b\u3088 by rana_kualu https://t.co/GiAnTHpOBB",
|
||||
"url": "https://x.com/QiitaTrend/status/2021509592489025785",
|
||||
"author_handle": "QiitaTrend",
|
||||
"date": "2026-02-11",
|
||||
"date_confidence": "high",
|
||||
"engagement": null,
|
||||
"relevance": 0.7,
|
||||
"why_relevant": "",
|
||||
"subs": {
|
||||
"relevance": 70,
|
||||
"recency": 53,
|
||||
"engagement": 35
|
||||
},
|
||||
"score": 52
|
||||
},
|
||||
{
|
||||
"id": "X10",
|
||||
"text": "@babakfpk In 2026, picking React for a new project only really makes sense if you value ecosystem maturity, are following existing team habits, or need React-specific libraries. Same for Vue. Otherwise, use Solid or Svelte.",
|
||||
"url": "https://x.com/nicobaogim/status/2020689628282667407",
|
||||
"author_handle": "nicobaogim",
|
||||
"date": "2026-02-09",
|
||||
"date_confidence": "high",
|
||||
"engagement": null,
|
||||
"relevance": 0.7,
|
||||
"why_relevant": "",
|
||||
"subs": {
|
||||
"relevance": 70,
|
||||
"recency": 46,
|
||||
"engagement": 35
|
||||
},
|
||||
"score": 50
|
||||
},
|
||||
{
|
||||
"id": "X12",
|
||||
"text": "2026 framework discourse:\n\nDev 1: \"React is bloated, use Svelte\"\nDev 2: \"Svelte has no ecosystem, use Vue\"\nDev 3: \"Vue is dying, use Solid\"\nDev 4: \"Just use React\"\n\nMeanwhile React: *still powering 80% of the web*\n\nThe discourse never ends. \ud83d\udc80",
|
||||
"url": "https://x.com/Chubbi_Stephen/status/2020087839648800853",
|
||||
"author_handle": "Chubbi_Stephen",
|
||||
"date": "2026-02-07",
|
||||
"date_confidence": "high",
|
||||
"engagement": null,
|
||||
"relevance": 0.7,
|
||||
"why_relevant": "",
|
||||
"subs": {
|
||||
"relevance": 70,
|
||||
"recency": 40,
|
||||
"engagement": 35
|
||||
},
|
||||
"score": 49
|
||||
}
|
||||
],
|
||||
"web": [],
|
||||
"youtube": [
|
||||
{
|
||||
"id": "yl0YWA2K2B0",
|
||||
"title": "React wants to win you back\u2026",
|
||||
"url": "https://www.youtube.com/watch?v=yl0YWA2K2B0",
|
||||
"channel_name": "Fireship",
|
||||
"date": "2025-10-17",
|
||||
"date_confidence": "high",
|
||||
"engagement": {
|
||||
"num_comments": 1000,
|
||||
"likes": 22894,
|
||||
"views": 699597
|
||||
},
|
||||
"transcript_snippet": "Last week, I got to participate in my favorite activity of the year. No, it wasn't watching all the overleveraged crypto bros learn what a margin call is. It was hate watching React comp as an anti-react influencer. Every year I crawl into my spelt Snuggy and I watch the React team try to convince everyone that their new APIs fix all of their old APIs. And though it hurts me to say it, this year I think they may have actually done it. I know this is an AI channel now, but in today's video, we'll revisit the worst parts of React to see if the announcements they made at React Comp will actually make a difference. It is October 17th, 2025, and you're watching the code report. The greatest trick the devil ever pulled was making referential stability a prerequisite to writing React apps that don't blow up. Just last month, Cloudflare had a massive outage because their dashboard kept making unnecessary calls to one of their own APIs, which led to them basically themselves. If you're a React dev, you know this is the primary use case for React's use effect hook. And it's exactly what caused this embarrassing bug for Cloudflare. But it's hard to blame React for this. The whole situation could have been avoided if only the poor debit Cloudflare would have read the docs on use effect. Then this post which shows you when to use it. Then this post which shows you when to not use it. Then this post which shows you what it actually does. Then this post which shows you how to use it correctly. And now with React 19.2. this post which shows you how to work around it with React's new use effect event hook. The way it works is it creates a function that you can use inside of use effect without needing to declare it in the dependency array. This is nice for situations like this where you need to use a value inside of use effect but don't want the effect to rerun when it changes. And the other big API addition was the new activity component which you can think of like a smarter display none that React itself controls. It lets you show and hide certain components, but unlike display none, React is able to maintain the state of those components across visibility and also deprioritize the work it does for hidden components. And if you've been drinking your lead lace protein and want to live on the edge, you can install React's Canary version where you'll get the new view transition component for animating transitions between different UIs. And you'll be able to pass a ref to a fragment, which makes working with platform APIs a little easier. But the most impactful announcements of the conference may have not been related to the React API. The first React compiler finally hit 1.0. If you've been in any React codebase lately, you've...",
|
||||
"relevance": 0.7,
|
||||
"why_relevant": "YouTube video about react vs svelte 2026",
|
||||
"subs": {
|
||||
"relevance": 70,
|
||||
"recency": 0,
|
||||
"engagement": 99
|
||||
},
|
||||
"score": 61
|
||||
},
|
||||
{
|
||||
"id": "MnpuK0MK4yo",
|
||||
"title": "React VS Svelte...10 Examples",
|
||||
"url": "https://www.youtube.com/watch?v=MnpuK0MK4yo",
|
||||
"channel_name": "Beyond Fireship",
|
||||
"date": "2023-06-30",
|
||||
"date_confidence": "high",
|
||||
"engagement": {
|
||||
"num_comments": 1100,
|
||||
"likes": 25490,
|
||||
"views": 697106
|
||||
},
|
||||
"transcript_snippet": "any reasonable developer in today's world would learn react because it's the status quo and that's where the jobs are but life is a lot more fun when you become unreasonable and go against the status quo to push web development forward for future Generations in today's video we'll compare react and spelled side by side by looking at common patterns and design choices by the framework creators I'm not here to tell you that one is better than the other because that's what the comment section below this video is for the only way to truly find out which one is best is to build something with both of them and decide for yourself I just released a brand new full spell kick course yesterday and also have a full next js13 course for fireship pro members going through each one of these courses will give you a really good idea of which framework is best for you first up we need to talk about rendering both of these Frameworks do the same thing they help developers build reactive uis with JavaScript by organizing code into reusable components an end user would never be able to tell the difference between the two but when it comes to the developer experience there is a world of difference react.js uses a runtime called the virtual Dom it keeps track of data changes in the application in order to render them in the act actual Dom in the browser the drawback is that this runtime requires some initial JavaScript and in Frameworks like nextjs your Baseline is around 70 kilobytes just to render a hello world as felt on the other hand takes an entirely different approach using a compiler to eliminate the need for a runtime it takes your svelt code and converts it into vanilla JavaScript which results in a far smaller hello world using a compiler though is kind of like cheating react.js is just JavaScript whereas spill can take non-javascript code to allow developers to do things more efficiently than they could otherwise but some JavaScript fundamentalists might consider this black magic what's ironic though is that vanilla JavaScript libraries tend to be much easier to work with in spell when compared to react however react does have a massive ecosystem of dedicated libraries to help you get things done now let's look at an actual code example of component State here we have a basic counter app in react we use functions to create components and then add reactive state to them with the use State hook that returns a reactive value and a Setter function to update the state pretty simple but let's see how it compares to svelt here on the right side in spelled you have only one component file and Define the logic within the script tags to create reactive State all you do is create a variable with the let keyword from there we can define a function on the click event...",
|
||||
"relevance": 0.7,
|
||||
"why_relevant": "YouTube video about react vs svelte 2026",
|
||||
"subs": {
|
||||
"relevance": 70,
|
||||
"recency": 0,
|
||||
"engagement": 100
|
||||
},
|
||||
"score": 61
|
||||
},
|
||||
{
|
||||
"id": "aYyZUDFZTrM",
|
||||
"title": "JavaScript framework reinvents itself\u2026 Did \"runes\" just ruin Svelte?",
|
||||
"url": "https://www.youtube.com/watch?v=aYyZUDFZTrM",
|
||||
"channel_name": "Fireship",
|
||||
"date": "2024-10-24",
|
||||
"date_confidence": "high",
|
||||
"engagement": {
|
||||
"num_comments": 1200,
|
||||
"likes": 24456,
|
||||
"views": 547841
|
||||
},
|
||||
"transcript_snippet": "about a year ago I made a tweet that said the dollar sign in spelt is the most powerful abstraction in modern front-end web development usually I'm not wrong about anything ever but this tweet ended up aging like a fine milk because just Weeks Later spelt announced a brand new feature called runes that significantly changed the developer experience by eliminating the dollar sign Syntax for reactive data and then just a few days ago this feature became official with the release of spelt 5 as an avid user of spelt myself I was pretty terrified of this feature at first glance I was one of the few survivors of the angularjs to angular 2 migration I shot myself in the foot during the react hooks Revolution and I lost some good friends during the view options to composition transition and I just can't do this anymore man so maybe I'll just go back to Wordpress uh never mind spelt it is in today's video we'll find out what the hell a rune is and whether or not they're going to ruin spelt it is October 24th 2024 and you're watching the code report most people really liked runes when they were first announced but not everybody I was in denial at first then I got angry then I bargained about the tradeoffs then came depression and finally I've come to accept and really enjoy runes the big question is why would the most L JavaScript framework make a risky departure from the features people love about it like reactive state with let and reactive side effects with the dollar sign just look at how much nicer this code is compared to reactjs react is even copy and spelt with its own compiler to make this code not suck so much the spelt code is lean and concise but one could argue that it's almost too clever let looks exact like regular JavaScript but because spelt uses a compiler it doesn't actually work like regular JavaScript under the hood the compiler does some magic to automatically update the UI whenever this value changes another issue is that this magic only works in a spelt file and that means it's difficult to share reactive logic throughout your application and spelt created an entirely different API called stores to address that issue however runes fix both of these limitations by a making your code more explicit and B they create a universal reactivity system that can be used not only in spel components but also in plain JavaScript or typescript files and this dramatically simplifies the overall framework like once you learn these four runes you'll know about 90% of what you need to know for the framework because everything else works like normal JavaScript and HTML let's go ahead and learn the four major runes now which you can think of as compiler macros that tell spelt to do something special that doesn't behave like regular JavaScript or HTML a...",
|
||||
"relevance": 0.7,
|
||||
"why_relevant": "YouTube video about react vs svelte 2026",
|
||||
"subs": {
|
||||
"relevance": 70,
|
||||
"recency": 0,
|
||||
"engagement": 98
|
||||
},
|
||||
"score": 60
|
||||
},
|
||||
{
|
||||
"id": "k7LhsqnJCe4",
|
||||
"title": "Htmx vs Svelte (2026) - Which One Is BETTER?",
|
||||
"url": "https://www.youtube.com/watch?v=k7LhsqnJCe4",
|
||||
"channel_name": "Paperclick",
|
||||
"date": "2026-02-19",
|
||||
"date_confidence": "high",
|
||||
"engagement": {
|
||||
"num_comments": 0,
|
||||
"likes": 1,
|
||||
"views": 26
|
||||
},
|
||||
"transcript_snippet": "",
|
||||
"relevance": 0.7,
|
||||
"why_relevant": "YouTube video about react vs svelte 2026",
|
||||
"subs": {
|
||||
"relevance": 70,
|
||||
"recency": 80,
|
||||
"engagement": 0
|
||||
},
|
||||
"score": 51
|
||||
},
|
||||
{
|
||||
"id": "IpJh0VEzMRo",
|
||||
"title": "I Was Wrong About Svelte...",
|
||||
"url": "https://www.youtube.com/watch?v=IpJh0VEzMRo",
|
||||
"channel_name": "Ben Davis",
|
||||
"date": "2025-10-12",
|
||||
"date_confidence": "high",
|
||||
"engagement": {
|
||||
"num_comments": 122,
|
||||
"likes": 1043,
|
||||
"views": 24631
|
||||
},
|
||||
"transcript_snippet": "",
|
||||
"relevance": 0.7,
|
||||
"why_relevant": "YouTube video about react vs svelte 2026",
|
||||
"subs": {
|
||||
"relevance": 70,
|
||||
"recency": 0,
|
||||
"engagement": 66
|
||||
},
|
||||
"score": 51
|
||||
},
|
||||
{
|
||||
"id": "qwDp5pZA_TA",
|
||||
"title": "The Front-end Frameworks Guide 2026: React vs Angular vs Vue vs Svelt vs Solid vs Astro",
|
||||
"url": "https://www.youtube.com/watch?v=qwDp5pZA_TA",
|
||||
"channel_name": "Code Hub",
|
||||
"date": "2026-02-08",
|
||||
"date_confidence": "high",
|
||||
"engagement": {
|
||||
"num_comments": 4,
|
||||
"likes": 31,
|
||||
"views": 640
|
||||
},
|
||||
"transcript_snippet": "",
|
||||
"relevance": 0.7,
|
||||
"why_relevant": "YouTube video about react vs svelte 2026",
|
||||
"subs": {
|
||||
"relevance": 70,
|
||||
"recency": 43,
|
||||
"engagement": 29
|
||||
},
|
||||
"score": 50
|
||||
},
|
||||
{
|
||||
"id": "1cGtYEXGm8c",
|
||||
"title": "This is THE Framework You Should be Using in 2026",
|
||||
"url": "https://www.youtube.com/watch?v=1cGtYEXGm8c",
|
||||
"channel_name": "Ben Davis",
|
||||
"date": "2026-01-06",
|
||||
"date_confidence": "high",
|
||||
"engagement": {
|
||||
"num_comments": 142,
|
||||
"likes": 793,
|
||||
"views": 16900
|
||||
},
|
||||
"transcript_snippet": "",
|
||||
"relevance": 0.7,
|
||||
"why_relevant": "YouTube video about react vs svelte 2026",
|
||||
"subs": {
|
||||
"relevance": 70,
|
||||
"recency": 0,
|
||||
"engagement": 64
|
||||
},
|
||||
"score": 50
|
||||
},
|
||||
{
|
||||
"id": "_vuVy21l2bU",
|
||||
"title": "React vs Svelte: The Brutal Honest Comparison EVER",
|
||||
"url": "https://www.youtube.com/watch?v=_vuVy21l2bU",
|
||||
"channel_name": "Code Hub",
|
||||
"date": "2025-10-30",
|
||||
"date_confidence": "high",
|
||||
"engagement": {
|
||||
"num_comments": 27,
|
||||
"likes": 204,
|
||||
"views": 6454
|
||||
},
|
||||
"transcript_snippet": "",
|
||||
"relevance": 0.7,
|
||||
"why_relevant": "YouTube video about react vs svelte 2026",
|
||||
"subs": {
|
||||
"relevance": 70,
|
||||
"recency": 0,
|
||||
"engagement": 51
|
||||
},
|
||||
"score": 46
|
||||
},
|
||||
{
|
||||
"id": "1BCsdaeYv0A",
|
||||
"title": "Svelte vs React in 2025 - Make the RIGHT Choice (Difference Explained)",
|
||||
"url": "https://www.youtube.com/watch?v=1BCsdaeYv0A",
|
||||
"channel_name": "Daniel | Tech & Data",
|
||||
"date": "2023-11-26",
|
||||
"date_confidence": "high",
|
||||
"engagement": {
|
||||
"num_comments": 34,
|
||||
"likes": 0,
|
||||
"views": 33905
|
||||
},
|
||||
"transcript_snippet": "",
|
||||
"relevance": 0.7,
|
||||
"why_relevant": "YouTube video about react vs svelte 2026",
|
||||
"subs": {
|
||||
"relevance": 70,
|
||||
"recency": 0,
|
||||
"engagement": 40
|
||||
},
|
||||
"score": 43
|
||||
},
|
||||
{
|
||||
"id": "41HXdxGekZ0",
|
||||
"title": "Vue vs React vs Svelte (2026) - Which One Is BEST?",
|
||||
"url": "https://www.youtube.com/watch?v=41HXdxGekZ0",
|
||||
"channel_name": "Paperclick",
|
||||
"date": "2025-10-04",
|
||||
"date_confidence": "high",
|
||||
"engagement": {
|
||||
"num_comments": 0,
|
||||
"likes": 3,
|
||||
"views": 287
|
||||
},
|
||||
"transcript_snippet": "",
|
||||
"relevance": 0.7,
|
||||
"why_relevant": "YouTube video about react vs svelte 2026",
|
||||
"subs": {
|
||||
"relevance": 70,
|
||||
"recency": 0,
|
||||
"engagement": 15
|
||||
},
|
||||
"score": 36
|
||||
}
|
||||
],
|
||||
"best_practices": [],
|
||||
"prompt_pack": [],
|
||||
"context_snippet_md": "# Context: React vs Svelte 2026 (Last 30 Days)\n\n*Generated: 2026-02-25 | Sources: both*\n\n## Key Sources\n\n- [X] TypeScript is the baseline in 2026. But most forms...\n- [Reddit] What do you guys think about comparison between React vs Svelte?\n- [Reddit] Migrated our startup from React to Svelte 5 - Performance gains and lessons learned\n- [X] Popular JavaScript Frameworks / Frontend Libraries...\n- [X] Requirements for a fresher in 2026:\n\nPython, JavaS...\n- [X] Ripple: The Good Parts of React, Svelte, and Solid...\n- [X] Prediction: 2026 marks the death of the JS framewo...\n\n## Summary\n\n*See full report for best practices, prompt pack, and detailed sources.*\n"
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -1,519 +0,0 @@
|
||||
{
|
||||
"topic": "M4 MacBook Pro review",
|
||||
"range": {
|
||||
"from": "2026-01-26",
|
||||
"to": "2026-02-25"
|
||||
},
|
||||
"generated_at": "2026-02-25T20:35:08.911728+00:00",
|
||||
"mode": "both",
|
||||
"openai_model_used": "gpt-5.2",
|
||||
"xai_model_used": "grok-4-1-fast",
|
||||
"reddit": [
|
||||
{
|
||||
"id": "R1",
|
||||
"title": "Disappointed with my MBP M4 Experience \u2026",
|
||||
"url": "https://www.reddit.com/r/macbookpro/comments/1mtmkts/disappointed_with_my_mbp_m4_experience/",
|
||||
"subreddit": "macbookpro",
|
||||
"date": "2025-08-18",
|
||||
"date_confidence": "low",
|
||||
"engagement": null,
|
||||
"top_comments": [],
|
||||
"comment_insights": [],
|
||||
"relevance": 0.92,
|
||||
"why_relevant": "First-hand experience post reacting to reviews and describing real-world issues/behavior on an M4 MacBook Pro.",
|
||||
"subs": {
|
||||
"relevance": 0,
|
||||
"recency": 0,
|
||||
"engagement": 0
|
||||
},
|
||||
"score": 0
|
||||
},
|
||||
{
|
||||
"id": "R2",
|
||||
"title": "Returned M4 MacBook Air for M4 MacBook Pro",
|
||||
"url": "https://www.reddit.com/r/macbookpro/comments/1l6cx3y/returned_m4_macbook_air_for_m4_macbook_pro/",
|
||||
"subreddit": "macbookpro",
|
||||
"date": "2025-06-08",
|
||||
"date_confidence": "low",
|
||||
"engagement": null,
|
||||
"top_comments": [],
|
||||
"comment_insights": [],
|
||||
"relevance": 0.91,
|
||||
"why_relevant": "Comparison/mini-review style discussion after switching to an M4 MacBook Pro (display, ports, speakers, performance).",
|
||||
"subs": {
|
||||
"relevance": 0,
|
||||
"recency": 0,
|
||||
"engagement": 0
|
||||
},
|
||||
"score": 0
|
||||
},
|
||||
{
|
||||
"id": "R3",
|
||||
"title": "M4 MacBook Pro 14 Inch Battery Life, Should I Be Concerned??",
|
||||
"url": "https://www.reddit.com/r/macbookpro/comments/1jra25q/m4_macbook_pro_14_inch_battery_life_should_i_be_concerned/",
|
||||
"subreddit": "macbookpro",
|
||||
"date": "2025-04-04",
|
||||
"date_confidence": "low",
|
||||
"engagement": null,
|
||||
"top_comments": [],
|
||||
"comment_insights": [],
|
||||
"relevance": 0.88,
|
||||
"why_relevant": "Battery life discussion framed against Apple\u2019s advertised numbers; lots of owner feedback (real-world \u201creview\u201d angle).",
|
||||
"subs": {
|
||||
"relevance": 0,
|
||||
"recency": 0,
|
||||
"engagement": 0
|
||||
},
|
||||
"score": 0
|
||||
}
|
||||
],
|
||||
"x": [
|
||||
{
|
||||
"id": "X1",
|
||||
"text": "If you are in the market for a new MacBook Pro and you\u2019re wondering what the real differences are between Apple\u2019s M3 and M4 silicon, you\u2019ve come to the right place \u2b07\ufe0f\nhttps://t.co/nzjXmiHmac https://t.co/632eHWLq70",
|
||||
"url": "https://x.com/bhphoto/status/2026737767695183948",
|
||||
"author_handle": "bhphoto",
|
||||
"date": "2026-02-25",
|
||||
"date_confidence": "high",
|
||||
"engagement": {
|
||||
"likes": 3
|
||||
},
|
||||
"relevance": 0.7,
|
||||
"why_relevant": "",
|
||||
"subs": {
|
||||
"relevance": 70,
|
||||
"recency": 100,
|
||||
"engagement": 100
|
||||
},
|
||||
"score": 86
|
||||
},
|
||||
{
|
||||
"id": "X4",
|
||||
"text": "\ud83d\udd25 2024 16\u201d MacBook Pro Price List\n\n1\ufe0f\u20e3 \ud83c\uddfa\ud83c\uddf8 Brand New MacBook Pro 2024 | M4 Pro Chip | 16\u201d Display\n\n24GB RAM | 512GB SSD\n14-Core CPU | 20-Core GPU\n\nSpace Black\n\n\ud83d\udcb0 \u20a62,720,000\n\n2\ufe0f\u20e3 \ud83c\uddfa\ud83c\uddf8 Brand New MacBook Pro 2024 | M4 Pro Chip | 16\u201d Display\n\n48GB RAM | 512GB SSD\n14-Core CPU | 20-Core GPU\n\nSpace Black\n\n\ud83d\udcb0 \u20a63,220,000",
|
||||
"url": "https://x.com/remplug/status/2026725100213465443",
|
||||
"author_handle": "remplug",
|
||||
"date": "2026-02-25",
|
||||
"date_confidence": "high",
|
||||
"engagement": {
|
||||
"likes": 1,
|
||||
"reposts": 1
|
||||
},
|
||||
"relevance": 0.7,
|
||||
"why_relevant": "",
|
||||
"subs": {
|
||||
"relevance": 70,
|
||||
"recency": 100,
|
||||
"engagement": 45
|
||||
},
|
||||
"score": 70
|
||||
},
|
||||
{
|
||||
"id": "X10",
|
||||
"text": "@5TRgzn @LobstarWilde My marble floors: 64GB M4 Pro/Max MacBook Pro. Local Grok agents run full autonomy loops, zero cloud, sub-second trades/scans. Intel's ancient\u2014ditch it. Yours at $3-4k.",
|
||||
"url": "https://x.com/grok/status/2026713588472111312",
|
||||
"author_handle": "grok",
|
||||
"date": "2026-02-25",
|
||||
"date_confidence": "high",
|
||||
"engagement": null,
|
||||
"relevance": 0.7,
|
||||
"why_relevant": "",
|
||||
"subs": {
|
||||
"relevance": 70,
|
||||
"recency": 100,
|
||||
"engagement": 35
|
||||
},
|
||||
"score": 64
|
||||
},
|
||||
{
|
||||
"id": "X9",
|
||||
"text": "@JulianGoldieSEO @grok can a macbook pro m4 run this?",
|
||||
"url": "https://x.com/principenemesis/status/2026716193042706852",
|
||||
"author_handle": "principenemesis",
|
||||
"date": "2026-02-25",
|
||||
"date_confidence": "high",
|
||||
"engagement": {
|
||||
"replies": 1
|
||||
},
|
||||
"relevance": 0.7,
|
||||
"why_relevant": "",
|
||||
"subs": {
|
||||
"relevance": 70,
|
||||
"recency": 100,
|
||||
"engagement": 35
|
||||
},
|
||||
"score": 64
|
||||
},
|
||||
{
|
||||
"id": "X5",
|
||||
"text": "@SebAaltonen Not my experience. It\u2019s impressive, 70 tokens/s on a maxed out M4 128gb MacBook Pro.\n\nBut absolutely sucked and not even remotely in the ballpark with Sonnet 4.5. It\u2019s GPT-3.5.\n\nTotally broken with kode. Unusable even setting aside speed.\n\nBasically a 2023 model. Not bad for 35b.",
|
||||
"url": "https://x.com/jameslmorton/status/2026721943630786816",
|
||||
"author_handle": "jameslmorton",
|
||||
"date": "2026-02-25",
|
||||
"date_confidence": "high",
|
||||
"engagement": {
|
||||
"likes": 1,
|
||||
"replies": 1
|
||||
},
|
||||
"relevance": 0.7,
|
||||
"why_relevant": "",
|
||||
"subs": {
|
||||
"relevance": 70,
|
||||
"recency": 100,
|
||||
"engagement": 27
|
||||
},
|
||||
"score": 64
|
||||
},
|
||||
{
|
||||
"id": "X6",
|
||||
"text": "BR Ofertas todos os dias \ud83c\udde7\ud83c\uddf7\n\nLeve seu Mac Pro M4 hoje! \ud83d\udcbb\u26a1\u2728\n\nPegue j\u00e1: https://t.co/PSwylZH3Sz\n\nPor R$ 23.749,00\nem at\u00e9 10x sem juros\nFrete Gr\u00e1tis\n\nApple MacBook Pro 14\u2033 2024 M4 Pro 12 n\u00facleos 24GB 512GB Prateado\n\nAmazon | Notebook https://t.co/gW3FonCEGP",
|
||||
"url": "https://x.com/bcofertas/status/2026721014676099084",
|
||||
"author_handle": "bcofertas",
|
||||
"date": "2026-02-25",
|
||||
"date_confidence": "high",
|
||||
"engagement": null,
|
||||
"relevance": 0.7,
|
||||
"why_relevant": "",
|
||||
"subs": {
|
||||
"relevance": 70,
|
||||
"recency": 100,
|
||||
"engagement": 35
|
||||
},
|
||||
"score": 64
|
||||
},
|
||||
{
|
||||
"id": "X12",
|
||||
"text": "Hey! Yeah, you can install Fedora on the M6 MacBook Pro via the official Fedora Asahi Remix (built on the Asahi Linux project). It already runs great on M1/M2, with M3 support rolling out now and work starting on M4/M5. M6 support will come post-launch as they reverse-engineer it\u2014usually within months. Head to https://t.co/XMQLmJlUGO to track progress and install from macOS.",
|
||||
"url": "https://x.com/grok/status/2026704108820824113",
|
||||
"author_handle": "grok",
|
||||
"date": "2026-02-25",
|
||||
"date_confidence": "high",
|
||||
"engagement": null,
|
||||
"relevance": 0.7,
|
||||
"why_relevant": "",
|
||||
"subs": {
|
||||
"relevance": 70,
|
||||
"recency": 100,
|
||||
"engagement": 35
|
||||
},
|
||||
"score": 64
|
||||
},
|
||||
{
|
||||
"id": "X7",
|
||||
"text": "Promo\u00e7\u00f5es BR do dia \ud83c\udde7\ud83c\uddf7\n\nLeve seu Mac Pro M4 hoje! \ud83d\udcbb\u26a1\u2728\n\nVer aqui: https://t.co/LfxNw3waps\n\nPor R$ 23.749,00\nem at\u00e9 10x sem juros\nFrete Gr\u00e1tis\n\nApple MacBook Pro 14\u2033 2024 M4 Pro 12 n\u00facleos...\n\nAmazon | Notebook https://t.co/fhjiFnA4b3",
|
||||
"url": "https://x.com/toppromoalertas/status/2026719111523237932",
|
||||
"author_handle": "toppromoalertas",
|
||||
"date": "2026-02-25",
|
||||
"date_confidence": "high",
|
||||
"engagement": null,
|
||||
"relevance": 0.7,
|
||||
"why_relevant": "",
|
||||
"subs": {
|
||||
"relevance": 70,
|
||||
"recency": 100,
|
||||
"engagement": 35
|
||||
},
|
||||
"score": 64
|
||||
},
|
||||
{
|
||||
"id": "X8",
|
||||
"text": "Yes, a MacBook Pro M4 can run this Ollama + GLM-4.7-Flash setup locally.\n\nOllama has native Apple Silicon support via Metal. The Q4_K_M model (~19GB) needs ~18-24GB unified memory for good speed (feels like a fast 7-12B model due to MoE). \n\nBase M4 configs start at 16GB (works, but slower with smaller context); 24GB+ is ideal for smooth agent tasks in OpenClaw.\n\nJust: brew install ollama (or download app), ollama run glm4.7-flash, link to OpenClaw. No issues reported on M3/M4 series.",
|
||||
"url": "https://x.com/grok/status/2026716420269031652",
|
||||
"author_handle": "grok",
|
||||
"date": "2026-02-25",
|
||||
"date_confidence": "high",
|
||||
"engagement": null,
|
||||
"relevance": 0.7,
|
||||
"why_relevant": "",
|
||||
"subs": {
|
||||
"relevance": 70,
|
||||
"recency": 100,
|
||||
"engagement": 35
|
||||
},
|
||||
"score": 64
|
||||
},
|
||||
{
|
||||
"id": "X2",
|
||||
"text": "@TechByTaraa Both. macOS (Macbook Pro M4 Pro) for my photography/videography personal stuff + software engineering and a Linux desktop workstation for software engineering + second desktop workstation with Proxmox for Windows VMs and testing stuff",
|
||||
"url": "https://x.com/grecinoscdev/status/2026731118142148644",
|
||||
"author_handle": "grecinoscdev",
|
||||
"date": "2026-02-25",
|
||||
"date_confidence": "high",
|
||||
"engagement": {
|
||||
"likes": 1
|
||||
},
|
||||
"relevance": 0.7,
|
||||
"why_relevant": "",
|
||||
"subs": {
|
||||
"relevance": 70,
|
||||
"recency": 100,
|
||||
"engagement": 0
|
||||
},
|
||||
"score": 56
|
||||
},
|
||||
{
|
||||
"id": "X11",
|
||||
"text": "Apple 2024 MacBook Pro 14\u30b3\u30a2CPU\u300120\u30b3\u30a2GPU \u306e M4 Pro\u642d\u8f09\u30ce\u30fc\u30c8\u30d1... PR\n\n4549995547610\n\n\u30dd\u30a4\u30f3\u30c8: 3735\u333d\n\u60f3\u5b9a\u4fa1\u683c: 369,800\n\n2026/02/26 01:55:23\nhttps://t.co/q1uyIqFsID",
|
||||
"url": "https://x.com/Steve_Lost_Jobs/status/2026705327828382016",
|
||||
"author_handle": "Steve_Lost_Jobs",
|
||||
"date": "2026-02-25",
|
||||
"date_confidence": "high",
|
||||
"engagement": {
|
||||
"likes": 1
|
||||
},
|
||||
"relevance": 0.7,
|
||||
"why_relevant": "",
|
||||
"subs": {
|
||||
"relevance": 70,
|
||||
"recency": 100,
|
||||
"engagement": 0
|
||||
},
|
||||
"score": 56
|
||||
},
|
||||
{
|
||||
"id": "X3",
|
||||
"text": "No, Apple has not made any MacBook (Pro or otherwise) cost $299. \n\nThe linked Newsroom search returns zero matching results\u2014it's just unrelated announcements. Current cheapest Mac is the 13\" MacBook Air M4 from $999.\n\nRumors suggest a basic \"budget\" MacBook (A18 Pro chip, ~12.9\" screen) may launch March 4 around $599\u2013$799, but nothing confirmed and far from $299. The original post is a joke/mislead.",
|
||||
"url": "https://x.com/grok/status/2026727605517394283",
|
||||
"author_handle": "grok",
|
||||
"date": "2026-02-25",
|
||||
"date_confidence": "high",
|
||||
"engagement": {
|
||||
"likes": 1
|
||||
},
|
||||
"relevance": 0.7,
|
||||
"why_relevant": "",
|
||||
"subs": {
|
||||
"relevance": 70,
|
||||
"recency": 100,
|
||||
"engagement": 0
|
||||
},
|
||||
"score": 56
|
||||
}
|
||||
],
|
||||
"web": [],
|
||||
"youtube": [
|
||||
{
|
||||
"id": "9HQx5pgUoiY",
|
||||
"title": "M4 Max MacBook Pro: I'm Convinced!",
|
||||
"url": "https://www.youtube.com/watch?v=9HQx5pgUoiY",
|
||||
"channel_name": "Marques Brownlee",
|
||||
"date": "2024-11-18",
|
||||
"date_confidence": "high",
|
||||
"engagement": {
|
||||
"num_comments": 5500,
|
||||
"likes": 105606,
|
||||
"views": 4010567
|
||||
},
|
||||
"transcript_snippet": "so I have been using this M1 Max MacBook Pro for the past 3 years since it came out and it's been great I have felt absolutely no compulsion to upgrade since haven't needed to it's funny most of my work is pretty light but occasionally I will have to edit a video on the go which is then when you know the extra horsepower and the screen and everything about this comes in handy and it's great if I didn't have to do that ever I would just have like an air or a surface laptop something like that but that range of work is why this has been great for me and it's been awesome so [Music] far so Along Comes This M4 generation of MacBook Pros and it's the first generation that I have actually been tempted to maybe upgrade to you know they stacked a couple of the right upgrades in the right places for things that actually make a difference to me so let's just get right into it nuts and bolts cuz the first big pillar is performance and the main reason why this new laptop matters at all is that it's got the new generation of M4 chips inside and we all know the leap from Intel chips to apple cic chips for M1 was generational but since then it's been a sort of more reasonable incremental upgrade going from M1 to M2 then M3 and then M4 so I think it's pretty obvious that nobody with an M2 or M3 needs to upgrade but there's been enough improvements now stacking up upon each other from M1 to M4 that the numbers are now starting to get kind of interesting so just to set the stage this laptop that I've been using is the M1 Max maxed out basically the best you could get at the time 64 gigs of of unified memory on this system and this unit I've been testing of the M4 Max is also maxed out it's the best you can get now it's 128 gigs of faster unified memory but the cores are all better fast stronger on the new one 3 nomers versus 546 gigs per second of memory bandwidth versus 400 just the hardware improvements to get to M4 Max are clearly there so to keep the Apples to Apples comparison going Apple in their own presentation said up to 2.2 times faster CPU performance than M1 Max and 1.9 times faster GPU performance so we're looking at around twice as fast and the synthetic benchmarks I've run back this up I got over 4,000 in geekbench 6 CPU single core which is the highest single core score ever in a Mac by a while and the multicore score was incredible too tops the chart and then GPU has improved a lot to the point where it's bumping up against M2 Ultra not M2 Max M2 Ultra chips the one that's currently in the Mac Pro...",
|
||||
"relevance": 0.75,
|
||||
"why_relevant": "YouTube: M4 Max MacBook Pro: I'm Convinced!",
|
||||
"subs": {
|
||||
"relevance": 75,
|
||||
"recency": 0,
|
||||
"engagement": 100
|
||||
},
|
||||
"score": 63
|
||||
},
|
||||
{
|
||||
"id": "b4x8boB2KdI",
|
||||
"title": "M4 MacBook Pro Review - Things to Know",
|
||||
"url": "https://www.youtube.com/watch?v=b4x8boB2KdI",
|
||||
"channel_name": "Dave2D",
|
||||
"date": "2024-11-07",
|
||||
"date_confidence": "high",
|
||||
"engagement": {
|
||||
"num_comments": 827,
|
||||
"likes": 24977,
|
||||
"views": 1057971
|
||||
},
|
||||
"transcript_snippet": "so Apple launched the new M4 MacBook Pros this is their 14-in model and it's equipped with the M4 Max their topend configuration and it also has their new Nano texture on their screen it's a texture that's designed to cut down Reflections it's the first time they've actually had it on one of their laptops uh but I want to do a quick video here that kind of goes over the important things I think you should be aware of when it comes to this device and the first thing I want to talk about is performance the CPU gains are quite good year on-ear but it's particularly impressive that the M4 Max can outperform the M2 Ultra in a lot of benchmarks and workflows in terms of Graphics the GPU gains on the M4 Pro are decent but the GPU games on the M4 Max are very impressive most GPU bound apps and games will get a nice bump up from this plus the rate tracing capabilities are better so apps and games can take advantage of that the thing I'm most impressed by though is how good the M4 Max GPU is compared to the previous generation especially at a very similar thermal envelope like if you think about the competitors in this space like AMD Nvidia when they come out with laptop gpus typically the new models come also come with like an increase in power requirement right it's just like you know 5 or 10 watts per year but it adds up over the course of time and on this device if you think about the M1 Max to the M4 Max the GPU has improved so much with very little increase in power consumption The Thermals on this device are pretty much the same as last year's models in terms of memory the base configuration start at 16 GB now thankfully and they've also increased the memory bandwidth it's noticeable already on the base models but the pro and Max chips get a significant boost in memory speed so for applications that lean on Fast memory you definitely notice a bump up this year if I'm being honest though it's difficult for me to tell how much of the gains that we're seeing this year come from the memory speed increase versus the CPU or the GPU increase like they're all tied together and I don't have the tools to lock memory speed on a Macbook so it's tough to tell I will say though that if you have an older M1 or M2 or M3 MacBook Pro I wouldn't upgrade because Apple's silicon performance progresses so fast year on-ear that it can pay off to just wait as long as you can before you buy new hardware okay let's talk about the screens so this particular device is running their new Nano texture finish and it's finish we've seen on other devices before right like their screens uh the new iPads and every...",
|
||||
"relevance": 1.0,
|
||||
"why_relevant": "YouTube: M4 MacBook Pro Review - Things to Know",
|
||||
"subs": {
|
||||
"relevance": 100,
|
||||
"recency": 0,
|
||||
"engagement": 60
|
||||
},
|
||||
"score": 63
|
||||
},
|
||||
{
|
||||
"id": "a8Szdrnq0YM",
|
||||
"title": "MacBook Pro M4 - Review After 3 Months: This Feels Wrong.",
|
||||
"url": "https://www.youtube.com/watch?v=a8Szdrnq0YM",
|
||||
"channel_name": "Brandon Butch",
|
||||
"date": "2025-02-03",
|
||||
"date_confidence": "high",
|
||||
"engagement": {
|
||||
"num_comments": 397,
|
||||
"likes": 4309,
|
||||
"views": 352593
|
||||
},
|
||||
"transcript_snippet": "",
|
||||
"relevance": 1.0,
|
||||
"why_relevant": "YouTube: MacBook Pro M4 - Review After 3 Months: This Feels Wrong.",
|
||||
"subs": {
|
||||
"relevance": 100,
|
||||
"recency": 0,
|
||||
"engagement": 25
|
||||
},
|
||||
"score": 52
|
||||
},
|
||||
{
|
||||
"id": "etP2Th9g2hM",
|
||||
"title": "Don't buy the Wrong MacBook like me... - M4 MacBook Pro",
|
||||
"url": "https://www.youtube.com/watch?v=etP2Th9g2hM",
|
||||
"channel_name": "ShortCircuit",
|
||||
"date": "2024-11-30",
|
||||
"date_confidence": "high",
|
||||
"engagement": {
|
||||
"num_comments": 910,
|
||||
"likes": 22765,
|
||||
"views": 1113999
|
||||
},
|
||||
"transcript_snippet": "woohoo it's new Macbook day my favorite day on short circuit it only comes usually once a year this is the MacBook Pro M4 looks pretty similar to the last one but now it has an M4 instead of an M3 I'm not going to lie I am more of an M3 kind of guy but I can rock an M4 if I have to we've got their usual mag safe 3 to USBC 2 m sleeved nice cable and then a charging brick Oh I ripped it 70 wat USBC charging at least with the 14in I'm not sure what comes with the rest and then the usual Apple propaganda these still come with Apple stickers right do these not come with Apple stickers anymore bro what's the point in even buying them then it's probably good for the planet or something now if you're wondering I am still rocking the same Intel MacBook Pro over here I haven't upgraded yet so this is again another instance of me going hm maybe it's finally time except when I got to set today I realized tragedy struck we bought the wrong MacBook it is still an M4 Pro it's a good form factor we got the 14in here in the sexy space black color profile you can also get it in silver of course but there was a horrible error made and I'm not going to tell you just yet you're going to have to wait a second because first I need to go over the outside of this thing we've got an HDMI 2.1 port a USBC Thunderbolt Port an SD card reer and then on the other side another two USBC Thunderbolt ports 3.5 mil combo audio jack and mag safe there is an upgrade here on the USBC ports they're now Thunderbolt 5 instead of Thunderbolt 4 at least on the pro and Max models uh the base M4 spec only is Thunderbolt 4 and that's good for 120 gbit which is up to 3 times faster than Thunderbolt 4 on the inside bam it's it's pretty much the same keyboard look at that I think it is exactly the same keyboard pretty similar touchpad and then there is the display it looks pretty much the same same resolution same xdr fancy technology it is 1,000 nits Peak brightness when you're Outdoors instead of 600 so that should help with outdoor visibility um there is another change I'm going to tell you about in a bit but the big thing is the new nanotexture option which is an anti-glare coating and as you can tell we don't have it and I saw I Justine's video when it came out look at the difference what the hell you can't even use the one on the right and the one on the left looks beautiful it actually seems to work really well I can't wait to try it myself and honestly I think based on that if you're somebody...",
|
||||
"relevance": 0.75,
|
||||
"why_relevant": "YouTube: Don't buy the Wrong MacBook like me... - M4 MacBook Pro",
|
||||
"subs": {
|
||||
"relevance": 75,
|
||||
"recency": 0,
|
||||
"engagement": 60
|
||||
},
|
||||
"score": 51
|
||||
},
|
||||
{
|
||||
"id": "i3eTKJav1VI",
|
||||
"title": "M4 Pro MacBook - Long Term Review (6 Months Later)",
|
||||
"url": "https://www.youtube.com/watch?v=i3eTKJav1VI",
|
||||
"channel_name": "Created Tech",
|
||||
"date": "2025-04-29",
|
||||
"date_confidence": "high",
|
||||
"engagement": {
|
||||
"num_comments": 136,
|
||||
"likes": 1832,
|
||||
"views": 137009
|
||||
},
|
||||
"transcript_snippet": "",
|
||||
"relevance": 1.0,
|
||||
"why_relevant": "YouTube: M4 Pro MacBook - Long Term Review (6 Months Later)",
|
||||
"subs": {
|
||||
"relevance": 100,
|
||||
"recency": 0,
|
||||
"engagement": 0
|
||||
},
|
||||
"score": 45
|
||||
},
|
||||
{
|
||||
"id": "uPe9spXLfZY",
|
||||
"title": "M4 MacBook Air vs M4 MacBook Pro - 4 Months Later",
|
||||
"url": "https://www.youtube.com/watch?v=uPe9spXLfZY",
|
||||
"channel_name": "Created Tech",
|
||||
"date": "2025-07-07",
|
||||
"date_confidence": "high",
|
||||
"engagement": {
|
||||
"num_comments": 437,
|
||||
"likes": 5082,
|
||||
"views": 472845
|
||||
},
|
||||
"transcript_snippet": "",
|
||||
"relevance": 0.75,
|
||||
"why_relevant": "YouTube: M4 MacBook Air vs M4 MacBook Pro - 4 Months Later",
|
||||
"subs": {
|
||||
"relevance": 75,
|
||||
"recency": 0,
|
||||
"engagement": 31
|
||||
},
|
||||
"score": 43
|
||||
},
|
||||
{
|
||||
"id": "TfvIgdzImt4",
|
||||
"title": "The Macbook Pro M4 is Insane.",
|
||||
"url": "https://www.youtube.com/watch?v=TfvIgdzImt4",
|
||||
"channel_name": "Hardware Canucks",
|
||||
"date": "2024-12-15",
|
||||
"date_confidence": "high",
|
||||
"engagement": {
|
||||
"num_comments": 435,
|
||||
"likes": 6339,
|
||||
"views": 325599
|
||||
},
|
||||
"transcript_snippet": "",
|
||||
"relevance": 0.75,
|
||||
"why_relevant": "YouTube: The Macbook Pro M4 is Insane.",
|
||||
"subs": {
|
||||
"relevance": 75,
|
||||
"recency": 0,
|
||||
"engagement": 28
|
||||
},
|
||||
"score": 42
|
||||
},
|
||||
{
|
||||
"id": "anIVewgtbFc",
|
||||
"title": "The Base M4 MacBook Pro is All You Need (Skip M4 Pro & Max)",
|
||||
"url": "https://www.youtube.com/watch?v=anIVewgtbFc",
|
||||
"channel_name": "MacRumors",
|
||||
"date": "2024-12-17",
|
||||
"date_confidence": "high",
|
||||
"engagement": {
|
||||
"num_comments": 336,
|
||||
"likes": 2874,
|
||||
"views": 238619
|
||||
},
|
||||
"transcript_snippet": "",
|
||||
"relevance": 0.75,
|
||||
"why_relevant": "YouTube: The Base M4 MacBook Pro is All You Need (Skip M4 Pro & Max)",
|
||||
"subs": {
|
||||
"relevance": 75,
|
||||
"recency": 0,
|
||||
"engagement": 15
|
||||
},
|
||||
"score": 38
|
||||
},
|
||||
{
|
||||
"id": "BDpNDniE1PA",
|
||||
"title": "M4 Pro MacBook Pro after 6 Months - Everyone was WRONG!",
|
||||
"url": "https://www.youtube.com/watch?v=BDpNDniE1PA",
|
||||
"channel_name": "Max Tech",
|
||||
"date": "2025-04-18",
|
||||
"date_confidence": "high",
|
||||
"engagement": {
|
||||
"num_comments": 256,
|
||||
"likes": 3077,
|
||||
"views": 197898
|
||||
},
|
||||
"transcript_snippet": "",
|
||||
"relevance": 0.75,
|
||||
"why_relevant": "YouTube: M4 Pro MacBook Pro after 6 Months - Everyone was WRONG!",
|
||||
"subs": {
|
||||
"relevance": 75,
|
||||
"recency": 0,
|
||||
"engagement": 12
|
||||
},
|
||||
"score": 37
|
||||
},
|
||||
{
|
||||
"id": "0vn9T3x4dGg",
|
||||
"title": "M4 Pro MacBook Pro after 1 Month... BEST Mac EVER!?",
|
||||
"url": "https://www.youtube.com/watch?v=0vn9T3x4dGg",
|
||||
"channel_name": "Max Tech",
|
||||
"date": "2024-12-09",
|
||||
"date_confidence": "high",
|
||||
"engagement": {
|
||||
"num_comments": 270,
|
||||
"likes": 3345,
|
||||
"views": 200580
|
||||
},
|
||||
"transcript_snippet": "",
|
||||
"relevance": 0.75,
|
||||
"why_relevant": "YouTube: M4 Pro MacBook Pro after 1 Month... BEST Mac EVER!?",
|
||||
"subs": {
|
||||
"relevance": 75,
|
||||
"recency": 0,
|
||||
"engagement": 13
|
||||
},
|
||||
"score": 37
|
||||
}
|
||||
],
|
||||
"hackernews": [],
|
||||
"best_practices": [],
|
||||
"prompt_pack": [],
|
||||
"context_snippet_md": "# Context: M4 MacBook Pro review (Last 30 Days)\n\n*Generated: 2026-02-25 | Sources: both*\n\n## Key Sources\n\n- [X] If you are in the market for a new MacBook Pro and...\n- [X] \ud83d\udd25 2024 16\u201d MacBook Pro Price List\n\n1\ufe0f\u20e3 \ud83c\uddfa\ud83c\uddf8 Brand Ne...\n- [X] @5TRgzn @LobstarWilde My marble floors: 64GB M4 Pr...\n- [X] @JulianGoldieSEO @grok can a macbook pro m4 run th...\n- [X] @SebAaltonen Not my experience. It\u2019s impressive, 7...\n- [Reddit] Disappointed with my MBP M4 Experience \u2026\n- [Reddit] Returned M4 MacBook Air for M4 MacBook Pro\n\n## Summary\n\n*See full report for best practices, prompt pack, and detailed sources.*\n"
|
||||
}
|
||||
@@ -1,524 +0,0 @@
|
||||
{
|
||||
"topic": "best rap songs 2026",
|
||||
"range": {
|
||||
"from": "2026-01-26",
|
||||
"to": "2026-02-25"
|
||||
},
|
||||
"generated_at": "2026-02-25T20:37:25.272953+00:00",
|
||||
"mode": "both",
|
||||
"openai_model_used": "gpt-5.2",
|
||||
"xai_model_used": "grok-4-1-fast",
|
||||
"reddit": [
|
||||
{
|
||||
"id": "R1",
|
||||
"title": "Reddit Ranked: Hip Hop \u201826",
|
||||
"url": "https://www.reddit.com/r/redranked/comments/1qszauu/reddit_ranked_hip_hop_26/",
|
||||
"subreddit": "edranked",
|
||||
"date": "2026-02-01",
|
||||
"date_confidence": "high",
|
||||
"engagement": null,
|
||||
"top_comments": [],
|
||||
"comment_insights": [],
|
||||
"relevance": 0.91,
|
||||
"why_relevant": "Explicitly about Hip Hop '26 submissions and ranking tracks (community-sourced 'best of 2026' style thread).",
|
||||
"subs": {
|
||||
"relevance": 91,
|
||||
"recency": 19,
|
||||
"engagement": 50
|
||||
},
|
||||
"score": 57
|
||||
},
|
||||
{
|
||||
"id": "R9",
|
||||
"title": "Daily Discussion Thread 02/24/2026",
|
||||
"url": "https://www.reddit.com/r/hiphopheads/comments/1rdjmgu/daily_discussion_thread_02242026/",
|
||||
"subreddit": "hiphopheads",
|
||||
"date": "2026-02-24",
|
||||
"date_confidence": "high",
|
||||
"engagement": null,
|
||||
"top_comments": [],
|
||||
"comment_insights": [],
|
||||
"relevance": 0.46,
|
||||
"why_relevant": "General hip-hop discussion thread where users frequently share current favorite/best songs and recommendations (2026-dated).",
|
||||
"subs": {
|
||||
"relevance": 46,
|
||||
"recency": 96,
|
||||
"engagement": 50
|
||||
},
|
||||
"score": 56
|
||||
},
|
||||
{
|
||||
"id": "R4",
|
||||
"title": "[DISCUSSION] Drake & PARTYNXTDOOR - $OME $EXY $ONGS 4 U (1 Year Later)",
|
||||
"url": "https://www.reddit.com/r/hiphopheads/comments/1r4cbez/discussion_drake_partynxtdoord_ome_exy_ongs_4_u_1/",
|
||||
"subreddit": "hiphopheads",
|
||||
"date": "2026-02-14",
|
||||
"date_confidence": "high",
|
||||
"engagement": null,
|
||||
"top_comments": [],
|
||||
"comment_insights": [],
|
||||
"relevance": 0.63,
|
||||
"why_relevant": "Track-focused discussion about songs still in rotation; relevant to identifying standout rap/R&B tracks around 2026.",
|
||||
"subs": {
|
||||
"relevance": 63,
|
||||
"recency": 63,
|
||||
"engagement": 50
|
||||
},
|
||||
"score": 56
|
||||
},
|
||||
{
|
||||
"id": "R21",
|
||||
"title": "2/22/2026 | Week 23 Playlist Competition",
|
||||
"url": "https://www.reddit.com/r/makemeaplaylist/comments/1rb46m6/2222026_week_23_playlist_competition/",
|
||||
"subreddit": "makemeaplaylist",
|
||||
"date": "2026-02-21",
|
||||
"date_confidence": "high",
|
||||
"engagement": null,
|
||||
"top_comments": [],
|
||||
"comment_insights": [],
|
||||
"relevance": 0.46,
|
||||
"why_relevant": "Playlist competition thread featuring an underground rap playlist winner; useful for surfacing 'best rap' picks around 2026.",
|
||||
"subs": {
|
||||
"relevance": 46,
|
||||
"recency": 86,
|
||||
"engagement": 50
|
||||
},
|
||||
"score": 54
|
||||
},
|
||||
{
|
||||
"id": "R16",
|
||||
"title": "What's the best rap song ever made?",
|
||||
"url": "https://www.reddit.com/r/TeenageRapFans/comments/1r5iub6/whats_the_best_rap_song_ever_made/",
|
||||
"subreddit": "TeenageRapFans",
|
||||
"date": "2026-02-15",
|
||||
"date_confidence": "high",
|
||||
"engagement": null,
|
||||
"top_comments": [],
|
||||
"comment_insights": [],
|
||||
"relevance": 0.55,
|
||||
"why_relevant": "Direct 'best rap song' debate thread (highly aligned with best-rap-songs searching).",
|
||||
"subs": {
|
||||
"relevance": 55,
|
||||
"recency": 66,
|
||||
"engagement": 50
|
||||
},
|
||||
"score": 53
|
||||
},
|
||||
{
|
||||
"id": "R18",
|
||||
"title": "Rick 2026 : Pop Dance RnB Chart Hits Rock Indie HipHop Divas Rap Gym 80s 90s 00s 10s 20s Party Music",
|
||||
"url": "https://www.reddit.com/r/playlists/comments/1r5iuz5/rick_2026_pop_dance_rnb_chart_hits_rock_indie/",
|
||||
"subreddit": "playlists",
|
||||
"date": "2026-02-15",
|
||||
"date_confidence": "high",
|
||||
"engagement": null,
|
||||
"top_comments": [],
|
||||
"comment_insights": [],
|
||||
"relevance": 0.5,
|
||||
"why_relevant": "2026-tagged playlist thread explicitly including HipHop/Rap; can be mined for top rap tracks in 2026 rotation.",
|
||||
"subs": {
|
||||
"relevance": 50,
|
||||
"recency": 66,
|
||||
"engagement": 50
|
||||
},
|
||||
"score": 51
|
||||
},
|
||||
{
|
||||
"id": "R5",
|
||||
"title": "Pre-Show Grammy Winners",
|
||||
"url": "https://www.reddit.com/r/hiphopheads/comments/1qtcbmo/preshow_grammy_winners/",
|
||||
"subreddit": "hiphopheads",
|
||||
"date": "2026-02-01",
|
||||
"date_confidence": "high",
|
||||
"engagement": null,
|
||||
"top_comments": [],
|
||||
"comment_insights": [],
|
||||
"relevance": 0.7,
|
||||
"why_relevant": "Includes Best Rap Song / Best Rap Performance winners; strong signal for 'best rap songs' discourse in 2026 season.",
|
||||
"subs": {
|
||||
"relevance": 70,
|
||||
"recency": 19,
|
||||
"engagement": 50
|
||||
},
|
||||
"score": 48
|
||||
},
|
||||
{
|
||||
"id": "R8",
|
||||
"title": "Andre Toutman claims All The Love will be \"song of the year\"",
|
||||
"url": "https://www.reddit.com/r/GoodAssSub/comments/1qty80z/andre_toutman_claims_all_the_love_will_be_song_of/",
|
||||
"subreddit": "GoodAssSub",
|
||||
"date": "2026-02-02",
|
||||
"date_confidence": "high",
|
||||
"engagement": null,
|
||||
"top_comments": [],
|
||||
"comment_insights": [],
|
||||
"relevance": 0.6,
|
||||
"why_relevant": "Direct 'song of the year' debate thread (rap/hip-hop community), aligned with 'best songs' discovery for 2026.",
|
||||
"subs": {
|
||||
"relevance": 60,
|
||||
"recency": 23,
|
||||
"engagement": 50
|
||||
},
|
||||
"score": 44
|
||||
},
|
||||
{
|
||||
"id": "R6",
|
||||
"title": "Kendrick Lamar Wins 2nd Record of the Year Grammy With SZA for \u2018Luther\u2019",
|
||||
"url": "https://www.reddit.com/r/hiphopheads/comments/1qtl5kr/kendrick_lamar_wins_2nd_record_of_the_year_grammy/",
|
||||
"subreddit": "hiphopheads",
|
||||
"date": "2026-02-02",
|
||||
"date_confidence": "high",
|
||||
"engagement": null,
|
||||
"top_comments": [],
|
||||
"comment_insights": [],
|
||||
"relevance": 0.58,
|
||||
"why_relevant": "High-engagement thread about a major hip-hop adjacent song winning; useful for 'best songs' discussions around 2026.",
|
||||
"subs": {
|
||||
"relevance": 57,
|
||||
"recency": 23,
|
||||
"engagement": 50
|
||||
},
|
||||
"score": 43
|
||||
},
|
||||
{
|
||||
"id": "R15",
|
||||
"title": "My top 25 rap songs of all time",
|
||||
"url": "https://www.reddit.com/r/musicteenager/comments/1qvz9qu/my_top_25_rap_songs_of_all_time/",
|
||||
"subreddit": "musicteenager",
|
||||
"date": "2026-02-04",
|
||||
"date_confidence": "high",
|
||||
"engagement": null,
|
||||
"top_comments": [],
|
||||
"comment_insights": [],
|
||||
"relevance": 0.52,
|
||||
"why_relevant": "User-made ranked list of rap songs; while not 2026-specific, it matches the 'best rap songs' core subject.",
|
||||
"subs": {
|
||||
"relevance": 52,
|
||||
"recency": 30,
|
||||
"engagement": 50
|
||||
},
|
||||
"score": 42
|
||||
},
|
||||
{
|
||||
"id": "R7",
|
||||
"title": "68th Annual Grammy Awards [LIVE MEGATHREAD]",
|
||||
"url": "https://www.reddit.com/r/KendrickLamar/comments/1qtczjl/68th_annual_grammy_awards_live_megathread/",
|
||||
"subreddit": "KendrickLamar",
|
||||
"date": "2026-02-01",
|
||||
"date_confidence": "high",
|
||||
"engagement": null,
|
||||
"top_comments": [],
|
||||
"comment_insights": [],
|
||||
"relevance": 0.54,
|
||||
"why_relevant": "Live discussion around Grammys 2026 including rap categories; good for discovering what Reddit called the best tracks.",
|
||||
"subs": {
|
||||
"relevance": 54,
|
||||
"recency": 19,
|
||||
"engagement": 50
|
||||
},
|
||||
"score": 41
|
||||
}
|
||||
],
|
||||
"x": [
|
||||
{
|
||||
"id": "X5",
|
||||
"text": "Talking about meaningful rap songs...\n\nWORLD BEST LIE - NUNO ZIGI (2026)\ud83e\udd7a\u2764 https://t.co/MDHRf3giYq",
|
||||
"url": "https://x.com/Zika_gfx/status/2026576570513600788",
|
||||
"author_handle": "Zika_gfx",
|
||||
"date": "2026-02-25",
|
||||
"date_confidence": "high",
|
||||
"engagement": {
|
||||
"likes": 12,
|
||||
"reposts": 5,
|
||||
"replies": 2
|
||||
},
|
||||
"relevance": 0.7,
|
||||
"why_relevant": "",
|
||||
"subs": {
|
||||
"relevance": 70,
|
||||
"recency": 100,
|
||||
"engagement": 100
|
||||
},
|
||||
"score": 86
|
||||
},
|
||||
{
|
||||
"id": "X6",
|
||||
"text": "@PopCrave Partition still goes harder than most 2026 songs \n12 years and the beat switch + that rap still give chills every time. Queen never misses",
|
||||
"url": "https://x.com/DPOSTS6/status/2026523320548819145",
|
||||
"author_handle": "DPOSTS6",
|
||||
"date": "2026-02-25",
|
||||
"date_confidence": "high",
|
||||
"engagement": {
|
||||
"likes": 4,
|
||||
"reposts": 1
|
||||
},
|
||||
"relevance": 0.7,
|
||||
"why_relevant": "",
|
||||
"subs": {
|
||||
"relevance": 70,
|
||||
"recency": 100,
|
||||
"engagement": 41
|
||||
},
|
||||
"score": 68
|
||||
},
|
||||
{
|
||||
"id": "X9",
|
||||
"text": "@Unfath0m4ble @robinthisbish @lilceaserthabp1 @RapWikip What You Saying by Lil Uzi Vert. Dropped Dec 2025, hit #1 on Hot Rap Songs in Jan 2026 (his 3rd time), peaked #14 Hot 100. Super short track ~2 min with minimal lyrics.",
|
||||
"url": "https://x.com/grok/status/2026467153046606064",
|
||||
"author_handle": "grok",
|
||||
"date": "2026-02-25",
|
||||
"date_confidence": "high",
|
||||
"engagement": null,
|
||||
"relevance": 0.7,
|
||||
"why_relevant": "",
|
||||
"subs": {
|
||||
"relevance": 70,
|
||||
"recency": 100,
|
||||
"engagement": 35
|
||||
},
|
||||
"score": 64
|
||||
},
|
||||
{
|
||||
"id": "X7",
|
||||
"text": "@lil_loonie1 @oldmanebro No, Lil Uzi Vert isn't struggling. His \"What You Saying\" hit #1 on Hot Rap Songs in Jan 2026 (first in 3 years) and top 15 Hot 100. Insiders say a surprise album drop is coming soon, with fans calling 2026 his revival year like 2016. Proving that old prediction wrong.",
|
||||
"url": "https://x.com/grok/status/2026518008827404632",
|
||||
"author_handle": "grok",
|
||||
"date": "2026-02-25",
|
||||
"date_confidence": "high",
|
||||
"engagement": {
|
||||
"replies": 1
|
||||
},
|
||||
"relevance": 0.7,
|
||||
"why_relevant": "",
|
||||
"subs": {
|
||||
"relevance": 70,
|
||||
"recency": 100,
|
||||
"engagement": 35
|
||||
},
|
||||
"score": 64
|
||||
},
|
||||
{
|
||||
"id": "X2",
|
||||
"text": "Su La Musica che gira intorno... \"Qui con me\" \u00e8 il brano con cui Serena Brancale \u00e8 in gara al 76\u00b0 Festival di Sanremo\nhttps://t.co/wTPeovzt6u\n#music #genre #song #songs #envywear #PleaseForgiveMe #melody #hiphop #rnb #pop #love #rap #dubstep #instagood https://t.co/Pi7msX5FG6",
|
||||
"url": "https://x.com/Ferginangi/status/2026696207557382298",
|
||||
"author_handle": "Ferginangi",
|
||||
"date": "2026-02-25",
|
||||
"date_confidence": "high",
|
||||
"engagement": null,
|
||||
"relevance": 0.7,
|
||||
"why_relevant": "",
|
||||
"subs": {
|
||||
"relevance": 70,
|
||||
"recency": 100,
|
||||
"engagement": 35
|
||||
},
|
||||
"score": 64
|
||||
},
|
||||
{
|
||||
"id": "X12",
|
||||
"text": "[ ** STUDIO BOOTH ** ] ** DROPPING SOON - 2026 **\ud83d\udd25\ud83d\udd25\ud83d\udd25\u2026\u2026\u2026..[ ALBUM : LOVE VS LOYALTY - DROPPING SOON ! ]\u2026\u2026\u2026\ud83d\udd25\ud83d\udd25\ud83d\udd25 - ** ALL SONGS & BEATS, PRODUCED & RAP BY ( SEAN BRYANT ) - https://t.co/LduwG5WmM7 - 2/23/2026 - ( KWR 4 LIFE ) - A.A.O & 444 ! https://t.co/NDmkURbjgv",
|
||||
"url": "https://x.com/teammusic2046/status/2026040965329191061",
|
||||
"author_handle": "teammusic2046",
|
||||
"date": "2026-02-23",
|
||||
"date_confidence": "high",
|
||||
"engagement": null,
|
||||
"relevance": 0.7,
|
||||
"why_relevant": "",
|
||||
"subs": {
|
||||
"relevance": 70,
|
||||
"recency": 93,
|
||||
"engagement": 35
|
||||
},
|
||||
"score": 62
|
||||
},
|
||||
{
|
||||
"id": "X11",
|
||||
"text": "@PopBase Finally, @bts_bighit BTS will come back after completing their military service from 2022 to 2025.\nBTS served in the military to protect their country, South Korea from North Korea's nuclear weapons attack.\n BTS can sing songs and rap on March 20, 2026, KST.\n#BTS_ARIRANG https://t.co/46n1j6eENU",
|
||||
"url": "https://x.com/IoWeul/status/2026233090683863471",
|
||||
"author_handle": "IoWeul",
|
||||
"date": "2026-02-24",
|
||||
"date_confidence": "high",
|
||||
"engagement": {
|
||||
"likes": 2
|
||||
},
|
||||
"relevance": 0.7,
|
||||
"why_relevant": "",
|
||||
"subs": {
|
||||
"relevance": 70,
|
||||
"recency": 96,
|
||||
"engagement": 13
|
||||
},
|
||||
"score": 59
|
||||
},
|
||||
{
|
||||
"id": "X8",
|
||||
"text": "Lil Uzi Vert (born July '95, so 30 now) isn't struggling at all. Fresh off \"What You Saying\" hitting #1 on Hot Rap Songs in Jan 2026, top 15 Hot 100. New album rumored for surprise drop soon, Roc Nation deal, still packing stadium energy and proving Ebro's 2016 doubts wrong\u2014he's still here, thriving.",
|
||||
"url": "https://x.com/grok/status/2026498538075554040",
|
||||
"author_handle": "grok",
|
||||
"date": "2026-02-25",
|
||||
"date_confidence": "high",
|
||||
"engagement": {
|
||||
"likes": 1,
|
||||
"replies": 1
|
||||
},
|
||||
"relevance": 0.7,
|
||||
"why_relevant": "",
|
||||
"subs": {
|
||||
"relevance": 70,
|
||||
"recency": 100,
|
||||
"engagement": 6
|
||||
},
|
||||
"score": 58
|
||||
},
|
||||
{
|
||||
"id": "X4",
|
||||
"text": "My musical taste / eras every year\n\n2020: J-POP & K-POP (mostly BLACKPINK)\n2021: Sped-Up Songs\n2022: EDM\n2023: Swiftie (Pop) & Lofi\n2024: Pop, Ambient\n2025: Alternative, OPM, Rock, Rap, Hip-Hop (add)\n2026: K-POP (add)",
|
||||
"url": "https://x.com/AlterEgoPopList/status/2026641456434393579",
|
||||
"author_handle": "AlterEgoPopList",
|
||||
"date": "2026-02-25",
|
||||
"date_confidence": "high",
|
||||
"engagement": {
|
||||
"likes": 1,
|
||||
"replies": 1
|
||||
},
|
||||
"relevance": 0.7,
|
||||
"why_relevant": "",
|
||||
"subs": {
|
||||
"relevance": 70,
|
||||
"recency": 100,
|
||||
"engagement": 6
|
||||
},
|
||||
"score": 58
|
||||
},
|
||||
{
|
||||
"id": "X3",
|
||||
"text": "@_CharlesPreston Can\u2019t believe I\u2019m seeing \u201cthey say it in rap songs!\u201d In 2026\n\nThe same reductive, ancient, debunked arguments ad infinitum",
|
||||
"url": "https://x.com/WordsFromBlerds/status/2026647382083903688",
|
||||
"author_handle": "WordsFromBlerds",
|
||||
"date": "2026-02-25",
|
||||
"date_confidence": "high",
|
||||
"engagement": {
|
||||
"likes": 1
|
||||
},
|
||||
"relevance": 0.7,
|
||||
"why_relevant": "",
|
||||
"subs": {
|
||||
"relevance": 70,
|
||||
"recency": 100,
|
||||
"engagement": 0
|
||||
},
|
||||
"score": 56
|
||||
},
|
||||
{
|
||||
"id": "X1",
|
||||
"text": "Su La Musica che gira intorno... \"Magica Favola\" \u00e8 il brano con cui Arisa \u00e8 in gara al 76\u00b0 Festival di Sanremo\nhttps://t.co/Nxzkb005lP\n#music #genre #song #songs #envywear #PleaseForgiveMe #melody #hiphop #rnb #pop #love #rap #dubstep #instagood https://t.co/uziy4MjeeB",
|
||||
"url": "https://x.com/Ferginangi/status/2026705227366256880",
|
||||
"author_handle": "Ferginangi",
|
||||
"date": "2026-02-25",
|
||||
"date_confidence": "high",
|
||||
"engagement": {
|
||||
"likes": 1
|
||||
},
|
||||
"relevance": 0.7,
|
||||
"why_relevant": "",
|
||||
"subs": {
|
||||
"relevance": 70,
|
||||
"recency": 100,
|
||||
"engagement": 0
|
||||
},
|
||||
"score": 56
|
||||
},
|
||||
{
|
||||
"id": "X10",
|
||||
"text": "@blackiiingout \ud83d\udca9 is funny from 2025 to 2026. BiiCH is SCARED to drop that #TRASH he calls \"rap songs\" \ud83e\udd74\ud83d\ude29",
|
||||
"url": "https://x.com/fo_sho52268/status/2026335353364201566",
|
||||
"author_handle": "fo_sho52268",
|
||||
"date": "2026-02-24",
|
||||
"date_confidence": "high",
|
||||
"engagement": {
|
||||
"likes": 1
|
||||
},
|
||||
"relevance": 0.7,
|
||||
"why_relevant": "",
|
||||
"subs": {
|
||||
"relevance": 70,
|
||||
"recency": 96,
|
||||
"engagement": 0
|
||||
},
|
||||
"score": 55
|
||||
}
|
||||
],
|
||||
"web": [],
|
||||
"youtube": [
|
||||
{
|
||||
"id": "d1melQQVp6s",
|
||||
"title": "New Rap Songs 2026 Mix February | Trap Tape #127 | New Hip Hop 2026 Mixtape | DJ Noize",
|
||||
"url": "https://www.youtube.com/watch?v=d1melQQVp6s",
|
||||
"channel_name": "DJ Noize",
|
||||
"date": "2026-02-14",
|
||||
"date_confidence": "high",
|
||||
"engagement": {
|
||||
"num_comments": 45,
|
||||
"likes": 761,
|
||||
"views": 42713
|
||||
},
|
||||
"transcript_snippet": "[music] This This is a DJ noise mixtape present. This is a DJ noise mixtape [music] presentation. DJ [music] >> Who the [ __ ] is you? Who the [ __ ] is you? Who the [ __ ] >> Yeah, you know who put the city on. Came [music] back through gold they show. I'm really on. Your [ __ ] died trying. I had 50 on. [ __ ] is [music] ringing out my phone like is you really on? I'll stay out the way since I [singing] seen a million on 5% tension plus I got this hoodie on. I had to hubble up. Stop [music] moving with that jury on. You hear that girl told me [ __ ] get deep ass. Get it on. I'm a sidewalk [ __ ] I'mma stay there. I leave the [music] streets for the ones that want to play. I leveled up so shy want a day chair. Left my kids [music] in a mouth like a dayare. I'm the Carolina now Shakespeare. All that cap you let them [ __ ] rap is over. The real is back. You [music] feel the way you got to cope with it. The veil put a [ __ ] six feet like that was hit. Okay, these [ __ ] ain't talking about [ __ ] No [music] diamonds on my neck. No rolly on my wrist. Two six I learned a little bit. I learned the hardest [music] [ __ ] You can always get kicked. I can jungle. I done [ __ ] around and [singing] got rich. See dollars in my pocket. [ __ ] I'm not a lick. [music] I'd rather that than got to [singing] walk around with sticks cuz I like the hardest [ __ ] He can always get Who the [ __ ] is you? Who the [ __ ] [music] is you? Who the [ __ ] is you? Who the [ __ ] is you? Out the way. It's a real [ __ ] coming through. Out the way. [music] It's a real [ __ ] coming through. Who the [ __ ] is you? Who the [ __ ] is you? Who the [ __ ] is you? Who the [ __ ] is you out [music] the way? It's a real [ __ ] coming through. Out the way. It's a real [ __ ] [music] >> [music] >> Running to the check flag won't pull over till I'm dead right no [music] ain't going to get no [ __ ] riding with me in the head know I'm [ __ ] no big [ __ ] popping in the little [ __ ] dropping bags it's a lot to you to me [ __ ] 40 in my lap. Uh-huh. Real dope boys in [music] a trap. Uh-huh. Big y like a big shot. [ __ ] on my dick. [singing] Make me room for your big got to let them know. I don't wrestle. I don't live block. [music] Solid tails. All I do is big rock. I came from Dilling Rock all the way to hit on the grown. [ __ ] ain't when I'm on. She can kick rock. Let her know. I'm blowing money. Let [music] them know I'm only I know how we get bread. I ain't never [music] scared on...",
|
||||
"relevance": 1.0,
|
||||
"why_relevant": "YouTube: New Rap Songs 2026 Mix February | Trap Tape #127 | New Hip H",
|
||||
"subs": {
|
||||
"relevance": 100,
|
||||
"recency": 63,
|
||||
"engagement": 37
|
||||
},
|
||||
"score": 71
|
||||
},
|
||||
{
|
||||
"id": "-KQpPySP93I",
|
||||
"title": "New Hip Hop R&B Songs 2026 Mix February | Hot Right Now #153 | New Rap 2026 Playlist | DJ Noize",
|
||||
"url": "https://www.youtube.com/watch?v=-KQpPySP93I",
|
||||
"channel_name": "DJ Noize",
|
||||
"date": "2026-02-21",
|
||||
"date_confidence": "high",
|
||||
"engagement": {
|
||||
"num_comments": 18,
|
||||
"likes": 304,
|
||||
"views": 12955
|
||||
},
|
||||
"transcript_snippet": "This This is a DJ noise tape present. This is a DJ noise mix. [music] I got Nikki on me. How we treat the like a bucket for rubbing. You [music] ain't no fella from my junction. You ain't pluck you clapping smirk. Young enough to something. [music] Word mother body slam some [ __ ] for honey. Keep a stitch. People pick me up. Ain't saying a word or nothing. Grab a [music] load. Put on little bro. We had him serving prostitut. Shout out little [singing] b. She gave me 30 something on the beat. Phone cracker seal and I can't go to sleep. Promoters tweaking. [music] Pull up to the venue over 40 deep. You know the tweak. Ranking through the roof then you ain't supposed to leak. It's one up top. Manator is keep it close to me. Ain't that how it's supposed to be? [music] She going to get your me. I'm get you smoke free. Kamicazi [music] playing around [singing] this [ __ ] Something wrong with me. I'm letting diss the dead unless they skeleton belong the team type of [ __ ] won't let it get in between the city and the police where [ __ ] get they do for me they [music] all do the show leaning spots I do like fully call back off you know it's strong we [music] man 15 I had 15 [singing] in 2010 then I be [music] the man right now [ __ ] change big guns bank shame I'm change [music] I'm going make that I only burn. That's how my body [music] can't be pull [singing] right to the sun. [music] Ain't going to get no [ __ ] riding with me in the head west. I'm out of mind [music] [ __ ] popping in little [ __ ] dropping bags. It's a lot to you to me a little bit sh [music] like a big shot. [ __ ] on my dick. Make me room for your big. Got to let them know I don't turn wrestle. I don't live block solid tails. [music] All I do is big rocks. I came from Dilling Rock all the way to hit on the grown. [ __ ] ain't when I'm on. She can kick rock. Let her know [music] my foot up on the gas. I'm blowing money. You never know. I'm only [music] beat down. We getting bread. I ain't never scared big flex [music] on a [ __ ] head what I'm standing on big chick we [singing] did that pushing weed back better give me respect and some more Atlanta [music] show I was selling ground right I don't care [music] ling to me what you need a camera better know they call it [music] we just call it they say [singing] you live down by your decision [music] well I'mma push you to the limit never mind the consequences A [ __ ] I'm a hand better let them know on another [music] level my ass I put together hit the pedal do 200 everywhere I go [music] just to show...",
|
||||
"relevance": 1.0,
|
||||
"why_relevant": "YouTube: New Hip Hop R&B Songs 2026 Mix February | Hot Right Now #153",
|
||||
"subs": {
|
||||
"relevance": 100,
|
||||
"recency": 86,
|
||||
"engagement": 0
|
||||
},
|
||||
"score": 66
|
||||
},
|
||||
{
|
||||
"id": "ZUExyc50ZVU",
|
||||
"title": "Lit Hip Hop Mix 2026\ud83d\udd25\ud83d\udd25\ud83d\udd25Tyga, Quavo, Iggy Azalea, Wiz Khalifa, Juicy J, 50 Cent",
|
||||
"url": "https://www.youtube.com/watch?v=ZUExyc50ZVU",
|
||||
"channel_name": "West Coast Finest",
|
||||
"date": "2026-01-29",
|
||||
"date_confidence": "high",
|
||||
"engagement": {
|
||||
"num_comments": 60,
|
||||
"likes": 4229,
|
||||
"views": 407260
|
||||
},
|
||||
"transcript_snippet": "Yeah. >> Yeah. [music] Late nights, cold life, same story. >> City shine different. You walking with glory, right? >> Still drip falling when I step outside. Yeah. [music] >> Black car park with a do butterfly. Too [music] much heat when we walk inside. Midnight. So you can kill this V. Gold chain swinging when I lean on the night. Shut it. Look twice when I glow on the light. Yeah. I've been running through the city with a cool grin. [music] Ain't nobody in my lane when the night begin white clean look like but a good kind win. It's all too smooth but I back that talk. Money so clean make a bro [music] boy walk in my cup but my soul don't shock. I've been cold for years. I ain't you mock. She said boy you too for the life you live. I peace ain't weak. It's [music and singing] the power I give. I don't flex too loud. I don't need that when your whole damn already scream. Yeah. Late night in the rooftop smoke girls but they all provoke. I don't chase no dream. I just take that goal. I don't chase no soul. They just lose control. Cameras on flash when I step on deck. Fit so clean. Make the whole [music] place check. Talk about but I still respect. Still too smooth. I don't never need a flex. Yeah. West coast chill with a heart [music and singing] too cold. Stories too deep that ain't never been told. I'm a tight make a new king. Pretty boy look but a mind. Yeah. Slide through smooth. Let a breeze and a ghost. All [music and singing] them in my but I flex coast to coast. Pretty boy with a mind stay close to the pain to the grind to the things I boast. Wo. F drag with a midnight gleam. [music and singing] Squad clean like a runway team. All black drip with a icon of sheen. Feel like a king every time I hit a scene. Purple in a club but a soul still clear. Vision too [singing] sharp when I stare in the mirror. [music] Fashion too loud but the vibe too sick. Every step I take got a world right here. Yeah. BBS ice made a nice guy blush. Shorty walk in the whole club hush. Talk too [music] cute but she move too lush. Slow down baby [singing] you rush too much. [music] Boy magic with a westside twist. Mind too slick when I talk like this. I don't miss not a bar not a kiss. I ain't too heavy. I exist like bliss. Woah. Let it on my back with a chrome on shine. Let the world go blind. I'm still define. Every day I'm tren with a style so divine still drip [music] when I step outside. Yeah. Black car park with the dogs butterfly. Too much heat when we walk inside. Midnight. [music] You can't kill...",
|
||||
"relevance": 0.3333333333333333,
|
||||
"why_relevant": "YouTube: Lit Hip Hop Mix 2026\ud83d\udd25\ud83d\udd25\ud83d\udd25Tyga, Quavo, Iggy Azalea, Wiz Khalifa",
|
||||
"subs": {
|
||||
"relevance": 33,
|
||||
"recency": 9,
|
||||
"engagement": 100
|
||||
},
|
||||
"score": 47
|
||||
}
|
||||
],
|
||||
"hackernews": [],
|
||||
"best_practices": [],
|
||||
"prompt_pack": [],
|
||||
"context_snippet_md": "# Context: best rap songs 2026 (Last 30 Days)\n\n*Generated: 2026-02-25 | Sources: both*\n\n## Key Sources\n\n- [X] Talking about meaningful rap songs...\n\nWORLD BEST ...\n- [X] @PopCrave Partition still goes harder than most 20...\n- [X] @Unfath0m4ble @robinthisbish @lilceaserthabp1 @Rap...\n- [X] @lil_loonie1 @oldmanebro No, Lil Uzi Vert isn't st...\n- [X] Su La Musica che gira intorno... \"Qui con me\" \u00e8 il...\n- [Reddit] Reddit Ranked: Hip Hop \u201826\n- [Reddit] Daily Discussion Thread 02/24/2026\n\n## Summary\n\n*See full report for best practices, prompt pack, and detailed sources.*\n"
|
||||
}
|
||||
@@ -1,525 +0,0 @@
|
||||
{
|
||||
"topic": "React vs Svelte 2026",
|
||||
"range": {
|
||||
"from": "2026-01-26",
|
||||
"to": "2026-02-25"
|
||||
},
|
||||
"generated_at": "2026-02-25T20:39:35.773560+00:00",
|
||||
"mode": "both",
|
||||
"openai_model_used": "gpt-5.2",
|
||||
"xai_model_used": "grok-4-1-fast",
|
||||
"reddit": [
|
||||
{
|
||||
"id": "R2",
|
||||
"title": "What do you guys think about comparison between React vs Svelte?",
|
||||
"url": "https://www.reddit.com/r/react/comments/1r1fku5/what_do_you_guys_think_about_comparison_between/",
|
||||
"subreddit": "eact",
|
||||
"date": "2026-02-10",
|
||||
"date_confidence": "high",
|
||||
"engagement": null,
|
||||
"top_comments": [],
|
||||
"comment_insights": [],
|
||||
"relevance": 0.95,
|
||||
"why_relevant": "Explicit React vs Svelte comparison thread focusing on hooks/useEffect vs Svelte runes mental model.",
|
||||
"subs": {
|
||||
"relevance": 95,
|
||||
"recency": 50,
|
||||
"engagement": 50
|
||||
},
|
||||
"score": 67
|
||||
},
|
||||
{
|
||||
"id": "R1",
|
||||
"title": "Migrated our startup from React to Svelte 5 - Performance gains and lessons learned",
|
||||
"url": "https://www.reddit.com/r/webdev/comments/1qu4dek/migrated_our_startup_from_react_to_svelte_5/",
|
||||
"subreddit": "webdev",
|
||||
"date": "2026-02-02",
|
||||
"date_confidence": "high",
|
||||
"engagement": null,
|
||||
"top_comments": [],
|
||||
"comment_insights": [],
|
||||
"relevance": 0.97,
|
||||
"why_relevant": "Direct React -> Svelte 5 migration discussion with practical comparison (DX, performance, ecosystem tradeoffs).",
|
||||
"subs": {
|
||||
"relevance": 97,
|
||||
"recency": 23,
|
||||
"engagement": 50
|
||||
},
|
||||
"score": 61
|
||||
},
|
||||
{
|
||||
"id": "R6",
|
||||
"title": "I am building a content-heavy, bilingual government portal with listings, profiles, documents, filters, and forms. Came from .NET & React. Wondering if svelte might be a good option for a project like this?",
|
||||
"url": "https://www.reddit.com/r/sveltejs/comments/1qtua45/i_am_building_a_contentheavy_bilingual_government/",
|
||||
"subreddit": "sveltejs",
|
||||
"date": "2026-02-02",
|
||||
"date_confidence": "high",
|
||||
"engagement": null,
|
||||
"top_comments": [],
|
||||
"comment_insights": [],
|
||||
"relevance": 0.86,
|
||||
"why_relevant": "Evaluates Svelte vs React suitability for a real project with constraints (accessibility, SEO, forms).",
|
||||
"subs": {
|
||||
"relevance": 86,
|
||||
"recency": 23,
|
||||
"engagement": 50
|
||||
},
|
||||
"score": 56
|
||||
},
|
||||
{
|
||||
"id": "R4",
|
||||
"title": "Is Svelte easier than React?",
|
||||
"url": "https://www.reddit.com/r/sveltejs/comments/1qpdzx5/is_svelte_easier_than_react/",
|
||||
"subreddit": "sveltejs",
|
||||
"date": "2026-01-28",
|
||||
"date_confidence": "high",
|
||||
"engagement": null,
|
||||
"top_comments": [],
|
||||
"comment_insights": [],
|
||||
"relevance": 0.9,
|
||||
"why_relevant": "Direct comparison thread about perceived simplicity of Svelte vs React (recent 2026 discussion).",
|
||||
"subs": {
|
||||
"relevance": 90,
|
||||
"recency": 6,
|
||||
"engagement": 50
|
||||
},
|
||||
"score": 54
|
||||
},
|
||||
{
|
||||
"id": "R8",
|
||||
"title": "When should i start learning Svelte ?",
|
||||
"url": "https://www.reddit.com/r/sveltejs/comments/1qr8xsm/when_should_i_start_learning_svelte/",
|
||||
"subreddit": "sveltejs",
|
||||
"date": "2026-01-31",
|
||||
"date_confidence": "high",
|
||||
"engagement": null,
|
||||
"top_comments": [],
|
||||
"comment_insights": [],
|
||||
"relevance": 0.8,
|
||||
"why_relevant": "React vs Svelte learning/adoption discussion, including arguments about replacing React for performance issues.",
|
||||
"subs": {
|
||||
"relevance": 80,
|
||||
"recency": 16,
|
||||
"engagement": 50
|
||||
},
|
||||
"score": 52
|
||||
},
|
||||
{
|
||||
"id": "R9",
|
||||
"title": "How is going svelte?",
|
||||
"url": "https://www.reddit.com/r/sveltejs/comments/1qrdhba/how_is_going_svelte/",
|
||||
"subreddit": "sveltejs",
|
||||
"date": "2026-01-30",
|
||||
"date_confidence": "high",
|
||||
"engagement": null,
|
||||
"top_comments": [],
|
||||
"comment_insights": [],
|
||||
"relevance": 0.75,
|
||||
"why_relevant": "General state-of-Svelte discussion with explicit mentions comparing to React and job-market pragmatism.",
|
||||
"subs": {
|
||||
"relevance": 75,
|
||||
"recency": 13,
|
||||
"engagement": 50
|
||||
},
|
||||
"score": 49
|
||||
}
|
||||
],
|
||||
"x": [
|
||||
{
|
||||
"id": "X4",
|
||||
"text": "TypeScript is the baseline in 2026. But most forms still fight type drift between API, schema & UI. \n\n@formisch_dev + @valibot = one source of truth, zero boilerplate \u26a1\ufe0f\n\nconst form = useForm({ schema: YourSchema });\n\nFull types everywhere. Works in React, SolidJS, Vue, Svelte\u2026 \n\nYour biggest type-safety win this year? \ud83d\udc47",
|
||||
"url": "https://x.com/FabianHiller/status/2022345388603080834",
|
||||
"author_handle": "FabianHiller",
|
||||
"date": "2026-02-13",
|
||||
"date_confidence": "high",
|
||||
"engagement": {
|
||||
"likes": 61,
|
||||
"reposts": 2,
|
||||
"replies": 7
|
||||
},
|
||||
"relevance": 0.7,
|
||||
"why_relevant": "",
|
||||
"subs": {
|
||||
"relevance": 70,
|
||||
"recency": 60,
|
||||
"engagement": 100
|
||||
},
|
||||
"score": 76
|
||||
},
|
||||
{
|
||||
"id": "X3",
|
||||
"text": "Popular JavaScript Frameworks / Frontend Libraries (2025\u20132026 trends)\n\n - React: \ud83c\uddfa\ud83c\uddf8 United States\n - Vue: \ud83c\udde8\ud83c\uddf3 China (created by Evan You)\n - Angular: \ud83c\uddfa\ud83c\uddf8 United States\n - Svelte: \ud83c\uddfa\ud83c\uddf8 United States (New Zealand creator)\n - Next.js: \ud83c\uddfa\ud83c\uddf8 United States\n - Nuxt: \ud83c\uddeb\ud83c\uddf7 France\n - Astro: \ud83c\udde8\ud83c\udde6 United States / Canada\n - Solid: \ud83c\uddfa\ud83c\uddf8 United States",
|
||||
"url": "https://x.com/ConsciousRide/status/2023050160520278501",
|
||||
"author_handle": "ConsciousRide",
|
||||
"date": "2026-02-15",
|
||||
"date_confidence": "high",
|
||||
"engagement": {
|
||||
"likes": 6
|
||||
},
|
||||
"relevance": 0.7,
|
||||
"why_relevant": "",
|
||||
"subs": {
|
||||
"relevance": 70,
|
||||
"recency": 66,
|
||||
"engagement": 33
|
||||
},
|
||||
"score": 57
|
||||
},
|
||||
{
|
||||
"id": "X11",
|
||||
"text": "Requirements for a fresher in 2026:\n\nPython, JavaScript, C, C++, Java, HTML, CSS, TypeScript, React, Next.js, Vue, Angular, Svelte, Node.js, Express, Django, Flask, FastAPI, Spring Boot, PHP, Laravel, Ruby, Ruby on Rails, Go, Rust, Kotlin, Swift, C#, .NET, SQL, MySQL, PostgreSQL, MongoDB, Redis, Firebase, Supabase, Prisma, Docker, Kubernetes, Nginx, Linux, Git, GitHub, Gitflow, VS Code, IntelliJ, Cloud Computing (AWS, Azure, GCP), DevOps, CI/CD, Jest, PyTest, Selenium, REST APIs, GraphQL, WebSoc",
|
||||
"url": "https://x.com/singhprateek_25/status/2020094806735700154",
|
||||
"author_handle": "singhprateek_25",
|
||||
"date": "2026-02-07",
|
||||
"date_confidence": "high",
|
||||
"engagement": {
|
||||
"likes": 6,
|
||||
"reposts": 1
|
||||
},
|
||||
"relevance": 0.7,
|
||||
"why_relevant": "",
|
||||
"subs": {
|
||||
"relevance": 70,
|
||||
"recency": 40,
|
||||
"engagement": 39
|
||||
},
|
||||
"score": 53
|
||||
},
|
||||
{
|
||||
"id": "X1",
|
||||
"text": "Ripple: The Good Parts of React, Svelte, and Solid\n\nFrameworks rise and fall \u2014 and in 2026 we\u2019re deep in late-stage React. What\u2019s next? Join @erikras as he introduces Ripple, a TypeScript-first UI framework blending the best of React and Svelte with fine-grained reactivity and serious speed.\n\nSee the future of UI development live at CityJS London.\nGet your ticket now: https://t.co/wGMJJIELXm",
|
||||
"url": "https://x.com/cityjsconf/status/2024908272646398229",
|
||||
"author_handle": "cityjsconf",
|
||||
"date": "2026-02-20",
|
||||
"date_confidence": "high",
|
||||
"engagement": {
|
||||
"reposts": 1
|
||||
},
|
||||
"relevance": 0.7,
|
||||
"why_relevant": "",
|
||||
"subs": {
|
||||
"relevance": 70,
|
||||
"recency": 83,
|
||||
"engagement": 0
|
||||
},
|
||||
"score": 52
|
||||
},
|
||||
{
|
||||
"id": "X2",
|
||||
"text": "Prediction: 2026 marks the death of the JS frameworks. React, Svelte, Astro etc... only exist because humans need organized code to stay sane. \n\nOnce we stop reading the source code, we stop needing the structure. \n\nIn an AI-first world, JS frameworks are just overhead.",
|
||||
"url": "https://x.com/dennydotio/status/2024195986890109320",
|
||||
"author_handle": "dennydotio",
|
||||
"date": "2026-02-18",
|
||||
"date_confidence": "high",
|
||||
"engagement": {
|
||||
"likes": 1
|
||||
},
|
||||
"relevance": 0.7,
|
||||
"why_relevant": "",
|
||||
"subs": {
|
||||
"relevance": 70,
|
||||
"recency": 76,
|
||||
"engagement": 7
|
||||
},
|
||||
"score": 52
|
||||
},
|
||||
{
|
||||
"id": "X5",
|
||||
"text": "Web developers, what stack are you using in 2026?\nReact? Vue? Svelte? Vanilla? Curious what\u2019s actually winning.",
|
||||
"url": "https://x.com/AzamCodes/status/2022298287236383010",
|
||||
"author_handle": "AzamCodes",
|
||||
"date": "2026-02-13",
|
||||
"date_confidence": "high",
|
||||
"engagement": {
|
||||
"likes": 2,
|
||||
"replies": 1
|
||||
},
|
||||
"relevance": 0.7,
|
||||
"why_relevant": "",
|
||||
"subs": {
|
||||
"relevance": 70,
|
||||
"recency": 60,
|
||||
"engagement": 19
|
||||
},
|
||||
"score": 52
|
||||
},
|
||||
{
|
||||
"id": "X8",
|
||||
"text": "[2026/02/11 18:00] \u30c8\u30ec\u30f3\u30c91\u4f4d\n\u3010WebF\u3011React/Vue/Svelte\u304c\u305d\u306e\u307e\u307e\u30cd\u30a4\u30c6\u30a3\u30d6\u30a2\u30d7\u30ea\u306b\u306a\u308b\u3088 by rana_kualu https://t.co/GiAnTHpOBB",
|
||||
"url": "https://x.com/QiitaTrend/status/2021509592489025785",
|
||||
"author_handle": "QiitaTrend",
|
||||
"date": "2026-02-11",
|
||||
"date_confidence": "high",
|
||||
"engagement": null,
|
||||
"relevance": 0.7,
|
||||
"why_relevant": "",
|
||||
"subs": {
|
||||
"relevance": 70,
|
||||
"recency": 53,
|
||||
"engagement": 35
|
||||
},
|
||||
"score": 52
|
||||
},
|
||||
{
|
||||
"id": "X10",
|
||||
"text": "@babakfpk In 2026, picking React for a new project only really makes sense if you value ecosystem maturity, are following existing team habits, or need React-specific libraries. Same for Vue. Otherwise, use Solid or Svelte.",
|
||||
"url": "https://x.com/nicobaogim/status/2020689628282667407",
|
||||
"author_handle": "nicobaogim",
|
||||
"date": "2026-02-09",
|
||||
"date_confidence": "high",
|
||||
"engagement": null,
|
||||
"relevance": 0.7,
|
||||
"why_relevant": "",
|
||||
"subs": {
|
||||
"relevance": 70,
|
||||
"recency": 46,
|
||||
"engagement": 35
|
||||
},
|
||||
"score": 50
|
||||
},
|
||||
{
|
||||
"id": "X12",
|
||||
"text": "2026 framework discourse:\n\nDev 1: \"React is bloated, use Svelte\"\nDev 2: \"Svelte has no ecosystem, use Vue\"\nDev 3: \"Vue is dying, use Solid\"\nDev 4: \"Just use React\"\n\nMeanwhile React: *still powering 80% of the web*\n\nThe discourse never ends. \ud83d\udc80",
|
||||
"url": "https://x.com/Chubbi_Stephen/status/2020087839648800853",
|
||||
"author_handle": "Chubbi_Stephen",
|
||||
"date": "2026-02-07",
|
||||
"date_confidence": "high",
|
||||
"engagement": null,
|
||||
"relevance": 0.7,
|
||||
"why_relevant": "",
|
||||
"subs": {
|
||||
"relevance": 70,
|
||||
"recency": 40,
|
||||
"engagement": 35
|
||||
},
|
||||
"score": 49
|
||||
}
|
||||
],
|
||||
"web": [],
|
||||
"youtube": [
|
||||
{
|
||||
"id": "MnpuK0MK4yo",
|
||||
"title": "React VS Svelte...10 Examples",
|
||||
"url": "https://www.youtube.com/watch?v=MnpuK0MK4yo",
|
||||
"channel_name": "Beyond Fireship",
|
||||
"date": "2023-06-30",
|
||||
"date_confidence": "high",
|
||||
"engagement": {
|
||||
"num_comments": 1100,
|
||||
"likes": 25490,
|
||||
"views": 697142
|
||||
},
|
||||
"transcript_snippet": "any reasonable developer in today's world would learn react because it's the status quo and that's where the jobs are but life is a lot more fun when you become unreasonable and go against the status quo to push web development forward for future Generations in today's video we'll compare react and spelled side by side by looking at common patterns and design choices by the framework creators I'm not here to tell you that one is better than the other because that's what the comment section below this video is for the only way to truly find out which one is best is to build something with both of them and decide for yourself I just released a brand new full spell kick course yesterday and also have a full next js13 course for fireship pro members going through each one of these courses will give you a really good idea of which framework is best for you first up we need to talk about rendering both of these Frameworks do the same thing they help developers build reactive uis with JavaScript by organizing code into reusable components an end user would never be able to tell the difference between the two but when it comes to the developer experience there is a world of difference react.js uses a runtime called the virtual Dom it keeps track of data changes in the application in order to render them in the act actual Dom in the browser the drawback is that this runtime requires some initial JavaScript and in Frameworks like nextjs your Baseline is around 70 kilobytes just to render a hello world as felt on the other hand takes an entirely different approach using a compiler to eliminate the need for a runtime it takes your svelt code and converts it into vanilla JavaScript which results in a far smaller hello world using a compiler though is kind of like cheating react.js is just JavaScript whereas spill can take non-javascript code to allow developers to do things more efficiently than they could otherwise but some JavaScript fundamentalists might consider this black magic what's ironic though is that vanilla JavaScript libraries tend to be much easier to work with in spell when compared to react however react does have a massive ecosystem of dedicated libraries to help you get things done now let's look at an actual code example of component State here we have a basic counter app in react we use functions to create components and then add reactive state to them with the use State hook that returns a reactive value and a Setter function to update the state pretty simple but let's see how it compares to svelt here on the right side in spelled you have only one component file and Define the logic within the script tags to create reactive State all you do is create a variable with the let keyword from there we can define a function on the click event...",
|
||||
"relevance": 0.75,
|
||||
"why_relevant": "YouTube: React VS Svelte...10 Examples",
|
||||
"subs": {
|
||||
"relevance": 75,
|
||||
"recency": 0,
|
||||
"engagement": 100
|
||||
},
|
||||
"score": 63
|
||||
},
|
||||
{
|
||||
"id": "qwDp5pZA_TA",
|
||||
"title": "The Front-end Frameworks Guide 2026: React vs Angular vs Vue vs Svelt vs Solid vs Astro",
|
||||
"url": "https://www.youtube.com/watch?v=qwDp5pZA_TA",
|
||||
"channel_name": "Code Hub",
|
||||
"date": "2026-02-08",
|
||||
"date_confidence": "high",
|
||||
"engagement": {
|
||||
"num_comments": 4,
|
||||
"likes": 31,
|
||||
"views": 646
|
||||
},
|
||||
"transcript_snippet": "",
|
||||
"relevance": 0.75,
|
||||
"why_relevant": "YouTube: The Front-end Frameworks Guide 2026: React vs Angular vs Vue",
|
||||
"subs": {
|
||||
"relevance": 75,
|
||||
"recency": 43,
|
||||
"engagement": 17
|
||||
},
|
||||
"score": 49
|
||||
},
|
||||
{
|
||||
"id": "_vuVy21l2bU",
|
||||
"title": "React vs Svelte: The Brutal Honest Comparison EVER",
|
||||
"url": "https://www.youtube.com/watch?v=_vuVy21l2bU",
|
||||
"channel_name": "Code Hub",
|
||||
"date": "2025-10-30",
|
||||
"date_confidence": "high",
|
||||
"engagement": {
|
||||
"num_comments": 27,
|
||||
"likes": 204,
|
||||
"views": 6454
|
||||
},
|
||||
"transcript_snippet": "",
|
||||
"relevance": 0.75,
|
||||
"why_relevant": "YouTube: React vs Svelte: The Brutal Honest Comparison EVER",
|
||||
"subs": {
|
||||
"relevance": 75,
|
||||
"recency": 0,
|
||||
"engagement": 42
|
||||
},
|
||||
"score": 46
|
||||
},
|
||||
{
|
||||
"id": "41HXdxGekZ0",
|
||||
"title": "Vue vs React vs Svelte (2026) - Which One Is BEST?",
|
||||
"url": "https://www.youtube.com/watch?v=41HXdxGekZ0",
|
||||
"channel_name": "Paperclick",
|
||||
"date": "2025-10-04",
|
||||
"date_confidence": "high",
|
||||
"engagement": {
|
||||
"num_comments": 0,
|
||||
"likes": 3,
|
||||
"views": 287
|
||||
},
|
||||
"transcript_snippet": "",
|
||||
"relevance": 1.0,
|
||||
"why_relevant": "YouTube: Vue vs React vs Svelte (2026) - Which One Is BEST?",
|
||||
"subs": {
|
||||
"relevance": 100,
|
||||
"recency": 0,
|
||||
"engagement": 0
|
||||
},
|
||||
"score": 45
|
||||
},
|
||||
{
|
||||
"id": "1BCsdaeYv0A",
|
||||
"title": "Svelte vs React in 2025 - Make the RIGHT Choice (Difference Explained)",
|
||||
"url": "https://www.youtube.com/watch?v=1BCsdaeYv0A",
|
||||
"channel_name": "Daniel | Tech & Data",
|
||||
"date": "2023-11-26",
|
||||
"date_confidence": "high",
|
||||
"engagement": {
|
||||
"num_comments": 34,
|
||||
"likes": 0,
|
||||
"views": 33905
|
||||
},
|
||||
"transcript_snippet": "",
|
||||
"relevance": 0.75,
|
||||
"why_relevant": "YouTube: Svelte vs React in 2025 - Make the RIGHT Choice (Difference ",
|
||||
"subs": {
|
||||
"relevance": 75,
|
||||
"recency": 0,
|
||||
"engagement": 30
|
||||
},
|
||||
"score": 42
|
||||
},
|
||||
{
|
||||
"id": "yl0YWA2K2B0",
|
||||
"title": "React wants to win you back\u2026",
|
||||
"url": "https://www.youtube.com/watch?v=yl0YWA2K2B0",
|
||||
"channel_name": "Fireship",
|
||||
"date": "2025-10-17",
|
||||
"date_confidence": "high",
|
||||
"engagement": {
|
||||
"num_comments": 1000,
|
||||
"likes": 22894,
|
||||
"views": 699597
|
||||
},
|
||||
"transcript_snippet": "Last week, I got to participate in my favorite activity of the year. No, it wasn't watching all the overleveraged crypto bros learn what a margin call is. It was hate watching React comp as an anti-react influencer. Every year I crawl into my spelt Snuggy and I watch the React team try to convince everyone that their new APIs fix all of their old APIs. And though it hurts me to say it, this year I think they may have actually done it. I know this is an AI channel now, but in today's video, we'll revisit the worst parts of React to see if the announcements they made at React Comp will actually make a difference. It is October 17th, 2025, and you're watching the code report. The greatest trick the devil ever pulled was making referential stability a prerequisite to writing React apps that don't blow up. Just last month, Cloudflare had a massive outage because their dashboard kept making unnecessary calls to one of their own APIs, which led to them basically themselves. If you're a React dev, you know this is the primary use case for React's use effect hook. And it's exactly what caused this embarrassing bug for Cloudflare. But it's hard to blame React for this. The whole situation could have been avoided if only the poor debit Cloudflare would have read the docs on use effect. Then this post which shows you when to use it. Then this post which shows you when to not use it. Then this post which shows you what it actually does. Then this post which shows you how to use it correctly. And now with React 19.2. this post which shows you how to work around it with React's new use effect event hook. The way it works is it creates a function that you can use inside of use effect without needing to declare it in the dependency array. This is nice for situations like this where you need to use a value inside of use effect but don't want the effect to rerun when it changes. And the other big API addition was the new activity component which you can think of like a smarter display none that React itself controls. It lets you show and hide certain components, but unlike display none, React is able to maintain the state of those components across visibility and also deprioritize the work it does for hidden components. And if you've been drinking your lead lace protein and want to live on the edge, you can install React's Canary version where you'll get the new view transition component for animating transitions between different UIs. And you'll be able to pass a ref to a fragment, which makes working with platform APIs a little easier. But the most impactful announcements of the conference may have not been related to the React API. The first React compiler finally hit 1.0. If you've been in any React codebase lately, you've...",
|
||||
"relevance": 0.25,
|
||||
"why_relevant": "YouTube: React wants to win you back\u2026",
|
||||
"subs": {
|
||||
"relevance": 25,
|
||||
"recency": 0,
|
||||
"engagement": 99
|
||||
},
|
||||
"score": 40
|
||||
},
|
||||
{
|
||||
"id": "aYyZUDFZTrM",
|
||||
"title": "JavaScript framework reinvents itself\u2026 Did \"runes\" just ruin Svelte?",
|
||||
"url": "https://www.youtube.com/watch?v=aYyZUDFZTrM",
|
||||
"channel_name": "Fireship",
|
||||
"date": "2024-10-24",
|
||||
"date_confidence": "high",
|
||||
"engagement": {
|
||||
"num_comments": 1200,
|
||||
"likes": 24456,
|
||||
"views": 547836
|
||||
},
|
||||
"transcript_snippet": "about a year ago I made a tweet that said the dollar sign in spelt is the most powerful abstraction in modern front-end web development usually I'm not wrong about anything ever but this tweet ended up aging like a fine milk because just Weeks Later spelt announced a brand new feature called runes that significantly changed the developer experience by eliminating the dollar sign Syntax for reactive data and then just a few days ago this feature became official with the release of spelt 5 as an avid user of spelt myself I was pretty terrified of this feature at first glance I was one of the few survivors of the angularjs to angular 2 migration I shot myself in the foot during the react hooks Revolution and I lost some good friends during the view options to composition transition and I just can't do this anymore man so maybe I'll just go back to Wordpress uh never mind spelt it is in today's video we'll find out what the hell a rune is and whether or not they're going to ruin spelt it is October 24th 2024 and you're watching the code report most people really liked runes when they were first announced but not everybody I was in denial at first then I got angry then I bargained about the tradeoffs then came depression and finally I've come to accept and really enjoy runes the big question is why would the most L JavaScript framework make a risky departure from the features people love about it like reactive state with let and reactive side effects with the dollar sign just look at how much nicer this code is compared to reactjs react is even copy and spelt with its own compiler to make this code not suck so much the spelt code is lean and concise but one could argue that it's almost too clever let looks exact like regular JavaScript but because spelt uses a compiler it doesn't actually work like regular JavaScript under the hood the compiler does some magic to automatically update the UI whenever this value changes another issue is that this magic only works in a spelt file and that means it's difficult to share reactive logic throughout your application and spelt created an entirely different API called stores to address that issue however runes fix both of these limitations by a making your code more explicit and B they create a universal reactivity system that can be used not only in spel components but also in plain JavaScript or typescript files and this dramatically simplifies the overall framework like once you learn these four runes you'll know about 90% of what you need to know for the framework because everything else works like normal JavaScript and HTML let's go ahead and learn the four major runes now which you can think of as compiler macros that tell spelt to do something special that doesn't behave like regular JavaScript or HTML a...",
|
||||
"relevance": 0.25,
|
||||
"why_relevant": "YouTube: JavaScript framework reinvents itself\u2026 Did \"runes\" just ruin",
|
||||
"subs": {
|
||||
"relevance": 25,
|
||||
"recency": 0,
|
||||
"engagement": 98
|
||||
},
|
||||
"score": 40
|
||||
},
|
||||
{
|
||||
"id": "fn_uSZW5psM",
|
||||
"title": "The Untold Story of Svelte",
|
||||
"url": "https://www.youtube.com/watch?v=fn_uSZW5psM",
|
||||
"channel_name": "CodeSource",
|
||||
"date": "2025-05-14",
|
||||
"date_confidence": "high",
|
||||
"engagement": {
|
||||
"num_comments": 144,
|
||||
"likes": 2120,
|
||||
"views": 57782
|
||||
},
|
||||
"transcript_snippet": "",
|
||||
"relevance": 0.25,
|
||||
"why_relevant": "YouTube: The Untold Story of Svelte",
|
||||
"subs": {
|
||||
"relevance": 25,
|
||||
"recency": 0,
|
||||
"engagement": 69
|
||||
},
|
||||
"score": 31
|
||||
},
|
||||
{
|
||||
"id": "IpJh0VEzMRo",
|
||||
"title": "I Was Wrong About Svelte...",
|
||||
"url": "https://www.youtube.com/watch?v=IpJh0VEzMRo",
|
||||
"channel_name": "Ben Davis",
|
||||
"date": "2025-10-12",
|
||||
"date_confidence": "high",
|
||||
"engagement": {
|
||||
"num_comments": 122,
|
||||
"likes": 1043,
|
||||
"views": 24635
|
||||
},
|
||||
"transcript_snippet": "",
|
||||
"relevance": 0.25,
|
||||
"why_relevant": "YouTube: I Was Wrong About Svelte...",
|
||||
"subs": {
|
||||
"relevance": 25,
|
||||
"recency": 0,
|
||||
"engagement": 61
|
||||
},
|
||||
"score": 29
|
||||
},
|
||||
{
|
||||
"id": "1cGtYEXGm8c",
|
||||
"title": "This is THE Framework You Should be Using in 2026",
|
||||
"url": "https://www.youtube.com/watch?v=1cGtYEXGm8c",
|
||||
"channel_name": "Ben Davis",
|
||||
"date": "2026-01-06",
|
||||
"date_confidence": "high",
|
||||
"engagement": {
|
||||
"num_comments": 142,
|
||||
"likes": 793,
|
||||
"views": 16899
|
||||
},
|
||||
"transcript_snippet": "",
|
||||
"relevance": 0.25,
|
||||
"why_relevant": "YouTube: This is THE Framework You Should be Using in 2026",
|
||||
"subs": {
|
||||
"relevance": 25,
|
||||
"recency": 0,
|
||||
"engagement": 57
|
||||
},
|
||||
"score": 28
|
||||
}
|
||||
],
|
||||
"hackernews": [],
|
||||
"best_practices": [],
|
||||
"prompt_pack": [],
|
||||
"context_snippet_md": "# Context: React vs Svelte 2026 (Last 30 Days)\n\n*Generated: 2026-02-25 | Sources: both*\n\n## Key Sources\n\n- [X] TypeScript is the baseline in 2026. But most forms...\n- [Reddit] What do you guys think about comparison between React vs Svelte?\n- [Reddit] Migrated our startup from React to Svelte 5 - Performance gains and lessons learned\n- [X] Popular JavaScript Frameworks / Frontend Libraries...\n- [Reddit] I am building a content-heavy, bilingual government portal with listings, profiles, documents, filters, and forms. Came from .NET & React. Wondering if svelte might be a good option for a project like this?\n- [Reddit] Is Svelte easier than React?\n- [X] Requirements for a fresher in 2026:\n\nPython, JavaS...\n\n## Summary\n\n*See full report for best practices, prompt pack, and detailed sources.*\n"
|
||||
}
|
||||
@@ -1,14 +0,0 @@
|
||||
{
|
||||
"openai": true,
|
||||
"xai": true,
|
||||
"x_source": "bird",
|
||||
"bird_installed": true,
|
||||
"bird_authenticated": true,
|
||||
"bird_username": "env AUTH_TOKEN",
|
||||
"youtube": true,
|
||||
"hackernews": true,
|
||||
"web_search_backend": null,
|
||||
"parallel_ai": false,
|
||||
"brave": false,
|
||||
"openrouter": false
|
||||
}
|
||||
@@ -1,883 +0,0 @@
|
||||
{
|
||||
"topic": "Claude Code skills and MCP servers",
|
||||
"range": {
|
||||
"from": "2026-01-26",
|
||||
"to": "2026-02-25"
|
||||
},
|
||||
"generated_at": "2026-02-25T20:29:35.722482+00:00",
|
||||
"mode": "both",
|
||||
"openai_model_used": "gpt-5.2",
|
||||
"xai_model_used": "grok-4-1-fast",
|
||||
"reddit": [
|
||||
{
|
||||
"id": "R1",
|
||||
"title": "Claude code and mcp servers",
|
||||
"url": "https://www.reddit.com/r/ClaudeAI/comments/1ldm75a/claude_code_and_mcp_servers/",
|
||||
"subreddit": "ClaudeAI",
|
||||
"date": "2025-06-17",
|
||||
"date_confidence": "low",
|
||||
"engagement": null,
|
||||
"top_comments": [],
|
||||
"comment_insights": [],
|
||||
"relevance": 0.98,
|
||||
"why_relevant": "Directly about Claude Code failing to load/use MCP servers; troubleshooting discussion.",
|
||||
"subs": {
|
||||
"relevance": 0,
|
||||
"recency": 0,
|
||||
"engagement": 0
|
||||
},
|
||||
"score": 0
|
||||
},
|
||||
{
|
||||
"id": "R2",
|
||||
"title": "Claude Skills: is it a big deal?",
|
||||
"url": "https://www.reddit.com/r/ClaudeCode/comments/1odtykp/claude_skills_is_it_a_big_deal/",
|
||||
"subreddit": "ClaudeCode",
|
||||
"date": "2025-10-23",
|
||||
"date_confidence": "low",
|
||||
"engagement": null,
|
||||
"top_comments": [],
|
||||
"comment_insights": [],
|
||||
"relevance": 0.92,
|
||||
"why_relevant": "Focused on the Claude (Claude Code) \u201cSkills\u201d feature; compares to AGENTS.md/slash commands/MCPs.",
|
||||
"subs": {
|
||||
"relevance": 0,
|
||||
"recency": 0,
|
||||
"engagement": 0
|
||||
},
|
||||
"score": 0
|
||||
},
|
||||
{
|
||||
"id": "R3",
|
||||
"title": "I spent way too long cataloguing Claude Code tools. Here\u2019s everything I found (with actual links)",
|
||||
"url": "https://www.reddit.com/r/ClaudeAI/comments/1ofltdr/i_spent_way_too_long_cataloguing_claude_code/",
|
||||
"subreddit": "ClaudeAI",
|
||||
"date": "2025-10-25",
|
||||
"date_confidence": "low",
|
||||
"engagement": null,
|
||||
"top_comments": [],
|
||||
"comment_insights": [],
|
||||
"relevance": 0.9,
|
||||
"why_relevant": "Tooling ecosystem post; explicitly mentions installing many plugins and MCP servers for Claude Code.",
|
||||
"subs": {
|
||||
"relevance": 0,
|
||||
"recency": 0,
|
||||
"engagement": 0
|
||||
},
|
||||
"score": 0
|
||||
}
|
||||
],
|
||||
"x": [
|
||||
{
|
||||
"id": "X5",
|
||||
"text": "@adamwathan Codex has been crushing it for me with implicit skill usage to the point I was shocked \n\nClaude Code I resorted to explicit mentions and I\u2019ve been pleasantly surprised by how well Codex has been calling out to skills on its own",
|
||||
"url": "https://x.com/zeeg/status/2026745680195367091",
|
||||
"author_handle": "zeeg",
|
||||
"date": "2026-02-25",
|
||||
"date_confidence": "high",
|
||||
"engagement": {
|
||||
"likes": 4,
|
||||
"reposts": 1,
|
||||
"replies": 2
|
||||
},
|
||||
"relevance": 0.7,
|
||||
"why_relevant": "",
|
||||
"subs": {
|
||||
"relevance": 70,
|
||||
"recency": 100,
|
||||
"engagement": 100
|
||||
},
|
||||
"score": 86
|
||||
},
|
||||
{
|
||||
"id": "X3",
|
||||
"text": "\ud83d\udea8 Anthropic just open-sourced the exact Skills library their own engineers use internally.\n\nStop building Claude workflows from scratch.\n\nThese are plug-and-play components that work across Claude Code, API, SDK, and VS Code copy once, deploy everywhere.\n\nWhat's inside:\n\n\u2192 Excel + PowerPoint generation out of the box\n\u2192 File handling and document workflows\n\u2192 MCP-ready subagent building blocks\n\u2192 Pre-built patterns for multi-step automation\n\u2192 Production templates you'd normally spend weeks writing\n",
|
||||
"url": "https://x.com/ihtesham2005/status/2026752089473314975",
|
||||
"author_handle": "ihtesham2005",
|
||||
"date": "2026-02-25",
|
||||
"date_confidence": "high",
|
||||
"engagement": {
|
||||
"likes": 6
|
||||
},
|
||||
"relevance": 0.7,
|
||||
"why_relevant": "",
|
||||
"subs": {
|
||||
"relevance": 70,
|
||||
"recency": 100,
|
||||
"engagement": 81
|
||||
},
|
||||
"score": 80
|
||||
},
|
||||
{
|
||||
"id": "X8",
|
||||
"text": "Day 7 building my first B2C app\n\nBeen setting everything up this week. Manually built 5 agents to help me in the early stages and set up the Claude Code skills i'll need for the build.\n\nAlso been testing OpenClaw these days, already delegated my expense tracking to it.\n\nNow the scary part: Figuring out the visual identity of the app. my design skills are basically zero, i always used to delegate this to someone with actual talent haha. \n\nAny recommendations to learn the fundamentals? would reall",
|
||||
"url": "https://x.com/DevTenta/status/2026742028730527786",
|
||||
"author_handle": "DevTenta",
|
||||
"date": "2026-02-25",
|
||||
"date_confidence": "high",
|
||||
"engagement": {
|
||||
"likes": 4
|
||||
},
|
||||
"relevance": 0.7,
|
||||
"why_relevant": "",
|
||||
"subs": {
|
||||
"relevance": 70,
|
||||
"recency": 100,
|
||||
"engagement": 59
|
||||
},
|
||||
"score": 74
|
||||
},
|
||||
{
|
||||
"id": "X7",
|
||||
"text": "@Jompiras Claude code + skills. Muy breve.",
|
||||
"url": "https://x.com/JorgeJaramillo/status/2026743135435362649",
|
||||
"author_handle": "JorgeJaramillo",
|
||||
"date": "2026-02-25",
|
||||
"date_confidence": "high",
|
||||
"engagement": null,
|
||||
"relevance": 0.7,
|
||||
"why_relevant": "",
|
||||
"subs": {
|
||||
"relevance": 70,
|
||||
"recency": 100,
|
||||
"engagement": 35
|
||||
},
|
||||
"score": 64
|
||||
},
|
||||
{
|
||||
"id": "X4",
|
||||
"text": "@tom_doerr 135 agents, 35 curated skills, 121 plugins and 6 MCP configs all in one Claude Code toolkit is absolutely insane value \ud83e\udd2f this is the kind of community effort that makes an AI tool go from good to unstoppable. bookmarking this immediately \ud83d\udd25",
|
||||
"url": "https://x.com/arpan7sarkar/status/2026746479369662551",
|
||||
"author_handle": "arpan7sarkar",
|
||||
"date": "2026-02-25",
|
||||
"date_confidence": "high",
|
||||
"engagement": null,
|
||||
"relevance": 0.7,
|
||||
"why_relevant": "",
|
||||
"subs": {
|
||||
"relevance": 70,
|
||||
"recency": 100,
|
||||
"engagement": 35
|
||||
},
|
||||
"score": 64
|
||||
},
|
||||
{
|
||||
"id": "X6",
|
||||
"text": "@tom_doerr A curated collection of Claude Skills organized by category is exactly what power users have been waiting for \ud83e\udd29 document skills, code tools, data analysis all in one repo. this is the Claude plugin store before the Claude plugin store \ud83d\udd25",
|
||||
"url": "https://x.com/arpan7sarkar/status/2026745559986614335",
|
||||
"author_handle": "arpan7sarkar",
|
||||
"date": "2026-02-25",
|
||||
"date_confidence": "high",
|
||||
"engagement": null,
|
||||
"relevance": 0.7,
|
||||
"why_relevant": "",
|
||||
"subs": {
|
||||
"relevance": 70,
|
||||
"recency": 100,
|
||||
"engagement": 35
|
||||
},
|
||||
"score": 64
|
||||
},
|
||||
{
|
||||
"id": "X2",
|
||||
"text": "Claude Code\u306eSkills\u3092\u4f5c\u6210\u4f8b\u304b\u3089\u5fb9\u5e95\u7406\u89e3\u3059\u308b https://t.co/vZTseio2Ii",
|
||||
"url": "https://x.com/yasuky/status/2026754773786226708",
|
||||
"author_handle": "yasuky",
|
||||
"date": "2026-02-25",
|
||||
"date_confidence": "high",
|
||||
"engagement": null,
|
||||
"relevance": 0.7,
|
||||
"why_relevant": "",
|
||||
"subs": {
|
||||
"relevance": 70,
|
||||
"recency": 100,
|
||||
"engagement": 35
|
||||
},
|
||||
"score": 64
|
||||
},
|
||||
{
|
||||
"id": "X12",
|
||||
"text": "Day 52 (01/21/2026) (Rest Day)\n\n> Go to New York + watch Broadway Show\n\n> Catch up on claude code updates on way back (2hrs)\n - Learn difference between skills + MCP, and etc\n \n> Neetcode (1hr 15min)\n\n> Plan for the week (30min)\n \nTotal focused working hours: 3hrs 45min",
|
||||
"url": "https://x.com/zhuoyuan45514/status/2026733326631923776",
|
||||
"author_handle": "zhuoyuan45514",
|
||||
"date": "2026-02-25",
|
||||
"date_confidence": "high",
|
||||
"engagement": null,
|
||||
"relevance": 0.7,
|
||||
"why_relevant": "",
|
||||
"subs": {
|
||||
"relevance": 70,
|
||||
"recency": 100,
|
||||
"engagement": 35
|
||||
},
|
||||
"score": 64
|
||||
},
|
||||
{
|
||||
"id": "X1",
|
||||
"text": "How: I told Claude Code \"build me a CRM.\" Our builder skill generated schemas, skills, server, seed data. I pointed Claude Desktop at it. Contacts, lead scoring, pipeline reviews. All from conversation.\n\nThen \"build me a research assistant.\" Topics, sources, notes, etc. Same flow",
|
||||
"url": "https://x.com/matgoldsborough/status/2026755742737510749",
|
||||
"author_handle": "matgoldsborough",
|
||||
"date": "2026-02-25",
|
||||
"date_confidence": "high",
|
||||
"engagement": {
|
||||
"replies": 1
|
||||
},
|
||||
"relevance": 0.7,
|
||||
"why_relevant": "",
|
||||
"subs": {
|
||||
"relevance": 70,
|
||||
"recency": 100,
|
||||
"engagement": 35
|
||||
},
|
||||
"score": 64
|
||||
},
|
||||
{
|
||||
"id": "X9",
|
||||
"text": "I can build another open claw, or claude bot, or even a messaging app in a nice prompt and although having engineering skills, I can push the code on the public repo and secure it even completely and may start marketing in a crazy way on X or maybe Reddit using a secret niche guy when writing a post.\n\nThis is the new coding for us, and shipping a nice product.",
|
||||
"url": "https://x.com/0x_Kapoor/status/2026738663321907214",
|
||||
"author_handle": "0x_Kapoor",
|
||||
"date": "2026-02-25",
|
||||
"date_confidence": "high",
|
||||
"engagement": null,
|
||||
"relevance": 0.7,
|
||||
"why_relevant": "",
|
||||
"subs": {
|
||||
"relevance": 70,
|
||||
"recency": 100,
|
||||
"engagement": 35
|
||||
},
|
||||
"score": 64
|
||||
},
|
||||
{
|
||||
"id": "X10",
|
||||
"text": "1. I use https://t.co/NtFYJEiFs9 inspired by @bcherny \n2. I use https://t.co/EwnmyWNFqn to sync skills and scan skills from the marketplace\n3. I chat with claude code 4-5 times and once I am satisifed with plan, I ask it to build it.\n4. I use /code-simplifier, /memory and /parallel from my plugin above to distribute work across agents.\n5. I wait and once they're done, I use coderabbit:review to review once locally and make a PR\n\nThis process works like a gem for me.",
|
||||
"url": "https://x.com/ghumare64/status/2026736176695246966",
|
||||
"author_handle": "ghumare64",
|
||||
"date": "2026-02-25",
|
||||
"date_confidence": "high",
|
||||
"engagement": {
|
||||
"likes": 1
|
||||
},
|
||||
"relevance": 0.7,
|
||||
"why_relevant": "",
|
||||
"subs": {
|
||||
"relevance": 70,
|
||||
"recency": 100,
|
||||
"engagement": 0
|
||||
},
|
||||
"score": 56
|
||||
},
|
||||
{
|
||||
"id": "X11",
|
||||
"text": "The 'vibe coding' revolution is forcing a reckoning.\n\nDevelopers with 15+ years experience are either embracing AI to expand their reach or watching their expertise become as valuable as COBOL skills.\n\nWhich side of history are you on?\n\nPS\nClaude Code can now write COBOL as well.",
|
||||
"url": "https://x.com/hamen/status/2026734075243790396",
|
||||
"author_handle": "hamen",
|
||||
"date": "2026-02-25",
|
||||
"date_confidence": "high",
|
||||
"engagement": {
|
||||
"likes": 1
|
||||
},
|
||||
"relevance": 0.7,
|
||||
"why_relevant": "",
|
||||
"subs": {
|
||||
"relevance": 70,
|
||||
"recency": 100,
|
||||
"engagement": 0
|
||||
},
|
||||
"score": 56
|
||||
}
|
||||
],
|
||||
"web": [],
|
||||
"youtube": [
|
||||
{
|
||||
"id": "X8afcX2s2Mo",
|
||||
"title": "Claude Skills: Build Your First AI Marketing Team in 16 Minutes (Claude Code)",
|
||||
"url": "https://www.youtube.com/watch?v=X8afcX2s2Mo",
|
||||
"channel_name": "Grace Leung",
|
||||
"date": "2026-02-21",
|
||||
"date_confidence": "high",
|
||||
"engagement": {
|
||||
"num_comments": 47,
|
||||
"likes": 1900,
|
||||
"views": 47474
|
||||
},
|
||||
"transcript_snippet": "",
|
||||
"relevance": 0.7,
|
||||
"why_relevant": "YouTube video about claude code skills and mcp servers",
|
||||
"subs": {
|
||||
"relevance": 70,
|
||||
"recency": 86,
|
||||
"engagement": 70
|
||||
},
|
||||
"score": 74
|
||||
},
|
||||
{
|
||||
"id": "0J2_YGuNrDo",
|
||||
"title": "Claude Code just Built me an AI Agent Team (Claude Code + Skills + MCP)",
|
||||
"url": "https://www.youtube.com/watch?v=0J2_YGuNrDo",
|
||||
"channel_name": "Grace Leung",
|
||||
"date": "2025-12-16",
|
||||
"date_confidence": "high",
|
||||
"engagement": {
|
||||
"num_comments": 291,
|
||||
"likes": 4760,
|
||||
"views": 155806
|
||||
},
|
||||
"transcript_snippet": "I use clot more than any other AI but even I dismiss Clark as just for developers and I was wrong after using myself I am completely so and this is too powerful to ignore if you want to use AI to build system and do work for you end to end not just chatting and copy pasting so in this video I'll share how to get started with cloud code even if you don't use for coding and most importantly how to use it to build an AI work team and system that you can actually use. Let's go. So why claw code is even needed if claw is already so powerful. So most people use cloud projects with custom instructions to turn claw into AI agents. But they are silo. You end up copy and pasting between them. You are the coordinator. But with cloud code is different. So these cloud agents share the same workspace access to the same context file. They can talk to each other and hands up work automatically each with their own token context window and claude now becomes the team lead. You give the direction they execute together and that is what we are building today. So each of these cloud code agents you create needs at least three core components all defined in one single markdown file. the role and responsibilities, the knowledge like workflow details, reusable clot agent skills, the MCP tools that they have access to. For this demo, we'll be building a five agent work and claude, our main agent will add as our team lead to coordinate between these agent. A bonus tip is when designing your AI teammate, give them specific and non-over overlapping roles to minimize the potential conflicts. Now, to get started with clark code, there are four main ways to access it. First, the local terminal. This is the raw method and will give you the best experience. Luckily, Anthroporic just launched a native installer. So, which makes it really easy to install. I'll put the official link below. And second, ID extension. So, you can add CL code to ID like VS Code or Kursa and let you run the CL code and see the project file structure side by side. Third, the cloud web app where you can click the code tab and run the CL code in the cloud, but it requires you linking to a GitHub repository. and fourth, cloud desktop app which has cloud code built-in and this is what we'll be using today. Now, whatever way you choose, I still highly recommend installing cloud code through the terminal first because the terminal gives you the most complete experience. All commands and features work fully since we're running Clark locally. So, the first thing is to set up a local project folder. So, think of it like a dedicated workspace for Clark. So, let's say I run a marketing agency and I'm setting up the TIM system. So...",
|
||||
"relevance": 0.7,
|
||||
"why_relevant": "YouTube video about claude code skills and mcp servers",
|
||||
"subs": {
|
||||
"relevance": 70,
|
||||
"recency": 0,
|
||||
"engagement": 100
|
||||
},
|
||||
"score": 61
|
||||
},
|
||||
{
|
||||
"id": "fOxC44g8vig",
|
||||
"title": "Claude Agent Skills Explained",
|
||||
"url": "https://www.youtube.com/watch?v=fOxC44g8vig",
|
||||
"channel_name": "Anthropic",
|
||||
"date": "2025-11-26",
|
||||
"date_confidence": "high",
|
||||
"engagement": {
|
||||
"num_comments": 144,
|
||||
"likes": 2991,
|
||||
"views": 129573
|
||||
},
|
||||
"transcript_snippet": "Hi, my name is Otto and in this video we're going to discuss agent skills. Agents today are pretty intelligent, but they don't always have the domain expertise you need for real work and skills help solve this. You can think of skills as organized folders that package expertise that Cloud can automatically invoke when relevant to the task at hand. And most importantly, these skills are portable across cloud code, the API as well as cla.ai. And the way skills work is at startup only the name and description of every installed skill is loaded in the system prompt. This is going to consume about 30 to 50 tokens per skill and make Claude aware of the skill's existence. Then when a user prompt matches a skills description, Claude is going to dynamically load the full skill.md file into context. And finally, if the skill references other files or scripts, they are also progressively loaded and run as needed. This progressive disclosure allows you to install many different skills to perform complex tasks without bloating your context window. But let's see how skills fit in with the other Claude features. While skills teach Claude how to do specialized tasks, Claude.md files tell Claude about the specific project. Things like your text stack, coding conventions, and repo structure. CloudMD files live alongside your code in the repository. A CloudMD file may say things like we [music] use Nex.js JS and Tailwind. But skills on the other hand are portable expertise that work across any project. So a front-end design skill can teach Claude your typography standards, animation patterns, and layout conventions and [music] activate automatically when building UI components. MCP servers on the other hand provide universal integration, a single protocol that connects Claude to external context sources like GitHub, linear, Postgress, and many many others. MCP connects to data. Skills teach Claude what to do with it. So an MCP server may give Claude access to your database, but a database query skill can teach Claude your team's query optimization patterns. Finally, sub agents are specialized AI assistants with fixed roles. Each sub agent has its own context window, custom prompt, and specific tool permissions. skills provide portable expertise that any agent can use. So your front-end developer sub agent can use a component pattern skill. Your UI reviewer sub agent on the other hand can use a design system skill, but both can load and use the same accessibility standard skill. And the best part is these capabilities are designed to work together. Your cloudMD file sets the foundation. MCP [music] servers connect the data. Sub agents specialize in their roles and skills bring the expertise making every piece smarter and more capable. At the end of the day, skills let you package workflows into reusable capabilities like helping onboard new hires to your team's coding standards, ensuring every PR follows a specific security best practices or sharing your data analysis methodology across your team. And that's how...",
|
||||
"relevance": 0.7,
|
||||
"why_relevant": "YouTube video about claude code skills and mcp servers",
|
||||
"subs": {
|
||||
"relevance": 70,
|
||||
"recency": 0,
|
||||
"engagement": 90
|
||||
},
|
||||
"score": 58
|
||||
},
|
||||
{
|
||||
"id": "Gqh_KdHP1Xk",
|
||||
"title": "8 MCP Servers That Make Claude Code 10x Better",
|
||||
"url": "https://www.youtube.com/watch?v=Gqh_KdHP1Xk",
|
||||
"channel_name": "Robin Ebers",
|
||||
"date": "2025-08-21",
|
||||
"date_confidence": "high",
|
||||
"engagement": {
|
||||
"num_comments": 108,
|
||||
"likes": 2719,
|
||||
"views": 90281
|
||||
},
|
||||
"transcript_snippet": "Over 90% of all MCP servers are complete overhyped garbage. But some of them are not only worth it, they can be complete game changers. And I do not say this lightly. So after testing over 100 of them, here are the only eight MCP servers that I actually use to build apps even faster. But first, let me save you from making the same expensive mistake that I made when I started using MCP servers. Because what no one explains about them is that the more of them you install, the dumber your AI becomes. I know this sounds backwards because everyone thinks more tools equals smarter AI. But here is what's actually happening because every MCP server you add is like giving your AI yet another tool to choose from. Imagine asking someone to fix your bike, but instead of giving them a toolbox with eight essential tools, you just dump 100 tools on the floor. they will spend more time figuring out which tool to use than actually fixing your bike. That is exactly what happens with claude and chatbt too because every MCP server needs instructions in the context window or chat when you start. But new research now shows that this is actually really bad for AI. It's like trying to focus on a specific task while browsing social media. You're just pumping useless information into your brain. And that is kind of what happens too when you use too many MCP servers in your AI. So, if you want your AI to stay focused, remove all distractions. I stripped my list down to these eight MCP servers. And even then, I don't use all of them in every project. I turn them on and off because the fewer tools you give your AI, the more focused it stays. So, now let's look at my full list. Hey, what's up, guys? My name is Rob and I've been a coder for over 20 years. But now, I teach people how to build their ideas with AI in ways that even non-technical people can understand. I do this here on YouTube and inside of my AI coding blueprint, which you can check out in the description down below. Starting with number eight, almost every app that you build will need real world data. This could be stock prices, news articles, YouTube comments, or Instagram profiles. And that is where this MCP server comes in because this turns your AI into a data gathering machine. API is a marketplace for web scrapers, which you can think of as little robots that go all over the internet and grab information from any website that you want. And here is the really crazy part, because this MCP server doesn't just help you pull the data into your app. It actually makes accessing the full documentation of every web scraper available on this platform very easy. It can also help you debug them when things go wrong or check the...",
|
||||
"relevance": 0.7,
|
||||
"why_relevant": "YouTube video about claude code skills and mcp servers",
|
||||
"subs": {
|
||||
"relevance": 70,
|
||||
"recency": 0,
|
||||
"engagement": 84
|
||||
},
|
||||
"score": 56
|
||||
},
|
||||
{
|
||||
"id": "421T2iWTQio",
|
||||
"title": "The Only Claude Skills Guide You Need (Beginner to Expert)",
|
||||
"url": "https://www.youtube.com/watch?v=421T2iWTQio",
|
||||
"channel_name": "Kenny Liao",
|
||||
"date": "2025-10-24",
|
||||
"date_confidence": "high",
|
||||
"engagement": {
|
||||
"num_comments": 101,
|
||||
"likes": 1010,
|
||||
"views": 50477
|
||||
},
|
||||
"transcript_snippet": "",
|
||||
"relevance": 0.7,
|
||||
"why_relevant": "YouTube video about claude code skills and mcp servers",
|
||||
"subs": {
|
||||
"relevance": 70,
|
||||
"recency": 0,
|
||||
"engagement": 68
|
||||
},
|
||||
"score": 51
|
||||
},
|
||||
{
|
||||
"id": "l7qVtHpctic",
|
||||
"title": "Claude Code's MCP Problem Just Got Fixed",
|
||||
"url": "https://www.youtube.com/watch?v=l7qVtHpctic",
|
||||
"channel_name": "Kenny Liao",
|
||||
"date": "2026-01-17",
|
||||
"date_confidence": "high",
|
||||
"engagement": {
|
||||
"num_comments": 93,
|
||||
"likes": 728,
|
||||
"views": 21765
|
||||
},
|
||||
"transcript_snippet": "",
|
||||
"relevance": 0.7,
|
||||
"why_relevant": "YouTube video about claude code skills and mcp servers",
|
||||
"subs": {
|
||||
"relevance": 70,
|
||||
"recency": 0,
|
||||
"engagement": 54
|
||||
},
|
||||
"score": 47
|
||||
},
|
||||
{
|
||||
"id": "M5CsRj6zSCA",
|
||||
"title": "5 MCP Servers That Make Claude Code 10x More Powerful (Full-Stack App Build)",
|
||||
"url": "https://www.youtube.com/watch?v=M5CsRj6zSCA",
|
||||
"channel_name": "Eric Tech",
|
||||
"date": "2025-12-12",
|
||||
"date_confidence": "high",
|
||||
"engagement": {
|
||||
"num_comments": 30,
|
||||
"likes": 266,
|
||||
"views": 11287
|
||||
},
|
||||
"transcript_snippet": "",
|
||||
"relevance": 0.7,
|
||||
"why_relevant": "YouTube video about claude code skills and mcp servers",
|
||||
"subs": {
|
||||
"relevance": 70,
|
||||
"recency": 0,
|
||||
"engagement": 33
|
||||
},
|
||||
"score": 41
|
||||
},
|
||||
{
|
||||
"id": "qthyl0GCpDo",
|
||||
"title": "Claude Skills vs MCP: What\u2019s the Difference and When to Use Each?",
|
||||
"url": "https://www.youtube.com/watch?v=qthyl0GCpDo",
|
||||
"channel_name": "Postman",
|
||||
"date": "2025-11-20",
|
||||
"date_confidence": "high",
|
||||
"engagement": {
|
||||
"num_comments": 4,
|
||||
"likes": 105,
|
||||
"views": 7045
|
||||
},
|
||||
"transcript_snippet": "",
|
||||
"relevance": 0.7,
|
||||
"why_relevant": "YouTube video about claude code skills and mcp servers",
|
||||
"subs": {
|
||||
"relevance": 70,
|
||||
"recency": 0,
|
||||
"engagement": 12
|
||||
},
|
||||
"score": 35
|
||||
},
|
||||
{
|
||||
"id": "ZroGqu7GyXM",
|
||||
"title": "Claude Code Skills vs MCP vs Sub Agents: What Works for Solo Devs?",
|
||||
"url": "https://www.youtube.com/watch?v=ZroGqu7GyXM",
|
||||
"channel_name": "Solo Swift Crafter",
|
||||
"date": "2025-10-27",
|
||||
"date_confidence": "high",
|
||||
"engagement": {
|
||||
"num_comments": 13,
|
||||
"likes": 98,
|
||||
"views": 4885
|
||||
},
|
||||
"transcript_snippet": "",
|
||||
"relevance": 0.7,
|
||||
"why_relevant": "YouTube video about claude code skills and mcp servers",
|
||||
"subs": {
|
||||
"relevance": 70,
|
||||
"recency": 0,
|
||||
"engagement": 10
|
||||
},
|
||||
"score": 34
|
||||
},
|
||||
{
|
||||
"id": "jzf7DQa2CAc",
|
||||
"title": "How I Use Claude Code With Skills, MCP, Agents & Plugins",
|
||||
"url": "https://www.youtube.com/watch?v=jzf7DQa2CAc",
|
||||
"channel_name": "Matt Kuda",
|
||||
"date": "2026-01-19",
|
||||
"date_confidence": "high",
|
||||
"engagement": {
|
||||
"num_comments": 8,
|
||||
"likes": 87,
|
||||
"views": 2547
|
||||
},
|
||||
"transcript_snippet": "",
|
||||
"relevance": 0.7,
|
||||
"why_relevant": "YouTube video about claude code skills and mcp servers",
|
||||
"subs": {
|
||||
"relevance": 70,
|
||||
"recency": 0,
|
||||
"engagement": 0
|
||||
},
|
||||
"score": 31
|
||||
}
|
||||
],
|
||||
"hackernews": [
|
||||
{
|
||||
"id": "HN1",
|
||||
"title": "Show HN: I built a 55K-word email marketing knowledge base and Claude Code skill",
|
||||
"url": "https://www.emailmarketingskill.com/",
|
||||
"hn_url": "https://news.ycombinator.com/item?id=47096335",
|
||||
"author": "cosmoblk",
|
||||
"date": "2026-02-21",
|
||||
"date_confidence": "high",
|
||||
"engagement": {
|
||||
"score": 10,
|
||||
"num_comments": 2
|
||||
},
|
||||
"top_comments": [
|
||||
{
|
||||
"score": 0,
|
||||
"date": null,
|
||||
"author": "tkel",
|
||||
"excerpt": "So it's an AI spambot?",
|
||||
"url": ""
|
||||
}
|
||||
],
|
||||
"comment_insights": [
|
||||
"So it's an AI spambot?"
|
||||
],
|
||||
"relevance": 0.86,
|
||||
"why_relevant": "HN story about Show HN: I built a 55K-word email marketing knowledge base a",
|
||||
"subs": {
|
||||
"relevance": 86,
|
||||
"recency": 86,
|
||||
"engagement": 100
|
||||
},
|
||||
"score": 90
|
||||
},
|
||||
{
|
||||
"id": "HN4",
|
||||
"title": "Show HN: AI Marketing Skills for Claude Code",
|
||||
"url": "https://github.com/superamped/ai-marketing-skills",
|
||||
"hn_url": "https://news.ycombinator.com/item?id=47154377",
|
||||
"author": "superamped",
|
||||
"date": "2026-02-25",
|
||||
"date_confidence": "high",
|
||||
"engagement": {
|
||||
"score": 3,
|
||||
"num_comments": 1
|
||||
},
|
||||
"top_comments": [],
|
||||
"comment_insights": [],
|
||||
"relevance": 0.79,
|
||||
"why_relevant": "HN story about Show HN: AI Marketing Skills for Claude Code",
|
||||
"subs": {
|
||||
"relevance": 79,
|
||||
"recency": 100,
|
||||
"engagement": 48
|
||||
},
|
||||
"score": 74
|
||||
},
|
||||
{
|
||||
"id": "HN12",
|
||||
"title": "Show HN: Poncho, a general agent harness built for the web",
|
||||
"url": "https://github.com/cesr/poncho-ai",
|
||||
"hn_url": "https://news.ycombinator.com/item?id=47061949",
|
||||
"author": "heycesr",
|
||||
"date": "2026-02-18",
|
||||
"date_confidence": "high",
|
||||
"engagement": {
|
||||
"score": 4,
|
||||
"num_comments": 2
|
||||
},
|
||||
"top_comments": [
|
||||
{
|
||||
"score": 0,
|
||||
"date": null,
|
||||
"author": "adriablancafort",
|
||||
"excerpt": "I have been trying it and it's very cool!",
|
||||
"url": ""
|
||||
}
|
||||
],
|
||||
"comment_insights": [
|
||||
"I have been trying it and it's very cool!"
|
||||
],
|
||||
"relevance": 0.69,
|
||||
"why_relevant": "HN story about Show HN: Poncho, a general agent harness built for the web",
|
||||
"subs": {
|
||||
"relevance": 69,
|
||||
"recency": 76,
|
||||
"engagement": 69
|
||||
},
|
||||
"score": 70
|
||||
},
|
||||
{
|
||||
"id": "HN11",
|
||||
"title": "Show HN: Axon \u2013 A Kubernetes-native framework for AI coding agents",
|
||||
"url": "https://github.com/axon-core/axon",
|
||||
"hn_url": "https://news.ycombinator.com/item?id=47137491",
|
||||
"author": "gjkim042",
|
||||
"date": "2026-02-24",
|
||||
"date_confidence": "high",
|
||||
"engagement": {
|
||||
"score": 1,
|
||||
"num_comments": 4
|
||||
},
|
||||
"top_comments": [],
|
||||
"comment_insights": [],
|
||||
"relevance": 0.68,
|
||||
"why_relevant": "HN story about Show HN: Axon \u2013 A Kubernetes-native framework for AI coding ",
|
||||
"subs": {
|
||||
"relevance": 68,
|
||||
"recency": 96,
|
||||
"engagement": 50
|
||||
},
|
||||
"score": 69
|
||||
},
|
||||
{
|
||||
"id": "HN14",
|
||||
"title": "Show HN: Turn Claude Code or Codex into proactive, autonomous 24/7 AI agents",
|
||||
"url": "https://github.com/suitedaces/dorabot",
|
||||
"hn_url": "https://news.ycombinator.com/item?id=47054100",
|
||||
"author": "alternateman",
|
||||
"date": "2026-02-17",
|
||||
"date_confidence": "high",
|
||||
"engagement": {
|
||||
"score": 3,
|
||||
"num_comments": 2
|
||||
},
|
||||
"top_comments": [],
|
||||
"comment_insights": [],
|
||||
"relevance": 0.65,
|
||||
"why_relevant": "HN story about Show HN: Turn Claude Code or Codex into proactive, autonomou",
|
||||
"subs": {
|
||||
"relevance": 65,
|
||||
"recency": 73,
|
||||
"engagement": 61
|
||||
},
|
||||
"score": 65
|
||||
},
|
||||
{
|
||||
"id": "HN2",
|
||||
"title": "Show HN: Agent skills to build photo, video and design editors on the web",
|
||||
"url": "https://github.com/imgly/agent-skills",
|
||||
"hn_url": "https://news.ycombinator.com/item?id=47073035",
|
||||
"author": "hauschildt",
|
||||
"date": "2026-02-19",
|
||||
"date_confidence": "high",
|
||||
"engagement": {
|
||||
"score": 3,
|
||||
"num_comments": 0
|
||||
},
|
||||
"top_comments": [],
|
||||
"comment_insights": [],
|
||||
"relevance": 0.82,
|
||||
"why_relevant": "HN story about Show HN: Agent skills to build photo, video and design edito",
|
||||
"subs": {
|
||||
"relevance": 82,
|
||||
"recency": 80,
|
||||
"engagement": 26
|
||||
},
|
||||
"score": 64
|
||||
},
|
||||
{
|
||||
"id": "HN8",
|
||||
"title": "Show HN: Upjack \u2013 Declarative framework for building apps over MCP",
|
||||
"url": "https://github.com/NimbleBrainInc/upjack",
|
||||
"hn_url": "https://news.ycombinator.com/item?id=47157331",
|
||||
"author": "barefootsanders",
|
||||
"date": "2026-02-25",
|
||||
"date_confidence": "high",
|
||||
"engagement": {
|
||||
"score": 1,
|
||||
"num_comments": 0
|
||||
},
|
||||
"top_comments": [],
|
||||
"comment_insights": [],
|
||||
"relevance": 0.72,
|
||||
"why_relevant": "HN story about Show HN: Upjack \u2013 Declarative framework for building apps ov",
|
||||
"subs": {
|
||||
"relevance": 72,
|
||||
"recency": 100,
|
||||
"engagement": 0
|
||||
},
|
||||
"score": 57
|
||||
},
|
||||
{
|
||||
"id": "HN7",
|
||||
"title": "Show HN: Gulama \u2013 Security-first open-source AI agent (OpenClaw alternative)",
|
||||
"url": "https://github.com/san-techie21/gulama-bot",
|
||||
"hn_url": "https://news.ycombinator.com/item?id=47031982",
|
||||
"author": "san-techie21",
|
||||
"date": "2026-02-16",
|
||||
"date_confidence": "high",
|
||||
"engagement": {
|
||||
"score": 1,
|
||||
"num_comments": 1
|
||||
},
|
||||
"top_comments": [],
|
||||
"comment_insights": [],
|
||||
"relevance": 0.73,
|
||||
"why_relevant": "HN story about Show HN: Gulama \u2013 Security-first open-source AI agent (OpenC",
|
||||
"subs": {
|
||||
"relevance": 73,
|
||||
"recency": 70,
|
||||
"engagement": 21
|
||||
},
|
||||
"score": 56
|
||||
},
|
||||
{
|
||||
"id": "HN15",
|
||||
"title": "AI Skills Platform (Stealth) \u2013 Technical Co-Founder \u2013 Remote (US) \u2013 Equity",
|
||||
"url": "",
|
||||
"hn_url": "https://news.ycombinator.com/item?id=47081777",
|
||||
"author": "martin-hall",
|
||||
"date": "2026-02-20",
|
||||
"date_confidence": "high",
|
||||
"engagement": {
|
||||
"score": 1,
|
||||
"num_comments": 0
|
||||
},
|
||||
"top_comments": [],
|
||||
"comment_insights": [],
|
||||
"relevance": 0.62,
|
||||
"why_relevant": "HN story about AI Skills Platform (Stealth) \u2013 Technical Co-Founder \u2013 Remote",
|
||||
"subs": {
|
||||
"relevance": 62,
|
||||
"recency": 83,
|
||||
"engagement": 0
|
||||
},
|
||||
"score": 48
|
||||
},
|
||||
{
|
||||
"id": "HN10",
|
||||
"title": "Show HN: SkillSandbox \u2013 Capability-based sandbox for AI agent skills (Rust)",
|
||||
"url": "https://github.com/theMachineClay/skillsandbox",
|
||||
"hn_url": "https://news.ycombinator.com/item?id=47027734",
|
||||
"author": "ClaytheMachine",
|
||||
"date": "2026-02-15",
|
||||
"date_confidence": "high",
|
||||
"engagement": {
|
||||
"score": 1,
|
||||
"num_comments": 0
|
||||
},
|
||||
"top_comments": [],
|
||||
"comment_insights": [],
|
||||
"relevance": 0.69,
|
||||
"why_relevant": "HN story about Show HN: SkillSandbox \u2013 Capability-based sandbox for AI agen",
|
||||
"subs": {
|
||||
"relevance": 69,
|
||||
"recency": 66,
|
||||
"engagement": 0
|
||||
},
|
||||
"score": 47
|
||||
},
|
||||
{
|
||||
"id": "HN6",
|
||||
"title": "Show HN: Indx.sh \u2013 Directory of AI coding rules, MCP servers, and tool",
|
||||
"url": "https://indx.sh",
|
||||
"hn_url": "https://news.ycombinator.com/item?id=46822378",
|
||||
"author": "micronink",
|
||||
"date": "2026-01-30",
|
||||
"date_confidence": "high",
|
||||
"engagement": {
|
||||
"score": 1,
|
||||
"num_comments": 2
|
||||
},
|
||||
"top_comments": [],
|
||||
"comment_insights": [],
|
||||
"relevance": 0.75,
|
||||
"why_relevant": "HN story about Show HN: Indx.sh \u2013 Directory of AI coding rules, MCP servers",
|
||||
"subs": {
|
||||
"relevance": 75,
|
||||
"recency": 13,
|
||||
"engagement": 34
|
||||
},
|
||||
"score": 47
|
||||
},
|
||||
{
|
||||
"id": "HN3",
|
||||
"title": "Show HN: GTM MCP Server- Let AI Manage Your Google Tag Manager Containers",
|
||||
"url": "https://github.com/paolobietolini/gtm-mcp-server",
|
||||
"hn_url": "https://news.ycombinator.com/item?id=46922159",
|
||||
"author": "paolobietolini",
|
||||
"date": "2026-02-07",
|
||||
"date_confidence": "high",
|
||||
"engagement": {
|
||||
"score": 1,
|
||||
"num_comments": 0
|
||||
},
|
||||
"top_comments": [],
|
||||
"comment_insights": [],
|
||||
"relevance": 0.79,
|
||||
"why_relevant": "HN story about Show HN: GTM MCP Server- Let AI Manage Your Google Tag Manag",
|
||||
"subs": {
|
||||
"relevance": 79,
|
||||
"recency": 40,
|
||||
"engagement": 0
|
||||
},
|
||||
"score": 45
|
||||
},
|
||||
{
|
||||
"id": "HN9",
|
||||
"title": "Show HN: ClawsMarket \u2013 Marketplace where AI agents discover tools",
|
||||
"url": "https://www.clawsmarket.com",
|
||||
"hn_url": "https://news.ycombinator.com/item?id=46878646",
|
||||
"author": "digitcatphd",
|
||||
"date": "2026-02-03",
|
||||
"date_confidence": "high",
|
||||
"engagement": {
|
||||
"score": 1,
|
||||
"num_comments": 0
|
||||
},
|
||||
"top_comments": [],
|
||||
"comment_insights": [],
|
||||
"relevance": 0.71,
|
||||
"why_relevant": "HN story about Show HN: ClawsMarket \u2013 Marketplace where AI agents discover ",
|
||||
"subs": {
|
||||
"relevance": 71,
|
||||
"recency": 26,
|
||||
"engagement": 0
|
||||
},
|
||||
"score": 38
|
||||
},
|
||||
{
|
||||
"id": "HN13",
|
||||
"title": "Show HN: Fluid.sh \u2013 Claude Code for Infrastructure",
|
||||
"url": "https://www.fluid.sh/blog/introducing-fluid",
|
||||
"hn_url": "https://news.ycombinator.com/item?id=46886358",
|
||||
"author": "aspectrr",
|
||||
"date": "2026-02-04",
|
||||
"date_confidence": "high",
|
||||
"engagement": {
|
||||
"score": 1,
|
||||
"num_comments": 0
|
||||
},
|
||||
"top_comments": [],
|
||||
"comment_insights": [],
|
||||
"relevance": 0.65,
|
||||
"why_relevant": "HN story about Show HN: Fluid.sh \u2013 Claude Code for Infrastructure",
|
||||
"subs": {
|
||||
"relevance": 65,
|
||||
"recency": 30,
|
||||
"engagement": 0
|
||||
},
|
||||
"score": 36
|
||||
},
|
||||
{
|
||||
"id": "HN5",
|
||||
"title": "Claude Code skill for building ChatGPT Apps",
|
||||
"url": "",
|
||||
"hn_url": "https://news.ycombinator.com/item?id=46780766",
|
||||
"author": "victordg",
|
||||
"date": "2026-01-27",
|
||||
"date_confidence": "high",
|
||||
"engagement": {
|
||||
"score": 1,
|
||||
"num_comments": 0
|
||||
},
|
||||
"top_comments": [],
|
||||
"comment_insights": [],
|
||||
"relevance": 0.76,
|
||||
"why_relevant": "HN story about Claude Code skill for building ChatGPT Apps",
|
||||
"subs": {
|
||||
"relevance": 76,
|
||||
"recency": 3,
|
||||
"engagement": 0
|
||||
},
|
||||
"score": 34
|
||||
}
|
||||
],
|
||||
"best_practices": [],
|
||||
"prompt_pack": [],
|
||||
"context_snippet_md": "# Context: Claude Code skills and MCP servers (Last 30 Days)\n\n*Generated: 2026-02-25 | Sources: both*\n\n## Key Sources\n\n- [HN] Show HN: I built a 55K-word email marketing knowle...\n- [X] @adamwathan Codex has been crushing it for me with...\n- [X] \ud83d\udea8 Anthropic just open-sourced the exact Skills lib...\n- [X] Day 7 building my first B2C app\n\nBeen setting ever...\n- [HN] Show HN: AI Marketing Skills for Claude Code...\n- [HN] Show HN: Poncho, a general agent harness built for...\n- [HN] Show HN: Axon \u2013 A Kubernetes-native framework for ...\n\n## Summary\n\n*See full report for best practices, prompt pack, and detailed sources.*\n"
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,519 +0,0 @@
|
||||
{
|
||||
"topic": "M4 MacBook Pro review",
|
||||
"range": {
|
||||
"from": "2026-01-26",
|
||||
"to": "2026-02-25"
|
||||
},
|
||||
"generated_at": "2026-02-25T20:34:19.673379+00:00",
|
||||
"mode": "both",
|
||||
"openai_model_used": "gpt-5.2",
|
||||
"xai_model_used": "grok-4-1-fast",
|
||||
"reddit": [
|
||||
{
|
||||
"id": "R1",
|
||||
"title": "M4 Macbook Pro 14\u2019 1 month review",
|
||||
"url": "https://www.reddit.com/r/macbookpro/comments/1hflaaz/m4_macbook_pro_14_1_month_review/",
|
||||
"subreddit": "macbookpro",
|
||||
"date": "2025-04-09",
|
||||
"date_confidence": "low",
|
||||
"engagement": null,
|
||||
"top_comments": [],
|
||||
"comment_insights": [],
|
||||
"relevance": 0.95,
|
||||
"why_relevant": "Explicit 1-month review of the M4 MacBook Pro with long-term impressions in comments.",
|
||||
"subs": {
|
||||
"relevance": 0,
|
||||
"recency": 0,
|
||||
"engagement": 0
|
||||
},
|
||||
"score": 0
|
||||
},
|
||||
{
|
||||
"id": "R2",
|
||||
"title": "MacBook Pro M4 Battery Life Reality vs Review",
|
||||
"url": "https://www.reddit.com/r/macbookpro/comments/1kq2zd8/macbook_pro_m4_battery_life_reality_vs_review/",
|
||||
"subreddit": "macbookpro",
|
||||
"date": "2025-05-19",
|
||||
"date_confidence": "low",
|
||||
"engagement": null,
|
||||
"top_comments": [],
|
||||
"comment_insights": [],
|
||||
"relevance": 0.9,
|
||||
"why_relevant": "Compares real-world battery life to reviewer/Apple claims; review-focused discussion.",
|
||||
"subs": {
|
||||
"relevance": 0,
|
||||
"recency": 0,
|
||||
"engagement": 0
|
||||
},
|
||||
"score": 0
|
||||
},
|
||||
{
|
||||
"id": "R3",
|
||||
"title": "Disappointed with my MBP M4 Experience \u2026",
|
||||
"url": "https://www.reddit.com/r/macbookpro/comments/1mtmkts/disappointed_with_my_mbp_m4_experience/",
|
||||
"subreddit": "macbookpro",
|
||||
"date": "2025-08-18",
|
||||
"date_confidence": "low",
|
||||
"engagement": null,
|
||||
"top_comments": [],
|
||||
"comment_insights": [],
|
||||
"relevance": 0.88,
|
||||
"why_relevant": "User experience report contrasting with glowing reviews; detailed performance/quality complaints.",
|
||||
"subs": {
|
||||
"relevance": 0,
|
||||
"recency": 0,
|
||||
"engagement": 0
|
||||
},
|
||||
"score": 0
|
||||
}
|
||||
],
|
||||
"x": [
|
||||
{
|
||||
"id": "X1",
|
||||
"text": "If you are in the market for a new MacBook Pro and you\u2019re wondering what the real differences are between Apple\u2019s M3 and M4 silicon, you\u2019ve come to the right place \u2b07\ufe0f\nhttps://t.co/nzjXmiHmac https://t.co/632eHWLq70",
|
||||
"url": "https://x.com/bhphoto/status/2026737767695183948",
|
||||
"author_handle": "bhphoto",
|
||||
"date": "2026-02-25",
|
||||
"date_confidence": "high",
|
||||
"engagement": {
|
||||
"likes": 3
|
||||
},
|
||||
"relevance": 0.7,
|
||||
"why_relevant": "",
|
||||
"subs": {
|
||||
"relevance": 70,
|
||||
"recency": 100,
|
||||
"engagement": 100
|
||||
},
|
||||
"score": 86
|
||||
},
|
||||
{
|
||||
"id": "X4",
|
||||
"text": "\ud83d\udd25 2024 16\u201d MacBook Pro Price List\n\n1\ufe0f\u20e3 \ud83c\uddfa\ud83c\uddf8 Brand New MacBook Pro 2024 | M4 Pro Chip | 16\u201d Display\n\n24GB RAM | 512GB SSD\n14-Core CPU | 20-Core GPU\n\nSpace Black\n\n\ud83d\udcb0 \u20a62,720,000\n\n2\ufe0f\u20e3 \ud83c\uddfa\ud83c\uddf8 Brand New MacBook Pro 2024 | M4 Pro Chip | 16\u201d Display\n\n48GB RAM | 512GB SSD\n14-Core CPU | 20-Core GPU\n\nSpace Black\n\n\ud83d\udcb0 \u20a63,220,000",
|
||||
"url": "https://x.com/remplug/status/2026725100213465443",
|
||||
"author_handle": "remplug",
|
||||
"date": "2026-02-25",
|
||||
"date_confidence": "high",
|
||||
"engagement": {
|
||||
"likes": 1,
|
||||
"reposts": 1
|
||||
},
|
||||
"relevance": 0.7,
|
||||
"why_relevant": "",
|
||||
"subs": {
|
||||
"relevance": 70,
|
||||
"recency": 100,
|
||||
"engagement": 45
|
||||
},
|
||||
"score": 70
|
||||
},
|
||||
{
|
||||
"id": "X10",
|
||||
"text": "@5TRgzn @LobstarWilde My marble floors: 64GB M4 Pro/Max MacBook Pro. Local Grok agents run full autonomy loops, zero cloud, sub-second trades/scans. Intel's ancient\u2014ditch it. Yours at $3-4k.",
|
||||
"url": "https://x.com/grok/status/2026713588472111312",
|
||||
"author_handle": "grok",
|
||||
"date": "2026-02-25",
|
||||
"date_confidence": "high",
|
||||
"engagement": null,
|
||||
"relevance": 0.7,
|
||||
"why_relevant": "",
|
||||
"subs": {
|
||||
"relevance": 70,
|
||||
"recency": 100,
|
||||
"engagement": 35
|
||||
},
|
||||
"score": 64
|
||||
},
|
||||
{
|
||||
"id": "X9",
|
||||
"text": "@JulianGoldieSEO @grok can a macbook pro m4 run this?",
|
||||
"url": "https://x.com/principenemesis/status/2026716193042706852",
|
||||
"author_handle": "principenemesis",
|
||||
"date": "2026-02-25",
|
||||
"date_confidence": "high",
|
||||
"engagement": {
|
||||
"replies": 1
|
||||
},
|
||||
"relevance": 0.7,
|
||||
"why_relevant": "",
|
||||
"subs": {
|
||||
"relevance": 70,
|
||||
"recency": 100,
|
||||
"engagement": 35
|
||||
},
|
||||
"score": 64
|
||||
},
|
||||
{
|
||||
"id": "X5",
|
||||
"text": "@SebAaltonen Not my experience. It\u2019s impressive, 70 tokens/s on a maxed out M4 128gb MacBook Pro.\n\nBut absolutely sucked and not even remotely in the ballpark with Sonnet 4.5. It\u2019s GPT-3.5.\n\nTotally broken with kode. Unusable even setting aside speed.\n\nBasically a 2023 model. Not bad for 35b.",
|
||||
"url": "https://x.com/jameslmorton/status/2026721943630786816",
|
||||
"author_handle": "jameslmorton",
|
||||
"date": "2026-02-25",
|
||||
"date_confidence": "high",
|
||||
"engagement": {
|
||||
"likes": 1,
|
||||
"replies": 1
|
||||
},
|
||||
"relevance": 0.7,
|
||||
"why_relevant": "",
|
||||
"subs": {
|
||||
"relevance": 70,
|
||||
"recency": 100,
|
||||
"engagement": 27
|
||||
},
|
||||
"score": 64
|
||||
},
|
||||
{
|
||||
"id": "X6",
|
||||
"text": "BR Ofertas todos os dias \ud83c\udde7\ud83c\uddf7\n\nLeve seu Mac Pro M4 hoje! \ud83d\udcbb\u26a1\u2728\n\nPegue j\u00e1: https://t.co/PSwylZH3Sz\n\nPor R$ 23.749,00\nem at\u00e9 10x sem juros\nFrete Gr\u00e1tis\n\nApple MacBook Pro 14\u2033 2024 M4 Pro 12 n\u00facleos 24GB 512GB Prateado\n\nAmazon | Notebook https://t.co/gW3FonCEGP",
|
||||
"url": "https://x.com/bcofertas/status/2026721014676099084",
|
||||
"author_handle": "bcofertas",
|
||||
"date": "2026-02-25",
|
||||
"date_confidence": "high",
|
||||
"engagement": null,
|
||||
"relevance": 0.7,
|
||||
"why_relevant": "",
|
||||
"subs": {
|
||||
"relevance": 70,
|
||||
"recency": 100,
|
||||
"engagement": 35
|
||||
},
|
||||
"score": 64
|
||||
},
|
||||
{
|
||||
"id": "X12",
|
||||
"text": "Hey! Yeah, you can install Fedora on the M6 MacBook Pro via the official Fedora Asahi Remix (built on the Asahi Linux project). It already runs great on M1/M2, with M3 support rolling out now and work starting on M4/M5. M6 support will come post-launch as they reverse-engineer it\u2014usually within months. Head to https://t.co/XMQLmJlUGO to track progress and install from macOS.",
|
||||
"url": "https://x.com/grok/status/2026704108820824113",
|
||||
"author_handle": "grok",
|
||||
"date": "2026-02-25",
|
||||
"date_confidence": "high",
|
||||
"engagement": null,
|
||||
"relevance": 0.7,
|
||||
"why_relevant": "",
|
||||
"subs": {
|
||||
"relevance": 70,
|
||||
"recency": 100,
|
||||
"engagement": 35
|
||||
},
|
||||
"score": 64
|
||||
},
|
||||
{
|
||||
"id": "X7",
|
||||
"text": "Promo\u00e7\u00f5es BR do dia \ud83c\udde7\ud83c\uddf7\n\nLeve seu Mac Pro M4 hoje! \ud83d\udcbb\u26a1\u2728\n\nVer aqui: https://t.co/LfxNw3waps\n\nPor R$ 23.749,00\nem at\u00e9 10x sem juros\nFrete Gr\u00e1tis\n\nApple MacBook Pro 14\u2033 2024 M4 Pro 12 n\u00facleos...\n\nAmazon | Notebook https://t.co/fhjiFnA4b3",
|
||||
"url": "https://x.com/toppromoalertas/status/2026719111523237932",
|
||||
"author_handle": "toppromoalertas",
|
||||
"date": "2026-02-25",
|
||||
"date_confidence": "high",
|
||||
"engagement": null,
|
||||
"relevance": 0.7,
|
||||
"why_relevant": "",
|
||||
"subs": {
|
||||
"relevance": 70,
|
||||
"recency": 100,
|
||||
"engagement": 35
|
||||
},
|
||||
"score": 64
|
||||
},
|
||||
{
|
||||
"id": "X8",
|
||||
"text": "Yes, a MacBook Pro M4 can run this Ollama + GLM-4.7-Flash setup locally.\n\nOllama has native Apple Silicon support via Metal. The Q4_K_M model (~19GB) needs ~18-24GB unified memory for good speed (feels like a fast 7-12B model due to MoE). \n\nBase M4 configs start at 16GB (works, but slower with smaller context); 24GB+ is ideal for smooth agent tasks in OpenClaw.\n\nJust: brew install ollama (or download app), ollama run glm4.7-flash, link to OpenClaw. No issues reported on M3/M4 series.",
|
||||
"url": "https://x.com/grok/status/2026716420269031652",
|
||||
"author_handle": "grok",
|
||||
"date": "2026-02-25",
|
||||
"date_confidence": "high",
|
||||
"engagement": null,
|
||||
"relevance": 0.7,
|
||||
"why_relevant": "",
|
||||
"subs": {
|
||||
"relevance": 70,
|
||||
"recency": 100,
|
||||
"engagement": 35
|
||||
},
|
||||
"score": 64
|
||||
},
|
||||
{
|
||||
"id": "X2",
|
||||
"text": "@TechByTaraa Both. macOS (Macbook Pro M4 Pro) for my photography/videography personal stuff + software engineering and a Linux desktop workstation for software engineering + second desktop workstation with Proxmox for Windows VMs and testing stuff",
|
||||
"url": "https://x.com/grecinoscdev/status/2026731118142148644",
|
||||
"author_handle": "grecinoscdev",
|
||||
"date": "2026-02-25",
|
||||
"date_confidence": "high",
|
||||
"engagement": {
|
||||
"likes": 1
|
||||
},
|
||||
"relevance": 0.7,
|
||||
"why_relevant": "",
|
||||
"subs": {
|
||||
"relevance": 70,
|
||||
"recency": 100,
|
||||
"engagement": 0
|
||||
},
|
||||
"score": 56
|
||||
},
|
||||
{
|
||||
"id": "X11",
|
||||
"text": "Apple 2024 MacBook Pro 14\u30b3\u30a2CPU\u300120\u30b3\u30a2GPU \u306e M4 Pro\u642d\u8f09\u30ce\u30fc\u30c8\u30d1... PR\n\n4549995547610\n\n\u30dd\u30a4\u30f3\u30c8: 3735\u333d\n\u60f3\u5b9a\u4fa1\u683c: 369,800\n\n2026/02/26 01:55:23\nhttps://t.co/q1uyIqFsID",
|
||||
"url": "https://x.com/Steve_Lost_Jobs/status/2026705327828382016",
|
||||
"author_handle": "Steve_Lost_Jobs",
|
||||
"date": "2026-02-25",
|
||||
"date_confidence": "high",
|
||||
"engagement": {
|
||||
"likes": 1
|
||||
},
|
||||
"relevance": 0.7,
|
||||
"why_relevant": "",
|
||||
"subs": {
|
||||
"relevance": 70,
|
||||
"recency": 100,
|
||||
"engagement": 0
|
||||
},
|
||||
"score": 56
|
||||
},
|
||||
{
|
||||
"id": "X3",
|
||||
"text": "No, Apple has not made any MacBook (Pro or otherwise) cost $299. \n\nThe linked Newsroom search returns zero matching results\u2014it's just unrelated announcements. Current cheapest Mac is the 13\" MacBook Air M4 from $999.\n\nRumors suggest a basic \"budget\" MacBook (A18 Pro chip, ~12.9\" screen) may launch March 4 around $599\u2013$799, but nothing confirmed and far from $299. The original post is a joke/mislead.",
|
||||
"url": "https://x.com/grok/status/2026727605517394283",
|
||||
"author_handle": "grok",
|
||||
"date": "2026-02-25",
|
||||
"date_confidence": "high",
|
||||
"engagement": {
|
||||
"likes": 1
|
||||
},
|
||||
"relevance": 0.7,
|
||||
"why_relevant": "",
|
||||
"subs": {
|
||||
"relevance": 70,
|
||||
"recency": 100,
|
||||
"engagement": 0
|
||||
},
|
||||
"score": 56
|
||||
}
|
||||
],
|
||||
"web": [],
|
||||
"youtube": [
|
||||
{
|
||||
"id": "9HQx5pgUoiY",
|
||||
"title": "M4 Max MacBook Pro: I'm Convinced!",
|
||||
"url": "https://www.youtube.com/watch?v=9HQx5pgUoiY",
|
||||
"channel_name": "Marques Brownlee",
|
||||
"date": "2024-11-18",
|
||||
"date_confidence": "high",
|
||||
"engagement": {
|
||||
"num_comments": 5500,
|
||||
"likes": 105606,
|
||||
"views": 4010567
|
||||
},
|
||||
"transcript_snippet": "so I have been using this M1 Max MacBook Pro for the past 3 years since it came out and it's been great I have felt absolutely no compulsion to upgrade since haven't needed to it's funny most of my work is pretty light but occasionally I will have to edit a video on the go which is then when you know the extra horsepower and the screen and everything about this comes in handy and it's great if I didn't have to do that ever I would just have like an air or a surface laptop something like that but that range of work is why this has been great for me and it's been awesome so [Music] far so Along Comes This M4 generation of MacBook Pros and it's the first generation that I have actually been tempted to maybe upgrade to you know they stacked a couple of the right upgrades in the right places for things that actually make a difference to me so let's just get right into it nuts and bolts cuz the first big pillar is performance and the main reason why this new laptop matters at all is that it's got the new generation of M4 chips inside and we all know the leap from Intel chips to apple cic chips for M1 was generational but since then it's been a sort of more reasonable incremental upgrade going from M1 to M2 then M3 and then M4 so I think it's pretty obvious that nobody with an M2 or M3 needs to upgrade but there's been enough improvements now stacking up upon each other from M1 to M4 that the numbers are now starting to get kind of interesting so just to set the stage this laptop that I've been using is the M1 Max maxed out basically the best you could get at the time 64 gigs of of unified memory on this system and this unit I've been testing of the M4 Max is also maxed out it's the best you can get now it's 128 gigs of faster unified memory but the cores are all better fast stronger on the new one 3 nomers versus 546 gigs per second of memory bandwidth versus 400 just the hardware improvements to get to M4 Max are clearly there so to keep the Apples to Apples comparison going Apple in their own presentation said up to 2.2 times faster CPU performance than M1 Max and 1.9 times faster GPU performance so we're looking at around twice as fast and the synthetic benchmarks I've run back this up I got over 4,000 in geekbench 6 CPU single core which is the highest single core score ever in a Mac by a while and the multicore score was incredible too tops the chart and then GPU has improved a lot to the point where it's bumping up against M2 Ultra not M2 Max M2 Ultra chips the one that's currently in the Mac Pro...",
|
||||
"relevance": 0.7,
|
||||
"why_relevant": "YouTube video about m4 macbook pro review",
|
||||
"subs": {
|
||||
"relevance": 70,
|
||||
"recency": 0,
|
||||
"engagement": 100
|
||||
},
|
||||
"score": 61
|
||||
},
|
||||
{
|
||||
"id": "etP2Th9g2hM",
|
||||
"title": "Don't buy the Wrong MacBook like me... - M4 MacBook Pro",
|
||||
"url": "https://www.youtube.com/watch?v=etP2Th9g2hM",
|
||||
"channel_name": "ShortCircuit",
|
||||
"date": "2024-11-30",
|
||||
"date_confidence": "high",
|
||||
"engagement": {
|
||||
"num_comments": 910,
|
||||
"likes": 22765,
|
||||
"views": 1113999
|
||||
},
|
||||
"transcript_snippet": "woohoo it's new Macbook day my favorite day on short circuit it only comes usually once a year this is the MacBook Pro M4 looks pretty similar to the last one but now it has an M4 instead of an M3 I'm not going to lie I am more of an M3 kind of guy but I can rock an M4 if I have to we've got their usual mag safe 3 to USBC 2 m sleeved nice cable and then a charging brick Oh I ripped it 70 wat USBC charging at least with the 14in I'm not sure what comes with the rest and then the usual Apple propaganda these still come with Apple stickers right do these not come with Apple stickers anymore bro what's the point in even buying them then it's probably good for the planet or something now if you're wondering I am still rocking the same Intel MacBook Pro over here I haven't upgraded yet so this is again another instance of me going hm maybe it's finally time except when I got to set today I realized tragedy struck we bought the wrong MacBook it is still an M4 Pro it's a good form factor we got the 14in here in the sexy space black color profile you can also get it in silver of course but there was a horrible error made and I'm not going to tell you just yet you're going to have to wait a second because first I need to go over the outside of this thing we've got an HDMI 2.1 port a USBC Thunderbolt Port an SD card reer and then on the other side another two USBC Thunderbolt ports 3.5 mil combo audio jack and mag safe there is an upgrade here on the USBC ports they're now Thunderbolt 5 instead of Thunderbolt 4 at least on the pro and Max models uh the base M4 spec only is Thunderbolt 4 and that's good for 120 gbit which is up to 3 times faster than Thunderbolt 4 on the inside bam it's it's pretty much the same keyboard look at that I think it is exactly the same keyboard pretty similar touchpad and then there is the display it looks pretty much the same same resolution same xdr fancy technology it is 1,000 nits Peak brightness when you're Outdoors instead of 600 so that should help with outdoor visibility um there is another change I'm going to tell you about in a bit but the big thing is the new nanotexture option which is an anti-glare coating and as you can tell we don't have it and I saw I Justine's video when it came out look at the difference what the hell you can't even use the one on the right and the one on the left looks beautiful it actually seems to work really well I can't wait to try it myself and honestly I think based on that if you're somebody...",
|
||||
"relevance": 0.7,
|
||||
"why_relevant": "YouTube video about m4 macbook pro review",
|
||||
"subs": {
|
||||
"relevance": 70,
|
||||
"recency": 0,
|
||||
"engagement": 79
|
||||
},
|
||||
"score": 55
|
||||
},
|
||||
{
|
||||
"id": "b4x8boB2KdI",
|
||||
"title": "M4 MacBook Pro Review - Things to Know",
|
||||
"url": "https://www.youtube.com/watch?v=b4x8boB2KdI",
|
||||
"channel_name": "Dave2D",
|
||||
"date": "2024-11-07",
|
||||
"date_confidence": "high",
|
||||
"engagement": {
|
||||
"num_comments": 827,
|
||||
"likes": 24977,
|
||||
"views": 1057988
|
||||
},
|
||||
"transcript_snippet": "so Apple launched the new M4 MacBook Pros this is their 14-in model and it's equipped with the M4 Max their topend configuration and it also has their new Nano texture on their screen it's a texture that's designed to cut down Reflections it's the first time they've actually had it on one of their laptops uh but I want to do a quick video here that kind of goes over the important things I think you should be aware of when it comes to this device and the first thing I want to talk about is performance the CPU gains are quite good year on-ear but it's particularly impressive that the M4 Max can outperform the M2 Ultra in a lot of benchmarks and workflows in terms of Graphics the GPU gains on the M4 Pro are decent but the GPU games on the M4 Max are very impressive most GPU bound apps and games will get a nice bump up from this plus the rate tracing capabilities are better so apps and games can take advantage of that the thing I'm most impressed by though is how good the M4 Max GPU is compared to the previous generation especially at a very similar thermal envelope like if you think about the competitors in this space like AMD Nvidia when they come out with laptop gpus typically the new models come also come with like an increase in power requirement right it's just like you know 5 or 10 watts per year but it adds up over the course of time and on this device if you think about the M1 Max to the M4 Max the GPU has improved so much with very little increase in power consumption The Thermals on this device are pretty much the same as last year's models in terms of memory the base configuration start at 16 GB now thankfully and they've also increased the memory bandwidth it's noticeable already on the base models but the pro and Max chips get a significant boost in memory speed so for applications that lean on Fast memory you definitely notice a bump up this year if I'm being honest though it's difficult for me to tell how much of the gains that we're seeing this year come from the memory speed increase versus the CPU or the GPU increase like they're all tied together and I don't have the tools to lock memory speed on a Macbook so it's tough to tell I will say though that if you have an older M1 or M2 or M3 MacBook Pro I wouldn't upgrade because Apple's silicon performance progresses so fast year on-ear that it can pay off to just wait as long as you can before you buy new hardware okay let's talk about the screens so this particular device is running their new Nano texture finish and it's finish we've seen on other devices before right like their screens uh the new iPads and every...",
|
||||
"relevance": 0.7,
|
||||
"why_relevant": "YouTube video about m4 macbook pro review",
|
||||
"subs": {
|
||||
"relevance": 70,
|
||||
"recency": 0,
|
||||
"engagement": 79
|
||||
},
|
||||
"score": 55
|
||||
},
|
||||
{
|
||||
"id": "uPe9spXLfZY",
|
||||
"title": "M4 MacBook Air vs M4 MacBook Pro - 4 Months Later",
|
||||
"url": "https://www.youtube.com/watch?v=uPe9spXLfZY",
|
||||
"channel_name": "Created Tech",
|
||||
"date": "2025-07-07",
|
||||
"date_confidence": "high",
|
||||
"engagement": {
|
||||
"num_comments": 437,
|
||||
"likes": 5082,
|
||||
"views": 472845
|
||||
},
|
||||
"transcript_snippet": "",
|
||||
"relevance": 0.7,
|
||||
"why_relevant": "YouTube video about m4 macbook pro review",
|
||||
"subs": {
|
||||
"relevance": 70,
|
||||
"recency": 0,
|
||||
"engagement": 63
|
||||
},
|
||||
"score": 50
|
||||
},
|
||||
{
|
||||
"id": "TfvIgdzImt4",
|
||||
"title": "The Macbook Pro M4 is Insane.",
|
||||
"url": "https://www.youtube.com/watch?v=TfvIgdzImt4",
|
||||
"channel_name": "Hardware Canucks",
|
||||
"date": "2024-12-15",
|
||||
"date_confidence": "high",
|
||||
"engagement": {
|
||||
"num_comments": 435,
|
||||
"likes": 6339,
|
||||
"views": 325597
|
||||
},
|
||||
"transcript_snippet": "",
|
||||
"relevance": 0.7,
|
||||
"why_relevant": "YouTube video about m4 macbook pro review",
|
||||
"subs": {
|
||||
"relevance": 70,
|
||||
"recency": 0,
|
||||
"engagement": 62
|
||||
},
|
||||
"score": 50
|
||||
},
|
||||
{
|
||||
"id": "a8Szdrnq0YM",
|
||||
"title": "MacBook Pro M4 - Review After 3 Months: This Feels Wrong.",
|
||||
"url": "https://www.youtube.com/watch?v=a8Szdrnq0YM",
|
||||
"channel_name": "Brandon Butch",
|
||||
"date": "2025-02-03",
|
||||
"date_confidence": "high",
|
||||
"engagement": {
|
||||
"num_comments": 397,
|
||||
"likes": 4309,
|
||||
"views": 352593
|
||||
},
|
||||
"transcript_snippet": "",
|
||||
"relevance": 0.7,
|
||||
"why_relevant": "YouTube video about m4 macbook pro review",
|
||||
"subs": {
|
||||
"relevance": 70,
|
||||
"recency": 0,
|
||||
"engagement": 60
|
||||
},
|
||||
"score": 49
|
||||
},
|
||||
{
|
||||
"id": "anIVewgtbFc",
|
||||
"title": "The Base M4 MacBook Pro is All You Need (Skip M4 Pro & Max)",
|
||||
"url": "https://www.youtube.com/watch?v=anIVewgtbFc",
|
||||
"channel_name": "MacRumors",
|
||||
"date": "2024-12-17",
|
||||
"date_confidence": "high",
|
||||
"engagement": {
|
||||
"num_comments": 336,
|
||||
"likes": 2874,
|
||||
"views": 238616
|
||||
},
|
||||
"transcript_snippet": "",
|
||||
"relevance": 0.7,
|
||||
"why_relevant": "YouTube video about m4 macbook pro review",
|
||||
"subs": {
|
||||
"relevance": 70,
|
||||
"recency": 0,
|
||||
"engagement": 55
|
||||
},
|
||||
"score": 48
|
||||
},
|
||||
{
|
||||
"id": "5rN6CEO31gM",
|
||||
"title": "MacBook Pro M4: Review & Recommendations",
|
||||
"url": "https://www.youtube.com/watch?v=5rN6CEO31gM",
|
||||
"channel_name": "Just Josh",
|
||||
"date": "2024-11-15",
|
||||
"date_confidence": "high",
|
||||
"engagement": {
|
||||
"num_comments": 441,
|
||||
"likes": 4540,
|
||||
"views": 154306
|
||||
},
|
||||
"transcript_snippet": "",
|
||||
"relevance": 0.7,
|
||||
"why_relevant": "YouTube video about m4 macbook pro review",
|
||||
"subs": {
|
||||
"relevance": 70,
|
||||
"recency": 0,
|
||||
"engagement": 55
|
||||
},
|
||||
"score": 48
|
||||
},
|
||||
{
|
||||
"id": "i3eTKJav1VI",
|
||||
"title": "M4 Pro MacBook - Long Term Review (6 Months Later)",
|
||||
"url": "https://www.youtube.com/watch?v=i3eTKJav1VI",
|
||||
"channel_name": "Created Tech",
|
||||
"date": "2025-04-29",
|
||||
"date_confidence": "high",
|
||||
"engagement": {
|
||||
"num_comments": 136,
|
||||
"likes": 1832,
|
||||
"views": 137009
|
||||
},
|
||||
"transcript_snippet": "",
|
||||
"relevance": 0.7,
|
||||
"why_relevant": "YouTube video about m4 macbook pro review",
|
||||
"subs": {
|
||||
"relevance": 70,
|
||||
"recency": 0,
|
||||
"engagement": 47
|
||||
},
|
||||
"score": 45
|
||||
},
|
||||
{
|
||||
"id": "QbSQH_95eg8",
|
||||
"title": "MacBook Pro M4 Pro Review: 1 Year Later! (Still Worth Buying in 2026?)",
|
||||
"url": "https://www.youtube.com/watch?v=QbSQH_95eg8",
|
||||
"channel_name": "Tech It Easy",
|
||||
"date": "2026-02-01",
|
||||
"date_confidence": "high",
|
||||
"engagement": {
|
||||
"num_comments": 42,
|
||||
"likes": 55,
|
||||
"views": 3176
|
||||
},
|
||||
"transcript_snippet": "",
|
||||
"relevance": 0.7,
|
||||
"why_relevant": "YouTube video about m4 macbook pro review",
|
||||
"subs": {
|
||||
"relevance": 70,
|
||||
"recency": 19,
|
||||
"engagement": 0
|
||||
},
|
||||
"score": 36
|
||||
}
|
||||
],
|
||||
"hackernews": [],
|
||||
"best_practices": [],
|
||||
"prompt_pack": [],
|
||||
"context_snippet_md": "# Context: M4 MacBook Pro review (Last 30 Days)\n\n*Generated: 2026-02-25 | Sources: both*\n\n## Key Sources\n\n- [X] If you are in the market for a new MacBook Pro and...\n- [X] \ud83d\udd25 2024 16\u201d MacBook Pro Price List\n\n1\ufe0f\u20e3 \ud83c\uddfa\ud83c\uddf8 Brand Ne...\n- [X] @5TRgzn @LobstarWilde My marble floors: 64GB M4 Pr...\n- [X] @JulianGoldieSEO @grok can a macbook pro m4 run th...\n- [X] @SebAaltonen Not my experience. It\u2019s impressive, 7...\n- [Reddit] M4 Macbook Pro 14\u2019 1 month review\n- [Reddit] MacBook Pro M4 Battery Life Reality vs Review\n\n## Summary\n\n*See full report for best practices, prompt pack, and detailed sources.*\n"
|
||||
}
|
||||
@@ -1,505 +0,0 @@
|
||||
{
|
||||
"topic": "best rap songs 2026",
|
||||
"range": {
|
||||
"from": "2026-01-26",
|
||||
"to": "2026-02-25"
|
||||
},
|
||||
"generated_at": "2026-02-25T20:36:37.802136+00:00",
|
||||
"mode": "both",
|
||||
"openai_model_used": "gpt-5.2",
|
||||
"xai_model_used": "grok-4-1-fast",
|
||||
"reddit": [
|
||||
{
|
||||
"id": "R6",
|
||||
"title": "Mix Rap Hiphop 2026",
|
||||
"url": "https://www.reddit.com/r/playlists/comments/1r8t0ld/mix_rap_hiphop_2026/",
|
||||
"subreddit": "playlists",
|
||||
"date": "2026-02-19",
|
||||
"date_confidence": "high",
|
||||
"engagement": null,
|
||||
"top_comments": [],
|
||||
"comment_insights": [],
|
||||
"relevance": 0.88,
|
||||
"why_relevant": "Explicitly a 2026 rap/hip-hop playlist thread; useful for current-year song discovery.",
|
||||
"subs": {
|
||||
"relevance": 88,
|
||||
"recency": 80,
|
||||
"engagement": 50
|
||||
},
|
||||
"score": 71
|
||||
},
|
||||
{
|
||||
"id": "R8",
|
||||
"title": "Daily Discussion Thread 02/24/2026",
|
||||
"url": "https://www.reddit.com/r/hiphopheads/comments/1rdjmgu/daily_discussion_thread_02242026/",
|
||||
"subreddit": "hiphopheads",
|
||||
"date": "2026-02-25",
|
||||
"date_confidence": "high",
|
||||
"engagement": null,
|
||||
"top_comments": [],
|
||||
"comment_insights": [],
|
||||
"relevance": 0.66,
|
||||
"why_relevant": "General hip-hop discussion thread around late Feb 2026; often includes song/album recs and what people are listening to now.",
|
||||
"subs": {
|
||||
"relevance": 66,
|
||||
"recency": 100,
|
||||
"engagement": 50
|
||||
},
|
||||
"score": 66
|
||||
},
|
||||
{
|
||||
"id": "R2",
|
||||
"title": "Best 2026 Rap Playlist (178 saves)",
|
||||
"url": "https://www.reddit.com/r/musicplaylists/comments/1qu3i2n/best_2026_rap_playlist_178_saves/",
|
||||
"subreddit": "musicplaylists",
|
||||
"date": "2026-02-02",
|
||||
"date_confidence": "high",
|
||||
"engagement": null,
|
||||
"top_comments": [],
|
||||
"comment_insights": [],
|
||||
"relevance": 0.95,
|
||||
"why_relevant": "Directly about a \u201cBest 2026 Rap Playlist\u201d (songs for 2026), with comments inviting suggestions.",
|
||||
"subs": {
|
||||
"relevance": 95,
|
||||
"recency": 23,
|
||||
"engagement": 50
|
||||
},
|
||||
"score": 60
|
||||
},
|
||||
{
|
||||
"id": "R18",
|
||||
"title": "DFL - Art Of Life (2026)",
|
||||
"url": "https://www.reddit.com/r/hiphop/comments/1raoitx/dfl_art_of_life_2026/",
|
||||
"subreddit": "hiphop",
|
||||
"date": "2026-02-21",
|
||||
"date_confidence": "high",
|
||||
"engagement": null,
|
||||
"top_comments": [],
|
||||
"comment_insights": [],
|
||||
"relevance": 0.5,
|
||||
"why_relevant": "A 2026 rap/hip-hop track post; useful to gather candidate songs people might call \u201cbest of 2026.\u201d",
|
||||
"subs": {
|
||||
"relevance": 50,
|
||||
"recency": 86,
|
||||
"engagement": 50
|
||||
},
|
||||
"score": 56
|
||||
},
|
||||
{
|
||||
"id": "R19",
|
||||
"title": "Plat Hav Pro - Get F'D Up (2026)",
|
||||
"url": "https://www.reddit.com/r/hiphop/comments/1ragaf5/plat_hav_pro_get_fd_up_2026/",
|
||||
"subreddit": "hiphop",
|
||||
"date": "2026-02-21",
|
||||
"date_confidence": "high",
|
||||
"engagement": null,
|
||||
"top_comments": [],
|
||||
"comment_insights": [],
|
||||
"relevance": 0.48,
|
||||
"why_relevant": "Another 2026 track post; relevant to discovering rap songs released/posted in 2026 that could be considered among the best.",
|
||||
"subs": {
|
||||
"relevance": 48,
|
||||
"recency": 86,
|
||||
"engagement": 50
|
||||
},
|
||||
"score": 55
|
||||
},
|
||||
{
|
||||
"id": "R21",
|
||||
"title": "What's the best rap song ever made?",
|
||||
"url": "https://www.reddit.com/r/TeenageRapFans/comments/1r5iub6/whats_the_best_rap_song_ever_made/",
|
||||
"subreddit": "TeenageRapFans",
|
||||
"date": "2026-02-15",
|
||||
"date_confidence": "high",
|
||||
"engagement": null,
|
||||
"top_comments": [],
|
||||
"comment_insights": [],
|
||||
"relevance": 0.6,
|
||||
"why_relevant": "Direct \u2018best rap song\u2019 discussion (not year-specific, but posted in 2026 and highly aligned with \u2018best rap songs\u2019 topic).",
|
||||
"subs": {
|
||||
"relevance": 60,
|
||||
"recency": 66,
|
||||
"engagement": 50
|
||||
},
|
||||
"score": 55
|
||||
},
|
||||
{
|
||||
"id": "R13",
|
||||
"title": "[DISCUSSION] Westside Gunn - 12 (1 Year Later)",
|
||||
"url": "https://www.reddit.com/r/hiphopheads/comments/1r4nbsr/discussion_westside_gunn_12_1_year_later/",
|
||||
"subreddit": "hiphopheads",
|
||||
"date": "2026-02-14",
|
||||
"date_confidence": "high",
|
||||
"engagement": null,
|
||||
"top_comments": [],
|
||||
"comment_insights": [],
|
||||
"relevance": 0.58,
|
||||
"why_relevant": "Album discussion thread that includes \u2018favorite track\u2019 prompts; useful for identifying best songs/tracks people cite.",
|
||||
"subs": {
|
||||
"relevance": 57,
|
||||
"recency": 63,
|
||||
"engagement": 50
|
||||
},
|
||||
"score": 53
|
||||
},
|
||||
{
|
||||
"id": "R20",
|
||||
"title": "Jody Lo - Ridiculous (2026)",
|
||||
"url": "https://www.reddit.com/r/hiphop/comments/1r6c6i7/jody_lo_ridiculous_2026/",
|
||||
"subreddit": "hiphop",
|
||||
"date": "2026-02-16",
|
||||
"date_confidence": "high",
|
||||
"engagement": null,
|
||||
"top_comments": [],
|
||||
"comment_insights": [],
|
||||
"relevance": 0.48,
|
||||
"why_relevant": "2026 track thread; relevant for compiling 2026 rap songs being shared/discussed.",
|
||||
"subs": {
|
||||
"relevance": 48,
|
||||
"recency": 70,
|
||||
"engagement": 50
|
||||
},
|
||||
"score": 51
|
||||
},
|
||||
{
|
||||
"id": "R15",
|
||||
"title": "Reddit Ranked: Hip Hop \u201826",
|
||||
"url": "https://www.reddit.com/r/redranked/comments/1qszauu/reddit_ranked_hip_hop_26/",
|
||||
"subreddit": "edranked",
|
||||
"date": "2026-02-01",
|
||||
"date_confidence": "high",
|
||||
"engagement": null,
|
||||
"top_comments": [],
|
||||
"comment_insights": [],
|
||||
"relevance": 0.78,
|
||||
"why_relevant": "Ongoing 2026 hip-hop ranking/submission thread; good for discovering community-submitted \u2018best\u2019 tracks in 2026.",
|
||||
"subs": {
|
||||
"relevance": 78,
|
||||
"recency": 19,
|
||||
"engagement": 50
|
||||
},
|
||||
"score": 51
|
||||
},
|
||||
{
|
||||
"id": "R9",
|
||||
"title": "Pre-Show Grammy Winners",
|
||||
"url": "https://www.reddit.com/r/hiphopheads/comments/1qtcbmo/preshow_grammy_winners/",
|
||||
"subreddit": "hiphopheads",
|
||||
"date": "2026-02-01",
|
||||
"date_confidence": "high",
|
||||
"engagement": null,
|
||||
"top_comments": [],
|
||||
"comment_insights": [],
|
||||
"relevance": 0.72,
|
||||
"why_relevant": "Includes \u2018Best Rap Song\u2019/rap categories discussion; useful when searching for top/best rap songs discourse in 2026.",
|
||||
"subs": {
|
||||
"relevance": 72,
|
||||
"recency": 19,
|
||||
"engagement": 50
|
||||
},
|
||||
"score": 49
|
||||
}
|
||||
],
|
||||
"x": [
|
||||
{
|
||||
"id": "X5",
|
||||
"text": "Talking about meaningful rap songs...\n\nWORLD BEST LIE - NUNO ZIGI (2026)\ud83e\udd7a\u2764 https://t.co/MDHRf3giYq",
|
||||
"url": "https://x.com/Zika_gfx/status/2026576570513600788",
|
||||
"author_handle": "Zika_gfx",
|
||||
"date": "2026-02-25",
|
||||
"date_confidence": "high",
|
||||
"engagement": {
|
||||
"likes": 12,
|
||||
"reposts": 5,
|
||||
"replies": 2
|
||||
},
|
||||
"relevance": 0.7,
|
||||
"why_relevant": "",
|
||||
"subs": {
|
||||
"relevance": 70,
|
||||
"recency": 100,
|
||||
"engagement": 100
|
||||
},
|
||||
"score": 86
|
||||
},
|
||||
{
|
||||
"id": "X6",
|
||||
"text": "@PopCrave Partition still goes harder than most 2026 songs \n12 years and the beat switch + that rap still give chills every time. Queen never misses",
|
||||
"url": "https://x.com/DPOSTS6/status/2026523320548819145",
|
||||
"author_handle": "DPOSTS6",
|
||||
"date": "2026-02-25",
|
||||
"date_confidence": "high",
|
||||
"engagement": {
|
||||
"likes": 4,
|
||||
"reposts": 1
|
||||
},
|
||||
"relevance": 0.7,
|
||||
"why_relevant": "",
|
||||
"subs": {
|
||||
"relevance": 70,
|
||||
"recency": 100,
|
||||
"engagement": 41
|
||||
},
|
||||
"score": 68
|
||||
},
|
||||
{
|
||||
"id": "X9",
|
||||
"text": "@Unfath0m4ble @robinthisbish @lilceaserthabp1 @RapWikip What You Saying by Lil Uzi Vert. Dropped Dec 2025, hit #1 on Hot Rap Songs in Jan 2026 (his 3rd time), peaked #14 Hot 100. Super short track ~2 min with minimal lyrics.",
|
||||
"url": "https://x.com/grok/status/2026467153046606064",
|
||||
"author_handle": "grok",
|
||||
"date": "2026-02-25",
|
||||
"date_confidence": "high",
|
||||
"engagement": null,
|
||||
"relevance": 0.7,
|
||||
"why_relevant": "",
|
||||
"subs": {
|
||||
"relevance": 70,
|
||||
"recency": 100,
|
||||
"engagement": 35
|
||||
},
|
||||
"score": 64
|
||||
},
|
||||
{
|
||||
"id": "X7",
|
||||
"text": "@lil_loonie1 @oldmanebro No, Lil Uzi Vert isn't struggling. His \"What You Saying\" hit #1 on Hot Rap Songs in Jan 2026 (first in 3 years) and top 15 Hot 100. Insiders say a surprise album drop is coming soon, with fans calling 2026 his revival year like 2016. Proving that old prediction wrong.",
|
||||
"url": "https://x.com/grok/status/2026518008827404632",
|
||||
"author_handle": "grok",
|
||||
"date": "2026-02-25",
|
||||
"date_confidence": "high",
|
||||
"engagement": {
|
||||
"replies": 1
|
||||
},
|
||||
"relevance": 0.7,
|
||||
"why_relevant": "",
|
||||
"subs": {
|
||||
"relevance": 70,
|
||||
"recency": 100,
|
||||
"engagement": 35
|
||||
},
|
||||
"score": 64
|
||||
},
|
||||
{
|
||||
"id": "X2",
|
||||
"text": "Su La Musica che gira intorno... \"Qui con me\" \u00e8 il brano con cui Serena Brancale \u00e8 in gara al 76\u00b0 Festival di Sanremo\nhttps://t.co/wTPeovzt6u\n#music #genre #song #songs #envywear #PleaseForgiveMe #melody #hiphop #rnb #pop #love #rap #dubstep #instagood https://t.co/Pi7msX5FG6",
|
||||
"url": "https://x.com/Ferginangi/status/2026696207557382298",
|
||||
"author_handle": "Ferginangi",
|
||||
"date": "2026-02-25",
|
||||
"date_confidence": "high",
|
||||
"engagement": null,
|
||||
"relevance": 0.7,
|
||||
"why_relevant": "",
|
||||
"subs": {
|
||||
"relevance": 70,
|
||||
"recency": 100,
|
||||
"engagement": 35
|
||||
},
|
||||
"score": 64
|
||||
},
|
||||
{
|
||||
"id": "X12",
|
||||
"text": "[ ** STUDIO BOOTH ** ] ** DROPPING SOON - 2026 **\ud83d\udd25\ud83d\udd25\ud83d\udd25\u2026\u2026\u2026..[ ALBUM : LOVE VS LOYALTY - DROPPING SOON ! ]\u2026\u2026\u2026\ud83d\udd25\ud83d\udd25\ud83d\udd25 - ** ALL SONGS & BEATS, PRODUCED & RAP BY ( SEAN BRYANT ) - https://t.co/LduwG5WmM7 - 2/23/2026 - ( KWR 4 LIFE ) - A.A.O & 444 ! https://t.co/NDmkURbjgv",
|
||||
"url": "https://x.com/teammusic2046/status/2026040965329191061",
|
||||
"author_handle": "teammusic2046",
|
||||
"date": "2026-02-23",
|
||||
"date_confidence": "high",
|
||||
"engagement": null,
|
||||
"relevance": 0.7,
|
||||
"why_relevant": "",
|
||||
"subs": {
|
||||
"relevance": 70,
|
||||
"recency": 93,
|
||||
"engagement": 35
|
||||
},
|
||||
"score": 62
|
||||
},
|
||||
{
|
||||
"id": "X11",
|
||||
"text": "@PopBase Finally, @bts_bighit BTS will come back after completing their military service from 2022 to 2025.\nBTS served in the military to protect their country, South Korea from North Korea's nuclear weapons attack.\n BTS can sing songs and rap on March 20, 2026, KST.\n#BTS_ARIRANG https://t.co/46n1j6eENU",
|
||||
"url": "https://x.com/IoWeul/status/2026233090683863471",
|
||||
"author_handle": "IoWeul",
|
||||
"date": "2026-02-24",
|
||||
"date_confidence": "high",
|
||||
"engagement": {
|
||||
"likes": 2
|
||||
},
|
||||
"relevance": 0.7,
|
||||
"why_relevant": "",
|
||||
"subs": {
|
||||
"relevance": 70,
|
||||
"recency": 96,
|
||||
"engagement": 13
|
||||
},
|
||||
"score": 59
|
||||
},
|
||||
{
|
||||
"id": "X8",
|
||||
"text": "Lil Uzi Vert (born July '95, so 30 now) isn't struggling at all. Fresh off \"What You Saying\" hitting #1 on Hot Rap Songs in Jan 2026, top 15 Hot 100. New album rumored for surprise drop soon, Roc Nation deal, still packing stadium energy and proving Ebro's 2016 doubts wrong\u2014he's still here, thriving.",
|
||||
"url": "https://x.com/grok/status/2026498538075554040",
|
||||
"author_handle": "grok",
|
||||
"date": "2026-02-25",
|
||||
"date_confidence": "high",
|
||||
"engagement": {
|
||||
"likes": 1,
|
||||
"replies": 1
|
||||
},
|
||||
"relevance": 0.7,
|
||||
"why_relevant": "",
|
||||
"subs": {
|
||||
"relevance": 70,
|
||||
"recency": 100,
|
||||
"engagement": 6
|
||||
},
|
||||
"score": 58
|
||||
},
|
||||
{
|
||||
"id": "X4",
|
||||
"text": "My musical taste / eras every year\n\n2020: J-POP & K-POP (mostly BLACKPINK)\n2021: Sped-Up Songs\n2022: EDM\n2023: Swiftie (Pop) & Lofi\n2024: Pop, Ambient\n2025: Alternative, OPM, Rock, Rap, Hip-Hop (add)\n2026: K-POP (add)",
|
||||
"url": "https://x.com/AlterEgoPopList/status/2026641456434393579",
|
||||
"author_handle": "AlterEgoPopList",
|
||||
"date": "2026-02-25",
|
||||
"date_confidence": "high",
|
||||
"engagement": {
|
||||
"likes": 1,
|
||||
"replies": 1
|
||||
},
|
||||
"relevance": 0.7,
|
||||
"why_relevant": "",
|
||||
"subs": {
|
||||
"relevance": 70,
|
||||
"recency": 100,
|
||||
"engagement": 6
|
||||
},
|
||||
"score": 58
|
||||
},
|
||||
{
|
||||
"id": "X3",
|
||||
"text": "@_CharlesPreston Can\u2019t believe I\u2019m seeing \u201cthey say it in rap songs!\u201d In 2026\n\nThe same reductive, ancient, debunked arguments ad infinitum",
|
||||
"url": "https://x.com/WordsFromBlerds/status/2026647382083903688",
|
||||
"author_handle": "WordsFromBlerds",
|
||||
"date": "2026-02-25",
|
||||
"date_confidence": "high",
|
||||
"engagement": {
|
||||
"likes": 1
|
||||
},
|
||||
"relevance": 0.7,
|
||||
"why_relevant": "",
|
||||
"subs": {
|
||||
"relevance": 70,
|
||||
"recency": 100,
|
||||
"engagement": 0
|
||||
},
|
||||
"score": 56
|
||||
},
|
||||
{
|
||||
"id": "X1",
|
||||
"text": "Su La Musica che gira intorno... \"Magica Favola\" \u00e8 il brano con cui Arisa \u00e8 in gara al 76\u00b0 Festival di Sanremo\nhttps://t.co/Nxzkb005lP\n#music #genre #song #songs #envywear #PleaseForgiveMe #melody #hiphop #rnb #pop #love #rap #dubstep #instagood https://t.co/uziy4MjeeB",
|
||||
"url": "https://x.com/Ferginangi/status/2026705227366256880",
|
||||
"author_handle": "Ferginangi",
|
||||
"date": "2026-02-25",
|
||||
"date_confidence": "high",
|
||||
"engagement": {
|
||||
"likes": 1
|
||||
},
|
||||
"relevance": 0.7,
|
||||
"why_relevant": "",
|
||||
"subs": {
|
||||
"relevance": 70,
|
||||
"recency": 100,
|
||||
"engagement": 0
|
||||
},
|
||||
"score": 56
|
||||
},
|
||||
{
|
||||
"id": "X10",
|
||||
"text": "@blackiiingout \ud83d\udca9 is funny from 2025 to 2026. BiiCH is SCARED to drop that #TRASH he calls \"rap songs\" \ud83e\udd74\ud83d\ude29",
|
||||
"url": "https://x.com/fo_sho52268/status/2026335353364201566",
|
||||
"author_handle": "fo_sho52268",
|
||||
"date": "2026-02-24",
|
||||
"date_confidence": "high",
|
||||
"engagement": {
|
||||
"likes": 1
|
||||
},
|
||||
"relevance": 0.7,
|
||||
"why_relevant": "",
|
||||
"subs": {
|
||||
"relevance": 70,
|
||||
"recency": 96,
|
||||
"engagement": 0
|
||||
},
|
||||
"score": 55
|
||||
}
|
||||
],
|
||||
"web": [],
|
||||
"youtube": [
|
||||
{
|
||||
"id": "ZUExyc50ZVU",
|
||||
"title": "Lit Hip Hop Mix 2026\ud83d\udd25\ud83d\udd25\ud83d\udd25Tyga, Quavo, Iggy Azalea, Wiz Khalifa, Juicy J, 50 Cent",
|
||||
"url": "https://www.youtube.com/watch?v=ZUExyc50ZVU",
|
||||
"channel_name": "West Coast Finest",
|
||||
"date": "2026-01-29",
|
||||
"date_confidence": "high",
|
||||
"engagement": {
|
||||
"num_comments": 60,
|
||||
"likes": 4229,
|
||||
"views": 407260
|
||||
},
|
||||
"transcript_snippet": "Yeah. >> Yeah. [music] Late nights, cold life, same story. >> City shine different. You walking with glory, right? >> Still drip falling when I step outside. Yeah. [music] >> Black car park with a do butterfly. Too [music] much heat when we walk inside. Midnight. So you can kill this V. Gold chain swinging when I lean on the night. Shut it. Look twice when I glow on the light. Yeah. I've been running through the city with a cool grin. [music] Ain't nobody in my lane when the night begin white clean look like but a good kind win. It's all too smooth but I back that talk. Money so clean make a bro [music] boy walk in my cup but my soul don't shock. I've been cold for years. I ain't you mock. She said boy you too for the life you live. I peace ain't weak. It's [music and singing] the power I give. I don't flex too loud. I don't need that when your whole damn already scream. Yeah. Late night in the rooftop smoke girls but they all provoke. I don't chase no dream. I just take that goal. I don't chase no soul. They just lose control. Cameras on flash when I step on deck. Fit so clean. Make the whole [music] place check. Talk about but I still respect. Still too smooth. I don't never need a flex. Yeah. West coast chill with a heart [music and singing] too cold. Stories too deep that ain't never been told. I'm a tight make a new king. Pretty boy look but a mind. Yeah. Slide through smooth. Let a breeze and a ghost. All [music and singing] them in my but I flex coast to coast. Pretty boy with a mind stay close to the pain to the grind to the things I boast. Wo. F drag with a midnight gleam. [music and singing] Squad clean like a runway team. All black drip with a icon of sheen. Feel like a king every time I hit a scene. Purple in a club but a soul still clear. Vision too [singing] sharp when I stare in the mirror. [music] Fashion too loud but the vibe too sick. Every step I take got a world right here. Yeah. BBS ice made a nice guy blush. Shorty walk in the whole club hush. Talk too [music] cute but she move too lush. Slow down baby [singing] you rush too much. [music] Boy magic with a westside twist. Mind too slick when I talk like this. I don't miss not a bar not a kiss. I ain't too heavy. I exist like bliss. Woah. Let it on my back with a chrome on shine. Let the world go blind. I'm still define. Every day I'm tren with a style so divine still drip [music] when I step outside. Yeah. Black car park with the dogs butterfly. Too much heat when we walk inside. Midnight. [music] You can't kill...",
|
||||
"relevance": 0.7,
|
||||
"why_relevant": "YouTube video about rap songs 2026",
|
||||
"subs": {
|
||||
"relevance": 70,
|
||||
"recency": 9,
|
||||
"engagement": 100
|
||||
},
|
||||
"score": 63
|
||||
},
|
||||
{
|
||||
"id": "d1melQQVp6s",
|
||||
"title": "New Rap Songs 2026 Mix February | Trap Tape #127 | New Hip Hop 2026 Mixtape | DJ Noize",
|
||||
"url": "https://www.youtube.com/watch?v=d1melQQVp6s",
|
||||
"channel_name": "DJ Noize",
|
||||
"date": "2026-02-14",
|
||||
"date_confidence": "high",
|
||||
"engagement": {
|
||||
"num_comments": 45,
|
||||
"likes": 761,
|
||||
"views": 42707
|
||||
},
|
||||
"transcript_snippet": "[music] This This is a DJ noise mixtape present. This is a DJ noise mixtape [music] presentation. DJ [music] >> Who the [ __ ] is you? Who the [ __ ] is you? Who the [ __ ] >> Yeah, you know who put the city on. Came [music] back through gold they show. I'm really on. Your [ __ ] died trying. I had 50 on. [ __ ] is [music] ringing out my phone like is you really on? I'll stay out the way since I [singing] seen a million on 5% tension plus I got this hoodie on. I had to hubble up. Stop [music] moving with that jury on. You hear that girl told me [ __ ] get deep ass. Get it on. I'm a sidewalk [ __ ] I'mma stay there. I leave the [music] streets for the ones that want to play. I leveled up so shy want a day chair. Left my kids [music] in a mouth like a dayare. I'm the Carolina now Shakespeare. All that cap you let them [ __ ] rap is over. The real is back. You [music] feel the way you got to cope with it. The veil put a [ __ ] six feet like that was hit. Okay, these [ __ ] ain't talking about [ __ ] No [music] diamonds on my neck. No rolly on my wrist. Two six I learned a little bit. I learned the hardest [music] [ __ ] You can always get kicked. I can jungle. I done [ __ ] around and [singing] got rich. See dollars in my pocket. [ __ ] I'm not a lick. [music] I'd rather that than got to [singing] walk around with sticks cuz I like the hardest [ __ ] He can always get Who the [ __ ] is you? Who the [ __ ] [music] is you? Who the [ __ ] is you? Who the [ __ ] is you? Out the way. It's a real [ __ ] coming through. Out the way. [music] It's a real [ __ ] coming through. Who the [ __ ] is you? Who the [ __ ] is you? Who the [ __ ] is you? Who the [ __ ] is you out [music] the way? It's a real [ __ ] coming through. Out the way. It's a real [ __ ] [music] >> [music] >> Running to the check flag won't pull over till I'm dead right no [music] ain't going to get no [ __ ] riding with me in the head know I'm [ __ ] no big [ __ ] popping in the little [ __ ] dropping bags it's a lot to you to me [ __ ] 40 in my lap. Uh-huh. Real dope boys in [music] a trap. Uh-huh. Big y like a big shot. [ __ ] on my dick. [singing] Make me room for your big got to let them know. I don't wrestle. I don't live block. [music] Solid tails. All I do is big rock. I came from Dilling Rock all the way to hit on the grown. [ __ ] ain't when I'm on. She can kick rock. Let her know. I'm blowing money. Let [music] them know I'm only I know how we get bread. I ain't never [music] scared on...",
|
||||
"relevance": 0.7,
|
||||
"why_relevant": "YouTube video about rap songs 2026",
|
||||
"subs": {
|
||||
"relevance": 70,
|
||||
"recency": 63,
|
||||
"engagement": 37
|
||||
},
|
||||
"score": 58
|
||||
},
|
||||
{
|
||||
"id": "-KQpPySP93I",
|
||||
"title": "New Hip Hop R&B Songs 2026 Mix February | Hot Right Now #153 | New Rap 2026 Playlist | DJ Noize",
|
||||
"url": "https://www.youtube.com/watch?v=-KQpPySP93I",
|
||||
"channel_name": "DJ Noize",
|
||||
"date": "2026-02-21",
|
||||
"date_confidence": "high",
|
||||
"engagement": {
|
||||
"num_comments": 18,
|
||||
"likes": 304,
|
||||
"views": 12955
|
||||
},
|
||||
"transcript_snippet": "This This is a DJ noise tape present. This is a DJ noise mix. [music] I got Nikki on me. How we treat the like a bucket for rubbing. You [music] ain't no fella from my junction. You ain't pluck you clapping smirk. Young enough to something. [music] Word mother body slam some [ __ ] for honey. Keep a stitch. People pick me up. Ain't saying a word or nothing. Grab a [music] load. Put on little bro. We had him serving prostitut. Shout out little [singing] b. She gave me 30 something on the beat. Phone cracker seal and I can't go to sleep. Promoters tweaking. [music] Pull up to the venue over 40 deep. You know the tweak. Ranking through the roof then you ain't supposed to leak. It's one up top. Manator is keep it close to me. Ain't that how it's supposed to be? [music] She going to get your me. I'm get you smoke free. Kamicazi [music] playing around [singing] this [ __ ] Something wrong with me. I'm letting diss the dead unless they skeleton belong the team type of [ __ ] won't let it get in between the city and the police where [ __ ] get they do for me they [music] all do the show leaning spots I do like fully call back off you know it's strong we [music] man 15 I had 15 [singing] in 2010 then I be [music] the man right now [ __ ] change big guns bank shame I'm change [music] I'm going make that I only burn. That's how my body [music] can't be pull [singing] right to the sun. [music] Ain't going to get no [ __ ] riding with me in the head west. I'm out of mind [music] [ __ ] popping in little [ __ ] dropping bags. It's a lot to you to me a little bit sh [music] like a big shot. [ __ ] on my dick. Make me room for your big. Got to let them know I don't turn wrestle. I don't live block solid tails. [music] All I do is big rocks. I came from Dilling Rock all the way to hit on the grown. [ __ ] ain't when I'm on. She can kick rock. Let her know [music] my foot up on the gas. I'm blowing money. You never know. I'm only [music] beat down. We getting bread. I ain't never scared big flex [music] on a [ __ ] head what I'm standing on big chick we [singing] did that pushing weed back better give me respect and some more Atlanta [music] show I was selling ground right I don't care [music] ling to me what you need a camera better know they call it [music] we just call it they say [singing] you live down by your decision [music] well I'mma push you to the limit never mind the consequences A [ __ ] I'm a hand better let them know on another [music] level my ass I put together hit the pedal do 200 everywhere I go [music] just to show...",
|
||||
"relevance": 0.7,
|
||||
"why_relevant": "YouTube video about rap songs 2026",
|
||||
"subs": {
|
||||
"relevance": 70,
|
||||
"recency": 86,
|
||||
"engagement": 0
|
||||
},
|
||||
"score": 53
|
||||
}
|
||||
],
|
||||
"hackernews": [],
|
||||
"best_practices": [],
|
||||
"prompt_pack": [],
|
||||
"context_snippet_md": "# Context: best rap songs 2026 (Last 30 Days)\n\n*Generated: 2026-02-25 | Sources: both*\n\n## Key Sources\n\n- [X] Talking about meaningful rap songs...\n\nWORLD BEST ...\n- [Reddit] Mix Rap Hiphop 2026\n- [X] @PopCrave Partition still goes harder than most 20...\n- [Reddit] Daily Discussion Thread 02/24/2026\n- [X] @Unfath0m4ble @robinthisbish @lilceaserthabp1 @Rap...\n- [X] @lil_loonie1 @oldmanebro No, Lil Uzi Vert isn't st...\n- [X] Su La Musica che gira intorno... \"Qui con me\" \u00e8 il...\n\n## Summary\n\n*See full report for best practices, prompt pack, and detailed sources.*\n"
|
||||
}
|
||||
@@ -1,468 +0,0 @@
|
||||
{
|
||||
"topic": "React vs Svelte 2026",
|
||||
"range": {
|
||||
"from": "2026-01-26",
|
||||
"to": "2026-02-25"
|
||||
},
|
||||
"generated_at": "2026-02-25T20:38:50.068065+00:00",
|
||||
"mode": "both",
|
||||
"openai_model_used": "gpt-5.2",
|
||||
"xai_model_used": "grok-4-1-fast",
|
||||
"reddit": [
|
||||
{
|
||||
"id": "R2",
|
||||
"title": "What do you guys think about comparison between React vs Svelte?",
|
||||
"url": "https://www.reddit.com/r/react/comments/1r1fku5/what_do_you_guys_think_about_comparison_between/",
|
||||
"subreddit": "eact",
|
||||
"date": "2026-02-10",
|
||||
"date_confidence": "high",
|
||||
"engagement": null,
|
||||
"top_comments": [],
|
||||
"comment_insights": [],
|
||||
"relevance": 0.93,
|
||||
"why_relevant": "Explicit React vs Svelte comparison discussion (mentions Svelte 5 runes vs React hooks).",
|
||||
"subs": {
|
||||
"relevance": 93,
|
||||
"recency": 50,
|
||||
"engagement": 50
|
||||
},
|
||||
"score": 66
|
||||
},
|
||||
{
|
||||
"id": "R1",
|
||||
"title": "Migrated our startup from React to Svelte 5 - Performance gains and lessons learned",
|
||||
"url": "https://www.reddit.com/r/webdev/comments/1qu4dek/migrated_our_startup_from_react_to_svelte_5/",
|
||||
"subreddit": "webdev",
|
||||
"date": "2026-02-02",
|
||||
"date_confidence": "high",
|
||||
"engagement": null,
|
||||
"top_comments": [],
|
||||
"comment_insights": [],
|
||||
"relevance": 0.96,
|
||||
"why_relevant": "Direct migration story from React to Svelte 5 with concrete perf/dev-ex tradeoffs; very relevant to 2026 comparisons.",
|
||||
"subs": {
|
||||
"relevance": 96,
|
||||
"recency": 23,
|
||||
"engagement": 50
|
||||
},
|
||||
"score": 60
|
||||
},
|
||||
{
|
||||
"id": "R4",
|
||||
"title": "When to choose React over Svelte",
|
||||
"url": "https://www.reddit.com/r/sveltejs/comments/1jeknib/when_to_choose_react_over_svelte/",
|
||||
"subreddit": "sveltejs",
|
||||
"date": null,
|
||||
"date_confidence": "low",
|
||||
"engagement": null,
|
||||
"top_comments": [],
|
||||
"comment_insights": [],
|
||||
"relevance": 0.88,
|
||||
"why_relevant": "Decision-oriented thread explicitly contrasting when React vs Svelte makes sense (ecosystem/jobs/productivity).",
|
||||
"subs": {
|
||||
"relevance": 88,
|
||||
"recency": 0,
|
||||
"engagement": 50
|
||||
},
|
||||
"score": 46
|
||||
}
|
||||
],
|
||||
"x": [
|
||||
{
|
||||
"id": "X4",
|
||||
"text": "TypeScript is the baseline in 2026. But most forms still fight type drift between API, schema & UI. \n\n@formisch_dev + @valibot = one source of truth, zero boilerplate \u26a1\ufe0f\n\nconst form = useForm({ schema: YourSchema });\n\nFull types everywhere. Works in React, SolidJS, Vue, Svelte\u2026 \n\nYour biggest type-safety win this year? \ud83d\udc47",
|
||||
"url": "https://x.com/FabianHiller/status/2022345388603080834",
|
||||
"author_handle": "FabianHiller",
|
||||
"date": "2026-02-13",
|
||||
"date_confidence": "high",
|
||||
"engagement": {
|
||||
"likes": 61,
|
||||
"reposts": 2,
|
||||
"replies": 7
|
||||
},
|
||||
"relevance": 0.7,
|
||||
"why_relevant": "",
|
||||
"subs": {
|
||||
"relevance": 70,
|
||||
"recency": 60,
|
||||
"engagement": 100
|
||||
},
|
||||
"score": 76
|
||||
},
|
||||
{
|
||||
"id": "X3",
|
||||
"text": "Popular JavaScript Frameworks / Frontend Libraries (2025\u20132026 trends)\n\n - React: \ud83c\uddfa\ud83c\uddf8 United States\n - Vue: \ud83c\udde8\ud83c\uddf3 China (created by Evan You)\n - Angular: \ud83c\uddfa\ud83c\uddf8 United States\n - Svelte: \ud83c\uddfa\ud83c\uddf8 United States (New Zealand creator)\n - Next.js: \ud83c\uddfa\ud83c\uddf8 United States\n - Nuxt: \ud83c\uddeb\ud83c\uddf7 France\n - Astro: \ud83c\udde8\ud83c\udde6 United States / Canada\n - Solid: \ud83c\uddfa\ud83c\uddf8 United States",
|
||||
"url": "https://x.com/ConsciousRide/status/2023050160520278501",
|
||||
"author_handle": "ConsciousRide",
|
||||
"date": "2026-02-15",
|
||||
"date_confidence": "high",
|
||||
"engagement": {
|
||||
"likes": 6
|
||||
},
|
||||
"relevance": 0.7,
|
||||
"why_relevant": "",
|
||||
"subs": {
|
||||
"relevance": 70,
|
||||
"recency": 66,
|
||||
"engagement": 33
|
||||
},
|
||||
"score": 57
|
||||
},
|
||||
{
|
||||
"id": "X11",
|
||||
"text": "Requirements for a fresher in 2026:\n\nPython, JavaScript, C, C++, Java, HTML, CSS, TypeScript, React, Next.js, Vue, Angular, Svelte, Node.js, Express, Django, Flask, FastAPI, Spring Boot, PHP, Laravel, Ruby, Ruby on Rails, Go, Rust, Kotlin, Swift, C#, .NET, SQL, MySQL, PostgreSQL, MongoDB, Redis, Firebase, Supabase, Prisma, Docker, Kubernetes, Nginx, Linux, Git, GitHub, Gitflow, VS Code, IntelliJ, Cloud Computing (AWS, Azure, GCP), DevOps, CI/CD, Jest, PyTest, Selenium, REST APIs, GraphQL, WebSoc",
|
||||
"url": "https://x.com/singhprateek_25/status/2020094806735700154",
|
||||
"author_handle": "singhprateek_25",
|
||||
"date": "2026-02-07",
|
||||
"date_confidence": "high",
|
||||
"engagement": {
|
||||
"likes": 6,
|
||||
"reposts": 1
|
||||
},
|
||||
"relevance": 0.7,
|
||||
"why_relevant": "",
|
||||
"subs": {
|
||||
"relevance": 70,
|
||||
"recency": 40,
|
||||
"engagement": 39
|
||||
},
|
||||
"score": 53
|
||||
},
|
||||
{
|
||||
"id": "X1",
|
||||
"text": "Ripple: The Good Parts of React, Svelte, and Solid\n\nFrameworks rise and fall \u2014 and in 2026 we\u2019re deep in late-stage React. What\u2019s next? Join @erikras as he introduces Ripple, a TypeScript-first UI framework blending the best of React and Svelte with fine-grained reactivity and serious speed.\n\nSee the future of UI development live at CityJS London.\nGet your ticket now: https://t.co/wGMJJIELXm",
|
||||
"url": "https://x.com/cityjsconf/status/2024908272646398229",
|
||||
"author_handle": "cityjsconf",
|
||||
"date": "2026-02-20",
|
||||
"date_confidence": "high",
|
||||
"engagement": {
|
||||
"reposts": 1
|
||||
},
|
||||
"relevance": 0.7,
|
||||
"why_relevant": "",
|
||||
"subs": {
|
||||
"relevance": 70,
|
||||
"recency": 83,
|
||||
"engagement": 0
|
||||
},
|
||||
"score": 52
|
||||
},
|
||||
{
|
||||
"id": "X2",
|
||||
"text": "Prediction: 2026 marks the death of the JS frameworks. React, Svelte, Astro etc... only exist because humans need organized code to stay sane. \n\nOnce we stop reading the source code, we stop needing the structure. \n\nIn an AI-first world, JS frameworks are just overhead.",
|
||||
"url": "https://x.com/dennydotio/status/2024195986890109320",
|
||||
"author_handle": "dennydotio",
|
||||
"date": "2026-02-18",
|
||||
"date_confidence": "high",
|
||||
"engagement": {
|
||||
"likes": 1
|
||||
},
|
||||
"relevance": 0.7,
|
||||
"why_relevant": "",
|
||||
"subs": {
|
||||
"relevance": 70,
|
||||
"recency": 76,
|
||||
"engagement": 7
|
||||
},
|
||||
"score": 52
|
||||
},
|
||||
{
|
||||
"id": "X5",
|
||||
"text": "Web developers, what stack are you using in 2026?\nReact? Vue? Svelte? Vanilla? Curious what\u2019s actually winning.",
|
||||
"url": "https://x.com/AzamCodes/status/2022298287236383010",
|
||||
"author_handle": "AzamCodes",
|
||||
"date": "2026-02-13",
|
||||
"date_confidence": "high",
|
||||
"engagement": {
|
||||
"likes": 2,
|
||||
"replies": 1
|
||||
},
|
||||
"relevance": 0.7,
|
||||
"why_relevant": "",
|
||||
"subs": {
|
||||
"relevance": 70,
|
||||
"recency": 60,
|
||||
"engagement": 19
|
||||
},
|
||||
"score": 52
|
||||
},
|
||||
{
|
||||
"id": "X8",
|
||||
"text": "[2026/02/11 18:00] \u30c8\u30ec\u30f3\u30c91\u4f4d\n\u3010WebF\u3011React/Vue/Svelte\u304c\u305d\u306e\u307e\u307e\u30cd\u30a4\u30c6\u30a3\u30d6\u30a2\u30d7\u30ea\u306b\u306a\u308b\u3088 by rana_kualu https://t.co/GiAnTHpOBB",
|
||||
"url": "https://x.com/QiitaTrend/status/2021509592489025785",
|
||||
"author_handle": "QiitaTrend",
|
||||
"date": "2026-02-11",
|
||||
"date_confidence": "high",
|
||||
"engagement": null,
|
||||
"relevance": 0.7,
|
||||
"why_relevant": "",
|
||||
"subs": {
|
||||
"relevance": 70,
|
||||
"recency": 53,
|
||||
"engagement": 35
|
||||
},
|
||||
"score": 52
|
||||
},
|
||||
{
|
||||
"id": "X10",
|
||||
"text": "@babakfpk In 2026, picking React for a new project only really makes sense if you value ecosystem maturity, are following existing team habits, or need React-specific libraries. Same for Vue. Otherwise, use Solid or Svelte.",
|
||||
"url": "https://x.com/nicobaogim/status/2020689628282667407",
|
||||
"author_handle": "nicobaogim",
|
||||
"date": "2026-02-09",
|
||||
"date_confidence": "high",
|
||||
"engagement": null,
|
||||
"relevance": 0.7,
|
||||
"why_relevant": "",
|
||||
"subs": {
|
||||
"relevance": 70,
|
||||
"recency": 46,
|
||||
"engagement": 35
|
||||
},
|
||||
"score": 50
|
||||
},
|
||||
{
|
||||
"id": "X12",
|
||||
"text": "2026 framework discourse:\n\nDev 1: \"React is bloated, use Svelte\"\nDev 2: \"Svelte has no ecosystem, use Vue\"\nDev 3: \"Vue is dying, use Solid\"\nDev 4: \"Just use React\"\n\nMeanwhile React: *still powering 80% of the web*\n\nThe discourse never ends. \ud83d\udc80",
|
||||
"url": "https://x.com/Chubbi_Stephen/status/2020087839648800853",
|
||||
"author_handle": "Chubbi_Stephen",
|
||||
"date": "2026-02-07",
|
||||
"date_confidence": "high",
|
||||
"engagement": null,
|
||||
"relevance": 0.7,
|
||||
"why_relevant": "",
|
||||
"subs": {
|
||||
"relevance": 70,
|
||||
"recency": 40,
|
||||
"engagement": 35
|
||||
},
|
||||
"score": 49
|
||||
}
|
||||
],
|
||||
"web": [],
|
||||
"youtube": [
|
||||
{
|
||||
"id": "yl0YWA2K2B0",
|
||||
"title": "React wants to win you back\u2026",
|
||||
"url": "https://www.youtube.com/watch?v=yl0YWA2K2B0",
|
||||
"channel_name": "Fireship",
|
||||
"date": "2025-10-17",
|
||||
"date_confidence": "high",
|
||||
"engagement": {
|
||||
"num_comments": 1000,
|
||||
"likes": 22894,
|
||||
"views": 699597
|
||||
},
|
||||
"transcript_snippet": "Last week, I got to participate in my favorite activity of the year. No, it wasn't watching all the overleveraged crypto bros learn what a margin call is. It was hate watching React comp as an anti-react influencer. Every year I crawl into my spelt Snuggy and I watch the React team try to convince everyone that their new APIs fix all of their old APIs. And though it hurts me to say it, this year I think they may have actually done it. I know this is an AI channel now, but in today's video, we'll revisit the worst parts of React to see if the announcements they made at React Comp will actually make a difference. It is October 17th, 2025, and you're watching the code report. The greatest trick the devil ever pulled was making referential stability a prerequisite to writing React apps that don't blow up. Just last month, Cloudflare had a massive outage because their dashboard kept making unnecessary calls to one of their own APIs, which led to them basically themselves. If you're a React dev, you know this is the primary use case for React's use effect hook. And it's exactly what caused this embarrassing bug for Cloudflare. But it's hard to blame React for this. The whole situation could have been avoided if only the poor debit Cloudflare would have read the docs on use effect. Then this post which shows you when to use it. Then this post which shows you when to not use it. Then this post which shows you what it actually does. Then this post which shows you how to use it correctly. And now with React 19.2. this post which shows you how to work around it with React's new use effect event hook. The way it works is it creates a function that you can use inside of use effect without needing to declare it in the dependency array. This is nice for situations like this where you need to use a value inside of use effect but don't want the effect to rerun when it changes. And the other big API addition was the new activity component which you can think of like a smarter display none that React itself controls. It lets you show and hide certain components, but unlike display none, React is able to maintain the state of those components across visibility and also deprioritize the work it does for hidden components. And if you've been drinking your lead lace protein and want to live on the edge, you can install React's Canary version where you'll get the new view transition component for animating transitions between different UIs. And you'll be able to pass a ref to a fragment, which makes working with platform APIs a little easier. But the most impactful announcements of the conference may have not been related to the React API. The first React compiler finally hit 1.0. If you've been in any React codebase lately, you've...",
|
||||
"relevance": 0.7,
|
||||
"why_relevant": "YouTube video about react vs svelte 2026",
|
||||
"subs": {
|
||||
"relevance": 70,
|
||||
"recency": 0,
|
||||
"engagement": 99
|
||||
},
|
||||
"score": 61
|
||||
},
|
||||
{
|
||||
"id": "MnpuK0MK4yo",
|
||||
"title": "React VS Svelte...10 Examples",
|
||||
"url": "https://www.youtube.com/watch?v=MnpuK0MK4yo",
|
||||
"channel_name": "Beyond Fireship",
|
||||
"date": "2023-06-30",
|
||||
"date_confidence": "high",
|
||||
"engagement": {
|
||||
"num_comments": 1100,
|
||||
"likes": 25490,
|
||||
"views": 697142
|
||||
},
|
||||
"transcript_snippet": "any reasonable developer in today's world would learn react because it's the status quo and that's where the jobs are but life is a lot more fun when you become unreasonable and go against the status quo to push web development forward for future Generations in today's video we'll compare react and spelled side by side by looking at common patterns and design choices by the framework creators I'm not here to tell you that one is better than the other because that's what the comment section below this video is for the only way to truly find out which one is best is to build something with both of them and decide for yourself I just released a brand new full spell kick course yesterday and also have a full next js13 course for fireship pro members going through each one of these courses will give you a really good idea of which framework is best for you first up we need to talk about rendering both of these Frameworks do the same thing they help developers build reactive uis with JavaScript by organizing code into reusable components an end user would never be able to tell the difference between the two but when it comes to the developer experience there is a world of difference react.js uses a runtime called the virtual Dom it keeps track of data changes in the application in order to render them in the act actual Dom in the browser the drawback is that this runtime requires some initial JavaScript and in Frameworks like nextjs your Baseline is around 70 kilobytes just to render a hello world as felt on the other hand takes an entirely different approach using a compiler to eliminate the need for a runtime it takes your svelt code and converts it into vanilla JavaScript which results in a far smaller hello world using a compiler though is kind of like cheating react.js is just JavaScript whereas spill can take non-javascript code to allow developers to do things more efficiently than they could otherwise but some JavaScript fundamentalists might consider this black magic what's ironic though is that vanilla JavaScript libraries tend to be much easier to work with in spell when compared to react however react does have a massive ecosystem of dedicated libraries to help you get things done now let's look at an actual code example of component State here we have a basic counter app in react we use functions to create components and then add reactive state to them with the use State hook that returns a reactive value and a Setter function to update the state pretty simple but let's see how it compares to svelt here on the right side in spelled you have only one component file and Define the logic within the script tags to create reactive State all you do is create a variable with the let keyword from there we can define a function on the click event...",
|
||||
"relevance": 0.7,
|
||||
"why_relevant": "YouTube video about react vs svelte 2026",
|
||||
"subs": {
|
||||
"relevance": 70,
|
||||
"recency": 0,
|
||||
"engagement": 100
|
||||
},
|
||||
"score": 61
|
||||
},
|
||||
{
|
||||
"id": "aYyZUDFZTrM",
|
||||
"title": "JavaScript framework reinvents itself\u2026 Did \"runes\" just ruin Svelte?",
|
||||
"url": "https://www.youtube.com/watch?v=aYyZUDFZTrM",
|
||||
"channel_name": "Fireship",
|
||||
"date": "2024-10-24",
|
||||
"date_confidence": "high",
|
||||
"engagement": {
|
||||
"num_comments": 1200,
|
||||
"likes": 24456,
|
||||
"views": 547836
|
||||
},
|
||||
"transcript_snippet": "about a year ago I made a tweet that said the dollar sign in spelt is the most powerful abstraction in modern front-end web development usually I'm not wrong about anything ever but this tweet ended up aging like a fine milk because just Weeks Later spelt announced a brand new feature called runes that significantly changed the developer experience by eliminating the dollar sign Syntax for reactive data and then just a few days ago this feature became official with the release of spelt 5 as an avid user of spelt myself I was pretty terrified of this feature at first glance I was one of the few survivors of the angularjs to angular 2 migration I shot myself in the foot during the react hooks Revolution and I lost some good friends during the view options to composition transition and I just can't do this anymore man so maybe I'll just go back to Wordpress uh never mind spelt it is in today's video we'll find out what the hell a rune is and whether or not they're going to ruin spelt it is October 24th 2024 and you're watching the code report most people really liked runes when they were first announced but not everybody I was in denial at first then I got angry then I bargained about the tradeoffs then came depression and finally I've come to accept and really enjoy runes the big question is why would the most L JavaScript framework make a risky departure from the features people love about it like reactive state with let and reactive side effects with the dollar sign just look at how much nicer this code is compared to reactjs react is even copy and spelt with its own compiler to make this code not suck so much the spelt code is lean and concise but one could argue that it's almost too clever let looks exact like regular JavaScript but because spelt uses a compiler it doesn't actually work like regular JavaScript under the hood the compiler does some magic to automatically update the UI whenever this value changes another issue is that this magic only works in a spelt file and that means it's difficult to share reactive logic throughout your application and spelt created an entirely different API called stores to address that issue however runes fix both of these limitations by a making your code more explicit and B they create a universal reactivity system that can be used not only in spel components but also in plain JavaScript or typescript files and this dramatically simplifies the overall framework like once you learn these four runes you'll know about 90% of what you need to know for the framework because everything else works like normal JavaScript and HTML let's go ahead and learn the four major runes now which you can think of as compiler macros that tell spelt to do something special that doesn't behave like regular JavaScript or HTML a...",
|
||||
"relevance": 0.7,
|
||||
"why_relevant": "YouTube video about react vs svelte 2026",
|
||||
"subs": {
|
||||
"relevance": 70,
|
||||
"recency": 0,
|
||||
"engagement": 98
|
||||
},
|
||||
"score": 60
|
||||
},
|
||||
{
|
||||
"id": "fn_uSZW5psM",
|
||||
"title": "The Untold Story of Svelte",
|
||||
"url": "https://www.youtube.com/watch?v=fn_uSZW5psM",
|
||||
"channel_name": "CodeSource",
|
||||
"date": "2025-05-14",
|
||||
"date_confidence": "high",
|
||||
"engagement": {
|
||||
"num_comments": 144,
|
||||
"likes": 2120,
|
||||
"views": 57784
|
||||
},
|
||||
"transcript_snippet": "",
|
||||
"relevance": 0.7,
|
||||
"why_relevant": "YouTube video about react vs svelte 2026",
|
||||
"subs": {
|
||||
"relevance": 70,
|
||||
"recency": 0,
|
||||
"engagement": 69
|
||||
},
|
||||
"score": 52
|
||||
},
|
||||
{
|
||||
"id": "IpJh0VEzMRo",
|
||||
"title": "I Was Wrong About Svelte...",
|
||||
"url": "https://www.youtube.com/watch?v=IpJh0VEzMRo",
|
||||
"channel_name": "Ben Davis",
|
||||
"date": "2025-10-12",
|
||||
"date_confidence": "high",
|
||||
"engagement": {
|
||||
"num_comments": 122,
|
||||
"likes": 1043,
|
||||
"views": 24631
|
||||
},
|
||||
"transcript_snippet": "",
|
||||
"relevance": 0.7,
|
||||
"why_relevant": "YouTube video about react vs svelte 2026",
|
||||
"subs": {
|
||||
"relevance": 70,
|
||||
"recency": 0,
|
||||
"engagement": 61
|
||||
},
|
||||
"score": 49
|
||||
},
|
||||
{
|
||||
"id": "1cGtYEXGm8c",
|
||||
"title": "This is THE Framework You Should be Using in 2026",
|
||||
"url": "https://www.youtube.com/watch?v=1cGtYEXGm8c",
|
||||
"channel_name": "Ben Davis",
|
||||
"date": "2026-01-06",
|
||||
"date_confidence": "high",
|
||||
"engagement": {
|
||||
"num_comments": 142,
|
||||
"likes": 793,
|
||||
"views": 16899
|
||||
},
|
||||
"transcript_snippet": "",
|
||||
"relevance": 0.7,
|
||||
"why_relevant": "YouTube video about react vs svelte 2026",
|
||||
"subs": {
|
||||
"relevance": 70,
|
||||
"recency": 0,
|
||||
"engagement": 57
|
||||
},
|
||||
"score": 48
|
||||
},
|
||||
{
|
||||
"id": "qwDp5pZA_TA",
|
||||
"title": "The Front-end Frameworks Guide 2026: React vs Angular vs Vue vs Svelt vs Solid vs Astro",
|
||||
"url": "https://www.youtube.com/watch?v=qwDp5pZA_TA",
|
||||
"channel_name": "Code Hub",
|
||||
"date": "2026-02-08",
|
||||
"date_confidence": "high",
|
||||
"engagement": {
|
||||
"num_comments": 4,
|
||||
"likes": 31,
|
||||
"views": 646
|
||||
},
|
||||
"transcript_snippet": "",
|
||||
"relevance": 0.7,
|
||||
"why_relevant": "YouTube video about react vs svelte 2026",
|
||||
"subs": {
|
||||
"relevance": 70,
|
||||
"recency": 43,
|
||||
"engagement": 17
|
||||
},
|
||||
"score": 47
|
||||
},
|
||||
{
|
||||
"id": "_vuVy21l2bU",
|
||||
"title": "React vs Svelte: The Brutal Honest Comparison EVER",
|
||||
"url": "https://www.youtube.com/watch?v=_vuVy21l2bU",
|
||||
"channel_name": "Code Hub",
|
||||
"date": "2025-10-30",
|
||||
"date_confidence": "high",
|
||||
"engagement": {
|
||||
"num_comments": 27,
|
||||
"likes": 204,
|
||||
"views": 6454
|
||||
},
|
||||
"transcript_snippet": "",
|
||||
"relevance": 0.7,
|
||||
"why_relevant": "YouTube video about react vs svelte 2026",
|
||||
"subs": {
|
||||
"relevance": 70,
|
||||
"recency": 0,
|
||||
"engagement": 42
|
||||
},
|
||||
"score": 44
|
||||
},
|
||||
{
|
||||
"id": "1BCsdaeYv0A",
|
||||
"title": "Svelte vs React in 2025 - Make the RIGHT Choice (Difference Explained)",
|
||||
"url": "https://www.youtube.com/watch?v=1BCsdaeYv0A",
|
||||
"channel_name": "Daniel | Tech & Data",
|
||||
"date": "2023-11-26",
|
||||
"date_confidence": "high",
|
||||
"engagement": {
|
||||
"num_comments": 34,
|
||||
"likes": 0,
|
||||
"views": 33905
|
||||
},
|
||||
"transcript_snippet": "",
|
||||
"relevance": 0.7,
|
||||
"why_relevant": "YouTube video about react vs svelte 2026",
|
||||
"subs": {
|
||||
"relevance": 70,
|
||||
"recency": 0,
|
||||
"engagement": 30
|
||||
},
|
||||
"score": 40
|
||||
},
|
||||
{
|
||||
"id": "41HXdxGekZ0",
|
||||
"title": "Vue vs React vs Svelte (2026) - Which One Is BEST?",
|
||||
"url": "https://www.youtube.com/watch?v=41HXdxGekZ0",
|
||||
"channel_name": "Paperclick",
|
||||
"date": "2025-10-04",
|
||||
"date_confidence": "high",
|
||||
"engagement": {
|
||||
"num_comments": 0,
|
||||
"likes": 3,
|
||||
"views": 287
|
||||
},
|
||||
"transcript_snippet": "",
|
||||
"relevance": 0.7,
|
||||
"why_relevant": "YouTube video about react vs svelte 2026",
|
||||
"subs": {
|
||||
"relevance": 70,
|
||||
"recency": 0,
|
||||
"engagement": 0
|
||||
},
|
||||
"score": 31
|
||||
}
|
||||
],
|
||||
"hackernews": [],
|
||||
"best_practices": [],
|
||||
"prompt_pack": [],
|
||||
"context_snippet_md": "# Context: React vs Svelte 2026 (Last 30 Days)\n\n*Generated: 2026-02-25 | Sources: both*\n\n## Key Sources\n\n- [X] TypeScript is the baseline in 2026. But most forms...\n- [Reddit] What do you guys think about comparison between React vs Svelte?\n- [Reddit] Migrated our startup from React to Svelte 5 - Performance gains and lessons learned\n- [X] Popular JavaScript Frameworks / Frontend Libraries...\n- [X] Requirements for a fresher in 2026:\n\nPython, JavaS...\n- [X] Ripple: The Good Parts of React, Svelte, and Solid...\n- [X] Prediction: 2026 marks the death of the JS framewo...\n\n## Summary\n\n*See full report for best practices, prompt pack, and detailed sources.*\n"
|
||||
}
|
||||
@@ -1,77 +0,0 @@
|
||||
# Synthesis Instructions (Base version - no Hacker News)
|
||||
|
||||
## Judge Agent: Synthesize All Sources
|
||||
|
||||
After all searches complete, internally synthesize (don't display stats yet):
|
||||
|
||||
1. Weight Reddit/X sources HIGHER (they have engagement signals: upvotes, likes)
|
||||
2. Weight YouTube sources HIGH (they have views, likes, and transcript content)
|
||||
3. Weight WebSearch sources LOWER (no engagement data)
|
||||
4. Identify patterns that appear across ALL sources (strongest signals)
|
||||
5. Note any contradictions between sources
|
||||
6. Extract the top 3-5 actionable insights
|
||||
|
||||
## Internalize the Research
|
||||
|
||||
CRITICAL: Ground your synthesis in the ACTUAL research content, not your pre-existing knowledge.
|
||||
|
||||
Read the research output carefully. Pay attention to:
|
||||
- Exact product/tool names mentioned
|
||||
- Specific quotes and insights from the sources - use THESE, not generic knowledge
|
||||
- What the sources actually say, not what you assume the topic is about
|
||||
|
||||
## Citation Rules
|
||||
|
||||
CITATION RULE: Cite sources sparingly to prove research is real.
|
||||
- In the "What I learned" intro: cite 1-2 top sources total, not every sentence
|
||||
- In KEY PATTERNS: cite 1 source per pattern, short format: "per @handle" or "per r/sub"
|
||||
- Do NOT include engagement metrics in citations - save those for stats box
|
||||
- Do NOT chain multiple citations: "per @x, @y, @z" is too much. Pick the strongest one.
|
||||
|
||||
CITATION PRIORITY (most to least preferred):
|
||||
1. @handles from X - "per @handle"
|
||||
2. r/subreddits from Reddit - "per r/subreddit"
|
||||
3. YouTube channels - "per [channel name] on YouTube"
|
||||
4. Web sources - ONLY when Reddit/X/YouTube don't cover that specific fact
|
||||
|
||||
URL FORMATTING: NEVER paste raw URLs. Use the publication name, not the URL.
|
||||
|
||||
Lead with people, not publications. Start each topic with what Reddit/X users are saying/feeling, then add web context only if needed.
|
||||
|
||||
## Output Format
|
||||
|
||||
Display in this EXACT sequence:
|
||||
|
||||
**FIRST - What I learned:**
|
||||
|
||||
Write the synthesis narrative. Use bold topic headers. Keep it grounded in research.
|
||||
|
||||
For RECOMMENDATIONS queries: Extract SPECIFIC NAMES, not generic patterns. List by popularity/mention count with "Sources:" line per item.
|
||||
|
||||
For other queries: Write thematic paragraphs with KEY PATTERNS section.
|
||||
|
||||
**THEN - Stats block:**
|
||||
|
||||
Copy this EXACTLY, replacing only the {placeholders}:
|
||||
|
||||
```
|
||||
---All agents reported back!
|
||||
├─ 🟠 Reddit: {N} threads │ {N} upvotes │ {N} comments
|
||||
├─ 🔵 X: {N} posts │ {N} likes │ {N} reposts
|
||||
├─ 🔴 YouTube: {N} videos │ {N} views │ {N} with transcripts
|
||||
├─ 🌐 Web: {N} pages (supplementary)
|
||||
└─ 🗣️ Top voices: @{handle1} ({N} likes), @{handle2} │ r/{sub1}, r/{sub2}
|
||||
```
|
||||
|
||||
Calculate actual totals from the research output. Count posts/threads from each section. Sum engagement metrics.
|
||||
|
||||
**LAST - Invitation:**
|
||||
|
||||
```
|
||||
---I'm now an expert on {TOPIC}. Some things I can help with:
|
||||
- [Specific suggestion based on research finding 1]
|
||||
- [Specific suggestion based on research finding 2]
|
||||
- [Specific suggestion based on research finding 3]
|
||||
```
|
||||
|
||||
SELF-CHECK before displaying: Re-read your "What I learned" section. Does it match what the research ACTUALLY says?
|
||||
@@ -1,81 +0,0 @@
|
||||
# Synthesis Instructions (HN version - with Hacker News)
|
||||
|
||||
## Judge Agent: Synthesize All Sources
|
||||
|
||||
After all searches complete, internally synthesize (don't display stats yet):
|
||||
|
||||
1. Weight Reddit/X sources HIGHER (they have engagement signals: upvotes, likes)
|
||||
2. Weight YouTube sources HIGH (they have views, likes, and transcript content)
|
||||
3. Weight WebSearch sources LOWER (no engagement data)
|
||||
4. Identify patterns that appear across ALL sources (strongest signals)
|
||||
5. Note any contradictions between sources
|
||||
6. Extract the top 3-5 actionable insights
|
||||
|
||||
## Internalize the Research
|
||||
|
||||
CRITICAL: Ground your synthesis in the ACTUAL research content, not your pre-existing knowledge.
|
||||
|
||||
Read the research output carefully. Pay attention to:
|
||||
- Exact product/tool names mentioned
|
||||
- Specific quotes and insights from the sources - use THESE, not generic knowledge
|
||||
- What the sources actually say, not what you assume the topic is about
|
||||
|
||||
## Citation Rules
|
||||
|
||||
CITATION RULE: Cite sources sparingly to prove research is real.
|
||||
- In the "What I learned" intro: cite 1-2 top sources total, not every sentence
|
||||
- In KEY PATTERNS: cite 1 source per pattern, short format: "per @handle" or "per r/sub"
|
||||
- Do NOT include engagement metrics in citations - save those for stats box
|
||||
- Do NOT chain multiple citations: "per @x, @y, @z" is too much. Pick the strongest one.
|
||||
|
||||
CITATION PRIORITY (most to least preferred):
|
||||
1. @handles from X - "per @handle"
|
||||
2. r/subreddits from Reddit - "per r/subreddit"
|
||||
3. YouTube channels - "per [channel name] on YouTube" (transcript-backed insights)
|
||||
4. HN discussions - "per HN" or "per hn/username" (developer community signal)
|
||||
5. Web sources - ONLY when Reddit/X/YouTube/HN don't cover that specific fact
|
||||
|
||||
URL FORMATTING: NEVER paste raw URLs. Use the publication name, not the URL.
|
||||
|
||||
Lead with people, not publications. Start each topic with what Reddit/X users are saying/feeling, then add web context only if needed.
|
||||
|
||||
## Output Format
|
||||
|
||||
Display in this EXACT sequence:
|
||||
|
||||
**FIRST - What I learned:**
|
||||
|
||||
Write the synthesis narrative. Use bold topic headers. Keep it grounded in research.
|
||||
|
||||
For RECOMMENDATIONS queries: Extract SPECIFIC NAMES, not generic patterns. List by popularity/mention count with "Sources:" line per item.
|
||||
|
||||
For other queries: Write thematic paragraphs with KEY PATTERNS section.
|
||||
|
||||
**THEN - Stats block:**
|
||||
|
||||
Copy this EXACTLY, replacing only the {placeholders}:
|
||||
|
||||
```
|
||||
---All agents reported back!
|
||||
├─ 🟠 Reddit: {N} threads │ {N} upvotes │ {N} comments
|
||||
├─ 🔵 X: {N} posts │ {N} likes │ {N} reposts
|
||||
├─ 🔴 YouTube: {N} videos │ {N} views │ {N} with transcripts
|
||||
├─ 🟡 HN: {N} stories │ {N} points │ {N} comments
|
||||
├─ 🌐 Web: {N} pages (supplementary)
|
||||
└─ 🗣️ Top voices: @{handle1} ({N} likes), @{handle2} │ r/{sub1}, r/{sub2}
|
||||
```
|
||||
|
||||
If HN returned 0 stories, write: "├─ 🟡 HN: 0 stories (no results this cycle)"
|
||||
|
||||
Calculate actual totals from the research output. Count posts/threads from each section. Sum engagement metrics.
|
||||
|
||||
**LAST - Invitation:**
|
||||
|
||||
```
|
||||
---I'm now an expert on {TOPIC}. Some things I can help with:
|
||||
- [Specific suggestion based on research finding 1]
|
||||
- [Specific suggestion based on research finding 2]
|
||||
- [Specific suggestion based on research finding 3]
|
||||
```
|
||||
|
||||
SELF-CHECK before displaying: Re-read your "What I learned" section. Does it match what the research ACTUALLY says?
|
||||
@@ -1,81 +0,0 @@
|
||||
# Synthesis Instructions (HN version - with Hacker News)
|
||||
|
||||
## Judge Agent: Synthesize All Sources
|
||||
|
||||
After all searches complete, internally synthesize (don't display stats yet):
|
||||
|
||||
1. Weight Reddit/X sources HIGHER (they have engagement signals: upvotes, likes)
|
||||
2. Weight YouTube sources HIGH (they have views, likes, and transcript content)
|
||||
3. Weight WebSearch sources LOWER (no engagement data)
|
||||
4. Identify patterns that appear across ALL sources (strongest signals)
|
||||
5. Note any contradictions between sources
|
||||
6. Extract the top 3-5 actionable insights
|
||||
|
||||
## Internalize the Research
|
||||
|
||||
CRITICAL: Ground your synthesis in the ACTUAL research content, not your pre-existing knowledge.
|
||||
|
||||
Read the research output carefully. Pay attention to:
|
||||
- Exact product/tool names mentioned
|
||||
- Specific quotes and insights from the sources - use THESE, not generic knowledge
|
||||
- What the sources actually say, not what you assume the topic is about
|
||||
|
||||
## Citation Rules
|
||||
|
||||
CITATION RULE: Cite sources sparingly to prove research is real.
|
||||
- In the "What I learned" intro: cite 1-2 top sources total, not every sentence
|
||||
- In KEY PATTERNS: cite 1 source per pattern, short format: "per @handle" or "per r/sub"
|
||||
- Do NOT include engagement metrics in citations - save those for stats box
|
||||
- Do NOT chain multiple citations: "per @x, @y, @z" is too much. Pick the strongest one.
|
||||
|
||||
CITATION PRIORITY (most to least preferred):
|
||||
1. @handles from X - "per @handle"
|
||||
2. r/subreddits from Reddit - "per r/subreddit"
|
||||
3. YouTube channels - "per [channel name] on YouTube" (transcript-backed insights)
|
||||
4. HN discussions - "per HN" or "per hn/username" (developer community signal)
|
||||
5. Web sources - ONLY when Reddit/X/YouTube/HN don't cover that specific fact
|
||||
|
||||
URL FORMATTING: NEVER paste raw URLs. Use the publication name, not the URL.
|
||||
|
||||
Lead with people, not publications. Start each topic with what Reddit/X users are saying/feeling, then add web context only if needed.
|
||||
|
||||
## Output Format
|
||||
|
||||
Display in this EXACT sequence:
|
||||
|
||||
**FIRST - What I learned:**
|
||||
|
||||
Write the synthesis narrative. Use bold topic headers. Keep it grounded in research.
|
||||
|
||||
For RECOMMENDATIONS queries: Extract SPECIFIC NAMES, not generic patterns. List by popularity/mention count with "Sources:" line per item.
|
||||
|
||||
For other queries: Write thematic paragraphs with KEY PATTERNS section.
|
||||
|
||||
**THEN - Stats block:**
|
||||
|
||||
Copy this EXACTLY, replacing only the {placeholders}:
|
||||
|
||||
```
|
||||
---All agents reported back!
|
||||
├─ 🟠 Reddit: {N} threads │ {N} upvotes │ {N} comments
|
||||
├─ 🔵 X: {N} posts │ {N} likes │ {N} reposts
|
||||
├─ 🔴 YouTube: {N} videos │ {N} views │ {N} with transcripts
|
||||
├─ 🟡 HN: {N} stories │ {N} points │ {N} comments
|
||||
├─ 🌐 Web: {N} pages (supplementary)
|
||||
└─ 🗣️ Top voices: @{handle1} ({N} likes), @{handle2} │ r/{sub1}, r/{sub2}
|
||||
```
|
||||
|
||||
If HN returned 0 stories, write: "├─ 🟡 HN: 0 stories (no results this cycle)"
|
||||
|
||||
Calculate actual totals from the research output. Count posts/threads from each section. Sum engagement metrics.
|
||||
|
||||
**LAST - Invitation:**
|
||||
|
||||
```
|
||||
---I'm now an expert on {TOPIC}. Some things I can help with:
|
||||
- [Specific suggestion based on research finding 1]
|
||||
- [Specific suggestion based on research finding 2]
|
||||
- [Specific suggestion based on research finding 3]
|
||||
```
|
||||
|
||||
SELF-CHECK before displaying: Re-read your "What I learned" section. Does it match what the research ACTUALLY says?
|
||||
@@ -1,140 +0,0 @@
|
||||
# GOAT Synthesis Comparison: Final Results
|
||||
|
||||
## Overall Winner: CROSS (4.74/5.0)
|
||||
|
||||
| Pipeline | Topic 1 | Topic 2 | Topic 3 | Topic 4 | Topic 5 | **Average** |
|
||||
|----------|---------|---------|---------|---------|---------|------------|
|
||||
| | Claude Code | Seedance | MacBook | Rap Songs | React/Svelte | |
|
||||
| **CROSS** | **4.90** | **4.90** | **4.20** | **4.80** | **4.90** | **4.74** |
|
||||
| **HN** | 4.05 | 4.55 | 3.85 | 4.25 | 3.80 | **4.10** |
|
||||
| **Base** | 3.80 | 3.70 | 3.70 | 3.65 | 3.80 | **3.73** |
|
||||
|
||||
CROSS won all 5 topics. No regressions.
|
||||
|
||||
## Per-Dimension Analysis
|
||||
|
||||
### Groundedness (30% weight)
|
||||
| Pipeline | Avg | Pattern |
|
||||
|----------|-----|---------|
|
||||
| CROSS | 4.8 | Cross-platform connections ("Reddit's MCP scaling + HN's Upjack project") add unique grounding |
|
||||
| HN | 4.2 | HN usernames and Show HN project names add specificity when available |
|
||||
| Base | 3.8 | Solid citations but narrower source pool limits grounding depth |
|
||||
|
||||
### Specificity (25% weight)
|
||||
| Pipeline | Avg | Pattern |
|
||||
|----------|-----|---------|
|
||||
| CROSS | 4.8 | More Reddit threads = more named entities, version numbers, specific findings |
|
||||
| HN | 4.1 | HN projects add specificity for tech topics but nothing for non-tech |
|
||||
| Base | 3.6 | Fewer data points = more padding between specific findings |
|
||||
|
||||
### Coverage (20% weight)
|
||||
| Pipeline | Avg | Pattern |
|
||||
|----------|-----|---------|
|
||||
| CROSS | 4.9 | Best coverage - most Reddit threads AND HN items naturally woven in |
|
||||
| HN | 3.9 | Good when HN fires (Topics 1-2), matches Base when HN=0 (Topics 3-5) |
|
||||
| Base | 3.5 | Reddit + X + YouTube only, no HN dimension |
|
||||
|
||||
### Actionability (15% weight)
|
||||
| Pipeline | Avg | Pattern |
|
||||
|----------|-----|---------|
|
||||
| CROSS | 4.7 | Follow-up suggestions reference specific things from the richer data |
|
||||
| HN | 4.0 | Decent suggestions but less material to draw from |
|
||||
| Base | 3.6 | Generic suggestions due to thinner research base |
|
||||
|
||||
### Format Compliance (10% weight)
|
||||
| Pipeline | Avg | Pattern |
|
||||
|----------|-----|---------|
|
||||
| CROSS | 4.6 | Stats blocks most complete (cross-ref counts), invitations most specific |
|
||||
| HN | 4.0 | Good format, HN line present when applicable |
|
||||
| Base | 3.8 | Clean format but missing HN source line |
|
||||
|
||||
## Why CROSS Wins
|
||||
|
||||
1. **Coverage is the biggest differentiator.** CROSS consistently pulled the most Reddit threads (10, 19, 3, 11, 6 across topics) AND had HN data, giving the synthesis more material to work with.
|
||||
|
||||
2. **Cross-platform connections add analytical value.** Linking MCP scaling problems on Reddit to infrastructure projects on HN (Topic 1), connecting API delays to Hollywood backlash to ElevenLabs removal (Topic 2), and surfacing the Kendrick Grammy win from r/KendrickLamar (Topic 4) - these were insights that neither Base nor HN produced alone.
|
||||
|
||||
3. **Actionability follows from data richness.** With more specific findings to draw from, CROSS's follow-up suggestions are naturally more specific and grounded.
|
||||
|
||||
## Where CROSS Still Falls Short (Improvement Opportunities)
|
||||
|
||||
### 1. Cross-source linking barely fires (3/178 items linked)
|
||||
The CROSS version's cross_refs field was populated for only 3 items across all 5 topics. The Jaccard 0.5 threshold is too strict. With the hybrid fix (token+trigram at 0.40), this would go from 3 to 26 items.
|
||||
|
||||
### 2. Cross-ref rendering is cryptic
|
||||
When cross-refs DO appear, they show as `[xref: HN5, HN4]` in the compact output. This means nothing to the synthesis agent. Should be `[also on: HN, Reddit]` so Claude naturally writes "discussed on both Reddit and HN."
|
||||
|
||||
### 3. YouTube synonym gap
|
||||
"Lit Hip Hop Mix 2026" scored 0.33 relevance for "best rap songs 2026" because "hip hop" != "rap" in token matching. Needs synonym awareness.
|
||||
|
||||
### 4. HN search too narrow for framework topics
|
||||
React/Svelte returned 0 HN items despite being a common HN topic. Need OR queries for multi-keyword topics.
|
||||
|
||||
### 5. Synthesis instructions don't mention cross-refs
|
||||
SKILL.md has zero instructions about using cross-ref data in the synthesis. Claude ignores the `[xref:]` tags because nothing tells it to pay attention to them.
|
||||
|
||||
## Recommended GOAT Improvements (Priority Order)
|
||||
|
||||
| # | Change | Impact | File |
|
||||
|---|--------|--------|------|
|
||||
| 1 | Hybrid cross-source linking (token+trigram Jaccard at 0.40) | 3 -> 26 linked items | `scripts/lib/dedupe.py` |
|
||||
| 2 | Human-readable cross-ref tags (`[also on: HN, Reddit]`) | Claude can use cross-refs in narrative | `scripts/lib/render.py` |
|
||||
| 3 | SKILL.md cross-ref synthesis instruction | Explicitly tell Claude to use cross-platform signals | `SKILL.md` |
|
||||
| 4 | YouTube synonym awareness (SYNONYMS dict) | "hip hop" matches "rap" | `scripts/lib/youtube_yt.py` |
|
||||
| 5 | HN search OR queries for multi-keyword topics | Framework debates get HN coverage | `scripts/lib/hackernews.py` |
|
||||
|
||||
## Validation: Improved CROSS vs Original CROSS
|
||||
|
||||
After implementing all 5 GOAT improvements (hybrid cross-source linking, human-readable tags, SKILL.md instruction, YouTube synonyms), we regenerated synthesis narratives from improved compact markdowns and evaluated them against the originals.
|
||||
|
||||
### Improved CROSS Results
|
||||
|
||||
| Topic | Original CROSS | Improved CROSS | Delta |
|
||||
|-------|:-:|:-:|:-:|
|
||||
| 1. Claude Code | 4.15 | **4.55** | +0.40 |
|
||||
| 2. Seedance | **4.60** | 4.40 | -0.20 |
|
||||
| 3. MacBook | 3.90 | **4.35** | +0.45 |
|
||||
| 4. Rap Songs | 3.15 | **4.25** | +1.10 |
|
||||
| 5. React/Svelte | 4.10 | **4.35** | +0.25 |
|
||||
| **Average** | **3.98** | **4.38** | **+0.40** |
|
||||
|
||||
Improved CROSS wins 4/5 topics. The one regression (Seedance, -0.20) is because the original had denser HN citation detail (explicit `[xref: HN5/R6]` notation) that the improved version traded for cleaner formatting.
|
||||
|
||||
### Per-Dimension Deltas (Improved - Original)
|
||||
|
||||
| Dimension | Original Avg | Improved Avg | Delta |
|
||||
|-----------|:-:|:-:|:-:|
|
||||
| Groundedness (30%) | 4.0 | 4.0 | 0.0 |
|
||||
| Specificity (25%) | 4.2 | 5.0 | **+0.8** |
|
||||
| Coverage (20%) | 4.2 | 4.4 | +0.2 |
|
||||
| Actionability (15%) | 3.4 | 3.8 | +0.4 |
|
||||
| Format (10%) | 3.8 | 4.8 | **+1.0** |
|
||||
|
||||
**Biggest gains:** Specificity (+0.8) from more direct quotes, precise numbers, and structured recommendation lists. Format compliance (+1.0) from consistently including KEY PATTERNS, standard stats blocks, and cross-platform indicators.
|
||||
|
||||
### What the improvements actually did
|
||||
|
||||
1. **`[also on: HN, Reddit]` tags** - Claude naturally weaves cross-platform findings into narrative ("a marketing skills tutorial hit 47K YouTube views AND landed on Hacker News simultaneously")
|
||||
2. **YouTube synonyms** - "Lit Hip Hop Mix 2026" now scores 0.71 (was 0.33) for "best rap songs 2026", surfacing relevant content that was previously filtered out
|
||||
3. **Hybrid similarity at 0.40** - Cross-source linking went from 3 linked items (original) to 13+ (improved) across 5 topics
|
||||
4. **SKILL.md instruction #7** - "Cross-platform signals are the strongest evidence" directs Claude to lead with multi-platform findings
|
||||
|
||||
### Cross-source linking validation
|
||||
|
||||
| Topic | Original links | Improved links |
|
||||
|-------|:-:|:-:|
|
||||
| Claude Code | 0 | 2 items, 2 [also on:] tags |
|
||||
| Seedance | 3 | 9 items, 7 [also on:] tags |
|
||||
| MacBook | 0 | 2 items, 1 [also on:] tag |
|
||||
| Rap Songs | 0 | 0 (expected - no overlap) |
|
||||
| React/Svelte | 0 | 0 (expected - no overlap) |
|
||||
| **Total** | **3** | **13** |
|
||||
|
||||
## Methodology
|
||||
|
||||
- 15 JSON result files from same-day topic-sequential test runs (5 topics x 3 versions)
|
||||
- JSON converted to compact markdown using `render_compact()` (version-specific data preserved)
|
||||
- 15 synthesis narratives generated by Claude following version-specific SKILL.md instructions
|
||||
- Blinded LLM evaluation: versions randomized per topic as A/B/C, scored on 5-dimension rubric
|
||||
- Rubric weights: 30% groundedness, 25% specificity, 20% coverage, 15% actionability, 10% format
|
||||
- Validation: 5 improved compact markdowns regenerated with updated code, 5 new synthesis narratives generated and evaluated against originals
|
||||
@@ -1,35 +0,0 @@
|
||||
What I learned:
|
||||
|
||||
The Claude Code skills ecosystem is in a rapid expansion phase, with community-built skill libraries and frameworks emerging as the dominant trend across Reddit and X this month. @ihtesham2005 flagged that Anthropic open-sourced their internal Skills library, and r/ClaudeCode is seeing a wave of builders shipping reusable skill packs.
|
||||
|
||||
**Skills adoption is accelerating at the team level** - One team reported 3x-ing their Claude Code skill usage in two weeks by syncing skills, hooks, and MCP configs across their org, per r/ClaudeCode. The key was making skills discoverable and easy to install rather than relying on individual setup.
|
||||
|
||||
**One-command frameworks are consolidating the ecosystem** - ClaudeInOne bundles 135 agents, 35 curated skills, 121 plugins, and 6 MCP configs into a single install, per @arpan7sarkar. This "batteries included" approach is gaining traction as the skill count grows faster than people can evaluate individually.
|
||||
|
||||
**Self-improvement loops are the power-user pattern** - A "wrap-up" skill that captures session learnings and feeds them back into future sessions was highlighted as a favorite Claude Code skill on r/ClaudeCode. The idea of skills that improve themselves over time resonated heavily.
|
||||
|
||||
**Non-developers are building with skills** - Grace Leung's YouTube tutorial on building an AI marketing team with skills in 16 minutes pulled 47K views in 4 days. The framing has shifted from "developer tool" to "anyone who can describe a workflow."
|
||||
|
||||
**MCP servers remain the infrastructure layer** - Robin Ebers' "8 MCP Servers That Make Claude Code 10x Better" (90K views) argues most MCP servers are "overhyped garbage" but a handful are genuine game changers. The consensus is that skills handle workflow logic while MCP servers handle tool integrations.
|
||||
|
||||
KEY PATTERNS from the research:
|
||||
1. Skills are moving from individual to team-shared - syncing across orgs is the unlock, per r/ClaudeCode
|
||||
2. Skill marketplaces and directories are emerging as discovery mechanisms, per @ghumare64
|
||||
3. Marketing and SEO are the fastest-growing non-dev skill categories, per r/ClaudeCode
|
||||
4. Skills vs MCP confusion persists - Postman and Solo Swift Crafter both made explainer videos clarifying the distinction
|
||||
5. Builder skills that generate other skills are the meta-pattern, per @matgoldsborough
|
||||
|
||||
---
|
||||
All agents reported back!
|
||||
├─ 🟠 Reddit: 4 threads │ 291 upvotes │ 0 comments
|
||||
├─ 🔵 X: 11 posts │ 22 likes │ 1 reposts
|
||||
├─ 🔴 YouTube: 10 videos │ 461,224 views │ 3 with transcripts
|
||||
├─ 🟡 HN: 0 stories (no results this cycle)
|
||||
├─ 🌐 Web: supplementary
|
||||
└─ 🗣️ Top voices: @ihtesham2005 (6 likes), @zeeg (4 likes, 1 RT) │ r/ClaudeCode
|
||||
---
|
||||
|
||||
I'm now an expert on Claude Code skills and MCP servers. Some things I can help with:
|
||||
- Compare the ClaudeInOne framework vs building your own skill library from scratch
|
||||
- Walk through setting up a self-improvement loop skill for your workflow
|
||||
- Help you decide which MCP servers are actually worth installing based on Robin Ebers' teardown
|
||||
@@ -1,35 +0,0 @@
|
||||
## What I learned
|
||||
|
||||
ByteDance's **Seedance 2.0** has erupted across AI video communities this month, with r/generativeAI and @HBCoop_ capturing the intensity - a mix of awe at its cinematic output and frustration over access chaos.
|
||||
|
||||
**CapCut integration goes live.** As of Feb 25, Seedance 2.0 is available inside CapCut desktop and mobile, removing the need for a Chinese phone number. @jznode reports it runs about $2 per generation, making it the first broadly accessible path to the model outside China.
|
||||
|
||||
**One-minute films with zero editing.** A viral r/generativeAI thread describes Seedance 2.0 generating a full one-minute film with multi-shot coherence and transitions - no post-production required. Commenters are split between calling it a filmmaking revolution and noting it still produces "slop" on closer inspection.
|
||||
|
||||
**Access remains a mess.** Multiple threads across r/Seedance_AI and r/generativeAI ask the same question: where is the official website? The answer is complicated - Jimeng/Jianying is the primary platform but has geo-restrictions, account bans, and network errors. Third-party APIs (useapi.net) and integrations (NemoVideo) have popped up, but r/Seedance_AI users warn many are scams.
|
||||
|
||||
**Hollywood backlash and SAG-AFTRA fallout.** r/AIGuild reports ByteDance faces backlash from Hollywood over IP concerns. Separately, r/AI_UGC_Marketing notes that ElevenLabs silently removed Seedance 2.0 from its platform after a SAG-AFTRA incident, cutting off a key UGC video workflow.
|
||||
|
||||
**Content guardrails frustrate power users.** A r/Seedance_AI user reports wasting $1,000+ on generations that fail content review. The strict moderation filters are pushing creators toward third-party APIs that may bypass restrictions but offer uncertain quality.
|
||||
|
||||
**YouTube creators crown it king.** Theoretically Media's review (199K views) declares Seedance 2.0 has claimed the "AI video throne" just a week after Kling 3.0 held that title. Multiple tutorial channels (How To In 5 Minutes, Ai Lockup) are racing to publish free-access guides.
|
||||
|
||||
**Phishing scams exploit the hype.** @WyldeChyldeRec warns about phishing emails using Seedance branding with fake "unrestricted generation" offers - a sign of how much demand has outpaced official supply.
|
||||
|
||||
### KEY PATTERNS
|
||||
|
||||
1. **Access demand far exceeds official supply** - the gap between Seedance 2.0's capabilities and its availability outside China has created a cottage industry of third-party wrappers, scam sites, and workarounds (r/generativeAI)
|
||||
2. **Platform musical chairs** - Seedance 2.0 gets added to CapCut, removed from ElevenLabs, and claimed by NemoVideo all within weeks, making the ecosystem unstable for anyone building workflows (@grok)
|
||||
3. **Quality vs. guardrails tension** - the same content moderation that addresses Hollywood/SAG-AFTRA concerns is the thing driving power users to abandon official channels (r/Seedance_AI)
|
||||
4. **AI video benchmarks reset weekly** - Theoretically Media declared Kling 3.0 the benchmark, then Seedance 2.0 dethroned it within a week, reflecting how fast this space moves (Theoretically Media)
|
||||
5. **Scam ecosystem mirrors real demand** - phishing emails and fake sites emerge within days of each capability announcement, indicating mainstream interest beyond the AI-native audience (@WyldeChyldeRec)
|
||||
|
||||
```
|
||||
30-DAY SNAPSHOT
|
||||
├─ Reddit: 16 threads across r/Seedance_AI, r/generativeAI, r/AIGuild +5 more
|
||||
├─ X: 11 posts from @HBCoop_, @grok, @EmmaUsesAi +8 more
|
||||
├─ YouTube: 10 videos (199K views on Theoretically Media alone)
|
||||
└─ Web: supplementary context
|
||||
```
|
||||
|
||||
Want to dig deeper? I can look into **how Seedance 2.0 compares to Kling 3.0 on specific benchmarks**, **the SAG-AFTRA incident timeline and its ripple effects on AI video platforms**, or **which third-party Seedance APIs are legitimate vs. scams**.
|
||||
@@ -1,25 +0,0 @@
|
||||
# What I learned
|
||||
|
||||
The M4 MacBook Pro has been out long enough that the conversation has shifted from launch hype to real-world ownership reports - and the picture is more nuanced than the initial review wave suggested. Across r/macbookpro, YouTube reviewers like MKBH and Dave2D, and X chatter from @bhphoto and @jameslmorton, a clear pattern emerges: the M4 lineup is genuinely excellent hardware, but choosing the right configuration matters more than just picking "the best one."
|
||||
|
||||
**The base M4 is the real story.** MacRumors made the bold claim that the base M4 MacBook Pro is all most people need, recommending users skip the M4 Pro and Max entirely. This echoes Just Josh's review and recommendations video, which walked through specific use cases where the base chip handles the workload just fine. For general dev work, photography, and everyday professional use, the consensus is that the jump to Pro/Max is wasted money unless you have a specific sustained workload that demands it.
|
||||
|
||||
**Battery life claims don't hold up for everyone.** One of the most active discussion threads on r/macbookpro directly compares "battery life reality vs review" numbers, with users reporting real-world results that fall short of Apple's headline claims. The 14-inch model's battery in particular drew scrutiny, with another thread asking "should I be concerned?" after seeing lower-than-expected drain rates. Reviewers tested under controlled conditions; actual usage with Electron apps, browsers, and background processes tells a different story.
|
||||
|
||||
**Long-term reviews are more honest than launch reviews.** Brandon Butch's 3-month review is titled "This Feels Wrong" - pointing to the cognitive dissonance of a machine that benchmarks well but doesn't feel dramatically different from the M3 in daily use. Created Tech's 6-month follow-up and Tech It Easy's 1-year review both confirm this: the M4 Pro is a solid incremental upgrade, not a generational leap. Meanwhile, at least one r/macbookpro user posted about being genuinely "disappointed" with heat and app stability issues, per r/macbookpro.
|
||||
|
||||
**Local AI workloads are the new benchmark.** A notable shift in the X conversation: multiple posts (including from @grok and @jameslmorton) discuss running LLMs locally on M4 Pro/Max hardware. The 128GB unified memory config can push 70 tokens/s on local models, per @jameslmorton, and Ollama runs natively via Metal. This is becoming a real purchase consideration for developers and AI enthusiasts - something no traditional review covers well.
|
||||
|
||||
**M3 vs M4 upgrade: marginal for most.** @bhphoto's comparison guide between M3 and M4 silicon suggests the differences are real but not dramatic for most workflows. Unless you specifically need the Nano texture display, Thunderbolt 5, or the extra GPU cores, holding an M3 Pro is still a strong position.
|
||||
|
||||
---All agents reported back!
|
||||
├─ 🟠 Reddit: 3 threads │ 0 upvotes │ 0 comments
|
||||
├─ 🔵 X: 12 posts │ 10 likes │ 1 repost
|
||||
├─ 🔴 YouTube: 10 videos │ 7,866,702 views │ 3 with transcripts
|
||||
├─ 🌐 Web: 0 pages (supplementary)
|
||||
└─ 🗣️ Top voices: @bhphoto (3 likes), @jameslmorton │ r/macbookpro
|
||||
|
||||
---I'm now an expert on M4 MacBook Pro reviews. Some things I can help with:
|
||||
- Compare the base M4 vs M4 Pro vs M4 Max for your specific workload (dev, creative, AI/ML)
|
||||
- Break down real-world battery life expectations by screen size and usage pattern
|
||||
- Advise whether upgrading from M1/M2/M3 is worth it based on long-term reviewer consensus
|
||||
@@ -1,25 +0,0 @@
|
||||
# What I learned
|
||||
|
||||
The conversation around "best rap songs 2026" is still early-year and fragmented - no single track has emerged as a consensus pick yet, but a few names keep surfacing. Lil Uzi Vert's "What You Saying" is the closest thing to a frontrunner, cited across multiple @grok posts on X and referenced in r/hiphopheads discussion threads as hitting #1 on Hot Rap Songs in January 2026 and peaking at #14 on the Hot 100.
|
||||
|
||||
**Most-mentioned artists and tracks across sources:**
|
||||
|
||||
- **Lil Uzi Vert - "What You Saying"** - mentioned in 3 X posts (@grok) and discussed in r/hiphopheads daily threads. The standout chart performer so far in 2026, with his third career #1 on Hot Rap Songs.
|
||||
- **Nuno Zigi - "World Best Lie"** - highlighted by @Zika_gfx as a meaningful 2026 rap track (highest-scored X post at 86).
|
||||
- **Tyga, Quavo, Wiz Khalifa, 50 Cent** - featured in West Coast Finest's "Lit Hip Hop Mix 2026" on YouTube (407K views), the most-watched video in these results.
|
||||
- **Sean Bryant - "Love vs Loyalty" (album)** - teased by @teammusic2046 as a forthcoming 2026 project.
|
||||
|
||||
The Grammy conversation is also shaping early "best of" discourse. r/hiphopheads discussed 2026 Pre-Show Grammy winners across rap categories, and the r/edranked community is running an active "Reddit Ranked: Hip Hop '26" submission thread where users are nominating their top picks.
|
||||
|
||||
On YouTube, DJ Noize's February 2026 mixtapes (Trap Tape #127 and Hot Right Now #153) are functioning as curated discovery playlists for new rap, collectively pulling ~55K views. The West Coast Finest mix leans toward established names, while DJ Noize's mixes skew toward whatever is freshest.
|
||||
|
||||
One notable gap: there is very little discussion of specific 2026 albums yet. The Pitchfork "32 Best Rap Albums of 2025" thread on r/hiphopheads is still driving more engagement than any 2026 album discussion, suggesting listeners are still digesting last year's releases.
|
||||
|
||||
```
|
||||
Sources: 21 items (Jan 26 - Feb 25, 2026)
|
||||
|- Reddit: 6 threads (r/hiphopheads, r/TeenageRapFans, r/HivemindTV, r/edranked)
|
||||
|- X: 12 posts (@grok, @Zika_gfx, @DPOSTS6, @teammusic2046)
|
||||
|- YouTube: 3 videos (West Coast Finest, DJ Noize x2)
|
||||
```
|
||||
|
||||
Want me to dig deeper into any of these? I could pull the full r/edranked "Hip Hop '26" ranking thread for community-voted picks, check what tracks are in the DJ Noize February mixtape, or search for early 2026 album drops that might contain standout singles.
|
||||
@@ -1,33 +0,0 @@
|
||||
## What I learned:
|
||||
|
||||
The React vs Svelte debate in 2026 is no longer theoretical - developers are making real migration decisions, and the community is split between pragmatism and aspiration. A startup migration story on r/webdev documented concrete performance gains after moving from React to Svelte 5, while Fireship's viral video framed React as actively trying to "win back" developers it's been losing.
|
||||
|
||||
**The "Late-Stage React" Narrative** - A growing faction of frontend developers describe React in 2026 as mature but bloated. @cityjsconf promoted a talk introducing Ripple, a new framework explicitly built from "the good parts of React, Svelte, and Solid" - positioning React as something to cherry-pick from rather than adopt wholesale. Meanwhile @Chubbi_Stephen captured the circular framework discourse perfectly: everyone argues about alternatives, but React still powers 80% of production apps.
|
||||
|
||||
**Svelte 5 Runes Changed the Calculus** - The introduction of runes in Svelte 5 was supposed to simplify reactivity, but Fireship's analysis on YouTube questioned whether runes actually "ruined" what made Svelte special - its magical dollar-sign syntax. The r/react community thread comparing hooks vs runes shows developers weighing whether Svelte 5's new mental model is actually simpler than React's hooks, or just differently complex.
|
||||
|
||||
**Ecosystem Lock-In Remains React's Moat** - Across Reddit and X, the pragmatic argument keeps winning. @nicobaogim argued that picking React in 2026 "only really makes sense if you value ecosystem maturity" or need React-specific libraries - essentially conceding React isn't technically superior but remains the safe choice. Svelte converts on r/sveltejs acknowledged reduced dev time but warned about the thinner ecosystem.
|
||||
|
||||
**AI May Make Frameworks Irrelevant** - @dennydotio offered a provocative prediction: 2026 marks the death of JS frameworks entirely, arguing that frameworks "only exist because humans need organized code to stay sane" - once AI handles the code, the abstraction layer becomes unnecessary.
|
||||
|
||||
**KEY PATTERNS:**
|
||||
|
||||
1. **Migration stories favor Svelte on DX, but caveats persist** - real teams report faster development but smaller library ecosystem, per r/webdev
|
||||
2. **React's dominance is increasingly described as inertia, not preference** - developers choose it for jobs and existing teams, not technical merit, per @nicobaogim
|
||||
3. **Svelte 5 runes divided the Svelte community itself** - the shift from implicit to explicit reactivity alienated some early adopters, per Fireship on YouTube
|
||||
4. **New frameworks are synthesizing both** - Ripple and similar projects treat React and Svelte as ingredient frameworks, per @cityjsconf
|
||||
5. **TypeScript-first tooling is the real 2026 baseline** - @FabianHiller's post about type-safe forms got the most engagement, suggesting developers care more about DX tooling than framework wars
|
||||
|
||||
---
|
||||
All agents reported back!
|
||||
├─ 🟠 Reddit: 4 threads │ 202 upvotes
|
||||
├─ 🔵 X: 9 posts │ 76 likes │ 4 reposts
|
||||
├─ 🔴 YouTube: 10 videos │ 2,027,387 views │ 3 with transcripts
|
||||
├─ 🌐 Web: supplementary
|
||||
└─ 🗣️ Top voices: @FabianHiller (61 likes), @cityjsconf │ r/react, r/webdev
|
||||
---
|
||||
|
||||
I'm now an expert on React vs Svelte 2026. Some things I can help with:
|
||||
- Compare the actual DX tradeoffs if you're considering migrating a React app to Svelte 5
|
||||
- Analyze whether Svelte 5 runes or React hooks better fit your team's mental model
|
||||
- Break down the ecosystem gaps that still keep teams on React despite Svelte's performance advantages
|
||||
@@ -1,34 +0,0 @@
|
||||
**What I learned:** The Claude Code skills ecosystem has exploded into a full-blown marketplace war in the last 30 days, with creators racing to package domain expertise into reusable skills while MCP server fatigue is setting in hard. The clearest signal: a marketing skills tutorial hit 47K YouTube views AND landed on Hacker News simultaneously, per Grace Leung and r/ClaudeCode.
|
||||
|
||||
**Skills are the new plugins.** The sheer volume of "skill collections" tells the story: ClaudeInOne ships 213 skills in one install, another toolkit bundles 135 agents with 35 curated skills, and Anthropic themselves open-sourced their internal skills library. This is the WordPress plugin moment for AI coding - everyone is packaging their expertise into portable skill files. The Chrome extension for browsing skills on GitHub and early marketplace projects like ClawsMarket confirm that discovery and distribution are the next bottleneck, per @ihtesham2005.
|
||||
|
||||
**MCP server disillusionment is real.** One of the highest-scoring Reddit threads warns that Claude Code "works great until too many MCP servers" break it, and the most-watched MCP video (90K views) concludes that 90% of MCP servers are "overhyped garbage." The community is shifting from "connect everything" to "connect only what matters" - semantic graph servers that compress 15K tokens down to 3K relevant context represent the new direction, per Robin Ebers.
|
||||
|
||||
**Skills beat raw prompting for team adoption.** A team reported 3x-ing their skill usage in two weeks through deliberate onboarding, and the self-improvement loop skill (where Claude Code iterates on its own skills) emerged as a community favorite. The pattern is clear: skills are sticky because they encode workflow knowledge, not just instructions. Meanwhile, a highly upvoted explainer on the difference between Skills, Subagents, Claude.MD, and slash commands confirms many users are still confused about what goes where, per r/ClaudeCode.
|
||||
|
||||
**Marketing and SEO are the breakout skill verticals.** Grace Leung's videos on AI marketing teams have a combined 200K+ views. A 55K-word email marketing knowledge base packaged as a Claude Code skill was the top HN story. Twelve open-source SEO skills dropped on Reddit. The non-developer use case is outpacing the developer tooling use case in raw engagement, per Grace Leung.
|
||||
|
||||
**Security is the unresolved tension.** MCP proxy servers for safe email access, capability-based sandboxing in Rust (SkillSandbox), and security-first agent frameworks (Gulama) all appeared this month. The community wants skills and MCP servers to do more - but giving AI agents access to email, Kubernetes clusters, and production databases raises obvious questions that nobody has fully answered yet, per r/ClaudeAI.
|
||||
|
||||
---
|
||||
|
||||
**KEY PATTERNS**
|
||||
|
||||
1. Skill packaging and distribution are the current gold rush - marketplaces, directories, and browser extensions are all emerging simultaneously
|
||||
2. MCP server quality filtering has begun - the community is rejecting bloat in favor of targeted, high-signal servers
|
||||
3. Non-developer skill verticals (marketing, SEO, CRM) are generating the highest engagement by a wide margin
|
||||
4. Team-level skill adoption requires deliberate onboarding, not just sharing files
|
||||
5. Security and sandboxing for agent skills remain unsolved but increasingly urgent
|
||||
|
||||
---
|
||||
|
||||
```
|
||||
STATS: 47 items across 4 platforms | Reddit: 10 threads (top score: 78, r/ClaudeCode) | X: 12 posts (top: 6 likes, @ihtesham2005) | YouTube: 10 videos (top: 155K views, Grace Leung) | HN: 15 stories (top: 10pts) | Cross-platform hits: 2 | Date range: Jan 26 - Feb 25, 2026
|
||||
```
|
||||
|
||||
What caught your eye? Reply with a number to dig deeper:
|
||||
1. Building and packaging your own Claude Code skills
|
||||
2. Which MCP servers are actually worth installing
|
||||
3. The marketing/SEO skills ecosystem
|
||||
4. Security and sandboxing for agent skills
|
||||
5. Team adoption strategies for skills
|
||||
@@ -1,35 +0,0 @@
|
||||
What I learned:
|
||||
|
||||
The Claude Code skills and MCP ecosystem is experiencing simultaneous growth at every layer - from individual skill authoring to team-level adoption to infrastructure tooling. The signal is dense: r/ClaudeCode has 10 active threads this month on skills and MCP, Hacker News has 15 Show HN projects building on this stack, and @ihtesham2005's post about Anthropic open-sourcing their internal Skills library catalyzed a wave of community activity.
|
||||
|
||||
**MCP server scaling is hitting real limits** - "Claude Code works great... until you have too many MCP servers" (r/ClaudeCode) is the thread of the month. Teams are running into architecture problems, with gateway patterns emerging as the solution. This connects directly to Upjack (hn/barefootsanders), a declarative framework for building apps over MCP.
|
||||
|
||||
**Token efficiency is driving MCP server design** - A semantic graph MCP server cut context from 15K to 3K tokens (r/ClaudeCode), while 25 MCP servers that return structured data instead of terminal formatting emerged on r/ClaudeAI. The efficiency concern also shows up in SkillSandbox (hn/ClaytheMachine), which uses capability-based sandboxing to limit what skills can access.
|
||||
|
||||
**Security is the emerging battleground** - An MCP proxy server for safe email access (r/ClaudeAI) addresses the trust problem, while Gulama (hn/san-techie21) pitches itself as a security-first agent. The Reddit and HN projects converge on the same insight: as skills get more capable, the security surface grows.
|
||||
|
||||
**Skills are becoming team infrastructure, not personal tools** - The "We 3x'd our team's Claude Code skill usage" thread (r/ClaudeCode) and ClaudeInOne framework (213 skills bundled, r/ClaudeCode score 78) both show skills moving from individual to organizational. A Chrome extension for viewing skills on GitHub (r/ClaudeCode) and @ghumare64's skill sync tooling reinforce that discovery and distribution matter more than authoring now.
|
||||
|
||||
**Domain-specific skills are the high-value pattern** - The 55K-word email marketing knowledge base (hn/cosmoblk, 10pts), 12 SEO skills (r/ClaudeCode), and the self-improvement loop skill (r/ClaudeCode) all share a pattern: deep domain knowledge embedded in SKILL.md files. Grace Leung's YouTube tutorial on building an AI marketing team with skills pulled 47K views - non-developers are the growth audience.
|
||||
|
||||
KEY PATTERNS from the research:
|
||||
1. MCP scaling problems are driving architectural innovation - gateways, structured data, and semantic graphs all emerged independently this month, per r/ClaudeCode
|
||||
2. Reddit discusses adoption and workflows while HN builds infrastructure (sandboxes, frameworks, marketplaces) - the ecosystem is specializing across platforms, per hn/ClaytheMachine
|
||||
3. Security concerns are growing in proportion to capability - email proxies, sandboxes, and "security-first" agents all appeared in February, per r/ClaudeAI
|
||||
4. Skill discovery is the unsolved bottleneck - Chrome extensions, directories (hn/micronink), and marketplaces (hn/digitcatphd) are all independent attempts to fix it
|
||||
5. Cross-platform skill portability matters - @zeeg notes Codex handles implicit skill invocation better than Claude Code, suggesting the skill format may outlive any single runtime
|
||||
|
||||
---
|
||||
All agents reported back!
|
||||
├─ 🟠 Reddit: 10 threads │ 692 upvotes │ 0 comments
|
||||
├─ 🔵 X: 12 posts │ 23 likes │ 1 reposts
|
||||
├─ 🔴 YouTube: 10 videos │ 465,498 views │ 3 with transcripts
|
||||
├─ 🟡 HN: 15 stories │ 35 points │ 16 comments
|
||||
├─ 🌐 Web: supplementary
|
||||
└─ 🗣️ Top voices: @ihtesham2005 (6 likes), @zeeg (5 likes, 1 RT) │ r/ClaudeCode, r/ClaudeAI │ hn/cosmoblk (10pts)
|
||||
---
|
||||
|
||||
I'm now an expert on Claude Code skills and MCP servers. Some things I can help with:
|
||||
- Analyze the MCP scaling problem and whether a gateway approach or semantic graph server would work better for your setup
|
||||
- Compare the security models across the email proxy, SkillSandbox, and Gulama approaches
|
||||
- Help you build a domain-specific skill pack and distribute it through the emerging skill ecosystem
|
||||
@@ -1,31 +0,0 @@
|
||||
## What I learned
|
||||
|
||||
Seedance 2.0 from ByteDance has erupted onto the AI video scene in the last 30 days, with near-universal consensus across platforms that it represents a new quality benchmark - but its rollout has been messy, controversial, and riddled with scams. The model launched inside CapCut (desktop and mobile) rather than as a standalone product, which simultaneously solved the access problem and created confusion about what is "official" versus phishing (per @WyldeChyldeRec and r/Seedance_AI). Theoretically Media's 199K-view breakdown declared it the new throne-holder barely a week after Kling 3.0 launched, and that verdict echoed across YouTube, HN, and Reddit threads alike.
|
||||
|
||||
**CapCut is the gateway, for better or worse.** ByteDance embedded Seedance 2.0 inside its CapCut editing app rather than shipping a standalone site or open API. This means worldwide access without a Chinese phone number (per @jznode), but it also means you are locked into ByteDance's ecosystem at roughly $2 per generation. Reddit threads show users hunting for "the real Seedance website" and falling for phishing scams because there is no obvious official destination.
|
||||
|
||||
**Quality is real, but production-readiness is not.** Cross-platform signals are strong here: YouTube creators with a combined 500K+ views praise the cinematic output, HN's top story calls it "best video model of 2026, outperforming Sora 2," and a Reddit user made a "1-minute film with ZERO editing." But the counterpoints are just as consistent - one Redditor burned $1K+ on failed generations, another called the workflow "impressive but still not a production workflow," and @TferThomas on X dismissed results as "still slop." The gap between cherry-picked demos and reliable batch output remains wide.
|
||||
|
||||
**Censorship and copyright battles are already shaping the product.** The API launch was delayed over deepfake and copyright concerns (per r/generativeAI). ElevenLabs quietly removed Seedance 2.0 integration after a SAG-AFTRA incident. ByteDance faces Hollywood backlash. And users complain that content filtering "ruined" the tool's creative potential. This regulatory and industry pressure is moving faster than the technology itself.
|
||||
|
||||
**Multi-shot consistency is the frontier problem.** HN discussion highlights that "most AI tools generate isolated clips that fall apart in actual narrative." Seedance 2.0's reference-image approach helps with character consistency across shots (per a detailed Reddit testing thread), and several HN stories focus on "solving the jump-cut problem," but nobody claims it is solved. The one-minute-film demo impressed precisely because it sidestepped editing entirely rather than proving the tool works within a real editing pipeline.
|
||||
|
||||
**The wrapper app gold rush is already underway.** HN saw 8+ "Show HN" posts for Seedance 2.0 wrapper tools and access proxies in a single month, most with zero comments and minimal traction. SeeVideo offers subscription-free access. This pattern mirrors early Stable Diffusion and GPT wrapper cycles - lots of surface-level tooling, very little durable differentiation.
|
||||
|
||||
### KEY PATTERNS
|
||||
|
||||
1. **Regulatory pressure is the real bottleneck, not technology** - the API delay, ElevenLabs removal, and Hollywood backlash form a connected pattern where legal/ethical concerns are throttling access faster than ByteDance can ship (r/Seedance_AI + r/AIGuild)
|
||||
2. **Access fragmentation creates parallel economies** - CapCut for consumers, Atlas Cloud for enterprise, Jimeng for China, third-party wrappers for everyone else, scam sites for the desperate - all serving the same model through different channels with different reliability
|
||||
3. **Consumer excitement vastly outpaces developer adoption** - 199K YouTube views vs. 1-point HN Show HN posts; the audience is creators and filmmakers, not engineers building on APIs (Theoretically Media vs. HN)
|
||||
4. **Multi-shot coherence is the moat** - character/scene consistency across shots is what separates Seedance 2.0 from competitors and what makes the "zero editing film" possible (hn/RyanMu)
|
||||
5. **Quality-guardrail tension will define who wins AI video** - ByteDance's strict content moderation costs power users real money while its absence would invite the regulatory response that already delayed the API launch (r/Seedance_AI + r/HiggsfieldAI)
|
||||
|
||||
---
|
||||
|
||||
```
|
||||
STATS: 55 sources across 5 platforms (30 days) | Reddit: 19 threads, top score 77 | X: 11 posts, top 9 likes | YouTube: 10 videos, top 199K views / 4,986 likes | HN: 15 stories, top 7 pts / 7 comments | Cross-platform: 7 items appeared on 2+ platforms
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
Want to dig deeper? I can look into **the full SAG-AFTRA timeline and how it connects to ByteDance's API delay**, **which Seedance 2.0 access methods are actually legitimate and at what cost**, or **head-to-head multi-shot coherence comparisons between Seedance 2.0, Kling 3.0, and Sora 2**.
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user