{"id":26516616,"url":"https://github.com/hqarroum/git-scribe","last_synced_at":"2026-04-12T20:51:12.843Z","repository":{"id":282874993,"uuid":"939358867","full_name":"HQarroum/git-scribe","owner":"HQarroum","description":"✍️ Chain-of-Agents based article generation based on directory analysis.","archived":false,"fork":false,"pushed_at":"2025-03-17T11:57:46.000Z","size":5613,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-17T12:35:10.189Z","etag":null,"topics":["agents","ai","article-generator","chain-of-agents","llm"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/HQarroum.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2025-02-26T12:16:14.000Z","updated_at":"2025-03-17T12:34:20.000Z","dependencies_parsed_at":"2025-03-17T12:36:45.682Z","dependency_job_id":"e45d815b-60a1-4705-b4e7-d53be03e4f7c","html_url":"https://github.com/HQarroum/git-scribe","commit_stats":null,"previous_names":["hqarroum/git-scribe"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/HQarroum%2Fgit-scribe","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/HQarroum%2Fgit-scribe/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/HQarroum%2Fgit-scribe/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/HQarroum%2Fgit-scribe/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/HQarroum","download_url":"https://codeload.github.com/HQarroum/git-scribe/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244752311,"owners_count":20504256,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["agents","ai","article-generator","chain-of-agents","llm"],"created_at":"2025-03-21T07:19:21.463Z","updated_at":"2026-04-12T20:51:07.783Z","avatar_url":"https://github.com/HQarroum.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cbr /\u003e\n\u003cp align=\"center\"\u003e\n  \u003cimg width=\"250\" src=\"assets/icon.png\" alt=\"logo\" /\u003e\n  \u003cbr /\u003e\n  \u003cp align=\"center\"\u003eGenerate Blog Posts and Research papers from Git Repositories using a chain-of-agents.\u003c/p\u003e\n  \u003cp align=\"center\"\u003e\n    \u003ca href=\"https://github.com/codespaces/new/HQarroum/git-scribe\"\u003e\n      \u003cimg alt=\"Github Codespaces\" src=\"https://github.com/codespaces/badge.svg\" /\u003e\n    \u003c/a\u003e\n  \u003c/p\u003e\n\u003c/p\u003e\n\u003cbr /\u003e\n\n## 🔖 Features\n\n- 📰 **Article Generation** - Creates an article (blog, post, research paper, tutorial, or technical documentation) based on a Git repository.\n- 📦 **Repository Analysis** - Analyzes a Git repository to extract relevant information and packages the code using [Repomix](https://github.com/yamadashy/repomix).\n- 💁 **Integrate with Tools** - Uses a chain-of-agents to analyze the Git repository, scrape the web for additional information, and curate the article.\n- 🔎 **Research Agent** - A research agent is used to create a research paper and a bibliography of the repository to ground the article generation.\n- 📈 **Evaluations** - Provides an optional evaluation of the quality of the written document following different metrics.\n\n## ✍️ Examples\n\nBelow are a few examples of documents generated with GitScribe, ranging from blog post, to technical `README.md` generations, to research papers.\n\n\u003cbr /\u003e\n\u003ctable\u003e\n  \u003ctr align=\"center\"\u003e\n    \u003ctd\u003e\n      \u003ca href=\"./examples/fastembed-technical-documentation.md\"\u003e\n        \u003cimg width=\"260\" src=\"examples/openmanus-example.png\" /\u003e\n      \u003c/a\u003e\n    \u003c/td\u003e\n    \u003ctd\u003e\n      \u003ca href=\"./examples/fastembed-technical-documentation.md\"\u003e\n        \u003cimg width=\"260\" src=\"examples/fastembed-example.png\" /\u003e\n      \u003c/a\u003e\n    \u003c/td\u003e\n    \u003ctd\u003e\n      \u003ca href=\"./examples/steelbrowser-research-paper.md\"\u003e\n        \u003cimg width=\"260\" src=\"examples/steelbrowser-example.png\" /\u003e\n      \u003c/a\u003e\n    \u003c/td\u003e\n    \u003ctd\u003e\n      \u003ca href=\"./examples/whisperplus-tutorial.md\"\u003e\n        \u003cimg width=\"260\" src=\"examples/whisperplus-example.png\" /\u003e\n      \u003c/a\u003e\n    \u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\"\u003e\n      \u003ca href=\"./examples/openmanus-blog-post.md\"\u003eBlog Post on OpenManus\u003c/a\u003e\n    \u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\n      \u003ca href=\"./examples/fastembed-technical-documentation.md\"\u003eREADME.md for FastEmbed\u003c/a\u003e\n    \u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\n      \u003ca href=\"./examples/steelbrowser-research-paper.md\"\u003eResearch Paper on SteelBrowser\u003c/a\u003e\n    \u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\n      \u003ca href=\"./examples/whisperplus-tutorial.md\"\u003eTutorial on WhisperPlus\u003c/a\u003e\n    \u003c/td\u003e\n  \u003c/tr\u003e\n\u003c/table\u003e\n\u003cbr /\u003e\n\n## How it works ❓\n\nGit Scribe implements a chain-of-agents to analyze a Git repository, issue research on the topics and techniques used in the code, and generate a Markdown file that can be either a blog post, a tutorial, a research paper, or a technical documentation. At a high-level the process looks as follows.\n\n\u003cp align=\"center\"\u003e\n  \u003cimg width=\"900\" src=\"assets/diagram.png\" alt=\"flow\" /\u003e\n\u003c/p\u003e\n\nGit Scribe implements a prompt compression technique by using a **Researcher Agent** that produces a detailed research and bibliography of the repository. In addition, it also elects the most relevant code (up to 15k tokens) to be used by the **Writers** in order to reduce the input token consumption of agents further down the chain.\n\n## 🚀 Quickstart\n\n### Using `npm`\n\n```bash\nnpm install -g git-scribe-cli\n```\n\n### Environment\n\nGitScribe depends on the [OpenAI API](https://platform.openai.com/docs/overview) for generating content and reasoning, the [Firecrawl API](https://www.firecrawl.dev/) (use free tier) for scraping websites, and [Tavily](https://tavily.com/) (use free tier) for web search. You must export their respective API keys before running GitScribe.\n\n```bash\nexport OPENAI_API_KEY=\u003cyour-openai-api-key\u003e\nexport FIRECRAWL_API_KEY=\u003cyour-firecrawl-api-key\u003e\nexport TAVILY_API_KEY=\u003cyour-tavily-api-key\u003e\n```\n\n### Usage\n\nWe'll start by generating a blog post based on the [Perplexica](https://github.com/ItzCrazyKns/Perplexica) project which is an open-source clone of Perplexity.\n\n```bash\ngit-scribe \\\n  --repository https://github.com/ItzCrazyKns/Perplexica \\\n  --output ./perplexica-blog-post.md\n```\n\nYou will then be prompted by an AI agent to provide information on how to write the blog post and what features you are interested to highlight about the project. \n\n\u003cbr /\u003e\n\u003cp align=\"center\"\u003e\n  \u003cimg width=\"850\" src=\"assets/prompt.png\" alt=\"logo\" /\u003e\n\u003cbr /\u003e\n\nBelow is an example prompt you can use.\n\n\u003e 💁 \"I would like you to write a blog post on the Perplexica project, what features it brings, how it compares to the Perplexity AI-powered search engine, and how it can be used in a real-world scenario. Make it clear how to install and use the project. Make it informal, engaging, use emojis where you see fit.\"\n\nThe process of writing the blog post takes generally between 4 to 5 minutes. See an example result of this prompt [here](./examples/perplexica-blog-post.md).\n\n## 📟 Options\n\n- `-r` or `--repository` - The URL or local path of the Git repository to analyze.\n- `-o` or `--output` - Path to the output file where to store the generated document (must be a Markdown file, and end with `.md`).\n- `-p` or `--research-output` - Path to the output file where to store the intermediary generated research paper (for debugging purposes).\n- `-e` or `--enable-reviewer` - Enable the reviewer agent to evaluate the quality of the generated document.\n- `-h` or `--help` - Display the help message.\n\n## 🚧 Limitations\n\n- If the repository content exceeds 140k tokens, GitScribe will only process the first 140k tokens which may result in a loss of accuracy.\n- This repository makes heavy use of the `o3-mini` model for its reasoning abilities and low cost, which at the time of writing, is behaving rather poorly with tool use on large context windows. This can result in the model not being able to conduct extended web search.\n\n## 🤖 Models\n\nThis application uses the [Vercel AI SDK](https://sdk.vercel.ai/docs/introduction) and exposes the models it uses for each agent in the [`providers`](./src//providers.ts) file. You can change the models being used by modifying the model you want to use for each agent in the file and use another provider such as [OpenRouter](https://sdk.vercel.ai/providers/community-providers/openrouter), [Ollama](https://sdk.vercel.ai/providers/community-providers/ollama), or [Anthropic](https://sdk.vercel.ai/providers/ai-sdk-providers/anthropic).\n\n## 👀 See Also\n\n- [Repomix](https://github.com/yamadashy/repomix) - Packages content from a Git repository into a single prompt.\n- [Firecrawl API](https://www.firecrawl.dev/) - A web scraping API optimized for LLMs.\n- [Tavily](https://tavily.com/) - An API for finding relevant web pages or images for a given query.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhqarroum%2Fgit-scribe","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhqarroum%2Fgit-scribe","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhqarroum%2Fgit-scribe/lists"}