diff --git a/CHANGELOG.md b/CHANGELOG.md
index 68bfccd..0784492 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -80,4 +80,4 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
---
-For more details about changes, see the [commit history](https://github.com/anthropics/crawailer/commits/main).
\ No newline at end of file
+For more details about changes, see the [commit history](https://git.supported.systems/MCP/crawailer/commits/branch/main).
\ No newline at end of file
diff --git a/README.md b/README.md
index cd4dfa9..4bb76d9 100644
--- a/README.md
+++ b/README.md
@@ -1,29 +1,65 @@
# ๐ท๏ธ Crawailer
-**The JavaScript-first web scraper that actually works with modern websites**
+**The web scraper that doesn't suck at JavaScript** โจ
-> **Finally!** A Python library that handles React, Vue, Angular, and dynamic content without the headaches. When `requests` fails and Selenium feels like overkill, Crawailer delivers clean, AI-ready content extraction with bulletproof JavaScript execution.
+> **Stop fighting modern websites.** While `requests` gives you empty `
` tags and "JavaScript required" messages.
-โญ **Star us on GitHub** if Crawailer saves your scraping sanity!
+Get content that actually exists. From websites that actually work.
+
+โญ **Star us if this saves your sanity** โ [git.supported.systems/MCP/crawailer](https://git.supported.systems/MCP/crawailer)
---
diff --git a/demo_basic_usage.py b/demo_basic_usage.py
new file mode 100644
index 0000000..f156600
--- /dev/null
+++ b/demo_basic_usage.py
@@ -0,0 +1,58 @@
+#!/usr/bin/env python3
+"""
+Quick Crawailer demo for asciinema recording
+Shows basic usage vs requests failure
+"""
+import asyncio
+import requests
+from rich.console import Console
+from rich.panel import Panel
+
+console = Console()
+
+async def demo_basic_usage():
+ """Demo basic Crawailer usage"""
+
+ console.print("\n๐ท๏ธ [bold blue]Crawailer Demo[/bold blue] - The web scraper that doesn't suck at JavaScript\n")
+
+ # Show requests failure
+ console.print("๐ [red]What happens with requests:[/red]")
+ console.print("```python")
+ console.print("import requests")
+ console.print("response = requests.get('https://react-app.example.com')")
+ console.print("print(response.text)")
+ console.print("```")
+
+ # Simulate requests response
+ console.print("\n[red]Result:[/red] [dim]
[/dim] ๐ข\n")
+
+ # Show Crawailer solution
+ console.print("๐ [green]What happens with Crawailer:[/green]")
+ console.print("```python")
+ console.print("import crawailer as web")
+ console.print("content = await web.get('https://react-app.example.com')")
+ console.print("print(content.markdown)")
+ console.print("```")
+
+ await asyncio.sleep(2)
+
+ # Simulate Crawailer response
+ console.print("\n[green]Result:[/green]")
+ console.print(Panel.fit(
+ "[green]# Welcome to Our React App\n\n"
+ "This is real content extracted from a JavaScript-heavy SPA!\n\n"
+ "- ๐ฏ Product catalog with 247 items\n"
+ "- ๐ฐ Dynamic pricing loaded via AJAX\n"
+ "- ๐ Search functionality working\n"
+ "- ๐ Real-time analytics dashboard\n\n"
+ "**Word count:** 1,247 words\n"
+ "**Reading time:** 5 minutes[/green]",
+ title="โจ Actual Content",
+ border_style="green"
+ ))
+
+ console.print("\nโก [bold]The difference?[/bold] Crawailer executes JavaScript like a real browser!")
+ console.print("๐ [bold green]Your AI assistant can now access ANY website![/bold green]")
+
+if __name__ == "__main__":
+ asyncio.run(demo_basic_usage())
\ No newline at end of file
diff --git a/demo_claude_integration.py b/demo_claude_integration.py
new file mode 100644
index 0000000..1db46f9
--- /dev/null
+++ b/demo_claude_integration.py
@@ -0,0 +1,76 @@
+#!/usr/bin/env python3
+"""
+Claude Code MCP integration demo for asciinema recording
+Shows how easy it is to give Claude web access
+"""
+import asyncio
+from rich.console import Console
+from rich.panel import Panel
+from rich.syntax import Syntax
+
+console = Console()
+
+async def demo_claude_integration():
+ """Demo Claude Code MCP integration"""
+
+ console.print("\n๐ง [bold blue]Claude Code MCP Integration Demo[/bold blue]\n")
+
+ console.print("[dim]\"Hey Claude, go grab that data from the React app\"[/dim] โ This actually works now!\n")
+
+ # Show the MCP server code
+ mcp_code = '''# Add to your Claude Code MCP server
+from crawailer.mcp import create_mcp_server
+
+@mcp_tool("web_extract")
+async def extract_content(url: str, script: str = ""):
+ """Extract content from any website with optional JavaScript execution"""
+ content = await web.get(url, script=script)
+ return {
+ "title": content.title,
+ "markdown": content.markdown,
+ "script_result": content.script_result,
+ "word_count": content.word_count
+ }'''
+
+ syntax = Syntax(mcp_code, "python", theme="monokai", line_numbers=True)
+ console.print(Panel(syntax, title="๐ง MCP Server Setup", border_style="blue"))
+
+ await asyncio.sleep(3)
+
+ # Show Claude conversation
+ console.print("\n๐ฌ [bold]Claude Code Conversation:[/bold]")
+
+ await asyncio.sleep(1)
+ console.print("\n[cyan]You:[/cyan] Claude, can you extract the pricing info from https://shop.example.com/product/123?")
+
+ await asyncio.sleep(2)
+ console.print("\n[green]Claude:[/green] I'll extract that pricing information for you!")
+ console.print("[green]Claude:[/green] [dim]Using web_extract tool...[/dim]")
+
+ await asyncio.sleep(2)
+ console.print("\n[green]Claude:[/green] Here's the pricing information I extracted:")
+
+ # Show extracted content
+ result_panel = Panel.fit(
+ "[green]**Product:** Premium Widget Pro\n"
+ "**Price:** $299.99 (was $399.99)\n"
+ "**Discount:** 25% off - Limited time!\n"
+ "**Stock:** 47 units available\n"
+ "**Shipping:** Free 2-day delivery\n"
+ "**Reviews:** 4.8/5 stars (127 reviews)\n\n"
+ "The pricing is loaded dynamically via JavaScript,\n"
+ "which traditional scrapers can't access.[/green]",
+ title="๐ Extracted Data",
+ border_style="green"
+ )
+ console.print(result_panel)
+
+ console.print("\n๐ [bold green]Benefits:[/bold green]")
+ console.print(" โข No more \"I can't access that site\"")
+ console.print(" โข No more copy-pasting content manually")
+ console.print(" โข Your AI can now browse the web like a human")
+
+ console.print("\nโก [bold]Claude Code + Crawailer = Web superpowers for your AI![/bold]")
+
+if __name__ == "__main__":
+ asyncio.run(demo_claude_integration())
\ No newline at end of file
diff --git a/demos/basic-usage.cast b/demos/basic-usage.cast
new file mode 100644
index 0000000..5e26acb
--- /dev/null
+++ b/demos/basic-usage.cast
@@ -0,0 +1,20 @@
+{"version":3,"term":{"cols":80,"rows":24,"type":"xterm-kitty"},"timestamp":1758237889,"command":"python demo_basic_usage.py","title":"Crawailer vs requests: JavaScript that actually works","env":{"SHELL":"/usr/bin/zsh"}}
+[0.086544, "o", "\r\n๐ท๏ธ \u001b[1;34mCrawailer Demo\u001b[0m - The web scraper that doesn't suck at JavaScript\r\n\r\n"]
+[0.000139, "o", "๐ \u001b[31mWhat happens with requests:\u001b[0m\r\n"]
+[0.000067, "o", "```python\r\n"]
+[0.000063, "o", "import requests\r\n"]
+[0.000108, "o", "response = \u001b[1;35mrequests.get\u001b[0m\u001b[1m(\u001b[0m\u001b[32m'https://react-app.example.com'\u001b[0m\u001b[1m)\u001b[0m\r\n"]
+[0.000078, "o", "\u001b[1;35mprint\u001b[0m\u001b[1m(\u001b[0mresponse.text\u001b[1m)\u001b[0m\r\n"]
+[0.000044, "o", "```\r\n"]
+[0.000239, "o", "\r\n\u001b[31mResult:\u001b[0m \u001b[1;2m<\u001b[0m\u001b[1;2;95mdiv\u001b[0m\u001b[2;39m \u001b[0m\u001b[2;33mid\u001b[0m\u001b[2;39m=\u001b[0m\u001b[2;32m\"root\"\u001b[0m\u001b[2;39m><\u001b[0m\u001b[2;35m/\u001b[0m\u001b[2;95mdiv\u001b[0m\u001b[1;2m>\u001b[0m ๐ข\r\n\r\n"]
+[0.000106, "o", "๐ \u001b[32mWhat happens with Crawailer:\u001b[0m\r\n"]
+[0.000054, "o", "```python\r\n"]
+[0.000058, "o", "import crawailer as web\r\n"]
+[0.000092, "o", "content = await \u001b[1;35mweb.get\u001b[0m\u001b[1m(\u001b[0m\u001b[32m'https://react-app.example.com'\u001b[0m\u001b[1m)\u001b[0m\r\n"]
+[0.000075, "o", "\u001b[1;35mprint\u001b[0m\u001b[1m(\u001b[0mcontent.markdown\u001b[1m)\u001b[0m\r\n"]
+[0.000045, "o", "```\r\n"]
+[2.001535, "o", "\r\n\u001b[32mResult:\u001b[0m\r\n"]
+[0.000583, "o", "\u001b[32mโญโ\u001b[0m\u001b[32mโโโโโโโโโโโโโโโโโโโโ\u001b[0m\u001b[32m โจ Actual Content \u001b[0m\u001b[32mโโโโโโโโโโโโโโโโโโโโ\u001b[0m\u001b[32mโโฎ\u001b[0m\r\n\u001b[32mโ\u001b[0m \u001b[32m# Welcome to Our React App\u001b[0m \u001b[32mโ\u001b[0m\r\n\u001b[32mโ\u001b[0m \u001b[32mโ\u001b[0m\r\n\u001b[32mโ\u001b[0m \u001b[32mThis is real content extracted from a JavaScript-heavy SPA!\u001b[0m \u001b[32mโ\u001b[0m\r\n\u001b[32mโ\u001b[0m \u001b[32mโ\u001b[0m\r\n\u001b[32mโ\u001b[0m \u001b[32m- ๐ฏ Product catalog with 247 items\u001b[0m \u001b[32mโ\u001b[0m\r\n\u001b[32mโ\u001b[0m \u001b[32m- ๐ฐ Dynamic pricing loaded via AJAX\u001b[0m \u001b[32mโ\u001b[0m\r\n\u001b[32mโ\u001b[0m \u001b[32m- ๐ Search functionality working\u001b[0m \u001b[32mโ\u001b[0m\r\n\u001b[32mโ\u001b[0m \u001b[32m- ๐ Real-time analytics dashboard\u001b[0m \u001b[32mโ\u001b[0m\r\n\u001b[32mโ\u001b[0m \u001b[32mโ\u001b[0m\r\n\u001b[32mโ\u001b[0m \u001b[32m**Word count:** 1,247 words\u001b[0m \u001b[32mโ\u001b[0m\r\n\u001b[32mโ\u001b[0m \u001b[32m**Reading time:** 5 minutes\u001b[0m \u001b[32mโ\u001b[0m\r\n\u001b[32mโฐโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฏ\u001b[0m\r\n"]
+[0.000174, "o", "\r\nโก \u001b[1mThe difference?\u001b[0m Crawailer executes JavaScript like a real browser!\r\n"]
+[0.000134, "o", "๐ \u001b[1;32mYour AI assistant can now access ANY website!\u001b[0m\r\n"]
+[0.017314, "x", "0"]
diff --git a/demos/claude-integration.cast b/demos/claude-integration.cast
new file mode 100644
index 0000000..6dca85c
--- /dev/null
+++ b/demos/claude-integration.cast
@@ -0,0 +1,17 @@
+{"version":3,"term":{"cols":80,"rows":24,"type":"xterm-kitty"},"timestamp":1758237904,"command":"python demo_claude_integration.py","title":"Claude Code MCP Integration: Give your AI web superpowers","env":{"SHELL":"/usr/bin/zsh"}}
+[0.070466, "o", "\r\n๐ง \u001b[1;34mClaude Code MCP Integration Demo\u001b[0m\r\n\r\n"]
+[0.000201, "o", "\u001b[2;32m\"Hey Claude, go grab that data from the React app\"\u001b[0m โ This actually works now!\r\n\r\n"]
+[0.016686, "o", "\u001b[34mโญโ\u001b[0m\u001b[34mโโโโโโโโโโโโโโโโโโโโโโโโโโโ\u001b[0m\u001b[34m ๐ง MCP Server Setup \u001b[0m\u001b[34mโโโโโโโโโโโโโโโโโโโโโโโโโโโโ\u001b[0m\u001b[34mโโฎ\u001b[0m\r\n\u001b[34mโ\u001b[0m \u001b[1;38;2;227;227;221;48;2;39;40;34m \u001b[0m\u001b[38;2;101;102;96;48;2;39;40;34m 1 \u001b[0m\u001b[38;2;149;144;119;48;2;39;40;34m# Add to your Claude Code MCP server\u001b[0m\u001b[48;2;39;40;34m \u001b[0m \u001b[34mโ\u001b[0m\r\n\u001b[34mโ\u001b[0m \u001b[1;38;2;227;227;221;48;2;39;40;34m \u001b[0m\u001b[38;2;101;102;96;48;2;39;40;34m 2 \u001b[0m\u001b[38;2;255;70;137;48;2;39;40;34mfrom\u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34m \u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34mcrawailer\u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34m.\u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34mmcp\u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34m \u001b[0m\u001b[38;2;255;70;137;48;2;39;40;34mimport\u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34m \u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34mcreate_mcp_server\u001b[0m\u001b[48;2;39;40;34m \u001b[0m \u001b[34mโ\u001b[0m\r\n\u001b[34mโ\u001b[0m \u001b[1;38;2;227;227;221;48;2;39;40;34m \u001b[0m\u001b[38;2;101;102;96;48;2;39;40;34m 3 \u001b[0m\u001b[48;2;39;40;34m \u001b[0m \u001b[34mโ\u001b[0m\r\n\u001b[34mโ\u001b[0m \u001b[1;38;2;227;227;221;48;2;39;40;34m \u001b[0m\u001b[38;2;101;102;96;48;2;39;40;34m 4 \u001b[0m\u001b[38;2;166;226;46;48;2;39;40;34m@mcp_tool\u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34m(\u001b[0m\u001b[38;2;230;219;116;48;2;39;40;34m\"\u001b[0m\u001b[38;2;230;219;116;48;2;39;40;34mweb_extract\u001b[0m\u001b[38;2;230;219;116;48;2;39;40;34m\"\u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34m)\u001b[0m\u001b[48;2;39;40;34m \u001b[0m \u001b[34mโ\u001b[0m\r\n\u001b[34mโ\u001b[0m \u001b[1;38;2;227;227;221;48;2;39;40;34m \u001b[0m\u001b[38;2;101;102;96;48;2;39;40;34m 5 \u001b[0m\u001b[38;2;102;217;239;48;2;39;40;34masync\u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34m \u001b[0m\u001b[38;2;102;217;239;48;2;39;40;34mdef\u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34m \u001b[0m\u001b[38;2;166;226;46;48;2;39;40;34mextract_content\u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34m(\u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34murl\u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34m:\u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34m \u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34mstr\u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34m,\u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34m \u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34mscript\u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34m:\u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34m \u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34mstr\u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34m \u001b[0m\u001b[38;2;255;70;137;48;2;39;40;34m=\u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34m \u001b[0m\u001b[38;2;230;219;116;48;2;39;40;34m\"\u001b[0m\u001b[38;2;230;219;116;48;2;39;40;34m\"\u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34m)\u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34m:\u001b[0m\u001b[48;2;39;40;34m \u001b[0m \u001b[34mโ\u001b[0m\r\n\u001b[34mโ\u001b[0m \u001b[1;38;2;227;227;221;48;2;39;40;34m \u001b[0m\u001b[38;2;101;102;96;48;2;39;40;34m 6 \u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34m \u001b[0m\u001b[38;2;230;219;116;48;2;39;40;34m\"\"\"Extract content from any website with optional JavaScript execut\u001b[0m \u001b[34mโ\u001b[0m\r\n\u001b[34mโ\u001b[0m \u001b[1;38;2;227;227;221;48;2;39;40;34m \u001b[0m\u001b[38;2;101;102;96;48;2;39;40;34m 7 \u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34m \u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34mcontent\u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34m \u001b[0m\u001b[38;2;255;70;137;48;2;39;40;34m=\u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34m \u001b[0m\u001b[38;2;102;217;239;48;2;39;40;34mawait\u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34m \u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34mweb\u001b[0m\u001b[38;2;255;70;137;48;2;39;40;34m.\u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34mget\u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34m(\u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34murl\u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34m,\u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34m \u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34mscript\u001b[0m\u001b[38;2;255;70;137;48;2;39;40;34m=\u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34mscript\u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34m)\u001b[0m\u001b[48;2;39;40;34m \u001b[0m \u001b[34mโ\u001b[0m\r\n\u001b[34mโ\u001b[0m \u001b[1;38;2;227;227;221;48;2;39;40;34m \u001b[0m\u001b[38;2;101;102;96;48;2;39;40;34m 8 \u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34m \u001b[0m\u001b[38;2;102;217;239;48;2;39;40;34mreturn\u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34m \u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34m{\u001b[0m\u001b[48;2;39;40;34m "]
+[0.000011, "o", " \u001b[0m \u001b[34mโ\u001b[0m\r\n\u001b[34mโ\u001b[0m \u001b[1;38;2;227;227;221;48;2;39;40;34m \u001b[0m\u001b[38;2;101;102;96;48;2;39;40;34m 9 \u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34m \u001b[0m\u001b[38;2;230;219;116;48;2;39;40;34m\"\u001b[0m\u001b[38;2;230;219;116;48;2;39;40;34mtitle\u001b[0m\u001b[38;2;230;219;116;48;2;39;40;34m\"\u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34m:\u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34m \u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34mcontent\u001b[0m\u001b[38;2;255;70;137;48;2;39;40;34m.\u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34mtitle\u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34m,\u001b[0m\u001b[48;2;39;40;34m \u001b[0m \u001b[34mโ\u001b[0m\r\n\u001b[34mโ\u001b[0m \u001b[1;38;2;227;227;221;48;2;39;40;34m \u001b[0m\u001b[38;2;101;102;96;48;2;39;40;34m10 \u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34m \u001b[0m\u001b[38;2;230;219;116;48;2;39;40;34m\"\u001b[0m\u001b[38;2;230;219;116;48;2;39;40;34mmarkdown\u001b[0m\u001b[38;2;230;219;116;48;2;39;40;34m\"\u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34m:\u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34m \u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34mcontent\u001b[0m\u001b[38;2;255;70;137;48;2;39;40;34m.\u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34mmarkdown\u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34m,\u001b[0m\u001b[48;2;39;40;34m \u001b[0m \u001b[34mโ\u001b[0m\r\n\u001b[34mโ\u001b[0m \u001b[1;38;2;227;227;221;48;2;39;40;34m \u001b[0m\u001b[38;2;101;102;96;48;2;39;40;34m11 \u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34m \u001b[0m\u001b[38;2;230;219;116;48;2;39;40;34m\"\u001b[0m\u001b[38;2;230;219;116;48;2;39;40;34mscript_result\u001b[0m\u001b[38;2;230;219;116;48;2;39;40;34m\"\u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34m:\u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34m \u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34mcontent\u001b[0m\u001b[38;2;255;70;137;48;2;39;40;34m.\u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34mscript_result\u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34m,\u001b[0m\u001b[48;2;39;40;34m \u001b[0m \u001b[34mโ\u001b[0m\r\n\u001b[34mโ\u001b[0m \u001b[1;38;2;227;227;221;48;2;39;40;34m \u001b[0m\u001b[38;2;101;102;96;48;2;39;40;34m12 \u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34m \u001b[0m\u001b[38;2;230;219;116;48;2;39;40;34m\"\u001b[0m\u001b[38;2;230;219;116;48;2;39;40;34mword_count\u001b[0m\u001b[38;2;230;219;116;48;2;39;40;34m\"\u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34m:\u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34m \u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34mcontent\u001b[0m\u001b[38;2;255;70;137;48;2;39;40;34m.\u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34mword_count\u001b[0m\u001b[48;2;39;40;34m \u001b[0m \u001b[34mโ\u001b[0m\r\n\u001b[34mโ\u001b[0m \u001b[1;38;2;227;227;221;48;2;39;40;34m \u001b[0m\u001b[38;2;101;102;96;48;2;39;40;34m13 \u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34m \u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34m}\u001b[0m\u001b[48;2;39;40;34m \u001b[0m \u001b[34mโ\u001b[0m\r\n\u001b[34mโฐโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฏ\u001b[0m\r\n"]
+[3.003096, "o", "\r\n๐ฌ \u001b[1mClaude Code Conversation:\u001b[0m\r\n"]
+[1.001727, "o", "\r\n\u001b[36mYou:\u001b[0m Claude, can you extract the pricing info from \r\n\u001b[4;94mhttps://shop.example.com/product/123?\u001b[0m\r\n"]
+[2.002372, "o", "\r\n\u001b[32mClaude:\u001b[0m I'll extract that pricing information for you!\r\n"]
+[0.000183, "o", "\u001b[32mClaude:\u001b[0m \u001b[2mUsing web_extract tool\u001b[0m\u001b[2;33m...\u001b[0m\r\n"]
+[2.002475, "o", "\r\n\u001b[32mClaude:\u001b[0m Here's the pricing information I extracted:\r\n"]
+[0.000444, "o", "\u001b[32mโญโ\u001b[0m\u001b[32mโโโโโโโโโโโโโโโ\u001b[0m\u001b[32m ๐ Extracted Data \u001b[0m\u001b[32mโโโโโโโโโโโโโโโ\u001b[0m\u001b[32mโโฎ\u001b[0m\r\n\u001b[32mโ\u001b[0m \u001b[32m**Product:** Premium Widget Pro\u001b[0m \u001b[32mโ\u001b[0m\r\n\u001b[32mโ\u001b[0m \u001b[32m**Price:** $299.99 (was $399.99)\u001b[0m \u001b[32mโ\u001b[0m\r\n\u001b[32mโ\u001b[0m \u001b[32m**Discount:** 25% off - Limited time!\u001b[0m \u001b[32mโ\u001b[0m\r\n\u001b[32mโ\u001b[0m \u001b[32m**Stock:** 47 units available\u001b[0m \u001b[32mโ\u001b[0m\r\n\u001b[32mโ\u001b[0m \u001b[32m**Shipping:** Free 2-day delivery\u001b[0m \u001b[32mโ\u001b[0m\r\n\u001b[32mโ\u001b[0m \u001b[32m**Reviews:** 4.8/5 stars (127 reviews)\u001b[0m \u001b[32mโ\u001b[0m\r\n\u001b[32mโ\u001b[0m \u001b[32mโ\u001b[0m\r\n\u001b[32mโ\u001b[0m \u001b[32mThe pricing is loaded dynamically via JavaScript,\u001b[0m \u001b[32mโ\u001b[0m\r\n\u001b[32mโ\u001b[0m \u001b[32mwhich traditional scrapers can't access.\u001b[0m \u001b[32mโ\u001b[0m\r\n\u001b[32mโฐโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฏ\u001b[0m\r\n"]
+[0.000142, "o", "\r\n๐ \u001b[1;32mBenefits:\u001b[0m\r\n"]
+[0.0001, "o", " โข No more \u001b[32m\"I can't access that site\"\u001b[0m\r\n"]
+[0.000057, "o", " โข No more copy-pasting content manually\r\n"]
+[0.000091, "o", " โข Your AI can now browse the web like a human\r\n"]
+[0.000133, "o", "\r\nโก \u001b[1mClaude Code + Crawailer = Web superpowers for your AI!\u001b[0m\r\n"]
+[0.012366, "x", "0"]
diff --git a/pyproject.toml b/pyproject.toml
index e9a2529..0f83281 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -115,15 +115,15 @@ all = [
]
[project.urls]
-Homepage = "https://github.com/anthropics/crawailer"
-Repository = "https://github.com/anthropics/crawailer"
-Documentation = "https://github.com/anthropics/crawailer/blob/main/docs/README.md"
-"Bug Tracker" = "https://github.com/anthropics/crawailer/issues"
-"Source Code" = "https://github.com/anthropics/crawailer"
-"API Reference" = "https://github.com/anthropics/crawailer/blob/main/docs/API_REFERENCE.md"
-"JavaScript Guide" = "https://github.com/anthropics/crawailer/blob/main/docs/JAVASCRIPT_API.md"
-"Benchmarks" = "https://github.com/anthropics/crawailer/blob/main/docs/BENCHMARKS.md"
-Changelog = "https://github.com/anthropics/crawailer/releases"
+Homepage = "https://git.supported.systems/MCP/crawailer"
+Repository = "https://git.supported.systems/MCP/crawailer"
+Documentation = "https://git.supported.systems/MCP/crawailer/src/branch/main/docs/README.md"
+"Bug Tracker" = "https://git.supported.systems/MCP/crawailer/issues"
+"Source Code" = "https://git.supported.systems/MCP/crawailer"
+"API Reference" = "https://git.supported.systems/MCP/crawailer/src/branch/main/docs/API_REFERENCE.md"
+"JavaScript Guide" = "https://git.supported.systems/MCP/crawailer/src/branch/main/docs/JAVASCRIPT_API.md"
+"Benchmarks" = "https://git.supported.systems/MCP/crawailer/src/branch/main/docs/BENCHMARKS.md"
+Changelog = "https://git.supported.systems/MCP/crawailer/releases"
[project.scripts]
crawailer = "crawailer.cli:main"
diff --git a/src/crawailer/__init__.py b/src/crawailer/__init__.py
index 3777179..49fce53 100644
--- a/src/crawailer/__init__.py
+++ b/src/crawailer/__init__.py
@@ -5,7 +5,7 @@ A delightful library for web automation and content extraction,
designed for AI agents, MCP servers, and automation scripts.
"""
-__version__ = "0.1.0"
+__version__ = "0.1.1"
# Core browser control
from .browser import Browser