{"id":26899988,"url":"https://github.com/npanuhin/github-language-bar","last_synced_at":"2026-05-16T22:05:52.960Z","repository":{"id":111783210,"uuid":"587920766","full_name":"npanuhin/GitHub-Language-Bar","owner":"npanuhin","description":"👷🚧 Work in progress! ⌛ Had to make this repository public before release. 🚧 Stay tuned!","archived":false,"fork":false,"pushed_at":"2025-01-07T22:54:48.000Z","size":1141,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-08-04T07:57:06.700Z","etag":null,"topics":["github-actions","github-api","github-readme","github-readme-profile"],"latest_commit_sha":null,"homepage":"","language":"Python","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/npanuhin.png","metadata":{"files":{"readme":"README.dev.md","changelog":null,"contributing":".github/CONTRIBUTING.md","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,"zenodo":null}},"created_at":"2023-01-11T22:32:46.000Z","updated_at":"2025-01-07T22:54:37.000Z","dependencies_parsed_at":"2025-01-08T23:07:51.489Z","dependency_job_id":null,"html_url":"https://github.com/npanuhin/GitHub-Language-Bar","commit_stats":null,"previous_names":[],"tags_count":0,"template":true,"template_full_name":null,"purl":"pkg:github/npanuhin/GitHub-Language-Bar","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/npanuhin%2FGitHub-Language-Bar","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/npanuhin%2FGitHub-Language-Bar/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/npanuhin%2FGitHub-Language-Bar/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/npanuhin%2FGitHub-Language-Bar/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/npanuhin","download_url":"https://codeload.github.com/npanuhin/GitHub-Language-Bar/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/npanuhin%2FGitHub-Language-Bar/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33120452,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-16T18:38:32.183Z","status":"ssl_error","status_checked_at":"2026-05-16T18:38:29.903Z","response_time":115,"last_error":"SSL_read: 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":["github-actions","github-api","github-readme","github-readme-profile"],"created_at":"2025-04-01T07:06:52.950Z","updated_at":"2026-05-16T22:05:52.941Z","avatar_url":"https://github.com/npanuhin.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003ch1 align=\"center\"\u003eGitHub Language Bar\u003c/h1\u003e\n\n\u003cimg src=\"https://raw.githubusercontent.com/npanuhin/npanuhin/language-bar/bar.svg\" width=\"100%\"\u003e\n\n## Features\n\nTODO\n\n\u003c!-- - Hosted on github actions. No 3rd party servers (like Heroku) required. Is GitHub working?\u003csup\u003e\\[?\\]\u003c/sup\u003e Yes? Than ...\n- Includes private repositories (because you can specify GITHUB_TOKEN)*\n\nBut is does not spam you with commits! Only one commit on a separate branch you will never have to worry about\n\nIt's worth mentioning [github-readme-stats](https://github.com/anuraghazra/github-readme-stats#language-card-exclusive-options), in whitch I didn't find all of the listed fetures --\u003e\n\n## Wanna add one to you profile?\n\n\u003e Just two steps, two minutes! ⏱\n\n\u003c!-- 1. Create a workflow file named `language_bar.yml` in your repository under `.github/workflows` folder and paste the following content inside. [Here is an example](https://github.com/npanuhin/GitHub-Language-Bar/blob/master/.github/workflows/language_bar.yml) --\u003e\n1. Go to your repository and create a workflow file named `language_bar.yml` under `.github/workflows` folder. Paste the following content inside:\n    ```YAML\n    name: GitHub Language Bar\n\n    on:\n      push:               # Run every time config or README changes\n        paths:\n          - README.md\n          - .github/workflows/*\n      schedule:           # Run every day at to 4:38 AM\n        - cron: 38 4 * * *\n      workflow_dispatch:  # Run with a button in the Actions tab\n\n    jobs:\n      language_bar:\n        name: Create GitHub Language Bar\n        runs-on: ubuntu-latest\n        steps:\n          - name: Create Language Bar\n            uses: npanuhin/GitHub-Language-Bar@master\n    ```\n\n2. Add this mark anywhere in your README[^anywhere_in_readme]:\n    ```html\n    \u003c!-- Langbar --\u003e\n    ```\n3. You are all set! Your bar should appear in a few seconds.\u003cbr\u003e\n\n    The next steps are optional, but I suggest [enabling private repositories](#enable-private-repositories) so that people can see your true language usage across all repositories, not just the public ones.\n\n    You can also [customize](#Customize) your new language bar in various ways. If you have any questions, [don't hesitate to ask!](https://github.com/npanuhin/GitHub-Language-Bar/issues/new)\n\n\n## Enable private repositories\n\n1. Generate a new personal access token with access to all your current and future repositories:\n    - Go to https://github.com/settings/personal-access-tokens/new and fill the following fields:\n    - **Token name:** whatever you like, e.g. `Language-Bar-token`\n    - **Expiration:** `No Expiration` ⚠\n    \u003c!-- - Set the maximum `Expiration` date allowed by GitHub\u003csup\u003eOnce the token expires, you will need to regenerate it\u003ca href=\"#user-content-fn-fine_grained_token\"\u003eawd\u003c/a\u003e\u003c/sup\u003e --\u003e\n\n    \u003c!-- - Click on the first checkbox named `repo` --\u003e\n    - **Repository access:** `All repositories` ⚠\n    - **Permissions:** open up `Repository permissions`:\n        - **Contents:** set to `Read-only`\n        - **Metadata:** set to `Read-only`\n    - Scroll all the way down and click `Generate token`\n    - Finally, copy the generated token to the clipboard\n\n    \u003c!-- \u003cdetails\u003e\n    \u003csummary\u003eHelp me find these buttons!\u003c/summary\u003e\n\n    ![](assets/GLB-tutorial-token.png)\n    \u003c/details\u003e --\u003e\n\n2. Add this token to your repository:\n    1. Go to the repository, where the target `README.md` file is located\n    2. Open up the repository settings\n    3. On the left side select `Secrets and Variables` -\u003e `Actions`\n    4. Click on `New repository secret`\n        - **Name:** exactly `LANG_BAR_PAT`\n        - **Secret:** Paste the copied in the previous step token from the clipboard\n        - Click `Add secret`\n\n    \u003c!-- \u003cdetails\u003e\n    \u003csummary\u003eHelp me find these buttons!\u003c/summary\u003e\n\n    ![](assets/GLB-tutorial-token-2.png)\n    \u003c/details\u003e --\u003e\n\n\n3. \u003ca id=\"private_enable_lines\"\u003e\u003c/a\u003eAdd the following parameter to the workflow file (`.github/workflows/language_bar.yml`):\n    ```DIFF\n    steps:\n      - name: Create Language Bar\n        uses: npanuhin/GitHub-Language-Bar@master\n    +   with:\n    +     gh_token: ${{ secrets.LANG_BAR_PAT }}  # Token is used to fetch private repositories\n    ```\n    \u003cdetails\u003e\n    \u003csummary\u003eAll together it should look like this\u003c/summary\u003e\n\n    ```YAML\n    name: GitHub Language Bar\n\n    on:\n      push:               # Run every time config or README changes\n        paths:\n          - README.md\n          - .github/workflows/*\n      schedule:           # Run every day at to 4:38 AM\n        - cron: 38 4 * * *\n      workflow_dispatch:  # Run with a button in the Actions tab\n\n    jobs:\n      language_bar:\n        name: Create GitHub Language Bar\n        runs-on: ubuntu-latest\n        steps:\n          - name: Create Language Bar\n            uses: npanuhin/GitHub-Language-Bar@master\n            with:               # Token is used to fetch private repositories\n              gh_token: ${{ secrets.LANG_BAR_PAT }}\n    ```\n    \u003c/details\u003e\n\n\u003c!-- TODO --\u003e\n\u003e [!WARNING]\n\u003e If you enable private repositories, the script will collect and log some information about them. Since your profile repository is almost always public, everyone can see your README source and workflow logs (Actions tab). **By default, apart from the bar itself, others cannot learn anything about your private repositories.** However, be careful when using additional settings:\n\u003e - \u003ca id=\"privacy_log_warning\"\u003e\u003c/a\u003e*If [log is turned on](#log)*: number of bytes per language for each repository is logged\n\u003e - *If you use [`replace`](#replace_setting) or [`hide`](#hide_setting) options* in the `repo:lang` format, be aware that the repository name is visible to everyone. All [settings](#customize) are also logged. However, logs can be deleted from the Actions tab (be aware of scheduled runs)\n\n\u003e [!NOTE]\n\u003e To disable private repositories, just remove or comment out [the added lines](#user-content-private_enable_lines)\n\n\n## Customize\n\nCustomizing GitHub Language Bar is simple — just add the parameter you want after `?`, as if it was a url: `Langbar?key=param`\n\n- **Include forks: `include_forks = yes/no`[^treating_yes_no] (default: `no`)**\n\n    Whether to include [forked](https://git-scm.com/book/en/v2/GitHub-Contributing-to-a-Project) repositories or not\n\n    Example: `\u003c!-- Langbar?include_forks=yes --\u003e`\n\n- **Include collaborative repositories: `include_collaborative = yes/no`[^treating_yes_no] (default/recommended: `no`)**\n\n    Whether to include repositories that you don't own but have access to as a **collaborator**. Works only when [private repositories are enabled](#enable-private-repositories)\n\n    Example: `\u003c!-- Langbar?include_collaborative=yes --\u003e`\n\n    \u003e $${\\color{ProcessBlue}ⓘ\\ \\text{Note}}$$\u003cbr\u003e\n    \u003e Not a **contributor** — **collaborator**! I can not count contributions yet(\n\n- \u003ca id=\"replace_setting\"\u003e\u003c/a\u003e**Replace language: `replace=language1-\u003elanguage1_new,repo2:language2-\u003elanguage2_new`**\n\n    Option to replace the desired language with another language in all repositories or only in a specific repository (comma-separated list)\n\n    Example: `\u003c!-- Langbar?replace=Hack-\u003ePHP,npanuhin/MyRepo:Hack-\u003ePHP --\u003e`\n\n- \u003ca id=\"hide_setting\"\u003e\u003c/a\u003e**Hide language: `hide=language1,repo2:language2,language3`**\n\n    Option to hide the desired language in all repositories or only in a specific repository (comma-separated list)\n\n    \u003ca id=\"hide_setting_example\"\u003e\u003c/a\u003eExample: `\u003c!-- Langbar?hide=Jupyter Notebook,npanuhin/MyRepo:JavaScript --\u003e`\n\n\u003c!-- TODO --\u003e\n\u003c!-- - \u003ca id=\"hide_setting\"\u003e\u003c/a\u003e**Image link: `link={some url}`**\n\n    Option to hide the desired language in all repositories or only in a specific repository (comma-separated list)\n\n    \u003ca id=\"hide_setting_example\"\u003e\u003c/a\u003eExample: ` --\u003e\u003c!-- Langbar?hide=Jupyter Notebook,npanuhin/MyRepo:JavaScript --\u003e`\n\nExample of all settings combined:  \u003c!-- TODO --\u003e\n```\n\u003c!-- Langbar?include_forks=yes\u0026include_collaborative=yes\u0026hide=Jupyter Notebook,npanuhin/MyRepo:JavaScript --\u003e\n```\n\n\u003e [!NOTE]\n\u003e Settings are applied in the order they appear in this list. For example, `hide` is always applied after `replace`\n\n\n## Logging\n\nIf you want to see the number of bytes of each language in each repository (to get an idea of which setting is best to apply) \u003c!-- TODO language --\u003e, you can use the `log` parameter.\n[Be mindful of your privacy!](#privacy_log_warning)\n\n```DIFF\nsteps:\n  - name: Create Language Bar\n    uses: npanuhin/GitHub-Language-Bar@master\n+   with:\n+     log: true\n```\n\nAfter the GitHub Action completes, the log will be at `{your_repo_url}/blob/language-bar/log.txt`.\u003cbr\u003e\nFor example: https://github.com/npanuhin/npanuhin/blob/language-bar/log.txt\n\n\n## Pro tips\n\n1. As in URLs, individual settings can be used multiple times. For example:\u003cbr\u003e\n    `\u003c!-- Langbar?hide=Jupyter Notebook\u0026hide=npanuhin/MyRepo:JavaScript --\u003e`\u003cbr\u003e\n    is equal to [the previous `hide` example](#hide_setting_example)\n\n2. If you want to add a bar to a file other than `/README.md`, you can specify its path in the `readme_path` parameter (without leading slash):\n    ```DIFF\n        steps:\n      - name: Create Language Bar\n        uses: npanuhin/GitHub-Language-Bar@master\n    +   with:\n    +     readme_path: 'path/to/my/awesome/README.md'\n    ```\n\n## Contributing\n\nFor technical details and TODO list see [contribution guide](.github/CONTRIBUTING.md)\n\n\n[^anywhere_in_readme]: Actually, it should be on a separate line\n[^treating_yes_no]: `YeS`, `1`, `true`, `on`, etc. are treated as `yes`, otherwise as `no`\n\u003c!-- [^fine_grained_token]: For some reason, GitHub [has made it impossible](https://github.blog/2022-10-18-introducing-fine-grained-personal-access-tokens-for-github/#fine-grained-personal-access-tokens-in-action) to create applications like GitHub Language Bar that need all-time access to all repositories — either you can't access repositories in organizations that have disabled classic tokens, or you need to reissue a fine-grained token every year\n --\u003e","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnpanuhin%2Fgithub-language-bar","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnpanuhin%2Fgithub-language-bar","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnpanuhin%2Fgithub-language-bar/lists"}