{"id":51301539,"url":"https://github.com/teles/extractkit","last_synced_at":"2026-06-30T20:02:21.784Z","repository":{"id":360583439,"uuid":"1247939424","full_name":"teles/extractkit","owner":"teles","description":"ExtractKit is a Chrome extension for creating and running local data extraction recipes on web pages.","archived":false,"fork":false,"pushed_at":"2026-05-27T02:08:58.000Z","size":366,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-27T04:12:00.272Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"TypeScript","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/teles.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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-05-24T01:28:56.000Z","updated_at":"2026-05-27T02:09:02.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/teles/extractkit","commit_stats":null,"previous_names":["teles/extractkit"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/teles/extractkit","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/teles%2Fextractkit","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/teles%2Fextractkit/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/teles%2Fextractkit/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/teles%2Fextractkit/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/teles","download_url":"https://codeload.github.com/teles/extractkit/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/teles%2Fextractkit/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34981391,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-30T02:00:05.919Z","response_time":92,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":[],"created_at":"2026-06-30T20:02:19.076Z","updated_at":"2026-06-30T20:02:21.767Z","avatar_url":"https://github.com/teles.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ExtractKit\n\nExtractKit is a Chrome Manifest V3 extension for creating and running local data extraction recipes on web pages.\n\nA recipe describes what should be extracted from the active tab using CSS selectors. ExtractKit runs the recipe from the Chrome Side Panel, previews the structured JSON output, and lets you save runs locally using `chrome.storage.local`.\n\nThe project is intentionally local-first: there is no backend, login, cloud sync, or public recipe registry in the MVP.\n\n## Features\n\n- Create reusable extraction recipes with CSS selectors.\n- Run compatible recipes against the active Chrome tab.\n- Extract single values, simple lists, and repeated item groups.\n- Preview extracted data as JSON.\n- Save extraction runs locally.\n- Import recipes from JSON or ZIP files.\n- Export saved runs as a structured ZIP file.\n- Keep all recipe and run data in the browser.\n\n## Tech Stack\n\n- Chrome Extension Manifest V3\n- Chrome Side Panel API\n- Vue 3\n- Vite\n- TypeScript\n- Vue Router\n- Tailwind CSS\n- JSZip\n- pnpm\n- `chrome.storage.local`\n\n## Requirements\n\n- Node.js 18 or higher\n- pnpm\n- Google Chrome 116 or higher\n\n## Install Dependencies\n\n```bash\npnpm install\n```\n\n## Run in Development\n\n```bash\npnpm dev\n```\n\nThe Vite development server is useful for working on the UI, but Chrome extension APIs are only available when the built extension is loaded in Chrome.\n\n## Build\n\n```bash\npnpm build\n```\n\nThe production build is generated in the `dist/` directory.\n\n## Load the Extension in Chrome\n\n1. Open `chrome://extensions`.\n2. Enable Developer Mode.\n3. Click **Load unpacked**.\n4. Select the `dist/` directory.\n5. Click the ExtractKit extension icon to open the Side Panel.\n\n## Core Concepts\n\n### Recipe\n\nA recipe is a reusable extraction configuration. It defines URL patterns, fields, selectors, extraction modes, and optional transforms.\n\n### Field Types\n\nExtractKit supports three main extraction shapes:\n\n- **Single value**: extracts one value from the page.\n- **Simple list**: extracts a list of values from matching elements.\n- **Item list**: extracts repeated objects from a base selector, such as cards, products, links, or images.\n\n### Run\n\nA run is the result of executing a recipe on a specific URL. Runs can be previewed, saved locally, and exported later.\n\n## Create a Recipe\n\n1. Open the **Recipes** tab.\n2. Click **New Recipe**.\n3. Add the recipe name, version, and compatible URL patterns.\n4. Add fields using one of the supported field types:\n   - **Single value** for one extracted value.\n   - **Simple list** for an array of values.\n   - **Item list** for repeated objects with nested fields.\n5. Choose the extraction mode, such as text, HTML, attribute, JSON, exists, or count.\n6. Save the recipe.\n\n## Import Recipes\n\n1. Open the **Recipes** tab.\n2. Click **Import**.\n3. Select one or more `.recipe.json`, `.json`, or ExtractKit `.zip` files.\n4. Recipes with the same ID as an existing local recipe are imported as copies to avoid overwriting local data.\n\nThe importer accepts:\n\n- a single recipe JSON file;\n- a list of recipes;\n- an object with `recipesById`;\n- `recipes/*.recipe.json` files inside an ExtractKit ZIP export.\n\n## Run a Recipe\n\n1. Open any regular web page in Chrome.\n2. Open the ExtractKit Side Panel.\n3. Go to the **Run** tab.\n4. Check the current URL.\n5. Select a compatible recipe.\n6. Click **Run recipe**.\n7. Review the extracted JSON, warnings, and errors.\n8. Click **Save** to store the run locally.\n\n## Export Runs\n\n1. Open the **Runs** tab.\n2. Filter by recipe, domain, or URL if needed.\n3. Open an individual run to inspect its JSON.\n4. Click **Export** on a run, or click **Export all** to export everything.\n\nThe generated `.zip` file contains:\n\n- `manifest.json` with export metadata;\n- `recipes/*.recipe.json` with recipes used by the exported runs;\n- `runs/*.json` with each saved run;\n- `data/all-runs.json` with all exported runs;\n- `data/all-runs.csv` with a tabular version of the exported data.\n\n## Local Storage\n\nExtractKit stores data locally in the browser through `chrome.storage.local`.\n\nThe extension does not send recipes or extracted data to a server in the MVP.\n\n## Scripts\n\n```bash\npnpm dev\npnpm build\npnpm typecheck\npnpm preview\n```\n\nIf Biome is configured in the project, these scripts may also be available:\n\n```bash\npnpm lint\npnpm format\npnpm check\npnpm check:write\n```\n\n## Project Status\n\nExtractKit is currently an MVP focused on local extraction workflows.\n\nPlanned improvements may include a visual element picker, a richer JSON viewer, starter recipes, recipe categories, SEO QA recipes, and a public recipe gallery.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fteles%2Fextractkit","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fteles%2Fextractkit","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fteles%2Fextractkit/lists"}