{"id":22202718,"url":"https://github.com/namchee/dupliket","last_synced_at":"2026-05-06T05:31:53.961Z","repository":{"id":183005921,"uuid":"659036708","full_name":"Namchee/dupliket","owner":"Namchee","description":"Triage issues and discussions efficiently by resolving duplicate references with LLM 🧠","archived":false,"fork":false,"pushed_at":"2023-10-16T14:34:42.000Z","size":7425,"stargazers_count":1,"open_issues_count":1,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-01-30T03:28:01.560Z","etag":null,"topics":["action","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/Namchee.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":"2023-06-27T02:49:30.000Z","updated_at":"2024-01-07T14:12:55.000Z","dependencies_parsed_at":"2023-10-16T06:33:41.410Z","dependency_job_id":"c7de8e09-3069-42b7-a864-4cd5caf0a5b7","html_url":"https://github.com/Namchee/dupliket","commit_stats":null,"previous_names":["namchee/summarizr","namchee/duplikat"],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Namchee%2Fdupliket","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Namchee%2Fdupliket/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Namchee%2Fdupliket/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Namchee%2Fdupliket/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Namchee","download_url":"https://codeload.github.com/Namchee/dupliket/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245383119,"owners_count":20606265,"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":["action","llm"],"created_at":"2024-12-02T16:37:14.780Z","updated_at":"2026-05-06T05:31:53.711Z","avatar_url":"https://github.com/Namchee.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Dupliket\n\nDupliket is a GitHub action that helps repository maintainers to triage issues and discussions efficiently by finding duplicates and reference them directly in the newly created issue or discussion. It is powered by \u003cabbr title=\"Large Language Model\"\u003eLLM\u003c/abbr\u003e provided by [OpenAI](https://openai.com/) to process issues and calculate their similarites.\n\n## Installation\n\nYou can integrate Dupliket in your GitHub workflow by creating a new [workflow file](https://docs.github.com/en/actions/using-workflows/about-workflows), for example:\n\n```yaml\non:\n  issues:\n    types: [opened]\n\njobs:\n  dupliket:\n    runs-on: ubuntu-latest\n    steps:\n      - name: Find possible duplicates\n        uses: Namchee/dupliket@\u003cversion\u003e\n        with:\n          access_token: ${{ secrets.GITHUB_TOKEN }}\n          api_key: ${{ secrets.API_KEY }}\n```\n\n## Supported Events\n\nDupliket supports the following workflow events:\n\n| Event | Types | Description |\n| ----- | ------ | ----------- |\n| `issues` | `created` | Fired whenever a new issue is created. |\n| `discussion` | `opened` | Fired whenever a new discussion is created. |\n\nPlease refer to the [workflow events reference][workflow] for more information about the supported events.\n\n\u003e Since GitHub includes pull request on `issues` events, it is recommended to filter pull request events when listening to `issues` events.\n\u003e You can filter pull request using [job conditions][] in your workflow file. For example:\n\u003e ```yaml\n\u003e on:\n\u003e  issues:\n\u003e    types: [opened]\n\u003e\n\u003e jobs:\n\u003e  dupliket:\n\u003e    runs-on: ubuntu-latest\n\u003e    if: ${{ !github.event.issue.pull_request }} # Do not listen to pull request events\n\u003e    steps:\n\u003e      - name: Find possible duplicates\n\u003e        uses: Namchee/dupliket@\u003cversion\u003e\n\u003e        with:\n\u003e          access_token: ${{ secrets.GITHUB_TOKEN }}\n\u003e          api_key: ${{ secrets.API_KEY }}\n\u003e```\n\n## Inputs\n\nDupliket accepts the following input that can be filled in [`jobs.with`][job input] section:\n\n| **Name** | **Required?** | **Default Value** | **Description** |\n| -------- | ------------- | ----------------- | --------------- |\n| `access_token` | `true` | *This field is required* | [GitHub's access token](https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens). Used to interact with GitHub API for managing knowledge and creating comments. **Note: Ensure that your token have permissions to read and write code and issues**\n| `api_key` | `true` | *This field is required* | OpenAI's API key. You can get it by [signing up][] for an OpenAI account |\n| `model` | `false` | `text-embedding-ada-002` | Language model to be used when searching and calculating issue and discussion similarity. |\n| `max_issues` | `false` | `3` | Maximum number of possibly similar issues and discussions to be displayed |\n| `min_similarity` | `false` | `0.9` | Minimum similarity for an issue or discussion to be considered as similar. Must be a floating point between `0.0` and `1.0` |\n| `show_similarity` | `false` | `false` | Include similarity percentage as [footnote](https://docs.github.com/en/get-started/writing-on-github/getting-started-with-writing-and-formatting-on-github/basic-writing-and-formatting-syntax#footnotes) |\n| `discussions` | `false` | `true` | Include [discussions](https://github.com/features/discussions) when searching for similar references |\n| `label` | `false` |  | Label to be applied when an issue or discussion has duplicates. Fill with an empty string to not apply any labels |\n| `template` | `false` |  | Apply a custom message when an issue or discussion has duplicates. See section [customizing message](#customizing-message) for more detailed information on how to use this field.\n\n### Customizing Message\n\nBy default, `dupliket` will create a message containing references existing issues and discussions when an issue or discussion is created and has potential duplicates. While this is good enough for normal use-cases, you might want to change the message to suit your needs or want to change the formatting instead.\n\nYou can customize the message by providing a [mustache template](https://github.com/janl/mustache.js) to `template` option in the workflow file. Markdown formatting is supported.\n\nBelow are the list of replacable values that you can use in your custom message:\n\n| **Name** | **Description** |\n| -------- | ------------- |\n| `user` | Username that triggers the event |\n| `count` | Number of similar issues and discussions |\n| `references` | List of issue and discussion links |\n\nFor example, given the below template:\n\n```\nHi {{ user }},\n\nThanks for reporting an issue! However, it seems like there are {{ count }} issue(s) that are similar to yours:\n\n{{ references }}\n```\n\nthe action may reply with the following comment\n\n```\nHi @Namchee,\n\nThanks for reporting an issue! However, it seems like there are 3 issue(s) that are similar to yours:\n\n- https://github.com/Namchee/dupliket/issues/49\n- https://github.com/Namchee/dupliket/issues/48\n```\n\n## License\n\nThis project is licensed under the [MIT License](./LICENSE)\n\n[job input]: https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idwith\n[job conditions]: https://docs.github.com/en/actions/using-jobs/using-conditions-to-control-job-execution\n[signing up]: https://platform.openai.com/signup\n[workflow]: https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnamchee%2Fdupliket","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnamchee%2Fdupliket","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnamchee%2Fdupliket/lists"}