{"id":46180093,"url":"https://github.com/cmhac/chat-extract","last_synced_at":"2026-03-02T19:43:57.210Z","repository":{"id":286906477,"uuid":"962932237","full_name":"cmhac/chat-extract","owner":"cmhac","description":"Experimental tool to extract data from screen recordings of text chats","archived":false,"fork":false,"pushed_at":"2025-09-02T15:53:40.000Z","size":8737,"stargazers_count":2,"open_issues_count":4,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-09-02T17:31:01.027Z","etag":null,"topics":["chat-app","osint","text-extraction"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/cmhac.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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-04-08T22:35:32.000Z","updated_at":"2025-09-02T16:08:13.000Z","dependencies_parsed_at":"2025-04-09T20:32:29.505Z","dependency_job_id":null,"html_url":"https://github.com/cmhac/chat-extract","commit_stats":null,"previous_names":["cmhac/chat-extract","cbs-news-data/chat-extract"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/cmhac/chat-extract","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cmhac%2Fchat-extract","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cmhac%2Fchat-extract/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cmhac%2Fchat-extract/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cmhac%2Fchat-extract/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cmhac","download_url":"https://codeload.github.com/cmhac/chat-extract/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cmhac%2Fchat-extract/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30016821,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-02T17:00:27.440Z","status":"ssl_error","status_checked_at":"2026-03-02T17:00:03.402Z","response_time":60,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["chat-app","osint","text-extraction"],"created_at":"2026-03-02T19:43:56.607Z","updated_at":"2026-03-02T19:43:57.180Z","avatar_url":"https://github.com/cmhac.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# chat-extract\n\n\u003c!-- docs/badge/coverage-badge.svg --\u003e\n\n![Coverage Status](docs/badge/coverage-badge.svg)\n![Tests](docs/badge/tests-badge.svg)\n\nExtract data from a screen recording of a chat conversation.\n\nChat-extract uses the OpenAI API to extract chat messages from a screen recording. It splits the video into frames, then passes those frames directly to a vision-enabled LLM to extract the chat messages. The extracted messages are then saved to a CSV file.\n\nBecause it uses a vision-enabled LLM, it can extract messages from any chat application, including WhatsApp, Telegram, and Discord. The downside of this is that it can only extract what is visible on the screen, so certain messaging platforms may not display things like dates or timestamps for every message.\n\nIt turns an video like this:\n\n\u003cimg src=\"docs/screen-recording-example.gif\" alt=\"example screen recording\" style=\"max-width: 300px; width: 100%;\"\u003e\n\nInto a CSV file like this:\n\n| sender       | message                                                                                | timestamp |\n| ------------ | -------------------------------------------------------------------------------------- | --------- |\n| Connor Smith | \"Hey, where should we go for lunch today in SoHo?\"                                     |           |\n|              | \"How about that new place, The Green Stove?\"                                           |           |\n| Connor Smith | I heard it’s good! But I’m in the mood for something different. Any other suggestions? |           |\n|              | \"What about Fable \u0026 Fork? It’s got great reviews.\"                                     |           |\n| Connor Smith | \"Ooh, that sounds nice. What kind of food do they have?\"                               |           |\n|              | \"Mostly farm-to-table, a lot of seasonal options.\"                                     |           |\n| Connor Smith | \"That’s perfect. I’m craving something fresh. Is it far from here?\"                    |           |\n|              | \"No, just a few blocks away! We could walk there in about 10 minutes.\"                 |           |\n| Connor Smith | \"Alright, but I just remembered, I’m kind of in the mood for sushi.\"                   |           |\n|              | \"In that case, let’s hit up Sushi Sora.\"                                               |           |\n| Connor Smith | \"I’ve been meaning to try that place!\"                                                 |           |\n|              | \"How about that new place, The Green Stove?\"                                           |           |\n\n\n## Installation\n\nSince this project is not published on PyPI, you must install it from GitHub.\n\n### Install via pipx from GitHub:\n\n```bash\npipx install git+https://github.com/cmhac/chat-extract.git\n```\n\n**Note:** After installation, make sure the pipx binary directory is in your PATH. Run `pipx ensurepath` if needed and restart your terminal.\n\n### Alternative: Install from local source\n\nIf you want to install from a local clone:\n\n```bash\n# Clone the repository first\ngit clone https://github.com/cmhac/chat-extract.git\ncd chat-extract\n\n# Install via pipx from local source\npipx install .\n```\n\n### Setting up OpenAI API Key\n\n**Set your OpenAI API key** (required for the tool to run):\n\nTemporary for current session:\n```bash\nexport OPENAI_API_KEY=\"your_api_key_here\"\n```\n\nPermanent (add to your shell's config file like ~/.bashrc or ~/.zshrc):\n```bash\necho 'export OPENAI_API_KEY=\"your_api_key_here\"' \u003e\u003e ~/.bashrc\nsource ~/.bashrc\n```\n\nYou can also put it in a `.env` file in the folder you run the tool from:\n```\nOPENAI_API_KEY=your_api_key_here\n```\n\n---\n\n## Usage\n\n**Basic syntax:**\n```bash\nchat-extract VIDEO_PATH --output-path OUTPUT.csv [--n FRAMESKIP]\n```\n\nExample with the included demo GIF:\n```bash\nchat-extract \"docs/screen-recording-example.gif\" --output-path \"output.csv\"\n```\n\nFor help with all available options:\n```bash\nchat-extract --help\n```\n\n## Limitations\n\nBecause this tool uses a vision-enabled LLM, it can only extract what is visible on the screen. This means that certain messaging platforms may not display things like dates or timestamps for every message. However, it does mean that it can extract messages from any chat application, including WhatsApp, Telegram, and Discord.\n\nThis tool is not perfect. It may misinterpret messages or fail to extract them altogether. It is recommended to review the extracted messages for accuracy and completeness.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcmhac%2Fchat-extract","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcmhac%2Fchat-extract","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcmhac%2Fchat-extract/lists"}