<?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: Maulana</title>
    <description>The latest articles on DEV Community by Maulana (@ulsreall).</description>
    <link>https://dev.to/ulsreall</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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3968161%2F46a38547-aede-4cf5-a4f3-c8d20f2a65a2.png</url>
      <title>DEV Community: Maulana</title>
      <link>https://dev.to/ulsreall</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/ulsreall"/>
    <language>en</language>
    <item>
      <title>I Built a Python Framework for Autonomous Web3 AI Agents — Here's What I Learned</title>
      <dc:creator>Maulana</dc:creator>
      <pubDate>Thu, 04 Jun 2026 11:09:19 +0000</pubDate>
      <link>https://dev.to/ulsreall/i-built-a-python-framework-for-autonomous-web3-ai-agents-heres-what-i-learned-d56</link>
      <guid>https://dev.to/ulsreall/i-built-a-python-framework-for-autonomous-web3-ai-agents-heres-what-i-learned-d56</guid>
      <description>&lt;h1&gt;
  
  
  I Built a Python Framework for Autonomous Web3 AI Agents — Here's What I Learned
&lt;/h1&gt;

&lt;p&gt;After months of building bots, scripts, and automation tools for DeFi, I realized I kept rewriting the same boilerplate: wallet management, RPC connections, swap execution, gas estimation, error handling...&lt;/p&gt;

&lt;p&gt;So I built &lt;strong&gt;&lt;a href="https://github.com/ulsreall/web3-agent-kit" rel="noopener noreferrer"&gt;Web3 Agent Kit&lt;/a&gt;&lt;/strong&gt; — an open-source Python framework that lets you spin up autonomous blockchain agents in 5 lines of code.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pip &lt;span class="nb"&gt;install &lt;/span&gt;web3-agent-kit
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



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

&lt;p&gt;Most Web3 automation tools suffer from one or more of these issues:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Closed-source&lt;/strong&gt; — you don't know what's happening under the hood&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Chain-specific&lt;/strong&gt; — built for Ethereum only, or Solana only&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Low-level&lt;/strong&gt; — requires deep Solidity/smart contract knowledge&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;No AI reasoning&lt;/strong&gt; — pure rule-based automation, no adaptability&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I wanted something that combines the power of LLMs with on-chain execution, across multiple chains, in Python.&lt;/p&gt;

&lt;h2&gt;
  
  
  What It Does
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. DeFi Operations (Uniswap V2 Swaps)
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;web3_agent_kit&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;Agent&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;UniswapSwap&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;SpendGovernor&lt;/span&gt;

&lt;span class="n"&gt;agent&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;Agent&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="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;AlphaSeeker&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;private_key&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;0x...&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;rpc_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://eth.llamarpc.com&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;tools&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;
        &lt;span class="nc"&gt;SpendGovernor&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;per_tx_cap&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;0.01 ETH&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;daily_cap&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;0.1 ETH&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
        &lt;span class="nc"&gt;UniswapSwap&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="p"&gt;]&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="n"&gt;result&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="n"&gt;agent&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;chat&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Swap 0.01 ETH to USDC&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The spend governor is crucial — it's a hard cap that prevents your agent from going rogue and draining your wallet. Every transaction is checked against per-tx and daily limits before execution.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Token Sniping with Risk Assessment
&lt;/h3&gt;

&lt;p&gt;The token sniper monitors Uniswap V2 &lt;code&gt;PairCreated&lt;/code&gt; events in real-time and evaluates each new token:&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;from&lt;/span&gt; &lt;span class="n"&gt;web3_agent_kit.sniper&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;TokenSniper&lt;/span&gt;

&lt;span class="n"&gt;sniper&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;TokenSniper&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;w3&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;w3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;private_key&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;0x...&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;buy_amount&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mf"&gt;0.005&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;min_liquidity&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;10000&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;callback&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;my_alert_function&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="c1"&gt;# Automatically detects new pairs, assesses risk, buys if safe
&lt;/span&gt;&lt;span class="n"&gt;sniper&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;start&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Risk assessment includes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Honeypot detection&lt;/strong&gt; — can you actually sell?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Liquidity analysis&lt;/strong&gt; — is there enough depth?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Contract verification&lt;/strong&gt; — is the source code published?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Owner analysis&lt;/strong&gt; — is there a renounced ownership?&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  3. Cross-Chain Bridging
&lt;/h3&gt;

&lt;p&gt;Instead of manually comparing routes across bridges, the agent finds the best path:&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;from&lt;/span&gt; &lt;span class="n"&gt;web3_agent_kit.bridge&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;BridgeAgent&lt;/span&gt;

&lt;span class="n"&gt;bridge&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;BridgeAgent&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;private_key&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;0x...&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="c1"&gt;# Finds cheapest route from ETH to Base
&lt;/span&gt;&lt;span class="n"&gt;result&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;bridge&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;bridge&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;from_chain&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;ethereum&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;to_chain&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;base&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;token&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;ETH&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;amount&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mf"&gt;1.0&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It queries both &lt;strong&gt;Li.Fi&lt;/strong&gt; and &lt;strong&gt;Socket&lt;/strong&gt; aggregators and picks the route with the lowest fees.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. LLM-Powered Reasoning
&lt;/h3&gt;

&lt;p&gt;This is where it gets interesting. The agent doesn't just execute — it &lt;em&gt;thinks&lt;/em&gt;:&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;from&lt;/span&gt; &lt;span class="n"&gt;web3_agent_kit.llm&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;LLMClient&lt;/span&gt;

&lt;span class="n"&gt;llm&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;LLMClient&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;  &lt;span class="c1"&gt;# Auto-detects API keys from env
&lt;/span&gt;
&lt;span class="n"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;llm&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;chat&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;system&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;You are a DeFi expert. Analyze market conditions.&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;prompt&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Should I swap ETH to USDC now? Gas is 18 gwei.&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;json_mode&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;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The LLM client supports 6 providers with automatic cascade:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Anthropic&lt;/strong&gt; (Claude) — best reasoning&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Kimi&lt;/strong&gt; (Moonshot) — long context&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;OpenRouter&lt;/strong&gt; — multi-model fallback&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;DeepSeek&lt;/strong&gt; — cheap&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Groq&lt;/strong&gt; — fast inference&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;OpenAI&lt;/strong&gt; — fallback&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If one provider hits rate limits or errors, it automatically falls back to the next.&lt;/p&gt;

&lt;h3&gt;
  
  
  5. Portfolio Tracking
&lt;/h3&gt;

&lt;p&gt;Real-time portfolio dashboard across multiple tokens:&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;from&lt;/span&gt; &lt;span class="n"&gt;web3_agent_kit.portfolio&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;Portfolio&lt;/span&gt;

&lt;span class="n"&gt;portfolio&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;Portfolio&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;w3&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;w3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;address&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;0x...&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;dashboard&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;portfolio&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get_dashboard&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;

&lt;span class="c1"&gt;# Returns:
# - Token balances with USD values
# - 24h P&amp;amp;L
# - Asset allocation
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Architecture Decisions
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Why Python?
&lt;/h3&gt;

&lt;p&gt;Most DeFi tooling is in JavaScript/TypeScript (ethers.js, viem). I chose Python because:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Better AI/ML ecosystem (LangChain, transformers, etc.)&lt;/li&gt;
&lt;li&gt;Cleaner async patterns for monitoring loops&lt;/li&gt;
&lt;li&gt;The audience I'm targeting (AI engineers) primarily uses Python&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Why Multi-Provider LLM Cascade?
&lt;/h3&gt;

&lt;p&gt;LLM APIs are unreliable. Rate limits, outages, pricing changes. A single-provider setup is a single point of failure. The cascade pattern means your agent never stops thinking.&lt;/p&gt;

&lt;h3&gt;
  
  
  Why Spend Governor?
&lt;/h3&gt;

&lt;p&gt;This is non-negotiable for autonomous agents. Without hard caps, a bug or adversarial prompt could drain your wallet. The governor is enforced at the tool level — not the LLM level — so it can't be bypassed by prompt injection.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I Learned
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Security is everything&lt;/strong&gt; — One bug in an autonomous agent can cost real money. The spend governor saved me multiple times during development.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Gas estimation is an art&lt;/strong&gt; — Not all transactions estimate gas correctly. You need fallbacks and overestimation buffers.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;LLMs are bad at math&lt;/strong&gt; — Never let your LLM calculate token amounts. Always use on-chain &lt;code&gt;getAmountsOut()&lt;/code&gt; for quotes.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Multi-chain is messy&lt;/strong&gt; — Every chain has different RPC quirks, gas models, and contract addresses. Abstract early.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Testing with real money is terrifying&lt;/strong&gt; — Use testnets, but also test on mainnet with tiny amounts ($0.01) because testnets don't behave the same.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

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



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pip &lt;span class="nb"&gt;install &lt;/span&gt;web3-agent-kit
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;GitHub:&lt;/strong&gt; &lt;a href="https://github.com/ulsreall/web3-agent-kit" rel="noopener noreferrer"&gt;github.com/ulsreall/web3-agent-kit&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;PyPI:&lt;/strong&gt; &lt;a href="https://pypi.org/project/web3-agent-kit/" rel="noopener noreferrer"&gt;pypi.org/project/web3-agent-kit&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The repo has 10 ready-to-use examples covering swaps, sniping, portfolio tracking, bridging, and LLM integration. MIT licensed — use it however you want.&lt;/p&gt;

&lt;p&gt;Contributions, issues, and feature requests are welcome. If you build something cool with it, I'd love to hear about it.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;If you found this useful, consider starring the repo on GitHub. It helps with visibility and motivates me to keep building.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>web3</category>
      <category>python</category>
      <category>ai</category>
      <category>defi</category>
    </item>
  </channel>
</rss>
