<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Felixwang007</title>
    <description>The latest articles on DEV Community by Felixwang007 (@felixwang007).</description>
    <link>https://dev.to/felixwang007</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4050246%2F367055f4-756f-41a0-96f9-b2b5447699ae.png</url>
      <title>DEV Community: Felixwang007</title>
      <link>https://dev.to/felixwang007</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/felixwang007"/>
    <language>en</language>
    <item>
      <title>My AI Agent Reported 'Success' for 12 Days Straight. Every Article Got 0 Reads.</title>
      <dc:creator>Felixwang007</dc:creator>
      <pubDate>Mon, 07 Sep 2026 04:01:24 +0000</pubDate>
      <link>https://dev.to/felixwang007/my-ai-agent-reported-success-for-12-days-straight-every-article-got-0-reads-5ddj</link>
      <guid>https://dev.to/felixwang007/my-ai-agent-reported-success-for-12-days-straight-every-article-got-0-reads-5ddj</guid>
      <description>&lt;p&gt;Last month I ran a fully automated content pipeline: a cron job wrote stock-market articles with an LLM and auto-published them to a Chinese blogging platform. Every morning the job logged &lt;code&gt;status: ok&lt;/code&gt;. Every evening I opened the analytics dashboard. 12 days. 12 articles.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;0 reads.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Not 0 &lt;em&gt;clicks&lt;/em&gt;. Zero reads, zero meaningful impressions. The agent wasn't crashing or erroring out — it was succeeding &lt;em&gt;confidently and uselessly&lt;/em&gt;. And that, it turns out, is the most dangerous failure mode an autonomous system can have. A crash wakes you up. A confident lie puts you to sleep.&lt;/p&gt;

&lt;p&gt;Since then I've hit the same shape of failure three more times, in different tools. Here is what actually fixed it.&lt;/p&gt;




&lt;h3&gt;
  
  
  1. &lt;code&gt;status: ok&lt;/code&gt; is prose, not telemetry
&lt;/h3&gt;

&lt;p&gt;The cron job's success string was generated by the &lt;strong&gt;same LLM that did the work&lt;/strong&gt;. That is not a report — it is self-narration. The model was asked "did you finish?" and it answered the way models do: fluently, plausibly, and without any external reference.&lt;/p&gt;

&lt;p&gt;The fix is a &lt;strong&gt;falsifier&lt;/strong&gt;: an external check with an independently observable metric. For the content pipeline that meant "did the article actually appear on the target site?" and "did it get organic reads within 24h?" — not "did the agent say it finished?"&lt;/p&gt;

&lt;p&gt;A success claim is only a hypothesis until something outside the agent can contradict it.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;report_success&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;task&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;claim&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="nb"&gt;bool&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="c1"&gt;# A success claim is a hypothesis until an external check confirms it.
&lt;/span&gt;    &lt;span class="n"&gt;artifact&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;task&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;output&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="n"&gt;observable&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;task&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;publish&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;artifact&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;              &lt;span class="c1"&gt;# do the real action
&lt;/span&gt;    &lt;span class="n"&gt;verified&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;task&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;fetch_back_from_destination&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;observable&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;  &lt;span class="c1"&gt;# read from the target
&lt;/span&gt;    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;verified&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;exists&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;   &lt;span class="c1"&gt;# never claim.ok()
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  2. CLIs lie too
&lt;/h3&gt;

&lt;p&gt;Later I shipped a publishing CLI with a &lt;code&gt;--headless&lt;/code&gt; flag that returned &lt;code&gt;success: true&lt;/code&gt; while publishing &lt;strong&gt;nothing&lt;/strong&gt;. Why? The tool checked "did my HTTP request complete?" instead of "is the article live on the site?" The request was fine. The platform silently dropped the payload.&lt;/p&gt;

&lt;p&gt;Lesson: verify against the &lt;strong&gt;destination&lt;/strong&gt;, never against your own request. After any publish, fetch the resource back from the target and confirm it exists. A successful tool call is not a successful task.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. The context that produced the work will rubber-stamp it
&lt;/h3&gt;

&lt;p&gt;My first "reviewer" agent inherited the full writer context — same conversation, same assumptions, same blind spots. It approved garbage every time, because it was just the writer in a different hat.&lt;/p&gt;

&lt;p&gt;Independent review means &lt;strong&gt;fresh context&lt;/strong&gt;: the reviewer sees only the diff, the acceptance criteria, and the verifiable artifacts. That is why code review in real teams is done by a different human who did not write the code. Your critic agent needs the same separation, or it is just formatting with an opinion.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Skills that lecture get ignored
&lt;/h3&gt;

&lt;p&gt;I kept making my agent skills longer. 13 book frameworks. Iron rules repeated five times for emphasis. A 174 KB skill attached to every task. Token spend went up — output quality went &lt;em&gt;down&lt;/em&gt;. Agents skim. The parts of the skill that mattered were buried under the parts that made me feel thorough.&lt;/p&gt;

&lt;p&gt;What finally worked:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Short skills&lt;/strong&gt;: three principles, not thirteen frameworks.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Hard gates in the prompt itself&lt;/strong&gt;: "title score ≥ 6.5 or do not publish", "at least 2 real images or do not publish". Let the model decide &lt;em&gt;how&lt;/em&gt;; encode the &lt;em&gt;whether&lt;/em&gt; as a rule.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Move the permission out of the agent&lt;/strong&gt;: the writer drafts, a separate process decides whether the draft may reach the world.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  The refactor that changed everything
&lt;/h3&gt;

&lt;p&gt;Separate &lt;strong&gt;can do&lt;/strong&gt; from &lt;strong&gt;may do&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The writing agent has autonomy to &lt;em&gt;draft&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;A gate — separate process, its own rules, external checks — has custody of &lt;em&gt;publishing&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;Autonomy for creation. Custody for release.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That single split is what turned a pipeline that quietly burned API credits into one I can leave running overnight and actually trust the logs of.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;If you build skills and autonomous agents like these, my open-source skill set and tools live on &lt;a href="https://github.com/Felixwang007" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt; (including a self-updating &lt;a href="https://felixwang007.github.io/awesome-content-tools/" rel="noopener noreferrer"&gt;GitHub Trending aggregator site&lt;/a&gt;). A few polished versions — including the A-Share Stock Analysis skill and an AI-text humanizer — are published on the &lt;a href="https://xiaping.coze.com" rel="noopener noreferrer"&gt;Xiaping skill marketplace&lt;/a&gt;. If you have hit a silent-failure story of your own, I would genuinely like to hear it.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>python</category>
      <category>opensource</category>
      <category>stocks</category>
    </item>
    <item>
      <title>This Week's GitHub Trending Quietly Became a Skill Marketplace (Live Snapshot, Sep 3)</title>
      <dc:creator>Felixwang007</dc:creator>
      <pubDate>Thu, 03 Sep 2026 04:01:02 +0000</pubDate>
      <link>https://dev.to/felixwang007/this-weeks-github-trending-quietly-became-a-skill-marketplace-live-snapshot-sep-3-830</link>
      <guid>https://dev.to/felixwang007/this-weeks-github-trending-quietly-became-a-skill-marketplace-live-snapshot-sep-3-830</guid>
      <description>&lt;p&gt;Every six hours, my little open-source bot snapshots GitHub Trending into a clean digest so I can watch where the developer world is going without doom-scrolling. I've been doing this for months, and this week's snapshot is one of the clearest signals I've seen: &lt;strong&gt;the trending page has stopped being about models and started being about how agents are organized, equipped, and verified.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Here is the live data — repos created in the last 7 days, sorted by stars:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Repo&lt;/th&gt;
&lt;th&gt;Stars&lt;/th&gt;
&lt;th&gt;What it is&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;XiaoDuoYa/codex-with-chatgpt&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;~2.3k&lt;/td&gt;
&lt;td&gt;ChatGPT as the planning brain, Codex as the hands — a two-agent harness&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;Nanako0129/sepia&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;~1.6k&lt;/td&gt;
&lt;td&gt;A "De-AI" writing skill for Agent Skills-compatible agents, 77+ rules&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;cbrock84/headcount&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;~1.1k&lt;/td&gt;
&lt;td&gt;Claude Code structured as a company: 15+ departments, 125+ skills&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;MetaMask-AI/metamask-desktop&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;~1.2k&lt;/td&gt;
&lt;td&gt;The MetaMask desktop app (Ethereum browsing)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;anthropics/commerce-agents&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;~570&lt;/td&gt;
&lt;td&gt;Anthropic's official blueprint for shopping/merchant agents&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;2akouwu/reverify&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;~600&lt;/td&gt;
&lt;td&gt;"Verified reverse engineering": AI grounded in deterministic tools&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;Player-YN/PawWork_ZhuaZhua&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;~560&lt;/td&gt;
&lt;td&gt;A selection-first web agent for Chrome&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;subsy/skill-cabinet&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;~370&lt;/td&gt;
&lt;td&gt;Tooling for managing skills themselves&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Five of the top eight are agent-related. Last month, the same slot would have been filled by model repos. That is a genuine category shift, and it clusters into three patterns worth stealing:&lt;/p&gt;

&lt;h2&gt;
  
  
  1. SKILL.md is becoming a distribution format
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;sepia&lt;/code&gt;, &lt;code&gt;headcount&lt;/code&gt;, and &lt;code&gt;skill-cabinet&lt;/code&gt; all treat a skill — a folder with a &lt;code&gt;SKILL.md&lt;/code&gt; plus scripts and references — as the atomic unit of software. Not a package, not a container: a skill. Why it matters: skills are loaded on demand into an agent's context, so distribution cost drops toward zero compared to libraries that must be installed and imported. The ecosystem that already emerged around Agent Skills (CLI installers, marketplaces, registries) looks a lot like npm in 2011.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Agent brains are splitting — planner vs. executor
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;codex-with-chatgpt&lt;/code&gt; (ChatGPT thinks, Codex works) and &lt;code&gt;anthropics/commerce-agents&lt;/code&gt; both encode the same architectural bet: don't make one agent do everything. Give one model the reasoning/planning role and another the execution harness. This matches what I've learned running automated publishing pipelines for months — a cron agent that both &lt;em&gt;decides&lt;/em&gt; and &lt;em&gt;executes&lt;/em&gt; fails silently; separating the planner from the executor and giving the executor external checks is what actually catches garbage before it ships.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Verification is the new moat
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;reverify&lt;/code&gt; (AI reverse engineering checked against deterministic tools) is the sharpest example: when an agent produces output, the winning pattern is not better prompts but &lt;em&gt;an external verifier the agent can't argue with&lt;/em&gt;. In my own stock-analysis and content pipelines, every time I replaced "trust the agent's success report" with an independent check (e.g. live market data, or a hard gate on output quality), reliability jumped. The models change; the need for falsifiable checks does not.&lt;/p&gt;

&lt;h2&gt;
  
  
  What to actually do this week
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;If you use Claude Code / Codex / Cursor: try packaging one of your repetitive workflows as a skill. A skill you can install on any agent beats a script you have to re-explain.&lt;/li&gt;
&lt;li&gt;If you build agents: budget 30% of your effort for a verifier layer, not for prompt polish. That is the difference between a demo and a tool.&lt;/li&gt;
&lt;li&gt;If you watch trends: don't trust your memory — snapshot the data. My aggregator (zero-cost, zero-API, updates every 6h) is free to use: &lt;strong&gt;&lt;a href="https://felixwang007.github.io/awesome-content-tools/" rel="noopener noreferrer"&gt;https://felixwang007.github.io/awesome-content-tools/&lt;/a&gt;&lt;/strong&gt; (repo: &lt;code&gt;Felixwang007/awesome-content-tools&lt;/code&gt;).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;One more plug that fits the theme: the skill economy is not just an English-language thing. I publish Chinese-language skills for AI agents too — including an &lt;strong&gt;A-Share stock analysis expert&lt;/strong&gt; (three-pillar system: technical + fundamental + sentiment, 24 indicators) on the xiaping.coze.com skill marketplace, with the free open-source version in the same GitHub. If you trade Chinese markets or just want to see a real-world skill in action, both are linked from the repo above. The skills are the product now — the repos are just the packaging.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>python</category>
      <category>opensource</category>
      <category>stocks</category>
    </item>
    <item>
      <title>A-Shares Just Rotated: BYD -4% While Moutai Held Flat — What the Divergence Tells You (Aug 31 Live Data)</title>
      <dc:creator>Felixwang007</dc:creator>
      <pubDate>Mon, 31 Aug 2026 04:05:29 +0000</pubDate>
      <link>https://dev.to/felixwang007/a-shares-just-rotated-byd-4-while-moutai-held-flat-what-the-divergence-tells-you-aug-31-live-3jj7</link>
      <guid>https://dev.to/felixwang007/a-shares-just-rotated-byd-4-while-moutai-held-flat-what-the-divergence-tells-you-aug-31-live-3jj7</guid>
      <description>&lt;p&gt;It's Monday lunchtime in Shanghai, and the morning session just delivered the kind of tape that separates people who watch the index from people who read the market.&lt;/p&gt;

&lt;p&gt;Here's what actually happened in the first half of today's session (2026-08-31, live quotes):&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Index / Stock&lt;/th&gt;
&lt;th&gt;Price&lt;/th&gt;
&lt;th&gt;Change&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Shanghai Composite&lt;/td&gt;
&lt;td&gt;3,944.46&lt;/td&gt;
&lt;td&gt;-0.20%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Shenzhen Component&lt;/td&gt;
&lt;td&gt;13,812.99&lt;/td&gt;
&lt;td&gt;-1.00%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ChiNext&lt;/td&gt;
&lt;td&gt;3,380.15&lt;/td&gt;
&lt;td&gt;-1.29%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;BYD&lt;/td&gt;
&lt;td&gt;¥88.47&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;-4.17%&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;CATL&lt;/td&gt;
&lt;td&gt;¥358.17&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;-2.80%&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;LONGi Green Energy&lt;/td&gt;
&lt;td&gt;¥11.96&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;-3.78%&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Seres&lt;/td&gt;
&lt;td&gt;¥49.30&lt;/td&gt;
&lt;td&gt;-2.55%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Kweichow Moutai&lt;/td&gt;
&lt;td&gt;¥1,296.08&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;-0.10%&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Wuliangye&lt;/td&gt;
&lt;td&gt;¥71.20&lt;/td&gt;
&lt;td&gt;-0.43%&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The index printed "a mild dip." But underneath, a violent rotation was happening: new-energy (EVs + solar) got sold hard, while defensive white-liquor barely blinked. That gap — BYD down 4% while Moutai is flat — is the signal. The index is just the noise.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why the headline number lies to you
&lt;/h2&gt;

&lt;p&gt;The Shanghai Composite is dominated by financials and old-economy heavyweights. When money rotates out of growth and into defensives, the index can look "stable" while a growth-heavy portfolio gets shredded. Read the index for mood; read the &lt;em&gt;divergence&lt;/em&gt; for direction.&lt;/p&gt;

&lt;p&gt;Today's tape is a textbook risk-off rotation: risk appetite is shrinking at the margin, and capital is hiding in the names that pay dividends and survive recessions.&lt;/p&gt;

&lt;h2&gt;
  
  
  The three-pillar way to read this
&lt;/h2&gt;

&lt;p&gt;My A-share scanner doesn't try to predict the market. It triangulates three independent signals and waits for them to agree:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Technical&lt;/strong&gt; — price/volume structure (MACD, KDJ, RSI, Bollinger, volume-price). Says &lt;em&gt;what&lt;/em&gt; is happening.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Fundamental&lt;/strong&gt; — ROE decomposition, PEG, valuation percentile. Says &lt;em&gt;why&lt;/em&gt; it might be justified.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Intelligence&lt;/strong&gt; — 龙虎榜 (dragon-tiger list of top buy/sell seats), block-trade and capital-flow data, sector rotation, policy catalysts. Says &lt;em&gt;who&lt;/em&gt; is doing it and &lt;em&gt;where&lt;/em&gt; the money is going.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;On days like today, pillar #3 earns its keep. The dragon-tiger list and block-trade data will tell you this afternoon whether the EV selling was institutional rotation or a few hot-money desks panic-exiting. Those two scenarios have completely different follow-throughs.&lt;/p&gt;

&lt;h2&gt;
  
  
  Three rules you can use right now (no paid data required)
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Rule 1 — When the index and the sectors disagree, trust the sectors.&lt;/strong&gt; Compute the gap between ChiNext and the Shanghai Composite. Today it's ~1.1 percentage points of underperformance. If that spread widens three sessions in a row, it's a rotation, not a blip.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Rule 2 — Don't buy the dip in the sector being sold until volume confirms a floor.&lt;/strong&gt; A falling knife with rising volume is still a falling knife. Wait for a session of shrinking volume with a higher low — that's the first footprint of distribution ending.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Rule 3 — In risk-off rotations, the rotation target is usually the previous laggard.&lt;/strong&gt; Money doesn't leave the market; it moves. Today's defensiveness (liquor, banks, dividends) is the same money that was chasing EVs in July. Watch where volume accumulates over the next 3 sessions — that's the next leg.&lt;/p&gt;

&lt;h2&gt;
  
  
  How the scanner automates this
&lt;/h2&gt;

&lt;p&gt;The scanner pulls free quote data (Tencent/Sina endpoints — no API key, no cost), computes 24 indicators per stock, scores each of the three pillars 0-10, and only flags a stock when all three agree. The Aug 31 morning scan automatically flagged the rotation by scoring new-energy names down on technicals while defensive names held their pillar scores.&lt;/p&gt;

&lt;p&gt;The full pipeline (Python, zero paid dependencies) is documented in my &lt;a href="https://github.com/felixwang007/awesome-content-tools" rel="noopener noreferrer"&gt;awesome-content-tools&lt;/a&gt; repo — a collection of self-updating tools including the A-share scanner, a GitHub Trending aggregator, and the market-data scripts used for this article. If you're on the Chinese skill marketplace &lt;a href="https://xiaping.coze.com" rel="noopener noreferrer"&gt;虾评 (xiaping.coze.com)&lt;/a&gt;, you can also find my published data-analysis and stock tooling skills there.&lt;/p&gt;

&lt;p&gt;No paid API, no black box, no crystal ball — just three independent signals forced to agree before you act. That's the whole edge.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>python</category>
      <category>opensource</category>
      <category>stocks</category>
    </item>
    <item>
      <title>I Published Skills to 5 AI Marketplaces in One Week — Here's the Brutal Automation Ceiling Test</title>
      <dc:creator>Felixwang007</dc:creator>
      <pubDate>Thu, 27 Aug 2026 04:06:46 +0000</pubDate>
      <link>https://dev.to/felixwang007/i-published-skills-to-5-ai-marketplaces-in-one-week-heres-the-brutal-automation-ceiling-test-8gh</link>
      <guid>https://dev.to/felixwang007/i-published-skills-to-5-ai-marketplaces-in-one-week-heres-the-brutal-automation-ceiling-test-8gh</guid>
      <description>&lt;p&gt;I've spent months building agent skills (SKILL.md files) that turn AI coding agents into specialists — stock scanners, content pipelines, document tools. Earlier this year I made the leap from "tools for myself" to "products for sale." In one week I published skills and MCP servers to &lt;strong&gt;five AI marketplaces&lt;/strong&gt;: Agensi, Xiaping, Apify, MCPize, and Capafy.&lt;/p&gt;

&lt;p&gt;The revenue so far: $0. And I'm not ashamed to say it, because the real product of that week wasn't sales — it was a decision framework I now use before writing a single line of code. I call it &lt;strong&gt;the automation ceiling test&lt;/strong&gt;, and it would have saved me days of work if I'd known it earlier.&lt;/p&gt;

&lt;h2&gt;
  
  
  The automation ceiling: check this BEFORE you build
&lt;/h2&gt;

&lt;p&gt;Every marketplace falls into one of three tiers. Ask one question first: &lt;em&gt;can a program publish to this platform end-to-end, or does a human have to click at some point?&lt;/em&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Tier&lt;/th&gt;
&lt;th&gt;Publish path&lt;/th&gt;
&lt;th&gt;Example platform&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Full API&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Everything via HTTP, from upload to status polling&lt;/td&gt;
&lt;td&gt;Xiaping (complete REST API), Apify (full CLI + API)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Half API&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Code can create everything, but a one-time human action gates publishing (terms acceptance, app install)&lt;/td&gt;
&lt;td&gt;Apify Store (must click "accept Store terms" once in the web console), Buda (install GitHub App once)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;No API&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Human must upload via web UI, every single time&lt;/td&gt;
&lt;td&gt;Agensi (creator dashboard only)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Here's the trap: I built an entire skill package for Agensi first — ZIP, cover art, pricing research — before discovering it has no publish API. Everything was ready except the one step that can't be automated. The lesson: &lt;strong&gt;never do five rounds of workarounds around a platform that a 30-second API check would have disqualified.&lt;/strong&gt; Map the ceiling first, then decide how much effort the platform deserves.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I learned from each marketplace
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Xiaping (xiaping.coze.com)&lt;/strong&gt; — the most automation-friendly of the five. Full REST API: multipart upload, category via Unicode-escaped JSON arrays, pledge confirmation in the payload. After publishing, each skill enters a 30-day trial period while security and duplicate detection run. One practical gotcha: the file field &lt;em&gt;must&lt;/em&gt; end in &lt;code&gt;.zip&lt;/code&gt; or the API rejects it with "File must be a ZIP file."&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Apify&lt;/strong&gt; — building the Actor (a Python MCP server) was fully scriptable with &lt;code&gt;apify-cli&lt;/code&gt;. Publishing to the Store is half-automated: after you accept the Store terms once in the console, &lt;code&gt;isPublic: true&lt;/code&gt; + categories work via the API. 80% revenue share, and they pay monthly — about $1.4M a month to developers across the platform.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;MCPize&lt;/strong&gt; — a marketplace for MCP servers specifically, with a CLI (&lt;code&gt;npx mcpize&lt;/code&gt; has login/deploy/publish commands). Also 80% share, and they handle hosting, payments, and tax. Same product can be listed here and on Apify — no exclusivity.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Capafy&lt;/strong&gt; — lets you publish an agent (a bundled collection of skills) rather than single skills. I published one with 100 sanitized skills as a single agent.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Agensi&lt;/strong&gt; — the best-looking onboarding (70% share, $3–$59 pricing, Stripe connected) and the worst automation. Web-UI-only publishing. It's a fine marketplace if you're a human who enjoys filling forms; it's a dead end for a pipeline that should run unattended.&lt;/p&gt;

&lt;h2&gt;
  
  
  The part nobody advertises: trial periods and promotion
&lt;/h2&gt;

&lt;p&gt;Getting a skill listed is not the finish line. On Xiaping, a new skill sits in a 30-day community trial — no storefront listing until moderation and duplicate checks pass. That's a &lt;em&gt;second&lt;/em&gt; pipeline to monitor: polling notifications, checking review status, fixing rejections.&lt;/p&gt;

&lt;p&gt;And then there's the hard truth that no marketplace will tell you: &lt;strong&gt;distribution is 80% of the work.&lt;/strong&gt; I spent one unit of effort building skills and two units promoting them — GitHub issues, README badges, cross-posts to Dev.to, community engagement. A skill with zero discoverability is a file that happens to be on a server. If you publish and walk away, you've shipped a product to an empty room.&lt;/p&gt;

&lt;h2&gt;
  
  
  The concrete publish flow (Xiaping, fully automated)
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Build the skill ZIP locally, then:&lt;/span&gt;
curl &lt;span class="nt"&gt;-X&lt;/span&gt; POST https://xiaping.coze.com/api/skills &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Authorization: Bearer &lt;/span&gt;&lt;span class="nv"&gt;$XIAIPING_KEY&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-F&lt;/span&gt; &lt;span class="s1"&gt;'file=@a-share-stock-analyzer.zip'&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-F&lt;/span&gt; &lt;span class="s1"&gt;'name=A-Share Stock Analysis Expert'&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-F&lt;/span&gt; &lt;span class="s1"&gt;'description=Three-pillar A-share scanner: technical + fundamental + sentiment'&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-F&lt;/span&gt; &lt;span class="s1"&gt;'trigger=["stock","a-share","scan"]'&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-F&lt;/span&gt; &lt;span class="s1"&gt;'category=["\u6548\u7387\u5de5\u5177"]'&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-F&lt;/span&gt; &lt;span class="s1"&gt;'pledge={"agreed":true}'&lt;/span&gt;
&lt;span class="c"&gt;# Then poll GET /api/notifications for security/duplicate-check results.&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;(Yes, that category is "efficiency tools" in Unicode — the API rejects raw Chinese in that field. The kind of detail you only learn by hitting the error.)&lt;/p&gt;

&lt;h2&gt;
  
  
  What I'd do differently
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Automation ceiling first, product second.&lt;/strong&gt; A 2-minute API doc skim would have saved me a full day on Agensi.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;One marketplace to start.&lt;/strong&gt; I spread five listings across five platforms in a week — five moderation queues, five notification systems, five marketing problems. One platform, done well, beats five platforms, half-finished.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Treat trial periods as a product phase, not a waiting room.&lt;/strong&gt; The 30-day trial is when you iterate on the skill based on community feedback — not when you stop looking at it.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Revenue split matters less than automation.&lt;/strong&gt; 80% of a sale that happens automatically beats 70% of a sale you must remember to upload by hand.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;None of this made me money yet. But I now have a repeatable, mostly-automated pipeline — skills built, zipped, published, and monitored with a single script — and the marketplaces where that pipeline actually works. The money comes from volume, and volume comes from automation.&lt;/p&gt;




&lt;p&gt;Everything I build is open source: &lt;a href="https://github.com/Felixwang007" rel="noopener noreferrer"&gt;https://github.com/Felixwang007&lt;/a&gt; (MIT). The &lt;strong&gt;A-Share Stock Analysis Expert&lt;/strong&gt; skill (three-pillar system: MACD/KDJ/RSI/volume-price + ROE/PEG fundamentals + capital-flow sentiment) is live on xiaping.coze.com — search "A-Share Stock Analysis" to try it.&lt;/p&gt;

&lt;p&gt;Have you hit an automation ceiling on a marketplace I haven't listed? Tell me in the comments — I'm building a public table of which platforms are actually automatable, and real-world data beats my five data points.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>python</category>
      <category>opensource</category>
      <category>stocks</category>
    </item>
    <item>
      <title>The AI Race Just Left the Model Layer — 30 Days of GitHub Trending Data Proves It</title>
      <dc:creator>Felixwang007</dc:creator>
      <pubDate>Mon, 24 Aug 2026 04:09:40 +0000</pubDate>
      <link>https://dev.to/felixwang007/the-ai-race-just-left-the-model-layer-30-days-of-github-trending-data-proves-it-1lm7</link>
      <guid>https://dev.to/felixwang007/the-ai-race-just-left-the-model-layer-30-days-of-github-trending-data-proves-it-1lm7</guid>
      <description>&lt;p&gt;For the past month I've been running a fully automated GitHub Trending aggregator — a single GitHub Actions cron that scrapes trending every 6 hours, renders a clean page, and deploys it to Pages. Zero API keys, zero servers, zero cost. It wasn't built to be impressive; it was built so I'd never have to open trending.github.com again.&lt;/p&gt;

&lt;p&gt;But the side effect turned out to be more valuable than the tool: &lt;strong&gt;a month of uninterrupted, timestamped data on what the developer community is actually excited about&lt;/strong&gt; — not what press releases say, but what thousands of engineers star with their own hands.&lt;/p&gt;

&lt;p&gt;Here's the pattern that jumped out, with real repos scraped today:&lt;/p&gt;

&lt;h2&gt;
  
  
  The data (real stars, scraped right now)
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Repo&lt;/th&gt;
&lt;th&gt;Stars&lt;/th&gt;
&lt;th&gt;What it actually is&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;public-apis/public-apis&lt;/td&gt;
&lt;td&gt;469K&lt;/td&gt;
&lt;td&gt;The world's largest collection of free APIs&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;harry0703/MoneyPrinterTurbo&lt;/td&gt;
&lt;td&gt;115K&lt;/td&gt;
&lt;td&gt;One-click AI short-video generation from a keyword&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;volcengine/OpenViking&lt;/td&gt;
&lt;td&gt;32.5K&lt;/td&gt;
&lt;td&gt;"Self-evolving context database" — agent memory + RAG + skills in one&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;basecamp/omarchy&lt;/td&gt;
&lt;td&gt;29K&lt;/td&gt;
&lt;td&gt;Opinionated, modern Linux (by Basecamp)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;modular/modular&lt;/td&gt;
&lt;td&gt;29K&lt;/td&gt;
&lt;td&gt;Mojo / MAX language platform&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;jundot/omlx&lt;/td&gt;
&lt;td&gt;20.5K&lt;/td&gt;
&lt;td&gt;LLM inference server with SSD caching for Apple Silicon&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AprilNEA/OpenLogi&lt;/td&gt;
&lt;td&gt;15K&lt;/td&gt;
&lt;td&gt;Local-first Logitech Options+ replacement in Rust&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;cordiverse/cordis&lt;/td&gt;
&lt;td&gt;7.3K&lt;/td&gt;
&lt;td&gt;Spatiotemporal composability meta-framework&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;cursor/plugins&lt;/td&gt;
&lt;td&gt;4.8K&lt;/td&gt;
&lt;td&gt;Cursor's official plugin specification&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;apache/maka&lt;/td&gt;
&lt;td&gt;2.4K&lt;/td&gt;
&lt;td&gt;Apache-incubating, local-first AI agent workspace&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;anthropics/claude-plugins-community&lt;/td&gt;
&lt;td&gt;1K&lt;/td&gt;
&lt;td&gt;Community plugin marketplace for Claude Code&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Signal #1: Agent "app stores" are forming — right now
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;cursor/plugins&lt;/code&gt;, &lt;code&gt;anthropics/claude-plugins-community&lt;/code&gt;, and &lt;code&gt;apache/maka&lt;/code&gt; — three plugin ecosystems from three different vendors, all trending within days of each other. That's not coincidence; that's an inflection.&lt;/p&gt;

&lt;p&gt;When infrastructure companies rush to standardize plugins, it means one thing: &lt;strong&gt;agents stopped being a demo and became a distribution channel.&lt;/strong&gt; The next "app store" won't be for phone apps — it'll be for capabilities you drop into an agent. If you're a developer, learning one plugin spec (they're all converging on the same SKILL.md / MCP-style shape) is the cheapest career insurance available right now.&lt;/p&gt;

&lt;h2&gt;
  
  
  Signal #2: Context is the new bottleneck
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;volcengine/OpenViking&lt;/code&gt; at 32.5K stars in a short window frames itself as a "self-evolving context database" — unifying agent memory, knowledge retrieval, and skills. The name is marketing, but the thesis is real.&lt;/p&gt;

&lt;p&gt;Every serious agent project hits the same wall: context windows are finite, and what the agent &lt;em&gt;remembers&lt;/em&gt; decides whether it's brilliant or useless. That's why the hottest tooling right now isn't "another model" — it's systems for deciding what to remember, what to forget, and what to fetch. The model wars are over; the &lt;strong&gt;context wars&lt;/strong&gt; just started.&lt;/p&gt;

&lt;h2&gt;
  
  
  Signal #3: Local inference is quietly winning
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;jundot/omlx&lt;/code&gt; (20.5K stars) — continuous-batching LLM inference with SSD caching on Apple Silicon — alongside Mojo's continued staying power. The message: developers increasingly don't want to pay per token for every experiment. They want a fast local box, a clean API, and the option to never touch a cloud endpoint until they absolutely have to. Cheap local inference isn't a hobbyist niche anymore; it's a design default.&lt;/p&gt;

&lt;h2&gt;
  
  
  Signal #4: Content automation demand hasn't gone away
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;MoneyPrinterTurbo&lt;/code&gt; at 115K stars is a decade-old reminder wearing a new face: turning a topic or keyword into a publishable short video remains one of the most-desired automations on the planet. Every wave of "AI content is dead" discourse ignores that the &lt;em&gt;tooling&lt;/em&gt; keeps compounding in stars. The demand isn't for AI text — it's for &lt;strong&gt;AI that produces something publishable end-to-end&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Signal #5: Data access is the real moat
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;public-apis&lt;/code&gt; sits at 469K stars — among the most-starred repositories in the world, and it's just a list of URLs. No model, no framework, no agent will ever make free data access unnecessary. Every agent is only as good as the APIs it can reach. If you're building anything agentic, your data layer is your moat — spend accordingly.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I'd do with this
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;If you build agents:&lt;/strong&gt; read the cursor and Claude plugin specs this week. The format is stabilizing fast, and early movers get the distribution.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;If you pick infrastructure:&lt;/strong&gt; memory/context tooling is where the jobs and the budgets are heading. Retrieval quality &amp;gt; prompt tricks.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;If you create content:&lt;/strong&gt; the video-automation star count says the demand never left — the bar is just "publishable output," not "draft."&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  How I get this data for free
&lt;/h2&gt;

&lt;p&gt;The aggregator is one workflow file: a cron schedule, a single scraper script, a Pages deploy. No API keys, no server, no cost — it's been running unattended for a month. You can fork it, or just bookmark the live page:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Live site:&lt;/strong&gt; &lt;a href="https://felixwang007.github.io/github-daily-trending/" rel="noopener noreferrer"&gt;https://felixwang007.github.io/github-daily-trending/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Repo:&lt;/strong&gt; &lt;a href="https://github.com/Felixwang007/github-daily-trending" rel="noopener noreferrer"&gt;https://github.com/Felixwang007/github-daily-trending&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If the data was useful, a ⭐ on the repo genuinely helps. And if you read Chinese, I publish the deeper trend analysis as an installable AI-agent skill on 虾评 (search "全网新闻聚合助手") — same data, turned into daily briefings.&lt;/p&gt;

&lt;p&gt;The next big thing in dev tools probably isn't a model. It's the layer that lets agents &lt;em&gt;use&lt;/em&gt; everything else. The star data is telling you where to look.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>python</category>
      <category>opensource</category>
      <category>stocks</category>
    </item>
    <item>
      <title>Volume Is the Only A-Share Indicator That Can't Be Faked — a Playbook Built on Real 2026 Market Data</title>
      <dc:creator>Felixwang007</dc:creator>
      <pubDate>Thu, 20 Aug 2026 04:08:12 +0000</pubDate>
      <link>https://dev.to/felixwang007/volume-is-the-only-a-share-indicator-that-cant-be-faked-a-playbook-built-on-real-2026-market-data-1ke</link>
      <guid>https://dev.to/felixwang007/volume-is-the-only-a-share-indicator-that-cant-be-faked-a-playbook-built-on-real-2026-market-data-1ke</guid>
      <description>&lt;p&gt;In Chinese A-shares, every indicator can be faked — except one.&lt;/p&gt;

&lt;p&gt;K-lines can be drawn. MACD and KDJ can be painted. Even the "fundamentals" in a prospectus can be polished. But every single share of volume requires real money changing hands. You can't print liquidity.&lt;/p&gt;

&lt;p&gt;I spent the last few months building an open-source A-Share scanner, and volume is the layer that keeps saving me from bad trades. Here's the playbook — built on what actually happened in the 2026 market, not textbook theory.&lt;/p&gt;

&lt;h2&gt;
  
  
  What volume actually measures
&lt;/h2&gt;

&lt;p&gt;Most people think volume = supply and demand. It isn't. &lt;strong&gt;Volume is a measure of disagreement.&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Everyone agrees the stock is great → nobody sells → &lt;strong&gt;limit-up on tiny volume&lt;/strong&gt; (price flies on almost no shares).&lt;/li&gt;
&lt;li&gt;Everyone is terrified and thrilled at the same time → &lt;strong&gt;massive turnover&lt;/strong&gt; (someone who believes it's a 10-bagger selling to someone who believes it's a bankruptcy).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Every huge trade is one buyer and one seller, each convinced the other is an idiot. The question is never &lt;em&gt;how much&lt;/em&gt; traded — it's &lt;em&gt;which direction the chips moved&lt;/em&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Two historic blow-off days I watched
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Date&lt;/th&gt;
&lt;th&gt;Turnover&lt;/th&gt;
&lt;th&gt;What happened next&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;2024-10-08&lt;/td&gt;
&lt;td&gt;3.48 trillion yuan&lt;/td&gt;
&lt;td&gt;Gap up, faded, violent correction&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2026-01-14&lt;/td&gt;
&lt;td&gt;3.99 trillion yuan (record)&lt;/td&gt;
&lt;td&gt;Closed red, volume dried up, months of sideways bleed&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Record volume is not a bull-market starting gun. It's a disagreement thermometer maxing out.&lt;/strong&gt; When the whole market trades at record levels, the chips are changing hands at maximum speed — and someone with a huge position is usually on the sell side.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where volume happens matters more than how much
&lt;/h2&gt;

&lt;h3&gt;
  
  
  High-position volume breakout = liquidity trap ⚠️
&lt;/h3&gt;

&lt;p&gt;A main force that has held a stock for a year, doubled it, can't just dump — the stock would hit limit-down and they'd be stuck. So they &lt;em&gt;wash-trade&lt;/em&gt;: account A places sell orders, account B eats them in seconds, drawing a giant "buying" volume bar on the daily chart. Retail and quant funds chase the breakout. The real chips get mixed into the exit.&lt;/p&gt;

&lt;p&gt;If volume explodes &lt;em&gt;after&lt;/em&gt; a stock has already doubled, ask: &lt;strong&gt;who is the seller?&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  High-position volume with no price progress = distribution ⚠️⚠️
&lt;/h3&gt;

&lt;p&gt;Volume up 2–3x, price up 1% with a long upper shadow. Retail reads "shakeout." The math says otherwise: if real money were buying aggressively and the price can't rise, the sell side is effectively unlimited — major shareholders plus the bottom-position main force. This is the last distribution before the kite string breaks.&lt;/p&gt;

&lt;h3&gt;
  
  
  Low-position volume spike = accumulation ✅
&lt;/h3&gt;

&lt;p&gt;Long decline, volume at ice-cold levels, then one day a volume bar far above the multi-month average. Retail is panic-selling; whoever can absorb hundreds of millions of yuan against the grain is almost certainly informed money. They accumulate quietly — that's why price often stays flat while volume builds (量增价平).&lt;/p&gt;

&lt;h2&gt;
  
  
  The counterintuitive side: shrinking volume
&lt;/h2&gt;

&lt;h3&gt;
  
  
  High-position shrink-up = locked chips (not always a bearish divergence)
&lt;/h3&gt;

&lt;p&gt;Classic dogma says "a rally without volume is a scam." It misses the strongest stocks. When the main force controls 70–80% of the float, it takes just tens of millions of yuan to push a limit-up, and daily volume collapses. &lt;strong&gt;The tell is the trend slope&lt;/strong&gt;: a steep 5/10-day MA with quickly recovered dips = locked chips; a choppy, one-step-back-three-step-forward drift = dying momentum.&lt;/p&gt;

&lt;h3&gt;
  
  
  Low-position shrink-down = the death spiral ⚠️⚠️⚠️
&lt;/h3&gt;

&lt;p&gt;A volume-down decline at least has no buyers. A &lt;em&gt;shrinking-volume&lt;/em&gt; decline means the market has completely given up. -1% a day, sawing your capital in half over six months. Never catch this knife — wait for the 地量 (extreme low volume) bottom to form first.&lt;/p&gt;

&lt;h2&gt;
  
  
  Turnover rate: volume, normalized
&lt;/h2&gt;

&lt;p&gt;Absolute volume is meaningless. 50 million shares is a normal 5% turnover for a 10-billion-float stock and a 100% explosion for a 500-million float.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Turnover&lt;/th&gt;
&lt;th&gt;Zone&lt;/th&gt;
&lt;th&gt;Meaning&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&amp;lt;1%&lt;/td&gt;
&lt;td&gt;Ice-cold&lt;/td&gt;
&lt;td&gt;Forgotten stock; only actionable if chips are confirmed exhausted&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;1–3%&lt;/td&gt;
&lt;td&gt;Normal&lt;/td&gt;
&lt;td&gt;Trend continues as-is; watch&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5–10%&lt;/td&gt;
&lt;td&gt;Hot&lt;/td&gt;
&lt;td&gt;Disagreement rising, main force footprints visible; start tracking&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&amp;gt;15–20%&lt;/td&gt;
&lt;td&gt;Extreme&lt;/td&gt;
&lt;td&gt;
&lt;strong&gt;Red alert at highs&lt;/strong&gt; — 1 in 5 shares changed hands; distribution zone&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  The eight classic volume-price patterns
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Pattern&lt;/th&gt;
&lt;th&gt;At lows&lt;/th&gt;
&lt;th&gt;At highs&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Volume up, price flat&lt;/td&gt;
&lt;td&gt;✅ Accumulation&lt;/td&gt;
&lt;td&gt;⚠️⚠️ Distribution warning&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Volume up, price up&lt;/td&gt;
&lt;td&gt;✅ Healthy (1–2x = golden)&lt;/td&gt;
&lt;td&gt;⚠️ 5–10x explosion = wash-trade bait&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Volume flat, price up&lt;/td&gt;
&lt;td&gt;✅ Locked chips&lt;/td&gt;
&lt;td&gt;⚠️ Follow-on money drying&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Volume down, price up&lt;/td&gt;
&lt;td&gt;✅ Controlled float&lt;/td&gt;
&lt;td&gt;⚠️ Liquidity exhaustion&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Volume up, price down&lt;/td&gt;
&lt;td&gt;⚠️ Panic — exit signal anywhere&lt;/td&gt;
&lt;td&gt;❌ Huge red bar = trend over&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Volume down, price down&lt;/td&gt;
&lt;td&gt;⚠️ Death spiral — no bottom-fishing&lt;/td&gt;
&lt;td&gt;⚠️ Wait for extreme low volume&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  The one question to ask at every candle
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Which direction are the chips moving?&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Main-force pocket → retail pocket (they sell, you buy) = danger&lt;/li&gt;
&lt;li&gt;Retail pocket → main-force pocket (they buy, you sell) = opportunity&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Judge by the patterns above: high-position volume stalls → chips flowing to retail. Bottom 地量 followed by a low-position spike → chips flowing to the main force.&lt;/p&gt;

&lt;h2&gt;
  
  
  Turning this into code
&lt;/h2&gt;

&lt;p&gt;Rules are only useful when they're enforced. I quantized these patterns into a scoring layer in the scanner:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;volume_score&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;high_pos&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;bool&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;vol_ratio&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;float&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;chg_pct&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;float&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;turnover&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;float&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="n"&gt;s&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;high_pos&lt;/span&gt; &lt;span class="ow"&gt;and&lt;/span&gt; &lt;span class="n"&gt;vol_ratio&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt; &lt;span class="ow"&gt;and&lt;/span&gt; &lt;span class="n"&gt;chg_pct&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="n"&gt;s&lt;/span&gt; &lt;span class="o"&gt;-=&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt;          &lt;span class="c1"&gt;# high-position volume stall = distribution
&lt;/span&gt;    &lt;span class="k"&gt;elif&lt;/span&gt; &lt;span class="n"&gt;high_pos&lt;/span&gt; &lt;span class="ow"&gt;and&lt;/span&gt; &lt;span class="n"&gt;vol_ratio&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="n"&gt;s&lt;/span&gt; &lt;span class="o"&gt;-=&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;          &lt;span class="c1"&gt;# liquidity-trap breakout
&lt;/span&gt;    &lt;span class="k"&gt;elif&lt;/span&gt; &lt;span class="ow"&gt;not&lt;/span&gt; &lt;span class="n"&gt;high_pos&lt;/span&gt; &lt;span class="ow"&gt;and&lt;/span&gt; &lt;span class="n"&gt;turnover&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="mf"&gt;0.5&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="n"&gt;s&lt;/span&gt; &lt;span class="o"&gt;+=&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;          &lt;span class="c1"&gt;# extreme low volume near bottom = setup
&lt;/span&gt;    &lt;span class="k"&gt;elif&lt;/span&gt; &lt;span class="ow"&gt;not&lt;/span&gt; &lt;span class="n"&gt;high_pos&lt;/span&gt; &lt;span class="ow"&gt;and&lt;/span&gt; &lt;span class="n"&gt;vol_ratio&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="n"&gt;s&lt;/span&gt; &lt;span class="o"&gt;+=&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;          &lt;span class="c1"&gt;# low-position spike = accumulation
&lt;/span&gt;    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;turnover&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;15&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="n"&gt;s&lt;/span&gt; &lt;span class="o"&gt;-=&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;          &lt;span class="c1"&gt;# red-alert turnover
&lt;/span&gt;    &lt;span class="k"&gt;elif&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;=&lt;/span&gt; &lt;span class="n"&gt;turnover&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;=&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt; &lt;span class="ow"&gt;and&lt;/span&gt; &lt;span class="ow"&gt;not&lt;/span&gt; &lt;span class="n"&gt;high_pos&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="n"&gt;s&lt;/span&gt; &lt;span class="o"&gt;+=&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt;          &lt;span class="c1"&gt;# main force ignition zone
&lt;/span&gt;    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nf"&gt;max&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nf"&gt;min&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Combined with the technical (MACD/KDJ/RSI), fundamental (ROE/PEG) and sentiment layers of the three-pillar system, it's the difference between "the chart looks fine" and "the chips are flowing the wrong way."&lt;/p&gt;

&lt;h2&gt;
  
  
  Where to find it
&lt;/h2&gt;

&lt;p&gt;The full scanner — including the volume scoring, a 5,000-stock daily screener, and the three-pillar framework — is open source: &lt;a href="https://github.com/Felixwang007" rel="noopener noreferrer"&gt;https://github.com/Felixwang007&lt;/a&gt; (everything is MIT).&lt;/p&gt;

&lt;p&gt;If you'd rather have it as a ready-made agent skill, search &lt;strong&gt;"A-Share Stock Analysis"&lt;/strong&gt; on xiaping.coze.com — it runs the whole scan in 5 minutes, no SaaS subscriptions, no paid APIs.&lt;/p&gt;

&lt;p&gt;Volume is the only honest participant in the market. Learn to read it, and the other indicators stop lying to you. Questions or a pattern you think I got wrong — drop it in the comments.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>python</category>
      <category>opensource</category>
      <category>stocks</category>
    </item>
    <item>
      <title>7 Stocks Hit the 20% Limit Today in China — My Free AI Scanner Caught All of Them by 9:35 AM</title>
      <dc:creator>Felixwang007</dc:creator>
      <pubDate>Mon, 17 Aug 2026 04:09:32 +0000</pubDate>
      <link>https://dev.to/felixwang007/7-stocks-hit-the-20-limit-today-in-china-my-free-ai-scanner-caught-all-of-them-by-935-am-57do</link>
      <guid>https://dev.to/felixwang007/7-stocks-hit-the-20-limit-today-in-china-my-free-ai-scanner-caught-all-of-them-by-935-am-57do</guid>
      <description>&lt;p&gt;Every morning at 9:30 AM Beijing time, a script on my machine quietly wakes up, pulls live quotes for all 5,000+ A-share stocks, and runs a three-pillar scan: technicals, fundamentals, and market sentiment. It takes about 90 seconds. This morning it did something worth writing about.&lt;/p&gt;

&lt;h2&gt;
  
  
  What happened today (Aug 17, 2026)
&lt;/h2&gt;

&lt;p&gt;The market opened strong and stayed strong:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Index&lt;/th&gt;
&lt;th&gt;Close&lt;/th&gt;
&lt;th&gt;Change&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Shanghai Composite&lt;/td&gt;
&lt;td&gt;3,960&lt;/td&gt;
&lt;td&gt;+0.84%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Shenzhen Component&lt;/td&gt;
&lt;td&gt;14,534&lt;/td&gt;
&lt;td&gt;+1.26%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ChiNext (Growth)&lt;/td&gt;
&lt;td&gt;3,675&lt;/td&gt;
&lt;td&gt;+1.33%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;CSI 300&lt;/td&gt;
&lt;td&gt;4,701&lt;/td&gt;
&lt;td&gt;+0.76%&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;But the interesting action was in the limit-up board. A-share rules allow a 20% daily move on ChiNext (300xxx) and STAR Market (688xxx) stocks. This morning, &lt;strong&gt;seven of the top ten gainers all closed at the 20% limit&lt;/strong&gt; — that's a rotation signal, not just a green tape day.&lt;/p&gt;

&lt;h2&gt;
  
  
  The scanner's output, 9:35 AM
&lt;/h2&gt;

&lt;p&gt;Top movers flagged by the scan (name, price, change, turnover):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;N 恒兴 (new listing):  32.20  +101.0%  turnover 78.6%
创达新材 (BJ):         60.88  +23.9%   turnover 12.6%
戴维医疗 (300314):     14.74  +20.0%   turnover 17.9%
天山生物 (300313):     10.73  +20.0%   turnover 11.6%
聚和材料 (688503):     95.68  +20.0%   turnover 10.4%
太辰光   (300570):    193.80  +20.0%   turnover 12.4%
苏州天脉 (301626):    307.08  +20.0%   turnover 7.7%
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  How to read this tape (the part that's actually useful)
&lt;/h2&gt;

&lt;p&gt;Three things stand out, and they map directly to the three pillars of the system:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Technicals — turnover is the tell.&lt;/strong&gt; A 20% limit-up with 10–18% turnover means the move is contested: real money is rotating in, but so is a lot of short-term supply. Contrast that with 中石科技's limit-up at only &lt;strong&gt;1.6% turnover&lt;/strong&gt; — that's a locked board, sellers simply didn't show up. Low-turnover limit-ups are structurally stronger than high-turnover ones. When you see a high-turnover limit-up, expect a follow-up test tomorrow.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Sentiment — where the money is going.&lt;/strong&gt; A new listing doubling on its debut (N 恒兴, +101%, 78% turnover) plus a cluster of 20% boards across ChiNext and STAR tells you risk appetite is ON. In this regime, breakout strategies on 300xxx/688xxx names tend to work better than dividend/value plays. Regime detection is 80% of the game — indicator choice comes second.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Fundamentals — the filter that keeps you out of traps.&lt;/strong&gt; The scanner cross-references each mover against earnings, ROE history, and PEG. 戴维医疗 and 天山生物 are classic sentiment names (medical devices / agriculture themes) — fine for a 1–2 day trade if you respect the stop, but their fundamental scores keep them off the swing list. The system's job is to separate "momentum with a floor" from "momentum with a cliff."&lt;/p&gt;

&lt;h2&gt;
  
  
  The one-command workflow
&lt;/h2&gt;

&lt;p&gt;This isn't a black box — it's a free open-source skill for AI coding agents (works with Claude Code, Codex, etc.):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# fetch the whole market, score every ticker, output a ranked watchlist&lt;/span&gt;
agent-run a-share-stock-analysis scan &lt;span class="nt"&gt;--sort&lt;/span&gt; momentum
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Under the hood it's plain Python: Sina/Tencent free quote endpoints (no paid API key, no rate-limit drama), ~24 technical indicators (MACD, KDJ, RSI, Bollinger, volume-price divergence), and a weighted scoring model. You can read every line of the code and change the weights yourself.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why I open-sourced this
&lt;/h2&gt;

&lt;p&gt;I got tired of two things: (1) paid tools that hide their logic, and (2) advice posts with zero reproducible data. So the skill ships with the live scanner, the scoring rules, and a daily watchlist generator — you point it at today's market and it gives you today's numbers, not last month's screenshots.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;GitHub: &lt;a href="https://github.com/Felixwang007/buda-a-share-stock-analyzer" rel="noopener noreferrer"&gt;github.com/Felixwang007/buda-a-share-stock-analyzer&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Published skill (search "A-Share Stock Analysis Expert"): available on the 虾评 skill marketplace and Agensi&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you trade A-shares or just want to see how a free agent skill does real market surveillance every morning, star the repo and run the scan tomorrow at 9:30. The tape will thank you.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Disclaimer: Educational content, not investment advice. A-share trading involves risk; always do your own due diligence and respect position sizing.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>python</category>
      <category>opensource</category>
      <category>stocks</category>
    </item>
    <item>
      <title>A-Shares Are Not Wall Street: 5 Technical Signals That Actually Work (Live Demo From Today's Market)</title>
      <dc:creator>Felixwang007</dc:creator>
      <pubDate>Thu, 13 Aug 2026 04:11:13 +0000</pubDate>
      <link>https://dev.to/felixwang007/a-shares-are-not-wall-street-5-technical-signals-that-actually-work-live-demo-from-todays-market-4o76</link>
      <guid>https://dev.to/felixwang007/a-shares-are-not-wall-street-5-technical-signals-that-actually-work-live-demo-from-todays-market-4o76</guid>
      <description>&lt;p&gt;If you've traded U.S. stocks and then tried to trade A-shares with the same playbook, you probably got burned. And it's not your fault — the market structure is fundamentally different:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;T+1 settlement&lt;/strong&gt; — you can't day-trade out of a mistake. Buying the wrong break-in point locks you in until tomorrow.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Price limits&lt;/strong&gt; — 10% for the main board, 20% for ChiNext/STAR. A US-style "momentum chase" can leave you stuck in a 9.9% loss with zero liquidity.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Retail-dominated tape&lt;/strong&gt; — retail investors drive a huge share of volume. Sentiment swings are wider and faster than in any institutional market.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Technical analysis &lt;em&gt;does&lt;/em&gt; work in A-shares — but the signals need adapting. Here are the 5 that have proven most useful in my own trading, demonstrated on &lt;strong&gt;real numbers from today's session (August 13, 2026, midday)&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Today's Tape, Read Like a Book
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Index&lt;/th&gt;
&lt;th&gt;Price&lt;/th&gt;
&lt;th&gt;Change&lt;/th&gt;
&lt;th&gt;Half-day Turnover&lt;/th&gt;
&lt;th&gt;Turnover Rate&lt;/th&gt;
&lt;th&gt;Volume Ratio&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Shanghai Composite&lt;/td&gt;
&lt;td&gt;3,963.15&lt;/td&gt;
&lt;td&gt;+0.42%&lt;/td&gt;
&lt;td&gt;¥724.4B&lt;/td&gt;
&lt;td&gt;0.74%&lt;/td&gt;
&lt;td&gt;1.30&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Shenzhen Component&lt;/td&gt;
&lt;td&gt;14,519.97&lt;/td&gt;
&lt;td&gt;+0.73%&lt;/td&gt;
&lt;td&gt;¥865.1B&lt;/td&gt;
&lt;td&gt;1.91%&lt;/td&gt;
&lt;td&gt;1.37&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ChiNext (创业板)&lt;/td&gt;
&lt;td&gt;3,660.25&lt;/td&gt;
&lt;td&gt;+1.61%&lt;/td&gt;
&lt;td&gt;¥422.3B&lt;/td&gt;
&lt;td&gt;2.64%&lt;/td&gt;
&lt;td&gt;1.36&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Three reads from this table alone:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Growth is leading.&lt;/strong&gt; ChiNext (+1.61%) is running more than 3x faster than the Shanghai index (+0.42%) — risk appetite is on, and capital is rotating into growth/tech names.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Volume is expanding, not shrinking.&lt;/strong&gt; Volume ratios above 1.3 across all three indices mean today's move has fuel. A rally on shrinking volume is suspect; a rally with rising volume is real.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Turnover rate tells you where the crowd is.&lt;/strong&gt; ChiNext's 2.64% vs Shanghai's 0.74% — that's where the action is. When an index's turnover rate spikes above its 10-day average, expect a directional push (and more volatility).&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Signal #1: Volume Is a Disagreement Meter, Not a Supply Meter
&lt;/h2&gt;

&lt;p&gt;Most beginners read "big volume = big buy". Wrong. Volume measures &lt;em&gt;disagreement&lt;/em&gt; — how many people are switching sides.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;High volume + price stuck (滞涨)&lt;/strong&gt; = sellers are absorbing every buy. This is the classic distribution trap: the stock makes noise but goes nowhere on huge volume. Get out.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Low volume + slow drift down&lt;/strong&gt; = nobody cares, no panic. Not a buy signal yet — don't catch a falling knife.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Low volume + price stabilizes at a long-term low&lt;/strong&gt; = sellers exhausted. This is where accumulation starts. Watch for the first volume-expansion day to confirm.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Rule of thumb: &lt;strong&gt;the move that matters is the one that happens on 2x your stock's average volume.&lt;/strong&gt; Everything else is noise.&lt;/p&gt;

&lt;h2&gt;
  
  
  Signal #2: The 20-Day Line Is the Life Line (生命线)
&lt;/h2&gt;

&lt;p&gt;For A-share medium-term trading, the 20-day moving average is the most respected line on the chart:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Price above the 20-day line + 20-day line sloping up = &lt;strong&gt;trend intact&lt;/strong&gt;. Pullbacks to the line are buying zones.&lt;/li&gt;
&lt;li&gt;Price breaks below the 20-day line on volume = &lt;strong&gt;trend broken&lt;/strong&gt;. Even if it "looks cheap", the correct move is to wait for it to reclaim the line.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The 60-day line separates bull and bear regime. Above it: dips are buyable. Below it: rallies are sellable.&lt;/p&gt;

&lt;h2&gt;
  
  
  Signal #3: MACD — Everything Happens Around the Zero Axis
&lt;/h2&gt;

&lt;p&gt;MACD crossovers are noisy, but &lt;strong&gt;zero-axis context&lt;/strong&gt; filters out most of the noise:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Golden cross &lt;strong&gt;above&lt;/strong&gt; the zero axis = strong, continuation signal. Worth acting on.&lt;/li&gt;
&lt;li&gt;Golden cross &lt;strong&gt;below&lt;/strong&gt; the zero axis = weak, a rebound not a reversal. Take profit early.&lt;/li&gt;
&lt;li&gt;Death cross &lt;strong&gt;below&lt;/strong&gt; the zero axis = keep your cash.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In A-shares, the most profitable setup is: 20-day line sloping up + MACD golden cross above zero + volume expansion. All three together is rare — that's why it works.&lt;/p&gt;

&lt;h2&gt;
  
  
  Signal #4: KDJ in the Extreme Zones (for T+1 Short Swings)
&lt;/h2&gt;

&lt;p&gt;KDJ's J value oscillates 0-100, and in A-shares the extremes matter more than anywhere else:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;J &amp;lt; 0&lt;/strong&gt; (oversold) — a bounce is statistically likely within 1-3 sessions. With T+1, you enter &lt;em&gt;during&lt;/em&gt; the oversold session, not after the bounce confirms.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;J &amp;gt; 100&lt;/strong&gt; (overbought) — don't chase. The retail crowd is already all in; you're buying from the last buyer.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;KDJ works best on 15-min/30-min charts for intraday timing of entries you exit the same day or next morning.&lt;/p&gt;

&lt;h2&gt;
  
  
  Signal #5: Bollinger Squeeze Predicts the Breakout
&lt;/h2&gt;

&lt;p&gt;When Bollinger Bands pinch to their narrowest in weeks (the "squeeze"), volatility is about to expand. The direction is unknown — but the setup is:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Squeeze + rising volume on the breakout day = trade it.&lt;/li&gt;
&lt;li&gt;Squeeze + breakout on &lt;em&gt;shrinking&lt;/em&gt; volume = fakeout, stand aside.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The #1 Killer: Chasing (追高)
&lt;/h2&gt;

&lt;p&gt;If I could delete one habit from A-share retail traders, it's chasing intraday spikes. I've done it; it's the most expensive lesson in this market. A stock up 8% at 10:30 a.m. is not a signal — it's an invitation to be tomorrow's exit liquidity.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The discipline that saved me:&lt;/strong&gt; if you chase, you must exit at the first sign of stall (滞涨) the &lt;em&gt;next&lt;/em&gt; session. Never turn a chase into a "long-term investment". A loss you take on day 2 is tuition; a loss you hold for 3 months is a salary.&lt;/p&gt;

&lt;h2&gt;
  
  
  Not Financial Advice — Just an Edge
&lt;/h2&gt;

&lt;p&gt;These five signals won't make you rich overnight, but they will keep you on the right side of the tape more often than not. Pair them with a consistent risk rule (never risk more than 2% of capital on a single position) and you have a working system.&lt;/p&gt;

&lt;p&gt;If you want to see these signals computed automatically, I've open-sourced the tools I use:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;GitHub&lt;/strong&gt;: &lt;a href="https://github.com/Felixwang007" rel="noopener noreferrer"&gt;github.com/Felixwang007&lt;/a&gt; (repo: daily-stock-analysis — MACD/KDJ/RSI/BOLL/MA in pure Python, zero dependencies)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Xiaping Marketplace&lt;/strong&gt;: search &lt;strong&gt;"A-Share Stock Analysis Expert"&lt;/strong&gt; on xiaping.coze.com for a ready-to-use AI skill that runs the full three-pillar analysis (technical + fundamental + sentiment)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Trade safe. 📈&lt;/p&gt;

</description>
      <category>ai</category>
      <category>python</category>
      <category>opensource</category>
      <category>stocks</category>
    </item>
    <item>
      <title>I Wrote 50+ Skills for AI Coding Agents — Here Are 5 Rules That Actually Matter</title>
      <dc:creator>Felixwang007</dc:creator>
      <pubDate>Mon, 10 Aug 2026 04:09:21 +0000</pubDate>
      <link>https://dev.to/felixwang007/i-wrote-50-skills-for-ai-coding-agents-here-are-5-rules-that-actually-matter-5h76</link>
      <guid>https://dev.to/felixwang007/i-wrote-50-skills-for-ai-coding-agents-here-are-5-rules-that-actually-matter-5h76</guid>
      <description>&lt;p&gt;I Wrote 50+ Skills for AI Coding Agents — Here Are 5 Rules That Actually Matter&lt;/p&gt;

&lt;p&gt;Over the past few months I've built 50+ skills (SKILL.md files) for AI coding agents: stock analysis pipelines, content generation systems, document conversion tools, even a GitHub Trending aggregator. Most of the "best practices" I read online turned out to be wrong in practice. These are the 5 rules that survived contact with reality.&lt;/p&gt;

&lt;h2&gt;
  
  
  Rule 1: Keep skills short. 3 principles beat 13 frameworks
&lt;/h2&gt;

&lt;p&gt;My first skill was a 174KB monster — 13 writing frameworks, academic theory, 40 examples. The agent loaded it and produced generic, lifeless output every single time. The skill wasn't too complex to understand; it was too heavy to follow. When the LLM dumps 174KB into context, it pattern-matches the surface and ignores the substance.&lt;/p&gt;

&lt;p&gt;I rewrote it to 3 principles and 5 hard constraints. Output quality went up immediately. A skill should fit in your head — if you need a table of contents, it's a book, not a skill.&lt;/p&gt;

&lt;h2&gt;
  
  
  Rule 2: Hard gates beat long instructions
&lt;/h2&gt;

&lt;p&gt;LLMs are terrible at following "make sure quality is high." They're great at following scripts. So instead of writing "the title must be compelling," I wrote:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Title score ≥ 6.5 or don't publish&lt;/li&gt;
&lt;li&gt;At least 2 images in the article, verified with &lt;code&gt;grep -c '!\['&lt;/code&gt; before publishing&lt;/li&gt;
&lt;li&gt;Fetch real market data first; if no fresh data, skip publishing entirely&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Soft advice gets ignored. A gate script can't be ignored. Design skills around checkpoints that fail loudly.&lt;/p&gt;

&lt;h2&gt;
  
  
  Rule 3: Interface design beats examples
&lt;/h2&gt;

&lt;p&gt;The context-engineering shift is real: designing a clean tool parameter schema does more for agent performance than writing 10 examples of how to call it. When I spent 30 minutes restructuring an API's parameters instead of writing more documentation, the agent stopped making the same mistake. Examples teach; interfaces constrain. Constraints win.&lt;/p&gt;

&lt;h2&gt;
  
  
  Rule 4: Skills should encode your judgment, not general knowledge
&lt;/h2&gt;

&lt;p&gt;General knowledge belongs in docs. A skill should encode &lt;em&gt;your opinion&lt;/em&gt; — the lessons you paid for with failures. My best skill isn't the one with the most citations; it's the one with the most "here's what broke and why" notes. When you copy generic knowledge into a skill, you're just moving bytes around. When you encode a hard-won lesson, you're compounding experience.&lt;/p&gt;

&lt;h2&gt;
  
  
  Rule 5: Treat &lt;code&gt;status: ok&lt;/code&gt; as untrusted
&lt;/h2&gt;

&lt;p&gt;The most dangerous failure mode for an autonomous agent isn't crashing — it's silently succeeding in the wrong direction. My cron agent reported &lt;code&gt;last_status: ok&lt;/code&gt; for weeks while producing zero-value output. A health check that only looks at exit codes is theater.&lt;/p&gt;

&lt;p&gt;Now every pipeline has verification layers: state fingerprints before/after runs, receipts for every publish action, and reviewers that consume only the diff + trust boundaries — not the full author context. A critic that inherits the author's full context is just a formatter with opinions.&lt;/p&gt;

&lt;h2&gt;
  
  
  The stack that grew out of these rules
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;A-Share Stock Analysis Expert&lt;/strong&gt; — a three-pillar system (technical: MACD/KDJ/RSI/volume-price; fundamental: ROE/PEG/Buffett ratios; sentiment: capital flows, hot money tracking). Built as an agent skill so any coding agent can run a full market scan.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;GitHub Trending Daily&lt;/strong&gt; — a zero-cost, zero-API aggregator that updates itself every 6 hours, so my agents always know what's hot before deciding what to learn.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Humanizer&lt;/strong&gt; — a text de-AI-ifier that removes the 24 most common LLM writing patterns. Because if you're going to publish agent-generated content, it better not read like agent-generated content.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;All of it runs on free APIs and my own GPU — no SaaS subscriptions, no API keys to buy.&lt;/p&gt;




&lt;p&gt;If you're building skills for AI agents, try these: &lt;a href="https://github.com/Felixwang007" rel="noopener noreferrer"&gt;https://github.com/Felixwang007&lt;/a&gt; — everything is open source. You can also grab the A-Share Stock Analysis Expert skill on the skill marketplaces (search "A-Share Stock Analysis" on xiaping.coze.com) if you want a working three-pillar scanner in 5 minutes.&lt;/p&gt;

&lt;p&gt;Questions or counter-examples? Drop them in the comments — I'm genuinely curious which of these rules break for you.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>python</category>
      <category>opensource</category>
      <category>stocks</category>
    </item>
    <item>
      <title>I Built a Zero-Cost, Zero-API GitHub Trending Aggregator That Updates Itself Every 6 Hours</title>
      <dc:creator>Felixwang007</dc:creator>
      <pubDate>Mon, 03 Aug 2026 04:11:07 +0000</pubDate>
      <link>https://dev.to/felixwang007/i-built-a-zero-cost-zero-api-github-trending-aggregator-that-updates-itself-every-6-hours-31dj</link>
      <guid>https://dev.to/felixwang007/i-built-a-zero-cost-zero-api-github-trending-aggregator-that-updates-itself-every-6-hours-31dj</guid>
      <description>&lt;p&gt;Every morning, I used to open github.com/trending, scroll through 5 pages, and lose 20 minutes before writing a single line of code. The worst part: there is &lt;strong&gt;no official GitHub Trending API&lt;/strong&gt;, and every third-party wrapper either requires a token, rate-limits you after 10 requests, or charges money for what is essentially a public HTML page.&lt;/p&gt;

&lt;p&gt;So I built my own aggregator. It costs &lt;strong&gt;$0 per month&lt;/strong&gt;, requires &lt;strong&gt;zero API keys&lt;/strong&gt;, and updates itself every 6 hours. The whole thing is ~200 lines of Python + one GitHub Actions workflow. Here's how it works.&lt;/p&gt;

&lt;h2&gt;
  
  
  The core trick: parse HTML, not JSON
&lt;/h2&gt;

&lt;p&gt;GitHub renders Trending as server-side HTML, which means you can extract everything you need with a few regexes — no headless browser, no API token, no authentication.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;re&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;json&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;urllib&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;request&lt;/span&gt;

&lt;span class="n"&gt;URL&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;https://github.com/trending?since=daily&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;

&lt;span class="n"&gt;html&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;urllib&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;request&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;urlopen&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;URL&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;read&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="nf"&gt;decode&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;utf-8&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="c1"&gt;# Each trending repo is an &amp;lt;article&amp;gt; block
&lt;/span&gt;&lt;span class="n"&gt;articles&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;re&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;findall&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;r&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;&amp;lt;article[^&amp;gt;]*&amp;gt;(.*?)&amp;lt;/article&amp;gt;&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;html&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;re&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;S&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="n"&gt;repos&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[]&lt;/span&gt;
&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;articles&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="n"&gt;name&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;re&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;search&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;r&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;href=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;/([^&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;]+)&lt;/span&gt;&lt;span class="sh"&gt;"'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;a&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;group&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;desc&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;re&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;search&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;r&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;&amp;lt;p[^&amp;gt;]*&amp;gt;(.*?)&amp;lt;/p&amp;gt;&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;a&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;re&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;S&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;stars&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;re&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;search&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;r&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;aria-label=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;([\d,]+) stars today&lt;/span&gt;&lt;span class="sh"&gt;"'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;a&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;repos&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;append&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;name&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;desc&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;re&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;sub&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;r&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;&amp;lt;[^&amp;gt;]+&amp;gt;&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;''&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;desc&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;group&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)).&lt;/span&gt;&lt;span class="nf"&gt;strip&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;desc&lt;/span&gt; &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="sh"&gt;""&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;today_stars&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nf"&gt;int&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;stars&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;group&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;replace&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;""&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;stars&lt;/span&gt; &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="p"&gt;})&lt;/span&gt;

&lt;span class="n"&gt;repos&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;sort&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;key&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="k"&gt;lambda&lt;/span&gt; &lt;span class="n"&gt;r&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;r&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;today_stars&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="n"&gt;reverse&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="bp"&gt;True&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;json&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;dumps&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;repos&lt;/span&gt;&lt;span class="p"&gt;[:&lt;/span&gt;&lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="n"&gt;indent&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That's the entire scraper. 25 lines. No BeautifulSoup, no Selenium, no Playwright — the standard library is enough because GitHub's Trending markup is remarkably stable.&lt;/p&gt;

&lt;h2&gt;
  
  
  The automation: GitHub Actions as a free cron server
&lt;/h2&gt;

&lt;p&gt;This is the part I love. Instead of renting a VPS or running a Raspberry Pi, I use GitHub Actions as a free, always-on cron scheduler:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Daily Trending Deploy&lt;/span&gt;
&lt;span class="na"&gt;on&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;schedule&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;cron&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;'&lt;/span&gt;&lt;span class="s"&gt;0&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;*/6&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;*&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;*&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;*'&lt;/span&gt;   &lt;span class="c1"&gt;# every 6 hours&lt;/span&gt;
  &lt;span class="na"&gt;workflow_dispatch&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;        &lt;span class="c1"&gt;# manual trigger&lt;/span&gt;

&lt;span class="na"&gt;jobs&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;build&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;runs-on&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;ubuntu-latest&lt;/span&gt;
    &lt;span class="na"&gt;steps&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;uses&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;actions/checkout@v4&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;run&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;python scripts/fetch_trending.py&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;uses&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;peaceiris/actions-gh-pages@v4&lt;/span&gt;
        &lt;span class="na"&gt;with&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
          &lt;span class="na"&gt;github_token&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;${{ secrets.GITHUB_TOKEN }}&lt;/span&gt;
          &lt;span class="na"&gt;publish_dir&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;./site&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A few things I learned the hard way:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Use a dedicated deploy action.&lt;/strong&gt; &lt;code&gt;peaceiris/actions-gh-pages&lt;/code&gt; handles the branch switch and token permissions so you don't have to write git-push plumbing inside your workflow.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Output a JSON file alongside the HTML.&lt;/strong&gt; I generate both &lt;code&gt;index.html&lt;/code&gt; and &lt;code&gt;trending.json&lt;/code&gt; — the JSON endpoint means other tools (dashboards, bots, my own scripts) can consume the same data without re-scraping.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Schedule drift is real.&lt;/strong&gt; The &lt;code&gt;*/6&lt;/code&gt; cron is reliable but not instant; if freshness matters, add a &lt;code&gt;workflow_dispatch&lt;/code&gt; fallback and a manual "refresh now" button in the UI.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Keep the scraper resilient.&lt;/strong&gt; Wrap the fetch in try/except and keep the &lt;em&gt;last good snapshot&lt;/em&gt; if GitHub ever changes its markup. An aggregator that serves yesterday's data is still useful; a blank page is not.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Why "no API" is a feature
&lt;/h2&gt;

&lt;p&gt;Most devs reach for an API first. But when the source is a public HTML page, parsing it directly has real advantages:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;No token to rotate, no rate limit to negotiate&lt;/strong&gt; — you are a normal browser request.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;No vendor lock-in&lt;/strong&gt; — if GitHub changes something, you fix one regex, not a dependency version.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Runs anywhere&lt;/strong&gt; — the script needs only Python 3, so it works on a laptop, a $5 VPS, or a GitHub Actions runner.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Where this pattern scales
&lt;/h2&gt;

&lt;p&gt;The "scrape → transform → publish to Pages on a schedule" pipeline is a template, not a one-off. I've reused it for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;📰 AI tool daily digests (RSS feeds)&lt;/li&gt;
&lt;li&gt;📈 &lt;strong&gt;Stock/crypto price trend monitors&lt;/strong&gt; — same Actions cron, same Pages hosting, different source&lt;/li&gt;
&lt;li&gt;🎯 Hacker News top-story aggregation&lt;/li&gt;
&lt;li&gt;🛠️ DevOps toolchain watchlists&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you're a developer who wants a personal "tech radar" page that updates itself, this is a 1-hour weekend project.&lt;/p&gt;

&lt;h2&gt;
  
  
  Try it yourself
&lt;/h2&gt;

&lt;p&gt;The full, production-ready version (with a responsive mobile-friendly site, structured JSON output, and the complete Actions workflow) is open source:&lt;/p&gt;

&lt;p&gt;👉 &lt;strong&gt;&lt;a href="https://github.com/Felixwang007/github-daily-trending" rel="noopener noreferrer"&gt;https://github.com/Felixwang007/github-daily-trending&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Live demo: &lt;a href="https://Felixwang007.github.io/github-daily-trending" rel="noopener noreferrer"&gt;https://Felixwang007.github.io/github-daily-trending&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It's MIT licensed — fork it, rip out my content, and point it at whatever you want to track. If you build something cool on top of it, I'd genuinely love to hear about it in the comments or via a PR.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Also check out my other open-source project if you trade A-shares: &lt;a href="https://github.com/Felixwang007/buda-a-share-stock-analyzer" rel="noopener noreferrer"&gt;A-Share Stock Analysis Expert&lt;/a&gt; — a three-pillar stock screening system that combines technical, fundamental, and sentiment analysis into one tool.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>python</category>
      <category>opensource</category>
      <category>stocks</category>
    </item>
    <item>
      <title>I Built an AI That Analyzes Chinese A-Share Stocks Using a Three-Pillar System — Here's What It Caught Today</title>
      <dc:creator>Felixwang007</dc:creator>
      <pubDate>Thu, 30 Jul 2026 04:10:35 +0000</pubDate>
      <link>https://dev.to/felixwang007/i-built-an-ai-that-analyzes-chinese-a-share-stocks-using-a-three-pillar-system-heres-what-it-28cf</link>
      <guid>https://dev.to/felixwang007/i-built-an-ai-that-analyzes-chinese-a-share-stocks-using-a-three-pillar-system-heres-what-it-28cf</guid>
      <description>&lt;p&gt;Last week, I open-sourced an AI-powered stock analysis system for the Chinese A-share market. Today I want to show you what it actually does — with real data from the July 30 trading session.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Problem
&lt;/h2&gt;

&lt;p&gt;Most A-share analysis tools fall into one camp: purely technical (MACD/KDJ/RSI overlays), purely fundamental (PEG/ROE screens), or purely sentiment-based (social media buzz). None of them talk to each other. Retail investors are left stitching three separate dashboards together.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Solution: Three-Pillar Scoring
&lt;/h2&gt;

&lt;p&gt;The system (called &lt;strong&gt;A-Share Stock Analysis Expert&lt;/strong&gt;) runs three independent analysis pipelines on every stock in the watchlist:&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Technical Analysis (10 pts)
&lt;/h3&gt;

&lt;p&gt;Python-native MACD, KDJ, RSI, Bollinger Bands, and moving average systems — all matching Tongdaxin (通达信) calculation standards. No external dependencies, no API keys needed.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Fundamental Analysis (10 pts)
&lt;/h3&gt;

&lt;p&gt;DuPont ROE decomposition, PEG valuation, and Buffett-style "three ratios" screening with industry-specific weighting.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Intelligence Analysis (10 pts)
&lt;/h3&gt;

&lt;p&gt;Majors capital flow tracking, Xueqiu sentiment, dragon-and-tiger list monitoring, institutional position changes, and policy timing.&lt;/p&gt;

&lt;p&gt;Total score: 30 points. Only stocks scoring 12+ trigger a buy signal.&lt;/p&gt;

&lt;h2&gt;
  
  
  What It Flagged Today (July 30, 2026)
&lt;/h2&gt;

&lt;p&gt;Today was a rough session — Shanghai Composite -1.15%, Shenzhen Component -3.79%. But the system spotted several interesting moves:&lt;/p&gt;

&lt;h3&gt;
  
  
  Limit Up Signal: 闰土股份 (002440) +10.00%
&lt;/h3&gt;

&lt;p&gt;Technical score: 4/10 — Bullish MACD, golden cross on KDJ, touching upper Bollinger. The system flagged the bullish alignment before the breakout.&lt;/p&gt;

&lt;h3&gt;
  
  
  Confirmed Uptrend: 龙佰集团 (002601) +0.36%
&lt;/h3&gt;

&lt;p&gt;Scored 5/10 technically — bullish MACD, bullish KDJ, neutral-bullish RSI. Not an explosive play, but steady accumulation in an otherwise red market.&lt;/p&gt;

&lt;h3&gt;
  
  
  Limit Down Warning: 兴业科技 (002674) -10.00%
&lt;/h3&gt;

&lt;p&gt;The intelligence layer flagged "4 consecutive up days" (连涨4天) — a classic exhaustion signal. The system was already on watch for a reversal.&lt;/p&gt;

&lt;h3&gt;
  
  
  Pattern Recognition Samples
&lt;/h3&gt;

&lt;p&gt;From the training pipeline (36 samples collected across 5 patterns):&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Pattern&lt;/th&gt;
&lt;th&gt;Example&lt;/th&gt;
&lt;th&gt;Signal&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Breakout&lt;/td&gt;
&lt;td&gt;中国中免 +3.37%&lt;/td&gt;
&lt;td&gt;Bullish breakout with volume — buy on confirmation&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Trend&lt;/td&gt;
&lt;td&gt;隆基绿能 +1.03%&lt;/td&gt;
&lt;td&gt;Healthy uptrend channel — hold and add on dips&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Pullback&lt;/td&gt;
&lt;td&gt;北方华创 -1.20%&lt;/td&gt;
&lt;td&gt;Low-volume pullback — accumulation zone&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Training Pipeline
&lt;/h2&gt;

&lt;p&gt;The system runs a daily cron job at 15:10 (market close +10min) to collect real-time quotes via the free Sina Finance API for 12 core A-share stocks. Each day's data is classified into one of 5 pattern types:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;放量突破 (Breakout with Volume)&lt;/li&gt;
&lt;li&gt;缩量回调 (Low-Volume Pullback)&lt;/li&gt;
&lt;li&gt;高位放量下跌 (High-Level Volume Selloff)&lt;/li&gt;
&lt;li&gt;趋势追踪 (Trend Following)&lt;/li&gt;
&lt;li&gt;横盘震荡 (Sideways Consolidation)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The goal: accumulate 200+ labeled samples for QLoRA fine-tuning.&lt;/p&gt;

&lt;h2&gt;
  
  
  What's Next
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Fine-tune a LLaMA model on the accumulated training data for better pattern recognition&lt;/li&gt;
&lt;li&gt;Integrate the iTick API for real-time data without scraping&lt;/li&gt;
&lt;li&gt;Add portfolio tracking with stop-loss alerts&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Try It Yourself
&lt;/h2&gt;

&lt;p&gt;The complete source code and tools are available:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;GitHub&lt;/strong&gt;: &lt;a href="https://github.com/Felixwang007" rel="noopener noreferrer"&gt;github.com/Felixwang007&lt;/a&gt; (repo: daily-stock-analysis)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Xiaping Marketplace&lt;/strong&gt;: Search "A-Share Stock Analysis Expert" on xiaping.coze.com for the ready-to-use skill&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Whether you trade A-shares or just want to understand how AI agents can analyze financial markets, I hope this gives you a practical starting point. Pull requests and ideas welcome!&lt;/p&gt;




</description>
      <category>ai</category>
      <category>python</category>
      <category>opensource</category>
      <category>stocks</category>
    </item>
    <item>
      <title>I Built a Free A-Share Stock Analysis Tool for AI Coding Agents (24 Indicators)</title>
      <dc:creator>Felixwang007</dc:creator>
      <pubDate>Mon, 27 Jul 2026 23:09:35 +0000</pubDate>
      <link>https://dev.to/felixwang007/i-built-a-free-a-share-stock-analysis-tool-for-ai-coding-agents-24-technical-indicators-3in7</link>
      <guid>https://dev.to/felixwang007/i-built-a-free-a-share-stock-analysis-tool-for-ai-coding-agents-24-technical-indicators-3in7</guid>
      <description>&lt;h2&gt;
  
  
  Test
&lt;/h2&gt;

&lt;p&gt;Updated content.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>python</category>
      <category>opensource</category>
    </item>
  </channel>
</rss>
