Skip to content

alingse/ankiany

Repository files navigation

AnkiAny - 智能化 Anki 卡片生成器

Python License

AnkiAny 是基于 Claude Agent SDK 构建的智能 Anki 卡片生成工具,致力于为学习者和教育工作者提供高效的知识卡片制作解决方案。

核心特性

  • 智能生成:基于 Claude AI 强大的语言理解能力生成高质量卡片
  • 多种题型:支持问答(QA)、填空(Cloze)、选择题(MCQ)等多种题型
  • 内容丰富:自动搜索和整合网络资源以提供全面的学习材料
  • Web 界面:提供现代化的 Web 界面,使用体验更加友好
  • 命令行工具:同时支持轻量级的命令行操作方式
  • 批量生成:Web 界面支持批量主题和自定义数量生成

环境要求

基础要求

  • Python 3.13+
  • uv 或 pip 包管理器

安装步骤

# 克隆仓库
git clone https://github.com/your-username/ankiany.git
cd ankiany

# 使用 uv 安装依赖
uv sync

配置说明

(可选)如果需要使用自定义 AI 模型接口,可以配置相关环境变量:

# 设置自定义 API 基础 URL(可选)
export ANTHROPIC_BASE_URL="https://open.bigmodel.cn/api/anthropic"
export ANTHROPIC_AUTH_TOKEN="your-api-key-here"

💡 重要提示:如需使用自定义 API 代理,请参考 自定义 API 配置说明 以了解如何配置 Anthropic API 兼容接口。

使用方式

1. 命令行使用

# 基础使用
python3 cli.py "MySQL"

# 详细输出模式
python3 cli.py "Python 基础语法" --verbose

# 批量主题
python3 cli.py "机器学习算法"
python3 cli.py "数据结构"
python3 cli.py "网络编程基础"

2. Web 界面使用

# 启动 Web 服务器
uvicorn web:app --host 127.0.0.1 --port 8000

然后在浏览器中访问 http://127.0.0.1:8000 即可使用 Web 界面。

Web 界面功能包括:

  • 主题输入和配置
  • 实时进度显示
  • 一键下载 .apkg 文件
  • 历史记录管理

项目结构

目录说明

ankiany/
├── core.py              # 核心模块,包含 Claude Agent 配置
├── tools.py             # 工具函数定义
├── web.py               # FastAPI Web 服务器
├── cli.py               # 命令行入口
├── session_context.py   # 会话上下文管理
配置文件
├── prompt.txt           # Agent 系统提示词
├── static/              # 静态资源
│   └── index.html       # Web 界面
└── tests/               # 测试文件

核心 Agent 工具

系统内置以下核心工具:

  1. search_web_for_topic:网络内容搜索
  2. read_web_page_content:网页内容读取
  3. create_anki_package_from_cards:Anki 卡片打包工具

扩展自定义 Agent

您可以基于 Claude Agent SDK 扩展自定义功能。

官方文档

开发指南

  1. 安装 SDK: 使用 claude-agent-sdk,请参考官方文档进行安装

  2. 创建自定义工具

from claude_agent_sdk import tool

@tool(
    "your_tool_name",
    "工具描述",
    {"param1": str, "param2": int},  # 参数定义
)
async def your_tool(args: Dict[str, Any]) -> Dict[str, Any]:
    # 工具逻辑
    return {"content": [{"type": "text", "text": "结果"}]}
  1. 配置 Agent
from claude_agent_sdk import ClaudeSDKClient, ClaudeAgentOptions

options = ClaudeAgentOptions(
    mcp_servers={"your-tools": server},
    allowed_tools=["your_tool_name"],
    system_prompt="系统提示词"
)
  1. 启动 Agent
async with ClaudeSDKClient(options=options) as client:
    await client.query("用户问题")
    async for message in client.receive_response():
        # 处理响应
        pass

贡献指南

欢迎提交 Issue 和 Pull Request!

  1. Fork 本仓库
  2. 创建特性分支 (git checkout -b feature/AmazingFeature)
  3. 提交更改 (git commit -m 'Add some AmazingFeature')
  4. 推送到分支 (git push origin feature/AmazingFeature)
  5. 开启 Pull Request

在线演示

https://ankiany.starsou.com

(注意:演示站点可能因服务器维护暂时不可用)

使用示例

生成示例

主题:"MySQL 数据库管理"

Agent 会自动:

  1. 搜索相关学习资源
  2. 生成 50+ 张学习卡片
  3. 混合多种题型:
    • 30% 基础概念题(15张)
    • 40% 进阶应用题(20张)
    • 30% 实践操作题(15张)

题型示例

问答题(QA)

问:MySQL 的默认端口号是什么?||答:3306

填空题(Cloze)

InnoDB 存储引擎使用 {{c1::MVCC}} 机制来实现并发控制。

选择题(MCQ)

以下哪个不是 MySQL 的存储引擎?||A. InnoDB
B. MyISAM
C. Redis
D. Memory||C. Redis

开源协议

本项目采用 MIT 协议 - 查看 LICENSE 文件了解详情。

相关链接


如果这个项目对您有帮助,请给我们一个 Star⭐️!

About

Anki card generator powered by Claude Agent SDK

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •