{"id":15471843,"url":"https://github.com/dkhamsing/frankenstein","last_synced_at":"2025-09-12T15:50:16.250Z","repository":{"id":76013504,"uuid":"44350510","full_name":"dkhamsing/frankenstein","owner":"dkhamsing","description":":octocat: Correct README Redirects","archived":false,"fork":false,"pushed_at":"2016-10-03T15:09:49.000Z","size":18100,"stargazers_count":308,"open_issues_count":5,"forks_count":5,"subscribers_count":9,"default_branch":"dev","last_synced_at":"2025-05-07T15:51:50.554Z","etag":null,"topics":["cli","correct","github","pull-request","readme","tool"],"latest_commit_sha":null,"homepage":"","language":"Ruby","has_issues":false,"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/dkhamsing.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":"2015-10-15T23:06:51.000Z","updated_at":"2025-03-23T09:40:47.000Z","dependencies_parsed_at":"2023-02-26T04:45:37.464Z","dependency_job_id":null,"html_url":"https://github.com/dkhamsing/frankenstein","commit_stats":{"total_commits":16,"total_committers":3,"mean_commits":5.333333333333333,"dds":0.25,"last_synced_commit":"27b360d79760686e3c72eafd68f6bdee378023ce"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/dkhamsing/frankenstein","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dkhamsing%2Ffrankenstein","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dkhamsing%2Ffrankenstein/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dkhamsing%2Ffrankenstein/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dkhamsing%2Ffrankenstein/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dkhamsing","download_url":"https://codeload.github.com/dkhamsing/frankenstein/tar.gz/refs/heads/dev","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dkhamsing%2Ffrankenstein/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":274832086,"owners_count":25357992,"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","status":"online","status_checked_at":"2025-09-12T02:00:09.324Z","response_time":60,"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":["cli","correct","github","pull-request","readme","tool"],"created_at":"2024-10-02T02:21:57.845Z","updated_at":"2025-09-12T15:50:16.223Z","avatar_url":"https://github.com/dkhamsing.png","language":"Ruby","readme":"# Frankenstein\n\n`frankenstein` checks for live URLs in a file, it can [update links based on HTTP redirects](#correct-github-readme-redirects) in a README :octocat:\n\n![](http://i.giphy.com/2MMB4JT8lokbS.gif)\n\nThis project uses [`awesome_bot`](https://github.com/dkhamsing/awesome_bot) to validate links.\n\n[![Build Status](https://travis-ci.org/dkhamsing/frankenstein.svg)](https://travis-ci.org/dkhamsing/frankenstein)\n\n## Installation\n\n```shell\ngit clone https://github.com/dkhamsing/frankenstein.git\ncd frankenstein\nrake install\n```\n\n## Usage\n\n```shell\n$ frankenstein https://fastlane.tools # URL\n$ frankenstein README.md # Path to file\n$ frankenstein ccgus/fmdb # GitHub repo README, https://github.com/ccgus/fmdb works too\n\nFound: master for ccgus/fmdb — A Cocoa / Objective-C wrapper around SQLite — 8935⭐️  — last updated today\n🏃  Processing links for ccgus/fmdb ...\n🔎  Checking 18 links\n✅  https://www.zetetic.net/sqlcipher/\n✅  http://sqlite.org/\n✅  https://cocoapods.org/\n✅  https://github.com/marcoarment/FCModel\n✅  https://github.com/layerhq/FMDBMigrationManager\n#...\n🕐  Time elapsed: 4.07 seconds\n\n🏃  No failures for ccgus/fmdb\n```\n\n```\n✅ 200 ok\n🔶 3xx redirect\n🔴 4xx error\n⚪ white list / other\n```\n\n### Correct GitHub README Redirects\n\n`frankenstein` can open a pull request to update README links based on HTTP redirects (this requires credentials set in [.netrc](http://octokit.github.io/octokit.rb/#Using_a__netrc_file)).\n\n```shell\n$ frankenstein fastlane/sigh\n\nFinding default branch for fastlane/sigh\nFound: master for fastlane/sigh — Because you would rather spend your time building stuff than fighting provisioning — 864⭐️  — last updated 8 days ago\n🏃  Processing links for https://raw.githubusercontent.com/fastlane/sigh/master/README.md ...\n🔎  Checking 21 links\n🔶  301 https://github.com/KrauseFx/fastlane\n🔶  301 https://github.com/KrauseFx/deliver\n#...\n🔶  10 redirects\nhttps://github.com/KrauseFx/fastlane redirects to\nhttps://github.com/fastlane/fastlane\n#...\nNext? (pull request | white list w=\u003cs1^s2..\u003e | gist | tweet [-h] [message] | enter to end) p\nCreating pull request on GitHub for fastlane/sigh ...\nPull request created: https://github.com/fastlane/sigh/pull/195\n```\n\n### White List\n\n- URLs that are meant to be redirected (i.e. URL shortener, badge, authentication) are [white listed](lib/frankenstein/whitelist.rb) and not corrected.\n\n- You can also white list links at the end of a run with option `w`.\n\n```shell\n$ frankenstein dkhamsing/forker\n\nFinding default branch for dkhamsing/forker\nFound: wip for dkhamsing/forker — Fork GitHub repos found on a page — 0⭐️  — last updated today\n🏃  Processing links for dkhamsing/forker ...\n🔎  Checking 10 links\n✅  https://github.com/opensourceios\n#...\n🔶  1 redirect\nhttp://gph.is/1768v38 redirects to\nhttp://giphy.com/gifs/loop-factory-how-its-made-n1JN4fSrXovJe\n#...\n🕐  Time elapsed: 2.56 seconds\n\n🏃  No failures for dkhamsing/forker\n\nNext? (pull request | white list w=\u003cs1^s2..\u003e | gist | tweet [-h] [message] | enter to end) w=gph\n#...\n```\n\n## Contact\n\n- [github.com/dkhamsing](https://github.com/dkhamsing)\n- [twitter.com/dkhamsing](https://twitter.com/dkhamsing)\n\n## License\n\nThis project is available under the MIT license. See the [LICENSE](LICENSE) file for more info.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdkhamsing%2Ffrankenstein","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdkhamsing%2Ffrankenstein","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdkhamsing%2Ffrankenstein/lists"}